aboutsummaryrefslogtreecommitdiff
path: root/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin
diff options
context:
space:
mode:
authorLuck <git@lucko.me>2022-06-09 21:21:29 +0100
committerLuck <git@lucko.me>2022-06-09 21:21:29 +0100
commit0ac8713eaaefe7336db2e0369bbe547dc6c0da7d (patch)
tree07293873c21d89ef4b2035be56c00d2efa624a45 /spark-fabric/src/main/java/me/lucko/spark/fabric/plugin
parentf051a29659c659d9b491bced1acf3cac59074f88 (diff)
downloadspark-0ac8713eaaefe7336db2e0369bbe547dc6c0da7d.tar.gz
spark-0ac8713eaaefe7336db2e0369bbe547dc6c0da7d.tar.bz2
spark-0ac8713eaaefe7336db2e0369bbe547dc6c0da7d.zip
1.19
Diffstat (limited to 'spark-fabric/src/main/java/me/lucko/spark/fabric/plugin')
-rw-r--r--spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricClientSparkPlugin.java67
-rw-r--r--spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricServerSparkPlugin.java14
-rw-r--r--spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricSparkPlugin.java11
3 files changed, 29 insertions, 63 deletions
diff --git a/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricClientSparkPlugin.java b/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricClientSparkPlugin.java
index c173a0b..e94d697 100644
--- a/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricClientSparkPlugin.java
+++ b/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricClientSparkPlugin.java
@@ -33,24 +33,21 @@ import me.lucko.spark.common.tick.TickHook;
import me.lucko.spark.common.tick.TickReporter;
import me.lucko.spark.fabric.FabricCommandSender;
import me.lucko.spark.fabric.FabricPlatformInfo;
-import me.lucko.spark.fabric.FabricSparkGameHooks;
import me.lucko.spark.fabric.FabricSparkMod;
import me.lucko.spark.fabric.FabricTickHook;
import me.lucko.spark.fabric.FabricTickReporter;
+import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
+import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents;
import net.minecraft.client.MinecraftClient;
-import net.minecraft.client.network.ClientPlayNetworkHandler;
-import net.minecraft.command.CommandSource;
+import net.minecraft.command.CommandRegistryAccess;
import net.minecraft.server.command.CommandOutput;
-import java.util.Arrays;
-import java.util.Optional;
import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
import java.util.stream.Stream;
-public class FabricClientSparkPlugin extends FabricSparkPlugin implements SuggestionProvider<CommandSource> {
+public class FabricClientSparkPlugin extends FabricSparkPlugin implements Command<FabricClientCommandSource>, SuggestionProvider<FabricClientCommandSource> {
public static void register(FabricSparkMod mod, MinecraftClient client) {
FabricClientSparkPlugin plugin = new FabricClientSparkPlugin(mod, client);
@@ -58,7 +55,6 @@ public class FabricClientSparkPlugin extends FabricSparkPlugin implements Sugges
}
private final MinecraftClient minecraft;
- private CommandDispatcher<CommandSource> dispatcher;
public FabricClientSparkPlugin(FabricSparkMod mod, MinecraftClient minecraft) {
super(mod);
@@ -69,11 +65,9 @@ public class FabricClientSparkPlugin extends FabricSparkPlugin implements Sugges
public void enable() {
super.enable();
- // ensure commands are registered
- this.scheduler.scheduleWithFixedDelay(this::checkCommandRegistered, 10, 10, TimeUnit.SECONDS);
-
// events
ClientLifecycleEvents.CLIENT_STOPPING.register(this::onDisable);
+ ClientCommandRegistrationCallback.EVENT.register(this::onCommandRegister);
}
private void onDisable(MinecraftClient stoppingClient) {
@@ -82,59 +76,30 @@ public class FabricClientSparkPlugin extends FabricSparkPlugin implements Sugges
}
}
- private CommandDispatcher<CommandSource> getPlayerCommandDispatcher() {
- return Optional.ofNullable(this.minecraft.player)
- .map(player -> player.networkHandler)
- .map(ClientPlayNetworkHandler::getCommandDispatcher)
- .orElse(null);
- }
-
- private void checkCommandRegistered() {
- CommandDispatcher<CommandSource> dispatcher = getPlayerCommandDispatcher();
- if (dispatcher == null) {
- return;
- }
-
- try {
- if (dispatcher != this.dispatcher) {
- this.dispatcher = dispatcher;
- registerCommands(this.dispatcher, c -> Command.SINGLE_SUCCESS, this, "sparkc", "sparkclient");
- FabricSparkGameHooks.INSTANCE.setChatSendCallback(this::onClientChat);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
+ public void onCommandRegister(CommandDispatcher<FabricClientCommandSource> dispatcher, CommandRegistryAccess registryAccess) {
+ registerCommands(dispatcher, this, this, "sparkc", "sparkclient");
}
- public boolean onClientChat(String chat) {
- String[] args = processArgs(chat, false);
+ @Override
+ public int run(CommandContext<FabricClientCommandSource> context) throws CommandSyntaxException {
+ String[] args = processArgs(context, false, "sparkc", "sparkclient");
if (args == null) {
- return false;
+ return 0;
}
this.threadDumper.ensureSetup();
- this.platform.executeCommand(new FabricCommandSender(this.minecraft.player, this), args);
- this.minecraft.inGameHud.getChatHud().addToMessageHistory(chat);
- return true;
+ this.platform.executeCommand(new FabricCommandSender(context.getSource().getEntity(), this), args);
+ return Command.SINGLE_SUCCESS;
}
@Override
- public CompletableFuture<Suggestions> getSuggestions(CommandContext<CommandSource> context, SuggestionsBuilder builder) throws CommandSyntaxException {
- String[] args = processArgs(context.getInput(), true);
+ public CompletableFuture<Suggestions> getSuggestions(CommandContext<FabricClientCommandSource> context, SuggestionsBuilder builder) throws CommandSyntaxException {
+ String[] args = processArgs(context, true, "/sparkc", "/sparkclient");
if (args == null) {
return Suggestions.empty();
}
- return generateSuggestions(new FabricCommandSender(this.minecraft.player, this), args, builder);
- }
-
- private static String[] processArgs(String input, boolean tabComplete) {
- String[] split = input.split(" ", tabComplete ? -1 : 0);
- if (split.length == 0 || !split[0].equals("/sparkc") && !split[0].equals("/sparkclient")) {
- return null;
- }
-
- return Arrays.copyOfRange(split, 1, split.length);
+ return generateSuggestions(new FabricCommandSender(context.getSource().getEntity(), this), args, builder);
}
@Override
diff --git a/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricServerSparkPlugin.java b/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricServerSparkPlugin.java
index 6dc5483..428ac4c 100644
--- a/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricServerSparkPlugin.java
+++ b/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricServerSparkPlugin.java
@@ -47,7 +47,6 @@ import net.minecraft.server.MinecraftServer;
import net.minecraft.server.command.CommandOutput;
import net.minecraft.server.command.ServerCommandSource;
-import java.util.Arrays;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Stream;
@@ -85,7 +84,7 @@ public class FabricServerSparkPlugin extends FabricSparkPlugin implements Comman
@Override
public int run(CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
- String[] args = processArgs(context, false);
+ String[] args = processArgs(context, false, "/spark", "spark");
if (args == null) {
return 0;
}
@@ -98,7 +97,7 @@ public class FabricServerSparkPlugin extends FabricSparkPlugin implements Comman
@Override
public CompletableFuture<Suggestions> getSuggestions(CommandContext<ServerCommandSource> context, SuggestionsBuilder builder) throws CommandSyntaxException {
- String[] args = processArgs(context, true);
+ String[] args = processArgs(context, true, "/spark", "spark");
if (args == null) {
return Suggestions.empty();
}
@@ -106,15 +105,6 @@ public class FabricServerSparkPlugin extends FabricSparkPlugin implements Comman
return generateSuggestions(new FabricCommandSender(context.getSource().getPlayer(), this), args, builder);
}
- private static String[] processArgs(CommandContext<ServerCommandSource> context, boolean tabComplete) {
- String[] split = context.getInput().split(" ", tabComplete ? -1 : 0);
- if (split.length == 0 || !split[0].equals("/spark") && !split[0].equals("spark")) {
- return null;
- }
-
- return Arrays.copyOfRange(split, 1, split.length);
- }
-
@Override
public boolean hasPermission(CommandOutput sender, String permission) {
if (sender instanceof PlayerEntity) {
diff --git a/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricSparkPlugin.java b/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricSparkPlugin.java
index 7d0a989..b1392d4 100644
--- a/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricSparkPlugin.java
+++ b/spark-fabric/src/main/java/me/lucko/spark/fabric/plugin/FabricSparkPlugin.java
@@ -25,6 +25,7 @@ import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.brigadier.builder.RequiredArgumentBuilder;
+import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.suggestion.SuggestionProvider;
import com.mojang.brigadier.suggestion.Suggestions;
import com.mojang.brigadier.suggestion.SuggestionsBuilder;
@@ -45,6 +46,7 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.nio.file.Path;
+import java.util.Arrays;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
@@ -152,4 +154,13 @@ public abstract class FabricSparkPlugin implements SparkPlugin {
}
}
+ protected static String[] processArgs(CommandContext<?> context, boolean tabComplete, String... aliases) {
+ String[] split = context.getInput().split(" ", tabComplete ? -1 : 0);
+ if (split.length == 0 || !Arrays.asList(aliases).contains(split[0])) {
+ return null;
+ }
+
+ return Arrays.copyOfRange(split, 1, split.length);
+ }
+
}