diff options
| author | Alex <8379108+Alex33856@users.noreply.github.com> | 2025-06-17 14:15:13 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-17 14:15:13 -0400 |
| commit | 0e9006f6ac3fb645369cce8ce5bd9c53e48f11b2 (patch) | |
| tree | e8686b409ce5f10832c96ef26b7654e308e8e6ed /src/main/java | |
| parent | d6f1b53dfc628126f9964bbaa9717e4e0709f69a (diff) | |
| download | Skyblocker-0e9006f6ac3fb645369cce8ce5bd9c53e48f11b2.tar.gz Skyblocker-0e9006f6ac3fb645369cce8ce5bd9c53e48f11b2.tar.bz2 Skyblocker-0e9006f6ac3fb645369cce8ce5bd9c53e48f11b2.zip | |
Add separate wiki lookup keybinds (#1324)
* Add separate wiki lookup keybinds
* Remove unnecessary color code formatting
* Readd and Deprecate config option
* Refactor WikiLookup
* Refactor ItemRepository
---------
Co-authored-by: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>
Diffstat (limited to 'src/main/java')
6 files changed, 50 insertions, 42 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java index 3f799cd0..48784d18 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java @@ -5,6 +5,7 @@ import de.hysky.skyblocker.UpdateNotifications; import de.hysky.skyblocker.config.ConfigUtils; import de.hysky.skyblocker.config.SkyblockerConfig; import de.hysky.skyblocker.config.configs.GeneralConfig; +import de.hysky.skyblocker.skyblock.item.WikiLookup; import de.hysky.skyblocker.skyblock.item.tooltip.adders.CraftPriceTooltip; import de.hysky.skyblocker.skyblock.shortcut.ShortcutsConfigScreen; import de.hysky.skyblocker.skyblock.speedPreset.SpeedPresetsScreen; @@ -348,21 +349,14 @@ public class GeneralCategory { .collapsed(true) .option(Option.<Boolean>createBuilder() .name(Text.translatable("skyblocker.config.general.wikiLookup.enableWikiLookup")) - .description(OptionDescription.of(Text.translatable("skyblocker.config.general.wikiLookup.enableWikiLookup.@Tooltip"))) + .description(OptionDescription.of(Text.translatable("skyblocker.config.general.wikiLookup.enableWikiLookup.@Tooltip", + WikiLookup.officialWikiLookup.getBoundKeyLocalizedText(), WikiLookup.fandomWikiLookup.getBoundKeyLocalizedText()))) .binding(defaults.general.wikiLookup.enableWikiLookup, () -> config.general.wikiLookup.enableWikiLookup, newValue -> config.general.wikiLookup.enableWikiLookup = newValue) .controller(ConfigUtils::createBooleanController) .build()) .option(ConfigUtils.createShortcutToKeybindsScreen()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.config.general.wikiLookup.officialWiki")) - .description(OptionDescription.of(Text.translatable("skyblocker.config.general.wikiLookup.officialWiki.@Tooltip"))) - .binding(defaults.general.wikiLookup.officialWiki, - () -> config.general.wikiLookup.officialWiki, - newValue -> config.general.wikiLookup.officialWiki = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) .build()) //Special Effects diff --git a/src/main/java/de/hysky/skyblocker/config/configs/GeneralConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/GeneralConfig.java index 258d43fa..b36a2c3f 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/GeneralConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/GeneralConfig.java @@ -252,8 +252,8 @@ public class GeneralConfig { @SerialEntry public boolean enableWikiLookup = true; - @SerialEntry - public boolean officialWiki = true; + @Deprecated + public transient boolean officialWiki = true; } public static class SpecialEffects { diff --git a/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java b/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java index d5734e63..becad8c0 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java @@ -117,8 +117,12 @@ public abstract class HandledScreenMixin<T extends ScreenHandler> extends Screen if (this.client != null && this.client.player != null && this.focusedSlot != null && keyCode != 256 && !this.client.options.inventoryKey.matchesKey(keyCode, scanCode) && Utils.isOnSkyblock()) { SkyblockerConfig config = SkyblockerConfigManager.get(); //wiki lookup - if (config.general.wikiLookup.enableWikiLookup && WikiLookup.wikiLookup.matchesKey(keyCode, scanCode)) { - WikiLookup.openWiki(this.focusedSlot, client.player); + if (config.general.wikiLookup.enableWikiLookup) { + if (WikiLookup.officialWikiLookup.matchesKey(keyCode, scanCode)) { + WikiLookup.openWiki(this.focusedSlot, client.player, true); + } else if (WikiLookup.fandomWikiLookup.matchesKey(keyCode, scanCode)) { + WikiLookup.openWiki(this.focusedSlot, client.player, false); + } } //item protection if (ItemProtection.itemProtection.matchesKey(keyCode, scanCode)) { 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 9ebf72a6..3d77c735 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/WikiLookup.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/WikiLookup.java @@ -20,30 +20,38 @@ import org.slf4j.LoggerFactory; import java.util.concurrent.CompletableFuture; public class WikiLookup { - private static final Logger LOGGER = LoggerFactory.getLogger(WikiLookup.class); - public static KeyBinding wikiLookup; + private static final Logger LOGGER = LoggerFactory.getLogger(WikiLookup.class); + public static KeyBinding officialWikiLookup; + public static KeyBinding fandomWikiLookup; - @Init - public static void init() { - wikiLookup = KeyBindingHelper.registerKeyBinding(new KeyBinding( - "key.wikiLookup", - InputUtil.Type.KEYSYM, - GLFW.GLFW_KEY_F4, - "key.categories.skyblocker" - )); - } + @Init + public static void init() { + officialWikiLookup = KeyBindingHelper.registerKeyBinding(new KeyBinding( + "key.wikiLookup.official", + InputUtil.Type.KEYSYM, + GLFW.GLFW_KEY_F4, + "key.categories.skyblocker" + )); - public static void openWiki(@NotNull Slot slot, @NotNull PlayerEntity player) { - WikiLookup.openWiki(slot.getStack(), player); - } + fandomWikiLookup = KeyBindingHelper.registerKeyBinding(new KeyBinding( + "key.wikiLookup.fandom", + InputUtil.Type.KEYSYM, + GLFW.GLFW_KEY_F1, + "key.categories.skyblocker" + )); + } + + public static void openWiki(@NotNull Slot slot, @NotNull PlayerEntity player, boolean useOfficial) { + WikiLookup.openWiki(slot.getStack(), player, useOfficial); + } - public static void openWiki(ItemStack stack, PlayerEntity player) { + public static void openWiki(ItemStack stack, PlayerEntity player, boolean useOfficial) { ItemUtils.getItemIdOptional(stack) - .map(ItemRepository::getWikiLink) + .map(neuId -> ItemRepository.getWikiLink(neuId, useOfficial)) .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)); + }), () -> player.sendMessage(Constants.PREFIX.get().append(useOfficial ? Text.translatable("skyblocker.wikiLookup.noArticleFound.official") : Text.translatable("skyblocker.wikiLookup.noArticleFound.fandom")), false)); } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemRepository.java b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemRepository.java index b5b0cbc4..f771aa45 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemRepository.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemRepository.java @@ -1,7 +1,6 @@ package de.hysky.skyblocker.skyblock.itemlist; import de.hysky.skyblocker.annotations.Init; -import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.utils.ItemUtils; import de.hysky.skyblocker.utils.NEURepoManager; import io.github.moulberry.repo.data.NEUCraftingRecipe; @@ -70,7 +69,7 @@ public class ItemRepository { } } - public static String getWikiLink(String neuId) { + public static String getWikiLink(String neuId, boolean useOfficial) { NEUItem item = NEURepoManager.NEU_REPO.getItems().getItemBySkyblockId(neuId); if (item == null || item.getInfo() == null || item.getInfo().isEmpty()) { return null; @@ -79,7 +78,7 @@ public class ItemRepository { List<String> info = item.getInfo(); String wikiLink0 = info.getFirst(); String wikiLink1 = info.size() > 1 ? info.get(1) : ""; - String wikiDomain = SkyblockerConfigManager.get().general.wikiLookup.officialWiki ? "https://wiki.hypixel.net" : "https://hypixel-skyblock.fandom.com"; + String wikiDomain = useOfficial ? "https://wiki.hypixel.net" : "https://hypixel-skyblock.fandom.com"; if (wikiLink0.startsWith(wikiDomain)) { return wikiLink0; } else if (wikiLink1.startsWith(wikiDomain)) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/recipebook/SkyblockCraftingRecipeResults.java b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/recipebook/SkyblockCraftingRecipeResults.java index 834440a5..367bcd31 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/recipebook/SkyblockCraftingRecipeResults.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/recipebook/SkyblockCraftingRecipeResults.java @@ -180,7 +180,7 @@ public class SkyblockCraftingRecipeResults implements RecipeAreaDisplay { /** * Handles updating the search results when a character is typed into the search bar, - * + * * @implNote The {@code query} is always passed as lower case. */ @Override @@ -316,14 +316,17 @@ public class SkyblockCraftingRecipeResults implements RecipeAreaDisplay { @Override public boolean keyPressed(double mouseX, double mouseY, int keyCode, int scanCode, int modifiers) { - if (SkyblockerConfigManager.get().general.wikiLookup.enableWikiLookup - && WikiLookup.wikiLookup.matchesKey(keyCode, scanCode)) - return this.resultButtons.stream() - .filter(button -> button.isMouseOver(mouseX, mouseY)) - .findFirst().map(button -> { - WikiLookup.openWiki(button.getDisplayStack(), client.player); - return true; - }).orElse(false); + if (SkyblockerConfigManager.get().general.wikiLookup.enableWikiLookup) { + boolean officialWikiLookup = WikiLookup.officialWikiLookup.matchesKey(keyCode, scanCode); + if (officialWikiLookup || WikiLookup.fandomWikiLookup.matchesKey(keyCode, scanCode)) { + return this.resultButtons.stream() + .filter(button -> button.isMouseOver(mouseX, mouseY)) + .findFirst().map(button -> { + WikiLookup.openWiki(button.getDisplayStack(), client.player, officialWikiLookup); + return true; + }).orElse(false); + } + } return false; } } |
