diff options
author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-04-09 15:57:57 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-09 15:57:57 -0400 |
commit | af64b5f098d47caa5fabd5c1fb4f8edb9ae714b6 (patch) | |
tree | 402310bda53b065c2c9f3741ad1e9daa70de0b8f /src/main/java/de/hysky/skyblocker/skyblock/WarpAutocomplete.java | |
parent | ec2672d95e0727e75f628c29d86eb43ee7e67e53 (diff) | |
parent | 28155109bb079a46d3a7663cd9858f0f554daed0 (diff) | |
download | Skyblocker-af64b5f098d47caa5fabd5c1fb4f8edb9ae714b6.tar.gz Skyblocker-af64b5f098d47caa5fabd5c1fb4f8edb9ae714b6.tar.bz2 Skyblocker-af64b5f098d47caa5fabd5c1fb4f8edb9ae714b6.zip |
Merge pull request #630 from viciscat/warps
Warp command auto-complete
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/WarpAutocomplete.java')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/WarpAutocomplete.java | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/WarpAutocomplete.java b/src/main/java/de/hysky/skyblocker/skyblock/WarpAutocomplete.java new file mode 100644 index 00000000..8862185f --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/WarpAutocomplete.java @@ -0,0 +1,46 @@ +package de.hysky.skyblocker.skyblock; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +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.FabricClientCommandSource; +import net.minecraft.command.CommandSource; +import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; +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 { + private static final Logger LOGGER = LoggerFactory.getLogger(WarpAutocomplete.class); + @Nullable + public static LiteralCommandNode<FabricClientCommandSource> commandNode; + + public static void init() { + CompletableFuture.supplyAsync(() -> { + try { + JsonArray jsonElements = SkyblockerMod.GSON.fromJson(Http.sendGetRequest("https://hysky.de/api/locations"), JsonArray.class); + return jsonElements.asList().stream().map(JsonElement::getAsString).toList(); + } catch (Exception e) { + LOGGER.error("[Skyblocker] Failed to download warps list", e); + } + return List.<String>of(); + }).thenAccept(warps -> commandNode = literal("warp") + .requires(fabricClientCommandSource -> Utils.isOnSkyblock()) + .then(argument("destination", StringArgumentType.string()) + .suggests((context, builder) -> CommandSource.suggestMatching(warps, builder)) + ).build() + ); + } +} |