Skip to content

Commit c8944f4

Browse files
xxFLORIIxxFLORII
andauthored
Add NukkitX support (#1)
Co-authored-by: xxFLORII <teammeloneyt@gmail.com>
1 parent ab2c981 commit c8944f4

File tree

5 files changed

+140
-0
lines changed

5 files changed

+140
-0
lines changed

pom.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
<version.allay>0.1.2</version.allay>
1717
<version.waterdogpe>2.0.3-SNAPSHOT</version.waterdogpe>
1818
<version.powernukkitx>master-SNAPSHOT</version.powernukkitx>
19+
<version.nukkit>1.0-SNAPSHOT</version.nukkit>
1920
</properties>
2021

2122
<repositories>
@@ -84,6 +85,13 @@
8485
<scope>provided</scope>
8586
</dependency>
8687

88+
<dependency>
89+
<groupId>cn.nukkit</groupId>
90+
<artifactId>nukkit</artifactId>
91+
<version>${version.nukkit}</version>
92+
<scope>provided</scope>
93+
</dependency>
94+
8795
<dependency>
8896
<groupId>com.github.RedstoneCloud.RedstoneCloud</groupId>
8997
<artifactId>api</artifactId>
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package de.redstonecloud.bridge.platform.nukkit;
2+
3+
import cn.nukkit.Player;
4+
import cn.nukkit.Server;
5+
import cn.nukkit.scheduler.Task;
6+
import com.google.common.net.HostAndPort;
7+
import de.redstonecloud.api.components.ICloudPlayer;
8+
import de.redstonecloud.bridge.cloudinterface.components.BridgeExecutor;
9+
import de.redstonecloud.bridge.cloudinterface.components.BridgeServer;
10+
11+
import java.util.Objects;
12+
import java.util.UUID;
13+
14+
public class NukkitExecutor implements BridgeExecutor {
15+
private static Server server = Server.getInstance();
16+
17+
public Player getPlayerByCloudPlayer(ICloudPlayer player) {
18+
return server.getPlayer(UUID.fromString(player.getUUID())).get();
19+
}
20+
21+
public void sendMessage(ICloudPlayer cloudPlayer, String message) {
22+
Objects.requireNonNull(getPlayerByCloudPlayer(cloudPlayer)).sendMessage(message);
23+
}
24+
25+
@Override
26+
public void sendTitle(ICloudPlayer cloudPlayer, String title) {
27+
getPlayerByCloudPlayer(cloudPlayer).sendTitle(title);
28+
}
29+
30+
@Override
31+
public void kick(ICloudPlayer player) {
32+
Objects.requireNonNull(getPlayerByCloudPlayer(player)).kick();
33+
}
34+
35+
@Override
36+
public void kick(ICloudPlayer player, String reason) {
37+
Objects.requireNonNull(getPlayerByCloudPlayer(player)).kick(reason, false);
38+
}
39+
40+
@Override
41+
public void sendActionbar(ICloudPlayer player, String message) {
42+
getPlayerByCloudPlayer(player).sendActionBar(message);
43+
}
44+
45+
@Override
46+
public void sendToast(ICloudPlayer player, String title, String message) {
47+
getPlayerByCloudPlayer(player).sendToast(title, message);
48+
}
49+
50+
@Override
51+
public void runDelayed(Runnable code, int tickDelay) {
52+
server.getScheduler().scheduleDelayedTask(new Task() {
53+
@Override
54+
public void onRun(int i) {
55+
code.run();
56+
}
57+
}, tickDelay);
58+
}
59+
60+
61+
62+
public void addServer(String name, HostAndPort address) {}
63+
64+
public void removeServer(String name) {}
65+
66+
public boolean hasServer(String name) {
67+
return false;
68+
}
69+
70+
public BridgeServer determineServer(String serverName) {
71+
return null;
72+
}
73+
74+
public void connect(ICloudPlayer player, String name) {}
75+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package de.redstonecloud.bridge.platform.nukkit;
2+
3+
import cn.nukkit.Player;
4+
import cn.nukkit.event.EventHandler;
5+
import cn.nukkit.event.Listener;
6+
import cn.nukkit.event.player.PlayerLoginEvent;
7+
import cn.nukkit.event.player.PlayerQuitEvent;
8+
import de.redstonecloud.bridge.cloudinterface.CloudInterface;
9+
10+
public class NukkitListener implements Listener {
11+
@EventHandler
12+
public void onLogin(PlayerLoginEvent ev) {
13+
Player player = ev.getPlayer();
14+
15+
CloudInterface.getInstance().playerLogin(player.getName(), player.getUniqueId().toString(), player.getAddress());
16+
}
17+
18+
@EventHandler
19+
public void onDisconnect(PlayerQuitEvent ev) {
20+
Player player = ev.getPlayer();
21+
22+
CloudInterface.getInstance().playerDisconnect(player.getUniqueId().toString());
23+
}
24+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package de.redstonecloud.bridge.platform.nukkit;
2+
3+
import cn.nukkit.plugin.PluginBase;
4+
import de.redstonecloud.bridge.cloudinterface.CloudInterface;
5+
6+
public class NukkitPlugin extends PluginBase {
7+
public CloudInterface cloudInterface;
8+
9+
@Override
10+
public void onLoad() {
11+
cloudInterface = CloudInterface.getInstance();
12+
}
13+
14+
@Override
15+
public void onEnable() {
16+
cloudInterface.start(new NukkitExecutor());
17+
this.getServer().getPluginManager().registerEvents(new NukkitListener(), this);
18+
}
19+
20+
@Override
21+
public void onDisable() {
22+
cloudInterface.shutdown();
23+
}
24+
}

src/main/resources/nukkit.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
name: CloudBridge
2+
main: de.redstonecloud.bridge.platform.nukkit.NukkitPlugin
3+
load: STARTUP
4+
version: 1.0
5+
api: 1.0.0
6+
7+
description: CloudBridge for RedstoneCloud
8+
author: RedstoneCloud
9+
website: https://github.com/RedstoneCloud

0 commit comments

Comments
 (0)