diff options
author | Thunderblade73 <85900443+Thunderblade73@users.noreply.github.com> | 2024-02-20 18:32:31 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-20 18:32:31 +0100 |
commit | 3ab20a18d4a2be4cdba1f16cfa3d5a9276227042 (patch) | |
tree | 42ea557a74f43c991b28cfca439d952ceb803858 | |
parent | 2d1a900fd40150cff686ea4f2c260d120140d653 (diff) | |
download | skyhanni-3ab20a18d4a2be4cdba1f16cfa3d5a9276227042.tar.gz skyhanni-3ab20a18d4a2be4cdba1f16cfa3d5a9276227042.tar.bz2 skyhanni-3ab20a18d4a2be4cdba1f16cfa3d5a9276227042.zip |
Added option to only show Ender Node tracker while holding a pickaxe. #984
3 files changed, 32 insertions, 11 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/combat/EnderNodeConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/combat/EnderNodeConfig.java index db636f269..d70d51f5a 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/combat/EnderNodeConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/combat/EnderNodeConfig.java @@ -43,6 +43,14 @@ public class EnderNodeConfig { @Expose @ConfigOption( + name = "Only While Holding Tool", + desc = "Only shows the tracker if holding a pickaxe, drill or gauntlet in hand." + ) + @ConfigEditorBoolean + public boolean onlyPickaxe = false; + + @Expose + @ConfigOption( name = "Text Format", desc = "Drag text to change the appearance of the overlay." ) diff --git a/src/main/java/at/hannibal2/skyhanni/features/combat/endernodetracker/EnderNodeTracker.kt b/src/main/java/at/hannibal2/skyhanni/features/combat/endernodetracker/EnderNodeTracker.kt index adb0edd38..9ca631d39 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/combat/endernodetracker/EnderNodeTracker.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/combat/endernodetracker/EnderNodeTracker.kt @@ -15,8 +15,12 @@ import at.hannibal2.skyhanni.utils.CollectionUtils.addAsSingletonList import at.hannibal2.skyhanni.utils.CollectionUtils.addOrPut import at.hannibal2.skyhanni.utils.ConditionalUtils.afterChange import at.hannibal2.skyhanni.utils.ConfigUtils +import at.hannibal2.skyhanni.utils.InventoryUtils +import at.hannibal2.skyhanni.utils.ItemCategory +import at.hannibal2.skyhanni.utils.ItemCategory.Companion.containsItem import at.hannibal2.skyhanni.utils.ItemUtils.getInternalNameOrNull import at.hannibal2.skyhanni.utils.LorenzUtils +import at.hannibal2.skyhanni.utils.LorenzUtils.isInIsland import at.hannibal2.skyhanni.utils.NEUItems.getNpcPriceOrNull import at.hannibal2.skyhanni.utils.NEUItems.getPriceOrNull import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators @@ -62,9 +66,8 @@ object EnderNodeTracker { @SubscribeEvent fun onChat(event: LorenzChatEvent) { - if (!config.enabled) return + if (!isEnabled()) return if (!ProfileStorageData.loaded) return - if (!isInTheEnd()) return // don't call removeColor because we want to distinguish enderman pet rarity val message = event.message.trim() @@ -102,8 +105,7 @@ object EnderNodeTracker { @SubscribeEvent fun onIslandChange(event: IslandChangeEvent) { - if (!config.enabled) return - if (event.newIsland != IslandType.THE_END) return + if (!isEnabled()) return miteGelInInventory = Minecraft.getMinecraft().thePlayer.inventory.mainInventory .filter { it?.getInternalNameOrNull() == EnderNode.MITE_GEL.internalName } .sumOf { it.stackSize } @@ -111,9 +113,8 @@ object EnderNodeTracker { @SubscribeEvent fun onSackChange(event: SackChangeEvent) { - if (!config.enabled) return + if (!isEnabled()) return if (!ProfileStorageData.loaded) return - if (!isInTheEnd()) return val change = event.sackChanges .firstOrNull { it.internalName == EnderNode.MITE_GEL.internalName && it.delta > 0 } @@ -126,8 +127,7 @@ object EnderNodeTracker { @SubscribeEvent fun onInventoryUpdate(event: OwnInventoryItemUpdateEvent) { - if (!config.enabled) return - if (!isInTheEnd()) return + if (!isEnabled()) return if (!ProfileStorageData.loaded) return val newMiteGelInInventory = Minecraft.getMinecraft().thePlayer.inventory.mainInventory @@ -144,8 +144,7 @@ object EnderNodeTracker { @SubscribeEvent fun onRenderOverlay(event: GuiRenderEvent) { - if (!config.enabled) return - if (!isInTheEnd()) return + if (!isEnabled()) return tracker.renderDisplay(config.position) } @@ -184,7 +183,10 @@ object EnderNodeTracker { return newProfit } - private fun isInTheEnd() = LorenzUtils.skyBlockArea == "The End" + private fun isEnabled() = IslandType.THE_END.isInIsland() && config.enabled && + (!config.onlyPickaxe || hasItemInHand()) + + private fun hasItemInHand() = ItemCategory.miningTools.containsItem(InventoryUtils.getItemInHand()) private fun isEnderArmor(displayName: EnderNode) = when (displayName) { EnderNode.END_HELMET, diff --git a/src/main/java/at/hannibal2/skyhanni/utils/ItemCategory.kt b/src/main/java/at/hannibal2/skyhanni/utils/ItemCategory.kt index 99407b3ed..975a409c3 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/ItemCategory.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/ItemCategory.kt @@ -1,5 +1,8 @@ package at.hannibal2.skyhanni.utils +import at.hannibal2.skyhanni.utils.ItemUtils.getItemCategoryOrNull +import net.minecraft.item.ItemStack + enum class ItemCategory { SWORD, LONGSWORD, @@ -49,4 +52,12 @@ enum class ItemCategory { NONE, ; + + companion object { + + fun Collection<ItemCategory>.containsItem(stack: ItemStack?) = + stack?.getItemCategoryOrNull()?.let { this.contains(it) } ?: false + + val miningTools = listOf(PICKAXE, DRILL, GAUNTLET) + } } |