aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--settings.gradle1
-rw-r--r--spark-nukkit/build.gradle42
-rw-r--r--spark-nukkit/src/main/java/me/lucko/spark/nukkit/NukkitCommandSender.java39
-rw-r--r--spark-nukkit/src/main/java/me/lucko/spark/nukkit/NukkitPlatformInfo.java33
-rw-r--r--spark-nukkit/src/main/java/me/lucko/spark/nukkit/NukkitSparkPlugin.java71
-rw-r--r--spark-nukkit/src/main/resources/plugin.yml9
6 files changed, 195 insertions, 0 deletions
diff --git a/settings.gradle b/settings.gradle
index 8fa5172..71c9235 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -19,5 +19,6 @@ include (
'spark-forge',
'spark-forge1122',
'spark-fabric',
+ 'spark-nukkit',
'spark-universal'
)
diff --git a/spark-nukkit/build.gradle b/spark-nukkit/build.gradle
new file mode 100644
index 0000000..d132592
--- /dev/null
+++ b/spark-nukkit/build.gradle
@@ -0,0 +1,42 @@
+plugins {
+ id 'com.github.johnrengelman.shadow' version '4.0.1'
+}
+
+dependencies {
+ compile project(':spark-common')
+ compile('net.kyori:adventure-text-serializer-legacy:4.4.0')
+ compileOnly 'cn.nukkit:nukkit:1.0-SNAPSHOT'
+}
+
+repositories {
+ maven { url "https://repo.opencollab.dev/maven-snapshots/" }
+}
+
+processResources {
+ from(sourceSets.main.resources.srcDirs) {
+ expand (
+ 'pluginVersion': project.pluginVersion,
+ 'pluginDescription': project.pluginDescription
+ )
+ include 'plugin.yml'
+ }
+}
+
+shadowJar {
+ archiveName = 'spark-nukkit.jar'
+
+ relocate 'okio', 'me.lucko.spark.lib.okio'
+ relocate 'okhttp3', 'me.lucko.spark.lib.okhttp3'
+ relocate 'org.tukaani.xz', 'me.lucko.spark.lib.xz'
+ relocate 'com.google.protobuf', 'me.lucko.spark.lib.protobuf'
+ relocate 'org.objectweb.asm', 'me.lucko.spark.lib.asm'
+
+ exclude 'module-info.class'
+ exclude 'META-INF/maven/**'
+ exclude 'META-INF/proguard/**'
+}
+
+artifacts {
+ archives shadowJar
+ shadow shadowJar
+} \ No newline at end of file
diff --git a/spark-nukkit/src/main/java/me/lucko/spark/nukkit/NukkitCommandSender.java b/spark-nukkit/src/main/java/me/lucko/spark/nukkit/NukkitCommandSender.java
new file mode 100644
index 0000000..5a40e16
--- /dev/null
+++ b/spark-nukkit/src/main/java/me/lucko/spark/nukkit/NukkitCommandSender.java
@@ -0,0 +1,39 @@
+package me.lucko.spark.nukkit;
+
+import cn.nukkit.Player;
+import cn.nukkit.command.CommandSender;
+import me.lucko.spark.common.command.sender.AbstractCommandSender;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
+
+import java.util.UUID;
+
+public class NukkitCommandSender extends AbstractCommandSender<CommandSender> {
+
+ public NukkitCommandSender(CommandSender delegate) {
+ super(delegate);
+ }
+
+ @Override
+ public String getName() {
+ return this.delegate.getName();
+ }
+
+ @Override
+ public UUID getUniqueId() {
+ if (this.delegate instanceof Player) {
+ return ((Player) this.delegate).getUniqueId();
+ }
+ return null;
+ }
+
+ @Override
+ public void sendMessage(Component message) {
+ this.delegate.sendMessage(LegacyComponentSerializer.legacySection().serialize(message));
+ }
+
+ @Override
+ public boolean hasPermission(String permission) {
+ return this.delegate.hasPermission(permission);
+ }
+} \ No newline at end of file
diff --git a/spark-nukkit/src/main/java/me/lucko/spark/nukkit/NukkitPlatformInfo.java b/spark-nukkit/src/main/java/me/lucko/spark/nukkit/NukkitPlatformInfo.java
new file mode 100644
index 0000000..7198719
--- /dev/null
+++ b/spark-nukkit/src/main/java/me/lucko/spark/nukkit/NukkitPlatformInfo.java
@@ -0,0 +1,33 @@
+package me.lucko.spark.nukkit;
+
+import cn.nukkit.Server;
+import cn.nukkit.network.protocol.ProtocolInfo;
+import me.lucko.spark.common.platform.AbstractPlatformInfo;
+
+public class NukkitPlatformInfo extends AbstractPlatformInfo {
+ private final Server server;
+
+ public NukkitPlatformInfo(Server server) {
+ this.server = server;
+ }
+
+ @Override
+ public Type getType() {
+ return Type.SERVER;
+ }
+
+ @Override
+ public String getName() {
+ return "Nukkit";
+ }
+
+ @Override
+ public String getVersion() {
+ return this.server.getNukkitVersion();
+ }
+
+ @Override
+ public String getMinecraftVersion() {
+ return this.server.getVersion();
+ }
+}
diff --git a/spark-nukkit/src/main/java/me/lucko/spark/nukkit/NukkitSparkPlugin.java b/spark-nukkit/src/main/java/me/lucko/spark/nukkit/NukkitSparkPlugin.java
new file mode 100644
index 0000000..6c16383
--- /dev/null
+++ b/spark-nukkit/src/main/java/me/lucko/spark/nukkit/NukkitSparkPlugin.java
@@ -0,0 +1,71 @@
+package me.lucko.spark.nukkit;
+
+import cn.nukkit.command.Command;
+import cn.nukkit.command.CommandSender;
+import cn.nukkit.plugin.PluginBase;
+import cn.nukkit.scheduler.AsyncTask;
+import me.lucko.spark.common.SparkPlatform;
+import me.lucko.spark.common.SparkPlugin;
+import me.lucko.spark.common.platform.PlatformInfo;
+
+import java.nio.file.Path;
+import java.util.stream.Stream;
+
+public class NukkitSparkPlugin extends PluginBase implements SparkPlugin {
+ private SparkPlatform platform;
+
+ @Override
+ public void onEnable() {
+ this.platform = new SparkPlatform(this);
+ this.platform.enable();
+ }
+
+ @Override
+ public void onDisable() {
+ this.platform.disable();
+ }
+
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ this.platform.executeCommand(new NukkitCommandSender(sender), args);
+ return true;
+ }
+
+ @Override
+ public String getVersion() {
+ return getDescription().getVersion();
+ }
+
+ @Override
+ public Path getPluginDirectory() {
+ return getDataFolder().toPath();
+ }
+
+ @Override
+ public String getCommandName() {
+ return "spark";
+ }
+
+ @Override
+ public Stream<NukkitCommandSender> getSendersWithPermission(String permission) {
+ return Stream.concat(
+ getServer().getOnlinePlayers().values().stream().filter(player -> player.hasPermission(permission)),
+ Stream.of(getServer().getConsoleSender())
+ ).map(NukkitCommandSender::new);
+ }
+
+ @Override
+ public void executeAsync(Runnable task) {
+ getServer().getScheduler().scheduleAsyncTask(this, new AsyncTask() {
+ @Override
+ public void onRun() {
+ task.run();
+ }
+ });
+ }
+
+ @Override
+ public PlatformInfo getPlatformInfo() {
+ return new NukkitPlatformInfo(getServer());
+ }
+}
diff --git a/spark-nukkit/src/main/resources/plugin.yml b/spark-nukkit/src/main/resources/plugin.yml
new file mode 100644
index 0000000..797644d
--- /dev/null
+++ b/spark-nukkit/src/main/resources/plugin.yml
@@ -0,0 +1,9 @@
+name: spark
+version: ${pluginVersion}
+description: ${pluginDescription}
+authors: [Luck, sk89q]
+main: me.lucko.spark.nukkit.NukkitSparkPlugin
+api: [1.0.5]
+commands:
+ spark:
+ description: Main plugin command \ No newline at end of file