diff options
author | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2024-04-04 15:54:59 -0400 |
---|---|---|
committer | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2024-04-04 15:54:59 -0400 |
commit | 28155109bb079a46d3a7663cd9858f0f554daed0 (patch) | |
tree | e3cddbf0fc31f92cd750c783672d995904a90d26 /src/main/java/de/hysky/skyblocker | |
parent | 2a97ba59a62113a997e64e3c43649f7ba65e7f8f (diff) | |
download | Skyblocker-28155109bb079a46d3a7663cd9858f0f554daed0.tar.gz Skyblocker-28155109bb079a46d3a7663cd9858f0f554daed0.tar.bz2 Skyblocker-28155109bb079a46d3a7663cd9858f0f554daed0.zip |
Refactor WarpAutocomplete
Diffstat (limited to 'src/main/java/de/hysky/skyblocker')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/mixin/CommandTreeS2CPacketMixin.java | 7 | ||||
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/WarpAutocomplete.java | 41 |
2 files changed, 16 insertions, 32 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixin/CommandTreeS2CPacketMixin.java b/src/main/java/de/hysky/skyblocker/mixin/CommandTreeS2CPacketMixin.java index ba8f7371..1cc1b8de 100644 --- a/src/main/java/de/hysky/skyblocker/mixin/CommandTreeS2CPacketMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixin/CommandTreeS2CPacketMixin.java @@ -11,11 +11,10 @@ import org.spongepowered.asm.mixin.injection.At; @Mixin(targets = "net.minecraft.network.packet.s2c.play.CommandTreeS2CPacket$CommandTree") public class CommandTreeS2CPacketMixin { - - @ModifyExpressionValue(method = "getNode", at = @At(ordinal = 1, value = "INVOKE", target = "Lnet/minecraft/network/packet/s2c/play/CommandTreeS2CPacket$CommandTree;getNode(I)Lcom/mojang/brigadier/tree/CommandNode;")) + @ModifyExpressionValue(method = "getNode", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/packet/s2c/play/CommandTreeS2CPacket$CommandTree;getNode(I)Lcom/mojang/brigadier/tree/CommandNode;", ordinal = 1)) public CommandNode<? extends CommandSource> modifyCommandSuggestions(CommandNode<CommandSource> original) { - if (WarpAutocomplete.COMMAND_THING != null && original instanceof LiteralCommandNode<?> literalCommandNode && literalCommandNode.getLiteral().equals("warp") && Utils.isOnHypixel()) { - return WarpAutocomplete.COMMAND_THING; + if (Utils.isOnHypixel() && WarpAutocomplete.commandNode != null && original instanceof LiteralCommandNode<?> literalCommandNode && literalCommandNode.getLiteral().equals("warp")) { + return WarpAutocomplete.commandNode; } return original; } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/WarpAutocomplete.java b/src/main/java/de/hysky/skyblocker/skyblock/WarpAutocomplete.java index dd07501c..8862185f 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/WarpAutocomplete.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/WarpAutocomplete.java @@ -2,16 +2,11 @@ package de.hysky.skyblocker.skyblock; import com.google.gson.JsonArray; import com.google.gson.JsonElement; -import com.mojang.brigadier.StringReader; -import com.mojang.brigadier.arguments.ArgumentType; -import com.mojang.brigadier.context.CommandContext; -import com.mojang.brigadier.suggestion.Suggestions; -import com.mojang.brigadier.suggestion.SuggestionsBuilder; +import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.tree.LiteralCommandNode; import de.hysky.skyblocker.SkyblockerMod; import de.hysky.skyblocker.utils.Http; import de.hysky.skyblocker.utils.Utils; -import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.minecraft.command.CommandSource; import org.jetbrains.annotations.Nullable; @@ -21,13 +16,16 @@ import org.slf4j.LoggerFactory; import java.util.List; import java.util.concurrent.CompletableFuture; +import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.argument; +import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal; + /** * the mixin {@link de.hysky.skyblocker.mixin.CommandTreeS2CPacketMixin} */ public class WarpAutocomplete { - public static @Nullable LiteralCommandNode<FabricClientCommandSource> COMMAND_THING = null; - - protected static final Logger LOGGER = LoggerFactory.getLogger(WarpAutocomplete.class); + private static final Logger LOGGER = LoggerFactory.getLogger(WarpAutocomplete.class); + @Nullable + public static LiteralCommandNode<FabricClientCommandSource> commandNode; public static void init() { CompletableFuture.supplyAsync(() -> { @@ -37,25 +35,12 @@ public class WarpAutocomplete { } catch (Exception e) { LOGGER.error("[Skyblocker] Failed to download warps list", e); } - return List.of(""); - }).thenAccept(strings -> COMMAND_THING = ClientCommandManager - .literal("warp") + return List.<String>of(); + }).thenAccept(warps -> commandNode = literal("warp") .requires(fabricClientCommandSource -> Utils.isOnSkyblock()) - .then(ClientCommandManager.argument("destination", new ArgType(strings)) - ).build()); - - } - - private record ArgType(List<String> possibleWarps) implements ArgumentType<String> { - - @Override - public String parse(StringReader reader) { - return reader.readUnquotedString(); - } - - @Override - public <S> CompletableFuture<Suggestions> listSuggestions(CommandContext<S> context, SuggestionsBuilder builder) { - return CommandSource.suggestMatching(possibleWarps, builder); - } + .then(argument("destination", StringArgumentType.string()) + .suggests((context, builder) -> CommandSource.suggestMatching(warps, builder)) + ).build() + ); } } |