diff --git a/pom.xml b/pom.xml index 42e7719..3fe2422 100644 --- a/pom.xml +++ b/pom.xml @@ -16,6 +16,7 @@ 0.1.2 2.0.3-SNAPSHOT master-SNAPSHOT + 1.0-SNAPSHOT @@ -83,6 +84,13 @@ ${version.allay} + + cn.nukkit + nukkit + ${version.nukkit} + provided + + com.github.RedstoneCloud.RedstoneCloud api diff --git a/src/main/java/de/redstonecloud/bridge/platform/nukkit/NukkitExecutor.java b/src/main/java/de/redstonecloud/bridge/platform/nukkit/NukkitExecutor.java new file mode 100644 index 0000000..f151792 --- /dev/null +++ b/src/main/java/de/redstonecloud/bridge/platform/nukkit/NukkitExecutor.java @@ -0,0 +1,75 @@ +package de.redstonecloud.bridge.platform.nukkit; + +import cn.nukkit.Player; +import cn.nukkit.Server; +import cn.nukkit.scheduler.Task; +import com.google.common.net.HostAndPort; +import de.redstonecloud.api.components.ICloudPlayer; +import de.redstonecloud.bridge.cloudinterface.components.BridgeExecutor; +import de.redstonecloud.bridge.cloudinterface.components.BridgeServer; + +import java.util.Objects; +import java.util.UUID; + +public class NukkitExecutor implements BridgeExecutor { + private static Server server = Server.getInstance(); + + public Player getPlayerByCloudPlayer(ICloudPlayer player) { + return server.getPlayer(UUID.fromString(player.getUUID())).get(); + } + + public void sendMessage(ICloudPlayer cloudPlayer, String message) { + Objects.requireNonNull(getPlayerByCloudPlayer(cloudPlayer)).sendMessage(message); + } + + @Override + public void sendTitle(ICloudPlayer cloudPlayer, String title) { + getPlayerByCloudPlayer(cloudPlayer).sendTitle(title); + } + + @Override + public void kick(ICloudPlayer player) { + Objects.requireNonNull(getPlayerByCloudPlayer(player)).kick(); + } + + @Override + public void kick(ICloudPlayer player, String reason) { + Objects.requireNonNull(getPlayerByCloudPlayer(player)).kick(reason, false); + } + + @Override + public void sendActionbar(ICloudPlayer player, String message) { + getPlayerByCloudPlayer(player).sendActionBar(message); + } + + @Override + public void sendToast(ICloudPlayer player, String title, String message) { + getPlayerByCloudPlayer(player).sendToast(title, message); + } + + @Override + public void runDelayed(Runnable code, int tickDelay) { + server.getScheduler().scheduleDelayedTask(new Task() { + @Override + public void onRun(int i) { + code.run(); + } + }, tickDelay); + } + + + + public void addServer(String name, HostAndPort address) {} + + public void removeServer(String name) {} + + public boolean hasServer(String name) { + return false; + } + + public BridgeServer determineServer(String serverName) { + return null; + } + + public void connect(ICloudPlayer player, String name) {} +} diff --git a/src/main/java/de/redstonecloud/bridge/platform/nukkit/NukkitListener.java b/src/main/java/de/redstonecloud/bridge/platform/nukkit/NukkitListener.java new file mode 100644 index 0000000..010c80d --- /dev/null +++ b/src/main/java/de/redstonecloud/bridge/platform/nukkit/NukkitListener.java @@ -0,0 +1,24 @@ +package de.redstonecloud.bridge.platform.nukkit; + +import cn.nukkit.Player; +import cn.nukkit.event.EventHandler; +import cn.nukkit.event.Listener; +import cn.nukkit.event.player.PlayerLoginEvent; +import cn.nukkit.event.player.PlayerQuitEvent; +import de.redstonecloud.bridge.cloudinterface.CloudInterface; + +public class NukkitListener implements Listener { + @EventHandler + public void onLogin(PlayerLoginEvent ev) { + Player player = ev.getPlayer(); + + CloudInterface.getInstance().playerLogin(player.getName(), player.getUniqueId().toString(), player.getAddress()); + } + + @EventHandler + public void onDisconnect(PlayerQuitEvent ev) { + Player player = ev.getPlayer(); + + CloudInterface.getInstance().playerDisconnect(player.getUniqueId().toString()); + } +} diff --git a/src/main/java/de/redstonecloud/bridge/platform/nukkit/NukkitPlugin.java b/src/main/java/de/redstonecloud/bridge/platform/nukkit/NukkitPlugin.java new file mode 100644 index 0000000..e747fa7 --- /dev/null +++ b/src/main/java/de/redstonecloud/bridge/platform/nukkit/NukkitPlugin.java @@ -0,0 +1,24 @@ +package de.redstonecloud.bridge.platform.nukkit; + +import cn.nukkit.plugin.PluginBase; +import de.redstonecloud.bridge.cloudinterface.CloudInterface; + +public class NukkitPlugin extends PluginBase { + public CloudInterface cloudInterface; + + @Override + public void onLoad() { + cloudInterface = CloudInterface.getInstance(); + } + + @Override + public void onEnable() { + cloudInterface.start(new NukkitExecutor()); + this.getServer().getPluginManager().registerEvents(new NukkitListener(), this); + } + + @Override + public void onDisable() { + cloudInterface.shutdown(); + } +} \ No newline at end of file diff --git a/src/main/resources/nukkit.yml b/src/main/resources/nukkit.yml new file mode 100644 index 0000000..01606ff --- /dev/null +++ b/src/main/resources/nukkit.yml @@ -0,0 +1,9 @@ +name: CloudBridge +main: de.redstonecloud.bridge.platform.nukkit.NukkitPlugin +load: STARTUP +version: 1.0 +api: 1.0.0 + +description: CloudBridge for RedstoneCloud +author: RedstoneCloud +website: https://github.com/RedstoneCloud \ No newline at end of file