diff options
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/item/WikiLookup.java')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/item/WikiLookup.java | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/WikiLookup.java b/src/main/java/de/hysky/skyblocker/skyblock/item/WikiLookup.java new file mode 100644 index 00000000..3ab478d0 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/WikiLookup.java @@ -0,0 +1,56 @@ +package de.hysky.skyblocker.skyblock.item; + +import de.hysky.skyblocker.utils.Utils; +import de.hysky.skyblocker.skyblock.itemlist.ItemRegistry; +import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.option.KeyBinding; +import net.minecraft.client.util.InputUtil; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NbtCompound; +import net.minecraft.screen.slot.Slot; +import net.minecraft.text.Text; +import net.minecraft.util.Util; +import org.lwjgl.glfw.GLFW; + +import java.util.concurrent.CompletableFuture; + +public class WikiLookup { + public static KeyBinding wikiLookup; + static final MinecraftClient client = MinecraftClient.getInstance(); + static String id; + + public static void init() { + wikiLookup = KeyBindingHelper.registerKeyBinding(new KeyBinding( + "key.wikiLookup", + InputUtil.Type.KEYSYM, + GLFW.GLFW_KEY_F4, + "key.categories.skyblocker" + )); + } + + public static String getSkyblockId(Slot slot) { + //Grabbing the skyblock NBT data + ItemStack selectedStack = slot.getStack(); + NbtCompound nbt = selectedStack.getSubNbt("ExtraAttributes"); + if (nbt != null) { + id = nbt.getString("id"); + } + return id; + } + + public static void openWiki(Slot slot) { + if (Utils.isOnSkyblock()) { + id = getSkyblockId(slot); + try { + String wikiLink = ItemRegistry.getWikiLink(id); + CompletableFuture.runAsync(() -> Util.getOperatingSystem().open(wikiLink)); + } catch (IndexOutOfBoundsException | IllegalStateException e) { + e.printStackTrace(); + if (client.player != null) + client.player.sendMessage(Text.of("Error while retrieving wiki article..."), false); + } + } + } + +} |