aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gradle/wrapper/gradle-wrapper.jarbin54413 -> 55616 bytes
-rw-r--r--gradle/wrapper/gradle-wrapper.properties2
-rwxr-xr-xgradlew22
-rw-r--r--gradlew.bat18
-rw-r--r--spark-bukkit/build.gradle2
-rw-r--r--spark-forge/build.gradle29
-rw-r--r--spark-forge/src/main/java/me/lucko/spark/forge/ForgeClientSparkPlugin.java90
-rw-r--r--spark-forge/src/main/java/me/lucko/spark/forge/ForgeCommandSender.java23
-rw-r--r--spark-forge/src/main/java/me/lucko/spark/forge/ForgeServerSparkPlugin.java70
-rw-r--r--spark-forge/src/main/java/me/lucko/spark/forge/ForgeSparkMod.java57
-rw-r--r--spark-forge/src/main/java/me/lucko/spark/forge/ForgeSparkPlugin.java68
-rw-r--r--spark-forge/src/main/java/me/lucko/spark/forge/ForgeTickCounter.java4
-rw-r--r--spark-forge/src/main/resources/META-INF/mods.toml16
-rw-r--r--spark-forge/src/main/resources/mcmod.info7
-rw-r--r--spark-forge/src/main/resources/pack.mcmeta6
-rw-r--r--spark-velocity/build.gradle4
16 files changed, 273 insertions, 145 deletions
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 1948b90..5c2d1cf 100644
--- a/gradle/wrapper/gradle-wrapper.jar
+++ b/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index d2c45a4..ef9a9e0 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.8-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index cccdd3d..83f2acf 100755
--- a/gradlew
+++ b/gradlew
@@ -1,5 +1,21 @@
#!/usr/bin/env sh
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
##############################################################################
##
## Gradle start up script for UN*X
@@ -28,7 +44,7 @@ APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
@@ -109,8 +125,8 @@ if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
diff --git a/gradlew.bat b/gradlew.bat
index f955316..9618d8d 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -1,3 +1,19 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@@ -14,7 +30,7 @@ set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
diff --git a/spark-bukkit/build.gradle b/spark-bukkit/build.gradle
index 7de38d3..56ba20f 100644
--- a/spark-bukkit/build.gradle
+++ b/spark-bukkit/build.gradle
@@ -4,7 +4,7 @@ dependencies {
exclude(module: 'text-api')
exclude(module: 'text-serializer-gson')
}
- compileOnly 'org.spigotmc:spigot-api:1.14-R0.1-SNAPSHOT'
+ compileOnly 'org.spigotmc:spigot-api:1.14.4-R0.1-SNAPSHOT'
// placeholders
compileOnly 'me.clip:placeholderapi:2.10.3'
diff --git a/spark-forge/build.gradle b/spark-forge/build.gradle
index 4334b87..6b55901 100644
--- a/spark-forge/build.gradle
+++ b/spark-forge/build.gradle
@@ -3,7 +3,7 @@ buildscript {
maven { url = "http://files.minecraftforge.net/maven" }
}
dependencies {
- classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
+ classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
}
}
@@ -11,15 +11,10 @@ plugins {
id 'com.github.johnrengelman.shadow' version '4.0.1'
}
-apply plugin: 'net.minecraftforge.gradle.forge'
+apply plugin: 'net.minecraftforge.gradle'
minecraft {
- version = '1.12.2-14.23.4.2705'
- runDir = 'run'
- mappings = 'snapshot_20171003'
-
- replaceIn 'me/lucko/spark/forge/ForgeSparkMod.java'
- replace '@version@', project.pluginVersion
+ mappings channel: 'snapshot', version: '20190801-1.14.3'
}
processResources {
@@ -28,16 +23,27 @@ processResources {
'pluginVersion': project.pluginVersion,
'pluginDescription': project.pluginDescription
)
- include 'mcmod.info'
+ include 'META-INF/mods.toml'
+ }
+
+ from(sourceSets.main.resources.srcDirs) {
+ exclude 'META-INF/mods.toml'
}
}
+configurations {
+ shade
+ compile.extendsFrom shade
+}
+
dependencies {
- compile project(':spark-common')
+ minecraft 'net.minecraftforge:forge:1.14.4-28.0.45'
+ shade project(':spark-common')
}
shadowJar {
archiveName = 'spark-forge.jar'
+ configurations = [project.configurations.shade]
relocate 'okio', 'me.lucko.spark.lib.okio'
relocate 'okhttp3', 'me.lucko.spark.lib.okhttp3'
@@ -53,6 +59,7 @@ artifacts {
reobf {
shadowJar {
- mappingType = 'SEARGE'
+ dependsOn createMcpToSrg
+ mappings = createMcpToSrg.outputs.files.singleFile
}
}
diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeClientSparkPlugin.java b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeClientSparkPlugin.java
index e4212ab..0d38ea2 100644
--- a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeClientSparkPlugin.java
+++ b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeClientSparkPlugin.java
@@ -20,34 +20,95 @@
package me.lucko.spark.forge;
+import com.mojang.brigadier.CommandDispatcher;
import me.lucko.spark.common.sampler.TickCounter;
import net.minecraft.client.Minecraft;
-import net.minecraft.command.ICommandSender;
-import net.minecraftforge.client.ClientCommandHandler;
-import net.minecraftforge.fml.common.gameevent.TickEvent;
+import net.minecraft.client.entity.player.ClientPlayerEntity;
+import net.minecraft.client.network.play.ClientPlayNetHandler;
+import net.minecraft.command.ICommandSource;
+import net.minecraft.command.ISuggestionProvider;
+import net.minecraftforge.client.event.ClientChatEvent;
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.event.TickEvent;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
-import java.util.Collections;
-import java.util.List;
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Stream;
public class ForgeClientSparkPlugin extends ForgeSparkPlugin {
- public static void register(ForgeSparkMod mod) {
- ClientCommandHandler.instance.registerCommand(new ForgeClientSparkPlugin(mod));
+ private static final Field COMMAND_DISPATCHER_FIELD;
+ static {
+ COMMAND_DISPATCHER_FIELD = Arrays.stream(ClientPlayNetHandler.class.getDeclaredFields())
+ .filter(f -> f.getType() == CommandDispatcher.class)
+ .findFirst().orElseThrow(() -> new RuntimeException("No field with CommandDispatcher type"));
+ COMMAND_DISPATCHER_FIELD.setAccessible(true);
}
- public ForgeClientSparkPlugin(ForgeSparkMod mod) {
+ public static void register(ForgeSparkMod mod, FMLClientSetupEvent event) {
+ Minecraft minecraft = event.getMinecraftSupplier().get();
+
+ ForgeClientSparkPlugin plugin = new ForgeClientSparkPlugin(mod, minecraft);
+ MinecraftForge.EVENT_BUS.register(plugin);
+
+ plugin.scheduler.scheduleWithFixedDelay(plugin::checkCommandRegistered, 10, 10, TimeUnit.SECONDS);
+ }
+
+ private final Minecraft minecraft;
+ private CommandDispatcher<ISuggestionProvider> dispatcher;
+
+ public ForgeClientSparkPlugin(ForgeSparkMod mod, Minecraft minecraft) {
super(mod);
+ this.minecraft = minecraft;
+ }
+
+ private void checkCommandRegistered() {
+ ClientPlayerEntity player = this.minecraft.player;
+ if (player == null) {
+ return;
+ }
+
+ ClientPlayNetHandler connection = player.connection;
+ if (connection == null) {
+ return;
+ }
+
+ try {
+ CommandDispatcher<ISuggestionProvider> dispatcher = (CommandDispatcher) COMMAND_DISPATCHER_FIELD.get(connection);
+ if (dispatcher != this.dispatcher) {
+ this.dispatcher = dispatcher;
+ registerCommands(this.dispatcher, context -> 1, "sparkc", "sparkclient");
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ @SubscribeEvent
+ public void onClientChat(ClientChatEvent event) {
+ String chat = event.getMessage();
+ String[] split = chat.split(" ");
+ if (split.length == 0 || (!split[0].equals("/sparkc") && !split[0].equals("/sparkclient"))) {
+ return;
+ }
+
+ String[] args = Arrays.copyOfRange(split, 1, split.length);
+ this.platform.executeCommand(new ForgeCommandSender(this.minecraft.player, this), args);
+ this.minecraft.ingameGUI.getChatGUI().addToSentMessages(chat);
+ event.setCanceled(true);
}
@Override
- boolean hasPermission(ICommandSender sender, String permission) {
+ boolean hasPermission(ICommandSource sender, String permission) {
return true;
}
@Override
public Stream<ForgeCommandSender> getSendersWithPermission(String permission) {
- return Stream.of(new ForgeCommandSender(Minecraft.getMinecraft().player, this));
+ return Stream.of(new ForgeCommandSender(this.minecraft.player, this));
}
@Override
@@ -60,13 +121,4 @@ public class ForgeClientSparkPlugin extends ForgeSparkPlugin {
return "sparkc";
}
- @Override
- public String getName() {
- return "sparkc";
- }
-
- @Override
- public List<String> getAliases() {
- return Collections.singletonList("sparkclient");
- }
}
diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeCommandSender.java b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeCommandSender.java
index f7b2122..418cf2d 100644
--- a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeCommandSender.java
+++ b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeCommandSender.java
@@ -23,37 +23,44 @@ package me.lucko.spark.forge;
import me.lucko.spark.common.CommandSender;
import net.kyori.text.Component;
import net.kyori.text.serializer.gson.GsonComponentSerializer;
-import net.minecraft.command.ICommandSender;
-import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.command.ICommandSource;
+import net.minecraft.entity.player.PlayerEntity;
+import net.minecraft.network.rcon.IServer;
import net.minecraft.util.text.ITextComponent;
import java.util.UUID;
public class ForgeCommandSender implements CommandSender {
- private final ICommandSender sender;
+ private final ICommandSource sender;
private final ForgeSparkPlugin plugin;
- public ForgeCommandSender(ICommandSender sender, ForgeSparkPlugin plugin) {
+ public ForgeCommandSender(ICommandSource sender, ForgeSparkPlugin plugin) {
this.sender = sender;
this.plugin = plugin;
}
@Override
public String getName() {
- return this.sender.getName();
+ if (this.sender instanceof PlayerEntity) {
+ return ((PlayerEntity) this.sender).getGameProfile().getName();
+ } else if (this.sender instanceof IServer) {
+ return "Console";
+ } else {
+ return "unknown:" + this.sender.getClass().getSimpleName();
+ }
}
@Override
public UUID getUniqueId() {
- if (this.sender instanceof EntityPlayer) {
- return ((EntityPlayer) this.sender).getUniqueID();
+ if (this.sender instanceof PlayerEntity) {
+ return ((PlayerEntity) this.sender).getUniqueID();
}
return null;
}
@Override
public void sendMessage(Component message) {
- ITextComponent component = ITextComponent.Serializer.jsonToComponent(GsonComponentSerializer.INSTANCE.serialize(message));
+ ITextComponent component = ITextComponent.Serializer.fromJson(GsonComponentSerializer.INSTANCE.serialize(message));
this.sender.sendMessage(component);
}
diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeServerSparkPlugin.java b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeServerSparkPlugin.java
index 22b6adc..13ccb59 100644
--- a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeServerSparkPlugin.java
+++ b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeServerSparkPlugin.java
@@ -20,32 +20,68 @@
package me.lucko.spark.forge;
+import com.mojang.brigadier.Command;
+import com.mojang.brigadier.CommandDispatcher;
+import com.mojang.brigadier.context.CommandContext;
+import com.mojang.brigadier.exceptions.CommandSyntaxException;
import me.lucko.spark.common.sampler.TickCounter;
-import net.minecraft.command.ICommandSender;
+import net.minecraft.command.CommandSource;
+import net.minecraft.command.ICommandSource;
+import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.server.MinecraftServer;
-import net.minecraftforge.fml.common.FMLCommonHandler;
-import net.minecraftforge.fml.common.gameevent.TickEvent;
+import net.minecraftforge.event.TickEvent;
+import net.minecraftforge.fml.event.server.FMLServerStartingEvent;
+import net.minecraftforge.server.permission.DefaultPermissionLevel;
+import net.minecraftforge.server.permission.PermissionAPI;
-import java.util.Collections;
-import java.util.List;
+import java.util.Arrays;
import java.util.stream.Stream;
-public class ForgeServerSparkPlugin extends ForgeSparkPlugin {
- public ForgeServerSparkPlugin(ForgeSparkMod mod) {
+public class ForgeServerSparkPlugin extends ForgeSparkPlugin implements Command<CommandSource> {
+
+ public static void register(ForgeSparkMod mod, FMLServerStartingEvent event) {
+ MinecraftServer server = event.getServer();
+ CommandDispatcher<CommandSource> dispatcher = event.getCommandDispatcher();
+
+ ForgeServerSparkPlugin plugin = new ForgeServerSparkPlugin(mod, server);
+ registerCommands(dispatcher, plugin, "spark");
+ PermissionAPI.registerNode("spark", DefaultPermissionLevel.OP, "Access to the spark command");
+ }
+
+ private final MinecraftServer server;
+
+ public ForgeServerSparkPlugin(ForgeSparkMod mod, MinecraftServer server) {
super(mod);
+ this.server = server;
}
@Override
- boolean hasPermission(ICommandSender sender, String permission) {
- return sender.canUseCommand(4, permission);
+ public int run(CommandContext<CommandSource> context) throws CommandSyntaxException {
+ String[] split = context.getInput().split(" ");
+ if (split.length == 0 || !split[0].equals("/spark")) {
+ return 0;
+ }
+
+ String[] args = Arrays.copyOfRange(split, 1, split.length);
+
+ this.platform.executeCommand(new ForgeCommandSender(context.getSource().asPlayer(), this), args);
+ return 1;
+ }
+
+ @Override
+ boolean hasPermission(ICommandSource sender, String permission) {
+ if (sender instanceof PlayerEntity) {
+ return PermissionAPI.hasPermission((PlayerEntity) sender, permission);
+ } else {
+ return true;
+ }
}
@Override
public Stream<ForgeCommandSender> getSendersWithPermission(String permission) {
- MinecraftServer mcServer = FMLCommonHandler.instance().getMinecraftServerInstance();
return Stream.concat(
- mcServer.getPlayerList().getPlayers().stream().filter(player -> player.canUseCommand(4, permission)),
- Stream.of(mcServer)
+ this.server.getPlayerList().getPlayers().stream().filter(player -> PermissionAPI.hasPermission(player, permission)),
+ Stream.of(this.server)
).map(sender -> new ForgeCommandSender(sender, this));
}
@@ -58,14 +94,4 @@ public class ForgeServerSparkPlugin extends ForgeSparkPlugin {
public String getCommandName() {
return "spark";
}
-
- @Override
- public String getName() {
- return "spark";
- }
-
- @Override
- public List<String> getAliases() {
- return Collections.emptyList();
- }
}
diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeSparkMod.java b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeSparkMod.java
index 1659d6d..7a3cafe 100644
--- a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeSparkMod.java
+++ b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeSparkMod.java
@@ -20,41 +20,52 @@
package me.lucko.spark.forge;
-import net.minecraftforge.fml.common.FMLCommonHandler;
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.fml.ModContainer;
+import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.common.Mod;
-import net.minecraftforge.fml.common.Mod.EventHandler;
-import net.minecraftforge.fml.common.event.FMLInitializationEvent;
-import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
-import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
-import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
+import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
+import net.minecraftforge.fml.event.server.FMLServerStartingEvent;
+import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
+import net.minecraftforge.fml.loading.FMLPaths;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import java.nio.file.Path;
-@Mod(
- modid = "spark",
- name = "spark",
- version = "@version@",
- acceptableRemoteVersions = "*"
-)
+@Mod("spark")
public class ForgeSparkMod {
- private Path configDirectory = null;
+ private static final Logger LOGGER = LogManager.getLogger();
- @EventHandler
- public void preInit(FMLPreInitializationEvent e) {
- this.configDirectory = e.getModConfigurationDirectory().toPath();
+ private ModContainer container;
+ private Path configDirectory;
+
+ public ForgeSparkMod() {
+ FMLJavaModLoadingContext.get().getModEventBus().register(this);
+ MinecraftForge.EVENT_BUS.register(this);
}
- @EventHandler
- public void init(FMLInitializationEvent e) {
- if (FMLCommonHandler.instance().getSide() == Side.CLIENT) {
- ForgeClientSparkPlugin.register(this);
- }
+ public String getVersion() {
+ return this.container.getModInfo().getVersion().toString();
+ }
+
+ @SubscribeEvent
+ public void setup(FMLCommonSetupEvent e) {
+ this.container = ModLoadingContext.get().getActiveContainer();
+ this.configDirectory = FMLPaths.CONFIGDIR.get().resolve(this.container.getModId());
+ }
+
+ @SubscribeEvent
+ public void clientInit(FMLClientSetupEvent e) {
+ ForgeClientSparkPlugin.register(this, e);
}
- @EventHandler
+ @SubscribeEvent
public void serverInit(FMLServerStartingEvent e) {
- e.registerServerCommand(new ForgeServerSparkPlugin(this));
+ ForgeServerSparkPlugin.register(this, e);
}
public Path getConfigDirectory() {
diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeSparkPlugin.java b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeSparkPlugin.java
index b2f2332..7141e8d 100644
--- a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeSparkPlugin.java
+++ b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeSparkPlugin.java
@@ -21,27 +21,37 @@
package me.lucko.spark.forge;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
+import com.mojang.brigadier.Command;
+import com.mojang.brigadier.CommandDispatcher;
+import com.mojang.brigadier.arguments.StringArgumentType;
+import com.mojang.brigadier.builder.LiteralArgumentBuilder;
+import com.mojang.brigadier.builder.RequiredArgumentBuilder;
import me.lucko.spark.common.SparkPlatform;
import me.lucko.spark.common.SparkPlugin;
import me.lucko.spark.common.sampler.ThreadDumper;
-import net.minecraft.command.ICommand;
-import net.minecraft.command.ICommandSender;
-import net.minecraft.server.MinecraftServer;
-import net.minecraft.util.math.BlockPos;
-import net.minecraftforge.fml.common.Mod;
+import net.minecraft.command.ICommandSource;
-import javax.annotation.Nullable;
import java.nio.file.Path;
-import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
-@SuppressWarnings("NullableProblems")
-public abstract class ForgeSparkPlugin implements SparkPlugin, ICommand {
+public abstract class ForgeSparkPlugin implements SparkPlugin {
+
+ public static <T> void registerCommands(CommandDispatcher<T> dispatcher, Command<T> executor, String... aliases) {
+ for (String alias : aliases) {
+ LiteralArgumentBuilder<T> command = LiteralArgumentBuilder.<T>literal(alias)
+ .executes(executor)
+ .then(RequiredArgumentBuilder.<T, String>argument("args", StringArgumentType.greedyString())
+ .executes(executor)
+ );
+
+ dispatcher.register(command);
+ }
+ }
private final ForgeSparkMod mod;
- private final ScheduledExecutorService scheduler;
- private final SparkPlatform platform;
+ protected final ScheduledExecutorService scheduler;
+ protected final SparkPlatform platform;
protected ForgeSparkPlugin(ForgeSparkMod mod) {
this.mod = mod;
@@ -52,11 +62,11 @@ public abstract class ForgeSparkPlugin implements SparkPlugin, ICommand {
this.platform.enable();
}
- abstract boolean hasPermission(ICommandSender sender, String permission);
+ abstract boolean hasPermission(ICommandSource sender, String permission);
@Override
public String getVersion() {
- return ForgeSparkMod.class.getAnnotation(Mod.class).version();
+ return this.mod.getVersion();
}
@Override
@@ -73,36 +83,4 @@ public abstract class ForgeSparkPlugin implements SparkPlugin, ICommand {
public ThreadDumper getDefaultThreadDumper() {
return new ThreadDumper.Specific(new long[]{Thread.currentThread().getId()});
}
-
- // implement ICommand
-
- @Override
- public String getUsage(ICommandSender iCommandSender) {
- return "/" + getCommandName();
- }
-
- @Override
- public void execute(MinecraftServer server, ICommandSender sender, String[] args) {
- this.platform.executeCommand(new ForgeCommandSender(sender, this), args);
- }
-
- @Override
- public List<String> getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args, @Nullable BlockPos blockPos) {
- return this.platform.tabCompleteCommand(new ForgeCommandSender(sender, this), args);
- }
-
- @Override
- public boolean checkPermission(MinecraftServer minecraftServer, ICommandSender sender) {
- return hasPermission(sender, "spark");
- }
-
- @Override
- public boolean isUsernameIndex(String[] strings, int i) {
- return false;
- }
-
- @Override
- public int compareTo(ICommand o) {
- return getCommandName().compareTo(o.getName());
- }
}
diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeTickCounter.java b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeTickCounter.java
index de7d846..2ff3f1d 100644
--- a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeTickCounter.java
+++ b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeTickCounter.java
@@ -22,8 +22,8 @@ package me.lucko.spark.forge;
import me.lucko.spark.common.sampler.TickCounter;
import net.minecraftforge.common.MinecraftForge;
-import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
-import net.minecraftforge.fml.common.gameevent.TickEvent;
+import net.minecraftforge.event.TickEvent;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
import java.util.HashSet;
import java.util.Set;
diff --git a/spark-forge/src/main/resources/META-INF/mods.toml b/spark-forge/src/main/resources/META-INF/mods.toml
new file mode 100644
index 0000000..3c57015
--- /dev/null
+++ b/spark-forge/src/main/resources/META-INF/mods.toml
@@ -0,0 +1,16 @@
+modLoader="javafml"
+loaderVersion="[28,)"
+authors="Luck, sk89q"
+
+[[mods]]
+modId="spark"
+displayName="spark"
+version="${pluginVersion}"
+description="${pluginDescription}"
+
+[[dependencies.spark]]
+ modId="forge"
+ mandatory=true
+ versionRange="[28,)"
+ ordering="NONE"
+ side="BOTH" \ No newline at end of file
diff --git a/spark-forge/src/main/resources/mcmod.info b/spark-forge/src/main/resources/mcmod.info
deleted file mode 100644
index 6b3be4c..0000000
--- a/spark-forge/src/main/resources/mcmod.info
+++ /dev/null
@@ -1,7 +0,0 @@
-[{
- "modid": "spark",
- "name": "spark",
- "description": "${pluginDescription}",
- "version": "${pluginVersion}",
- "authors": ["Luck", "sk89q"]
-}] \ No newline at end of file
diff --git a/spark-forge/src/main/resources/pack.mcmeta b/spark-forge/src/main/resources/pack.mcmeta
new file mode 100644
index 0000000..6dd0930
--- /dev/null
+++ b/spark-forge/src/main/resources/pack.mcmeta
@@ -0,0 +1,6 @@
+{
+ "pack": {
+ "description": "spark resources",
+ "pack_format": 4
+ }
+} \ No newline at end of file
diff --git a/spark-velocity/build.gradle b/spark-velocity/build.gradle
index a1586d7..03fe260 100644
--- a/spark-velocity/build.gradle
+++ b/spark-velocity/build.gradle
@@ -4,8 +4,8 @@ plugins {
dependencies {
compile project(':spark-common')
- compileOnly 'com.velocitypowered:velocity-api:1.0.2'
- annotationProcessor 'com.velocitypowered:velocity-api:1.0.2'
+ compileOnly 'com.velocitypowered:velocity-api:1.0.3'
+ annotationProcessor 'com.velocitypowered:velocity-api:1.0.3'
}
blossom {