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