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 | 31 |
1 files changed, 12 insertions, 19 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 index 5815c11f..109e5503 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/WikiLookup.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/WikiLookup.java @@ -2,7 +2,9 @@ package de.hysky.skyblocker.skyblock.item; import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.skyblock.itemlist.ItemRepository; +import de.hysky.skyblocker.utils.Constants; import de.hysky.skyblocker.utils.ItemUtils; +import de.hysky.skyblocker.utils.Utils; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.minecraft.client.option.KeyBinding; import net.minecraft.client.util.InputUtil; @@ -10,6 +12,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; import net.minecraft.util.Util; +import org.jetbrains.annotations.NotNull; import org.lwjgl.glfw.GLFW; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -19,7 +22,6 @@ import java.util.concurrent.CompletableFuture; public class WikiLookup { private static final Logger LOGGER = LoggerFactory.getLogger(WikiLookup.class); public static KeyBinding wikiLookup; - private static String id; public static void init() { wikiLookup = KeyBindingHelper.registerKeyBinding(new KeyBinding( @@ -30,24 +32,15 @@ public class WikiLookup { )); } - public static void getSkyblockId(Slot slot) { - //Grabbing the skyblock NBT data - ItemUtils.getItemIdOptional(slot.getStack()).ifPresent(newId -> id = newId); - } + public static void openWiki(@NotNull Slot slot, @NotNull PlayerEntity player) { + if (!Utils.isOnSkyblock() || !SkyblockerConfigManager.get().general.wikiLookup.enableWikiLookup) return; - public static void openWiki(Slot slot, PlayerEntity player) { - if (SkyblockerConfigManager.get().general.wikiLookup.enableWikiLookup) { - getSkyblockId(slot); - try { - String wikiLink = ItemRepository.getWikiLink(id, player); - if (wikiLink != null) CompletableFuture.runAsync(() -> Util.getOperatingSystem().open(wikiLink)); - } catch (IndexOutOfBoundsException | IllegalStateException e) { - LOGGER.error("[Skyblocker] Error while retrieving wiki article...", e); - if (player != null) { - player.sendMessage(Text.of("[Skyblocker] Error while retrieving wiki article, see logs..."), false); - } - } - } + ItemUtils.getItemIdOptional(slot.getStack()) + .map(ItemRepository::getWikiLink) + .ifPresentOrElse(wikiLink -> CompletableFuture.runAsync(() -> Util.getOperatingSystem().open(wikiLink)).exceptionally(e -> { + LOGGER.error("[Skyblocker] Error while retrieving wiki article...", e); + player.sendMessage(Constants.PREFIX.get().append("Error while retrieving wiki article, see logs..."), false); + return null; + }), () -> player.sendMessage(Constants.PREFIX.get().append(Text.translatable("skyblocker.wikiLookup.noArticleFound")), false)); } - } |