aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal00212@users.noreply.github.com>2023-03-13 15:26:05 +0100
committerhannibal2 <24389977+hannibal00212@users.noreply.github.com>2023-03-13 15:26:05 +0100
commit26f6c844863f96f1a9dd9624667757c74deb2527 (patch)
treef64fb789bcd026a065a39053b7e65eabbc5a68a7 /src/main
parent8a82042d0bb17b527de76dc216d5a567df58ea22 (diff)
downloadskyhanni-26f6c844863f96f1a9dd9624667757c74deb2527.tar.gz
skyhanni-26f6c844863f96f1a9dd9624667757c74deb2527.tar.bz2
skyhanni-26f6c844863f96f1a9dd9624667757c74deb2527.zip
Count RNG drops for Melon Dicer and Pumpkin Dicer
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/SkyHanniMod.java1
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/Features.java5
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/Garden.java25
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/Hidden.java3
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/DicerRngDropCounter.kt130
5 files changed, 160 insertions, 4 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.java b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.java
index 4360864f5..4d9eb43ad 100644
--- a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.java
+++ b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.java
@@ -218,6 +218,7 @@ public class SkyHanniMod {
loadModule(new GardenDeskInSBMenu());
loadModule(new GardenLevelDisplay());
loadModule(new EliteFarmingWeight());
+ loadModule(new DicerRngDropCounter());
Commands.INSTANCE.init();
diff --git a/src/main/java/at/hannibal2/skyhanni/config/Features.java b/src/main/java/at/hannibal2/skyhanni/config/Features.java
index ad67a647a..f0f80a66a 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/Features.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/Features.java
@@ -213,6 +213,11 @@ public class Features extends Config {
editOverlay(activeConfigCategory, 200, 16, garden.eliteFarmingWeightPos);
return;
}
+
+ if (runnableId.equals("dicerCounter")) {
+ editOverlay(activeConfigCategory, 200, 16, garden.dicerCounterPos);
+ return;
+ }
}
@Expose
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/Garden.java b/src/main/java/at/hannibal2/skyhanni/config/features/Garden.java
index 94bb36bfd..5933ed959 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/Garden.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/Garden.java
@@ -312,7 +312,7 @@ public class Garden {
@Expose
@ConfigOption(name = "Elite Farming Weight", desc = "")
- @ConfigEditorAccordion(id = 10)
+ @ConfigEditorAccordion(id = 11)
public boolean eliteFarmingWeight = false;
@Expose
@@ -320,23 +320,40 @@ public class Garden {
"The calculation and api is provided by The Elite SkyBlock Farmers. " +
"See §ehttps://elitebot.dev/info §7for more info.")
@ConfigEditorBoolean
- @ConfigAccordionId(id = 10)
+ @ConfigAccordionId(id = 11)
public boolean eliteFarmingWeightDisplay = true;
@Expose
@ConfigOption(name = "Farming Weight Position", desc = "")
@ConfigEditorButton(runnableId = "eliteFarmingWeight", buttonText = "Edit")
- @ConfigAccordionId(id = 10)
+ @ConfigAccordionId(id = 11)
public Position eliteFarmingWeightPos = new Position(-370, -167, false, true);
@Expose
@ConfigOption(name = "Leaderboard Ranking", desc = "Show your position in the farming weight leaderboard. " +
"Only if your farming weight is high enough! Updates every 10 minutes.")
@ConfigEditorBoolean
- @ConfigAccordionId(id = 10)
+ @ConfigAccordionId(id = 11)
public boolean eliteFarmingWeightLeaderboard = true;
@Expose
+ @ConfigOption(name = "Dicer Counter", desc = "")
+ @ConfigEditorAccordion(id = 12)
+ public boolean dicerCounter = false;
+
+ @Expose
+ @ConfigOption(name = "Rng Drop Counter", desc = "Count RNG drops for Melon Dicer and Pumpkin Dicer")
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 12)
+ public boolean dicerCounterDisplay = true;
+
+ @Expose
+ @ConfigOption(name = "Dicer Counter Position", desc = "")
+ @ConfigEditorButton(runnableId = "dicerCounter", buttonText = "Edit")
+ @ConfigAccordionId(id = 12)
+ public Position dicerCounterPos = new Position(-375, -215, false, true);
+
+ @Expose
@ConfigOption(name = "Plot Price", desc = "Show the price of the plot in coins when inside the Configure Plots inventory.")
@ConfigEditorBoolean
public boolean plotPrice = true;
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/Hidden.java b/src/main/java/at/hannibal2/skyhanni/config/features/Hidden.java
index c8604aeb3..547c4a24d 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/Hidden.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/Hidden.java
@@ -41,4 +41,7 @@ public class Hidden {
@Expose
public int gardenExp = -1;
+
+ @Expose
+ public Map<String, Integer> gardenDicerRngDrops = new HashMap<>();
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/DicerRngDropCounter.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/DicerRngDropCounter.kt
new file mode 100644
index 000000000..1b170bc7f
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/features/garden/DicerRngDropCounter.kt
@@ -0,0 +1,130 @@
+package at.hannibal2.skyhanni.features.garden
+
+import at.hannibal2.skyhanni.SkyHanniMod
+import at.hannibal2.skyhanni.events.ConfigLoadEvent
+import at.hannibal2.skyhanni.events.GardenToolChangeEvent
+import at.hannibal2.skyhanni.events.GuiRenderEvent
+import at.hannibal2.skyhanni.events.LorenzChatEvent
+import at.hannibal2.skyhanni.utils.ItemUtils.name
+import at.hannibal2.skyhanni.utils.LorenzUtils
+import at.hannibal2.skyhanni.utils.LorenzUtils.sortedDesc
+import at.hannibal2.skyhanni.utils.RenderUtils.renderStrings
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+
+class DicerRngDropCounter {
+ private val display = mutableListOf<String>()
+ private val drops = mutableMapOf<String, MutableMap<DropRarity, Int>>()
+ private val itemDrops = mutableListOf<ItemDrop>()
+
+ init {
+ drops["Melon"] = mutableMapOf()
+ drops["Pumpkin"] = mutableMapOf()
+
+ itemDrops.add(ItemDrop("Melon", DropRarity.UNCOMMON, "§a§lUNCOMMON DROP! §r§eDicer dropped §r§a1x §r§aEnchanted Melon§r§e!"))
+ itemDrops.add(ItemDrop("Melon", DropRarity.RARE, "§9§lRARE DROP! §r§eDicer dropped §r§a5x §r§aEnchanted Melon§r§e!"))
+ itemDrops.add(ItemDrop("Melon", DropRarity.CRAZY_RARE, "§d§lCRAZY RARE DROP! §r§eDicer dropped §r§a50x §r§aEnchanted Melon§r§e!"))
+ itemDrops.add(ItemDrop("Melon", DropRarity.PRAY_TO_RNGESUS, "§5§lPRAY TO RNGESUS DROP! §r§eDicer dropped §r§92x §r§9Enchanted Melon Block§r§e!"))
+
+ itemDrops.add(ItemDrop("Pumpkin", DropRarity.UNCOMMON, "§a§lUNCOMMON DROP! §r§eDicer dropped §r§f64x §r§fPumpkin§r§e!"))
+ itemDrops.add(ItemDrop("Pumpkin", DropRarity.RARE, "§9§lRARE DROP! §r§eDicer dropped §r§a1x §r§aEnchanted Pumpkin§r§e!"))
+ itemDrops.add(ItemDrop("Pumpkin", DropRarity.CRAZY_RARE, "§d§lCRAZY RARE DROP! §r§eDicer dropped §r§a10x §r§aEnchanted Pumpkin§r§e!"))
+ itemDrops.add(ItemDrop("Pumpkin", DropRarity.PRAY_TO_RNGESUS, "§5§lPRAY TO RNGESUS DROP! §r§eDicer dropped §r§a64x §r§aEnchanted Pumpkin§r§e!"))
+ }
+
+ enum class DropRarity(val displayName: String) {
+ UNCOMMON("§a§lUNCOMMON DROP"),
+ RARE("§9§lRARE DROP"),
+ CRAZY_RARE("§d§lCRAZY RARE DROP"),
+ PRAY_TO_RNGESUS("§5§lPRAY TO RNGESUS DROP"),
+ }
+
+ @SubscribeEvent
+ fun onChat(event: LorenzChatEvent) {
+ if (!isEnabled()) return
+
+ val message = event.message
+ for (drop in itemDrops) {
+ if (message == drop.message) {
+ addDrop(drop.itemName, drop.rarity)
+ saveConfig()
+ update()
+ return
+ }
+ }
+
+ if (message.contains("§r§eDicer dropped")) {
+ LorenzUtils.debug("Unknown dicer drop message!")
+ println("Unknown dicer drop message: '$message'")
+ }
+ }
+
+ private fun update() {
+ val newDisplay = drawDisplay()
+ display.clear()
+ display.addAll(newDisplay)
+ }
+
+ private fun drawDisplay(): List<String> {
+ val help = mutableListOf<String>()
+ val items = drops[itemInHand] ?: return help
+ help.add("§7RNG Drops for $toolname§7:")
+ for ((rarity, amount) in items.sortedDesc()) {
+ val displayName = rarity.displayName
+ help.add(" §7- §e${amount}x $displayName")
+ }
+
+ return help
+ }
+
+ private var itemInHand = ""
+ private var toolname = ""
+
+ @SubscribeEvent
+ fun onGardenToolChange(event: GardenToolChangeEvent) {
+ val crop = event.crop
+ itemInHand = if (crop == "Melon" || crop == "Pumpkin") crop else ""
+ if (itemInHand != "") {
+ toolname = event.heldItem!!.name!!
+ }
+ update()
+ }
+
+ private fun addDrop(item: String, rarity: DropRarity) {
+ val melon = drops[item]!!
+ val old = melon[rarity] ?: 0
+ melon[rarity] = old + 1
+ }
+
+ @SubscribeEvent
+ fun onRenderOverlay(event: GuiRenderEvent.GameOverlayRenderEvent) {
+ if (isEnabled()) {
+ SkyHanniMod.feature.garden.dicerCounterPos.renderStrings(display)
+ }
+ }
+
+ class ItemDrop(val itemName: String, val rarity: DropRarity, val message: String)
+
+ private fun saveConfig() {
+ val list = SkyHanniMod.feature.hidden.gardenDicerRngDrops
+ list.clear()
+ for (drop in drops) {
+ val itemName = drop.key
+ for ((rarity, amount) in drop.value) {
+ list[itemName + "." + rarity.name] = amount
+ }
+ }
+ }
+
+ @SubscribeEvent
+ fun onConfigLoad(event: ConfigLoadEvent) {
+ for ((internalName, amount) in SkyHanniMod.feature.hidden.gardenDicerRngDrops) {
+ val split = internalName.split(".")
+ val itemName = split[0]
+ val rarityName = split[1]
+ val rarity = DropRarity.valueOf(rarityName)
+ drops[itemName]!![rarity] = amount
+ }
+ }
+
+ fun isEnabled() = GardenAPI.inGarden() && SkyHanniMod.feature.garden.dicerCounterDisplay
+} \ No newline at end of file