diff options
author | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2023-01-22 19:46:57 +0100 |
---|---|---|
committer | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2023-01-22 19:46:57 +0100 |
commit | 7c0c1b2935b7edaabd5efa12ef23ede0365c1d5b (patch) | |
tree | 56368862648a7788c55cdf4abf5035c70671aa46 | |
parent | 8a255ddfcaec09ce31f12c7412f889b34e209768 (diff) | |
download | skyhanni-7c0c1b2935b7edaabd5efa12ef23ede0365c1d5b.tar.gz skyhanni-7c0c1b2935b7edaabd5efa12ef23ede0365c1d5b.tar.bz2 skyhanni-7c0c1b2935b7edaabd5efa12ef23ede0365c1d5b.zip |
Adding green line around items that are clickable.
-rw-r--r-- | CHANGELOG.md | 7 | ||||
-rw-r--r-- | FEATURES.md | 2 | ||||
-rw-r--r-- | build.gradle.kts | 2 | ||||
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/SkyHanniMod.java | 2 | ||||
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/config/features/Inventory.java | 6 | ||||
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/data/ItemRenderBackground.kt | 57 | ||||
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt | 33 |
7 files changed, 81 insertions, 28 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d0e388a1..72aadf72d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # SkyHanni - Change Log -## Version 0.15 +## Version 0.16.UNRELEASED (UNRELEASED) + +## Features ++ Adding green line around items that are clickable. (Inside the **Not Clickable Items Feature**) + +## Version 0.15 (2023-01-22) ### Features + Added Bazaar Update Timer - Forrick. diff --git a/FEATURES.md b/FEATURES.md index 6d21c69ab..b6395f9ed 100644 --- a/FEATURES.md +++ b/FEATURES.md @@ -44,7 +44,7 @@ - Visual highlight chests that have not yet been opened in the Croesus inventory. ## Inventory -- Not Clickable Items: Mark items gray in your inventory when they are not supposed to be moved in certain GUIs (in NPC sell inventories, ender chests and backpacks, salvaging in the dungeon hub, player trade, bazaar, action house, accessory bag, sack of sacks, fishing bag, potion bag, chests on the private island, attribute fusion and equipment GUI) +- Not Clickable Items: Mark items gray in your inventory when they are not supposed to be moved in certain GUIs, and make green lines around items that meet that requirement. (in NPC sell inventories, ender chests and backpacks, salvaging in the dungeon hub, player trade, bazaar, action house, accessory bag, sack of sacks, fishing bag, potion bag, chests on the private island, attribute fusion and equipment GUI) - Option to change the gray-out opacity for 'Not Clickable Items'. - Set stack number for specific items (stars for crimson armor, minion tier, pet level, new year cake, for golden and diamond dungeon heads the floor number and the tier of master skull and master star) - Sack name (show short name of sacks) diff --git a/build.gradle.kts b/build.gradle.kts index 02aee77dc..3deb01a58 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -10,7 +10,7 @@ plugins { } group = "at.hannibal2.skyhanni" -version = "0.15" +version = "0.16.UNRELEASED" // Toolchains: java { diff --git a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.java b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.java index e4656df28..aaca16d2d 100644 --- a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.java +++ b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.java @@ -60,7 +60,7 @@ import java.util.List; public class SkyHanniMod { public static final String MODID = "skyhanni"; - public static final String VERSION = "0.15"; + public static final String VERSION = "0.16.UNRELEASED"; public static Features feature; diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/Inventory.java b/src/main/java/at/hannibal2/skyhanni/config/features/Inventory.java index 175dcb42d..61b11da6c 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/Inventory.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/Inventory.java @@ -32,6 +32,12 @@ public class Inventory { @ConfigAccordionId(id = 0) public int hideNotClickableOpacity = 180; + @Expose + @ConfigOption(name = "Green line", desc = "Adds green line around items that are clickable.") + @ConfigEditorBoolean + @ConfigAccordionId(id = 0) + public boolean hideNotClickableItemsGreenLine = true; + @ConfigOption(name = "RNG Meter", desc = "") @ConfigEditorAccordion(id = 1) public boolean rngMeter = false; diff --git a/src/main/java/at/hannibal2/skyhanni/data/ItemRenderBackground.kt b/src/main/java/at/hannibal2/skyhanni/data/ItemRenderBackground.kt index 1576ff4ca..bdbb86c31 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/ItemRenderBackground.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/ItemRenderBackground.kt @@ -12,16 +12,27 @@ class ItemRenderBackground { companion object { - private val mapColor = mutableMapOf<ItemStack, Int>() + private val backgroundColor = mutableMapOf<ItemStack, Int>() + private val borderLineColor = mutableMapOf<ItemStack, Int>() private val mapTime = mutableMapOf<ItemStack, Long>() var ItemStack.background: Int get() { - if (System.currentTimeMillis() > mapTime.getOrDefault(this, 0) + 200) return -1 - return mapColor.getOrDefault(this, -1) + if (System.currentTimeMillis() > mapTime.getOrDefault(this, 0) + 60) return -1 + return backgroundColor.getOrDefault(this, -1) } set(value) { - mapColor[this] = value + backgroundColor[this] = value + mapTime[this] = System.currentTimeMillis() + } + + var ItemStack.borderLine: Int + get() { + if (System.currentTimeMillis() > mapTime.getOrDefault(this, 0) + 60) return -1 + return borderLineColor.getOrDefault(this, -1) + } + set(value) { + borderLineColor[this] = value mapTime[this] = System.currentTimeMillis() } } @@ -30,18 +41,32 @@ class ItemRenderBackground { @SubscribeEvent fun renderOverlayLol(event: RenderRealOverlayEvent) { val stack = event.stack - if (LorenzUtils.inSkyBlock) { - if (stack != null) { - val color = stack.background - if (color != -1) { - GlStateManager.pushMatrix() - GlStateManager.translate(0f, 0f, 110 + Minecraft.getMinecraft().renderItem.zLevel) - val x = event.x - val y = event.y - Gui.drawRect(x, y, x + 16, y + 16, color) - GlStateManager.popMatrix() - } - } + if (!LorenzUtils.inSkyBlock) return + if (stack == null) return + + val backgroundColor = stack.background + if (backgroundColor != -1) { + GlStateManager.pushMatrix() + GlStateManager.translate(0f, 0f, 110 + Minecraft.getMinecraft().renderItem.zLevel) + val x = event.x + val y = event.y + Gui.drawRect(x, y, x + 16, y + 16, backgroundColor) + GlStateManager.popMatrix() + } + + val borderLineColor = stack.borderLine + if (borderLineColor != -1) { + GlStateManager.pushMatrix() + GlStateManager.translate(0f, 0f, 110 + Minecraft.getMinecraft().renderItem.zLevel) + val x = event.x + val y = event.y + + Gui.drawRect(x, y, x + 1, y + 16, borderLineColor) + Gui.drawRect(x, y, x + 16, y + 1, borderLineColor) + + Gui.drawRect(x, y + 15, x + 16, y + 16, borderLineColor) + Gui.drawRect(x + 15, y, x + 16, y + 16, borderLineColor) + GlStateManager.popMatrix() } } }
\ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt b/src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt index afdc446f9..11994a0c8 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt @@ -2,6 +2,7 @@ package at.hannibal2.skyhanni.features.inventory import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.data.ItemRenderBackground.Companion.background +import at.hannibal2.skyhanni.data.ItemRenderBackground.Companion.borderLine import at.hannibal2.skyhanni.data.VanillaItemManager import at.hannibal2.skyhanni.events.GuiContainerEvent import at.hannibal2.skyhanni.events.RepositoryReloadEvent @@ -24,6 +25,7 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent class HideNotClickableItems { private var hideReason = "" + private var reverseColor = false private var lastClickTime = 0L private var bypassUntil = 0L @@ -80,11 +82,12 @@ class HideNotClickableItems { if (slot.stack == null) continue if (hide(chestName, slot.stack)) { -// val color = LorenzColor.DARK_GRAY.addOpacity(160) -// val color = LorenzColor.DARK_GRAY.addOpacity(LorenzTest.a.toInt()) val opacity = SkyHanniMod.feature.inventory.hideNotClickableOpacity val color = LorenzColor.DARK_GRAY.addOpacity(opacity) slot.stack.background = color.rgb + } else if (reverseColor && SkyHanniMod.feature.inventory.hideNotClickableItemsGreenLine) { + val color = LorenzColor.GREEN.addOpacity(200) + slot.stack.borderLine = color.rgb } } } @@ -147,6 +150,8 @@ class HideNotClickableItems { private fun hide(chestName: String, stack: ItemStack): Boolean { hideReason = "" + reverseColor = false + return when { hideNpcSell(chestName, stack) -> true hideInStorage(chestName, stack) -> true @@ -160,7 +165,9 @@ class HideNotClickableItems { hidePrivateIslandChest(chestName, stack) -> true hideAttributeFusion(chestName, stack) -> true hideYourEquipment(chestName, stack) -> true - else -> false + else -> { + false + } } } @@ -181,6 +188,7 @@ class HideNotClickableItems { ) for (type in list) { if (stack.getLore().any { it.contains("§l") && it.contains(type) }) {//todo use item api + reverseColor = true return false } } @@ -197,6 +205,8 @@ class HideNotClickableItems { private fun hideAttributeFusion(chestName: String, stack: ItemStack): Boolean { if (!chestName.startsWith("Attribute Fusion")) return false + reverseColor = true + if (ItemUtils.hasAttributes(stack)) return false hideReason = "This item has no attributes!" @@ -205,6 +215,7 @@ class HideNotClickableItems { private fun hidePrivateIslandChest(chestName: String, stack: ItemStack): Boolean { if (chestName != "Chest" && chestName != "Large Chest") return false + //TODO make check if player is on private island if (!ItemUtils.isSoulBound(stack)) return false @@ -221,6 +232,7 @@ class HideNotClickableItems { return true } + reverseColor = true if (stack.cleanName().endsWith(" Potion")) return false hideReason = "This item is not a potion!" @@ -235,6 +247,7 @@ class HideNotClickableItems { return true } + reverseColor = true if (stack.getLore().any { it.removeColor() == "Fishing Bait" }) { return false } @@ -244,20 +257,23 @@ class HideNotClickableItems { private fun hideSackOfSacks(chestName: String, stack: ItemStack): Boolean { if (!chestName.startsWith("Sack of Sacks")) return false + if (isSkyBlockMenuItem(stack)) return false val name = stack.cleanName() + reverseColor = true if (ItemUtils.isSack(name)) return false - if (isSkyBlockMenuItem(stack)) return false + hideReason = "This item is not a sack!" return true } private fun hideAccessoryBag(chestName: String, stack: ItemStack): Boolean { - if (!chestName.startsWith("Accessory Bag")) return false + if (!chestName.startsWith("Accessory Bag") && !chestName.startsWith("Accessory Bag (")) return false + if (isSkyBlockMenuItem(stack)) return false + reverseColor = true if (stack.getLore().any { it.contains("ACCESSORY") }) return false - if (isSkyBlockMenuItem(stack)) return false hideReason = "This item is not an accessory!" return true @@ -291,6 +307,7 @@ class HideNotClickableItems { private fun hideNpcSell(chestName: String, stack: ItemStack): Boolean { if (!tradeNpcFilter.match(chestName)) return false + reverseColor = true var name = stack.cleanName() val size = stack.stackSize @@ -346,6 +363,7 @@ class HideNotClickableItems { private fun hideSalvage(chestName: String, stack: ItemStack): Boolean { if (chestName != "Salvage Item") return false + reverseColor = true if (ItemUtils.isRecombobulated(stack)) { hideReason = "This item should not be salvaged! (Recombobulated)" @@ -380,8 +398,7 @@ class HideNotClickableItems { val auctionHouseInventory = chestName == "Co-op Auction House" || chestName == "Auction House" || chestName == "Create BIN Auction" || chestName == "Create Auction" if (!bazaarInventory && !auctionHouseInventory) return false - - + reverseColor = true if (isSkyBlockMenuItem(stack)) { if (bazaarInventory) hideReason = "The SkyBlock Menu is not a Bazaar Product!" |