From 365bc501d60372ac95b77024254bf130a6d62470 Mon Sep 17 00:00:00 2001 From: Lorenz Date: Mon, 22 Aug 2022 05:27:40 +0200 Subject: show all item stars --- .../java/at/hannibal2/skyhanni/SkyHanniMod.java | 4 +- .../skyhanni/config/features/Inventory.java | 6 +- .../skyhanni/features/items/CrimsonArmorTier.kt | 115 ---------------- .../hannibal2/skyhanni/features/items/ItemStars.kt | 150 +++++++++++++++++++++ 4 files changed, 155 insertions(+), 120 deletions(-) delete mode 100644 src/main/java/at/hannibal2/skyhanni/features/items/CrimsonArmorTier.kt create mode 100644 src/main/java/at/hannibal2/skyhanni/features/items/ItemStars.kt (limited to 'src/main/java/at/hannibal2') diff --git a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.java b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.java index 7784dffb3..cf4580ef0 100644 --- a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.java +++ b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.java @@ -21,9 +21,9 @@ import at.hannibal2.skyhanni.features.dungeon.*; import at.hannibal2.skyhanni.features.fishing.SeaCreatureManager; import at.hannibal2.skyhanni.features.fishing.SeaCreatureMessageShortener; import at.hannibal2.skyhanni.features.fishing.TrophyFishMessages; -import at.hannibal2.skyhanni.features.items.CrimsonArmorTier; import at.hannibal2.skyhanni.features.items.HideNotClickableItems; import at.hannibal2.skyhanni.features.items.ItemDisplayOverlayFeatures; +import at.hannibal2.skyhanni.features.items.ItemStars; import at.hannibal2.skyhanni.features.items.abilitycooldown.ItemAbilityCooldown; import at.hannibal2.skyhanni.features.nether.ashfang.AshfangFreezeCooldown; import at.hannibal2.skyhanni.features.nether.ashfang.AshfangGravityOrbs; @@ -94,7 +94,7 @@ public class SkyHanniMod { registerEvent(new AshfangNextResetCooldown()); registerEvent(new SummoningSoulsName()); registerEvent(new AshfangGravityOrbs()); - registerEvent(new CrimsonArmorTier()); + registerEvent(new ItemStars()); registerEvent(new RealTime()); Commands.init(); 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 a756d1725..e2231a9d1 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/Inventory.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/Inventory.java @@ -44,8 +44,8 @@ public class Inventory { public boolean anvilCombineHelper = false; @Expose - @ConfigOption(name = "Crimson Armor Stars", - desc = "Show a compact star count in the item name for the Aurora, Crimson, Terror and Fervor armor") + @ConfigOption(name = "Item Stars", + desc = "Show a compact star count in the item name for all items") @ConfigEditorBoolean - public boolean crimsonArmorStars = false; + public boolean itemStars = false; } diff --git a/src/main/java/at/hannibal2/skyhanni/features/items/CrimsonArmorTier.kt b/src/main/java/at/hannibal2/skyhanni/features/items/CrimsonArmorTier.kt deleted file mode 100644 index 4bcc5051b..000000000 --- a/src/main/java/at/hannibal2/skyhanni/features/items/CrimsonArmorTier.kt +++ /dev/null @@ -1,115 +0,0 @@ -package at.hannibal2.skyhanni.features.items - -import at.hannibal2.skyhanni.SkyHanniMod -import at.hannibal2.skyhanni.events.GuiRenderItemEvent -import at.hannibal2.skyhanni.events.RepositoryReloadEvent -import at.hannibal2.skyhanni.utils.ItemUtils.name -import at.hannibal2.skyhanni.utils.LorenzUtils -import net.minecraft.client.renderer.GlStateManager -import net.minecraftforge.event.entity.player.ItemTooltipEvent -import net.minecraftforge.fml.common.eventhandler.EventPriority -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent -import java.util.regex.Pattern - -class CrimsonArmorTier { - - private val armorNames = mutableListOf() - private val tiers = mutableMapOf() - private val STAR_FIND_PATCHER = Pattern.compile("(.*)§.✪(.*)") - private val armorParts = listOf("Helmet", "Chestplate", "Leggings", "Boots") - - @SubscribeEvent(priority = EventPriority.LOWEST) - fun onTooltip(event: ItemTooltipEvent) { - if (!LorenzUtils.inSkyblock) return - if (!SkyHanniMod.feature.inventory.crimsonArmorStars) return - - val stack = event.itemStack ?: return - if (stack.stackSize != 1) return - val number = getCrimsonNumber(stack.name ?: return) - - if (number > 0) { - var name = stack.name!! - while (STAR_FIND_PATCHER.matcher(name).matches()) { - name = name.replaceFirst("§.✪".toRegex(), "") - } - name = name.trim() - event.toolTip[0] = "$name §c$number✪" - } - } - - @SubscribeEvent - fun onRepoReload(event: RepositoryReloadEvent) { - try { - val items = event.getConstant("Items")!! - if (items.has("crimson_armors")) { - armorNames.clear() - armorNames.addAll(items.getAsJsonArray("crimson_armors").map { it.asString }) - } - - tiers.clear() - if (items.has("crimson_tiers")) { - items.getAsJsonObject("crimson_tiers").entrySet().forEach { - tiers[it.key] = it.value.asInt - } - } - - } catch (e: Exception) { - e.printStackTrace() - LorenzUtils.error("error in RepositoryReloadEvent") - } - } - - @SubscribeEvent - fun onRenderItemOverlayPost(event: GuiRenderItemEvent.RenderOverlayEvent.Post) { - if (!LorenzUtils.inSkyblock) return - if (!SkyHanniMod.feature.inventory.itemNumberAsStackSize.contains(6)) return - - val stack = event.stack ?: return - if (stack.stackSize != 1) return - val number = getCrimsonNumber(stack.name ?: return) - val stackTip = if (number == -1) "" else number.toString() - - if (stackTip.isNotEmpty()) { - GlStateManager.disableLighting() - GlStateManager.disableDepth() - GlStateManager.disableBlend() - event.fontRenderer.drawStringWithShadow( - stackTip, - (event.x + 17 - event.fontRenderer.getStringWidth(stackTip)).toFloat(), - (event.y + 9).toFloat(), - 16777215 - ) - GlStateManager.enableLighting() - GlStateManager.enableDepth() - } - } - - private fun getCrimsonNumber(fullName: String): Int { - var name = fullName - if (armorNames.any { name.contains(it) } && armorParts.any { name.contains(it) }) { - var gold = 0 - var pink = 0 - var aqua = 0 - while (name.contains("§6✪")) { - name = name.replaceFirst("§6✪", "") - gold++ - } - while (name.contains("§d✪")) { - name = name.replaceFirst("§d✪", "") - pink++ - } - while (name.contains("§b✪")) { - name = name.replaceFirst("§b✪", "") - aqua++ - } - return (tiers.entries.find { name.contains(it.key) }?.value ?: 0) + if (aqua > 0) { - 10 + aqua - } else if (pink > 0) { - 5 + pink - } else { - gold - } - } - return -1 - } -} \ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/features/items/ItemStars.kt b/src/main/java/at/hannibal2/skyhanni/features/items/ItemStars.kt new file mode 100644 index 000000000..0131801e2 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/items/ItemStars.kt @@ -0,0 +1,150 @@ +package at.hannibal2.skyhanni.features.items + +import at.hannibal2.skyhanni.SkyHanniMod +import at.hannibal2.skyhanni.events.GuiRenderItemEvent +import at.hannibal2.skyhanni.events.RepositoryReloadEvent +import at.hannibal2.skyhanni.utils.ItemUtils.name +import at.hannibal2.skyhanni.utils.LorenzUtils +import net.minecraft.client.renderer.GlStateManager +import net.minecraftforge.event.entity.player.ItemTooltipEvent +import net.minecraftforge.fml.common.eventhandler.EventPriority +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent +import java.util.regex.Pattern + +class ItemStars { + + private val armorNames = mutableListOf() + private val tiers = mutableMapOf() + private val STAR_FIND_PATCHER = Pattern.compile("(.*)§.✪(.*)") + private val armorParts = listOf("Helmet", "Chestplate", "Leggings", "Boots") + + @SubscribeEvent(priority = EventPriority.LOWEST) + fun onTooltip(event: ItemTooltipEvent) { + if (!LorenzUtils.inSkyblock) return + + val stack = event.itemStack ?: return + if (stack.stackSize != 1) return + if (!SkyHanniMod.feature.inventory.itemStars) return + + val itemName = stack.name ?: return + val stars = getStars(itemName) + + if (stars > 0) { + var name = itemName + while (STAR_FIND_PATCHER.matcher(name).matches()) { + name = name.replaceFirst("§.✪".toRegex(), "") + } + name = name.trim() + event.toolTip[0] = "$name §c$stars✪" + } + } + + @SubscribeEvent + fun onRepoReload(event: RepositoryReloadEvent) { + try { + val items = event.getConstant("Items")!! + if (items.has("crimson_armors")) { + armorNames.clear() + armorNames.addAll(items.getAsJsonArray("crimson_armors").map { it.asString }) + } + + tiers.clear() + if (items.has("crimson_tiers")) { + items.getAsJsonObject("crimson_tiers").entrySet().forEach { + tiers[it.key] = it.value.asInt + } + } + + } catch (e: Exception) { + e.printStackTrace() + LorenzUtils.error("error in RepositoryReloadEvent") + } + } + + @SubscribeEvent + fun onRenderItemOverlayPost(event: GuiRenderItemEvent.RenderOverlayEvent.Post) { + if (!LorenzUtils.inSkyblock) return + if (!SkyHanniMod.feature.inventory.itemNumberAsStackSize.contains(6)) return + + val stack = event.stack ?: return + if (stack.stackSize != 1) return + val number = getCrimsonStars(stack.name ?: return) + val stackTip = if (number == -1) "" else number.toString() + + if (stackTip.isNotEmpty()) { + GlStateManager.disableLighting() + GlStateManager.disableDepth() + GlStateManager.disableBlend() + event.fontRenderer.drawStringWithShadow( + stackTip, + (event.x + 17 - event.fontRenderer.getStringWidth(stackTip)).toFloat(), + (event.y + 9).toFloat(), + 16777215 + ) + GlStateManager.enableLighting() + GlStateManager.enableDepth() + } + } + + private fun getStars(name: String): Int { + val stars = getCrimsonStars(name) + if (stars != -1) { + return stars + } + + return getOtherStars(name) + } + + private fun getCrimsonStars(name: String): Int { + if (!armorNames.any { name.contains(it) } || !armorParts.any { name.contains(it) }) { + return -1 + } + var name1 = name + var gold = 0 + var pink = 0 + var aqua = 0 + while (name1.contains("§6✪")) { + name1 = name1.replaceFirst("§6✪", "") + gold++ + } + while (name1.contains("§d✪")) { + name1 = name1.replaceFirst("§d✪", "") + pink++ + } + while (name1.contains("§b✪")) { + name1 = name1.replaceFirst("§b✪", "") + aqua++ + } + return (tiers.entries.find { name1.contains(it.key) }?.value ?: 0) + if (aqua > 0) { + 10 + aqua + } else if (pink > 0) { + 5 + pink + } else { + gold + } + } + + private fun getOtherStars(originalName: String): Int { + var name = originalName + + var gold = 0 + var red = 0 + while (name.contains("§6✪")) { + name = name.replaceFirst("§6✪", "") + gold++ + } + while (name.contains("§c✪")) { + name = name.replaceFirst("§6✪", "") + red++ + } + while (name.contains("§d✪")) { + name = name.replaceFirst("§6✪", "") + red++ + } + + if (red > 0) return 5 + red + if (gold > 0) return gold + + return -1 + } +} \ No newline at end of file -- cgit