aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/at/hannibal2/skyhanni/SkyHanniMod.java1
-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/config/features/Misc.java6
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/DicerRngDropCounter.kt20
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/FarmingArmorDrops.kt106
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/misc/ChickenHeadTimer.kt13
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/InventoryUtils.kt3
8 files changed, 161 insertions, 16 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.java b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.java
index 2075cb445..9c7538839 100644
--- a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.java
+++ b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.java
@@ -229,6 +229,7 @@ public class SkyHanniMod {
loadModule(new JacobFarmingContestsInventory());
loadModule(new GardenNextJacobContest());
loadModule(new WrongFungiCutterWarning());
+ loadModule(new FarmingArmorDrops());
Commands.INSTANCE.init();
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 f55fdb514..469bee8db 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/Garden.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/Garden.java
@@ -443,6 +443,11 @@ public class Garden {
public boolean dicerCounterDisplay = true;
@Expose
+ @ConfigOption(name = "Hide Chat", desc = "Hide the chat message when dropping a RNG Dicer drop.")
+ @ConfigEditorAccordion(id = 12)
+ public boolean dicerCounterHideChat = false;
+
+ @Expose
// @ConfigOption(name = "Dicer Counter Position", desc = "")
// @ConfigEditorButton(runnableId = "dicerCounter", buttonText = "Edit")
// @ConfigAccordionId(id = 12)
@@ -529,6 +534,26 @@ public class Garden {
public Position nextJacobContestPos = new Position(-113, -240, false, true);
@Expose
+ @ConfigOption(name = "Farming Armor Drops", desc = "")
+ @ConfigEditorAccordion(id = 12)
+ public boolean farmingArmorDrops = false;
+
+ @Expose
+ @ConfigOption(name = "Show Counter", desc = "Count all §9Cropie§7, §5Squash §7and §6Fermento §7dropped.")
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 12)
+ public boolean farmingArmorDropsEnabled = true;
+
+ @Expose
+ @ConfigOption(name = "Hide Chat", desc = "Hide the chat message when receiving a farming armor drop.")
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 12)
+ public boolean farmingArmorDropsHideChat = false;
+
+ @Expose
+ public Position farmingArmorDropsPos = new Position(16, -232, 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 160d428c7..bc898c818 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/Hidden.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/Hidden.java
@@ -48,4 +48,7 @@ public class Hidden {
@Expose
public Map<Long, List<CropType>> gardenJacobFarmingContestTimes = new HashMap<>();
+
+ @Expose
+ public Map<String, Integer> gardenFarmingArmorDrops = new HashMap<>();
}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/Misc.java b/src/main/java/at/hannibal2/skyhanni/config/features/Misc.java
index 73d301d78..4268a4286 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/Misc.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/Misc.java
@@ -216,6 +216,12 @@ public class Misc {
public boolean chickenHeadTimerDisplay = false;
@Expose
+ @ConfigOption(name = "Hide Chat", desc = "Hide the 'You lay an egg' chat message'.")
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 10)
+ public boolean chickenHeadTimerHideChat = true;
+
+ @Expose
// @ConfigOption(name = "Timer Position", desc = "")
// @ConfigEditorButton(runnableId = "chickenHeadTimer", buttonText = "Edit")
// @ConfigAccordionId(id = 10)
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/DicerRngDropCounter.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/DicerRngDropCounter.kt
index 04289d46c..b77ab61f0 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/garden/DicerRngDropCounter.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/garden/DicerRngDropCounter.kt
@@ -6,7 +6,6 @@ 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
@@ -15,6 +14,7 @@ class DicerRngDropCounter {
private var display = listOf<String>()
private val drops = mutableMapOf<CropType, MutableMap<DropRarity, Int>>()
private val itemDrops = mutableListOf<ItemDrop>()
+ private val config get() = SkyHanniMod.feature.garden
init {
drops[CropType.MELON] = mutableMapOf()
@@ -48,14 +48,12 @@ class DicerRngDropCounter {
addDrop(drop.crop, drop.rarity)
saveConfig()
update()
+ if (config.dicerCounterHideChat) {
+ event.blockedReason = "dicer_rng_drop_counter"
+ }
return
}
}
-
- if (message.contains("§r§eDicer dropped")) {
- LorenzUtils.debug("Unknown dicer drop message!")
- println("Unknown dicer drop message: '$message'")
- }
}
private fun update() {
@@ -96,19 +94,19 @@ class DicerRngDropCounter {
@SubscribeEvent
fun onRenderOverlay(event: GuiRenderEvent.GameOverlayRenderEvent) {
if (isEnabled()) {
- SkyHanniMod.feature.garden.dicerCounterPos.renderStrings(display, posLabel = "Dicer Counter")
+ config.dicerCounterPos.renderStrings(display, posLabel = "Dicer Counter")
}
}
class ItemDrop(val crop: CropType, val rarity: DropRarity, val message: String)
private fun saveConfig() {
- val list = SkyHanniMod.feature.hidden.gardenDicerRngDrops
- list.clear()
+ val map = SkyHanniMod.feature.hidden.gardenDicerRngDrops
+ map.clear()
for (drop in drops) {
val crop = drop.key
for ((rarity, amount) in drop.value) {
- list[crop.cropName + "." + rarity.name] = amount
+ map[crop.cropName + "." + rarity.name] = amount
}
}
}
@@ -124,5 +122,5 @@ class DicerRngDropCounter {
}
}
- fun isEnabled() = GardenAPI.inGarden() && SkyHanniMod.feature.garden.dicerCounterDisplay
+ fun isEnabled() = GardenAPI.inGarden() && config.dicerCounterDisplay
} \ No newline at end of file
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/FarmingArmorDrops.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/FarmingArmorDrops.kt
new file mode 100644
index 000000000..33759c25f
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/features/garden/FarmingArmorDrops.kt
@@ -0,0 +1,106 @@
+package at.hannibal2.skyhanni.features.garden
+
+import at.hannibal2.skyhanni.SkyHanniMod
+import at.hannibal2.skyhanni.events.ConfigLoadEvent
+import at.hannibal2.skyhanni.events.GuiRenderEvent
+import at.hannibal2.skyhanni.events.LorenzChatEvent
+import at.hannibal2.skyhanni.utils.InventoryUtils
+import at.hannibal2.skyhanni.utils.ItemUtils.getInternalName
+import at.hannibal2.skyhanni.utils.LorenzUtils.sortedDesc
+import at.hannibal2.skyhanni.utils.RenderUtils.renderStrings
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+import net.minecraftforge.fml.common.gameevent.TickEvent
+import java.util.regex.Pattern
+
+class FarmingArmorDrops {
+ private var display = listOf<String>()
+ private val drops = mutableMapOf<ArmorDropType, Int>()
+ private var hasArmor = false
+ private var tick = 0
+ private val armorPattern = Pattern.compile("(FERMENTO|CROPIE|SQUASH|MELON)_(LEGGINGS|CHESTPLATE|BOOTS|HELMET)")
+ private val config get() = SkyHanniMod.feature.garden
+
+ enum class ArmorDropType(val dropName: String, val chatMessage: String) {
+ CROPIE("§9Cropie", "§6§lRARE CROP! §r§f§r§9Cropie §r§b(Armor Set Bonus)"),
+ SQUASH("§5Squash", "§6§lRARE CROP! §r§f§r§5Squash §r§b(Armor Set Bonus)"),
+ FERMENTO("§6Fermento", "§6§lRARE CROP! §r§f§r§6Fermento §r§b(Armor Set Bonus)"),
+ }
+
+ @SubscribeEvent
+ fun onChat(event: LorenzChatEvent) {
+ for (dropType in ArmorDropType.values()) {
+ if (dropType.chatMessage == event.message) {
+ addDrop(dropType)
+ if (config.farmingArmorDropsEnabled && config.farmingArmorDropsHideChat) {
+ event.blockedReason = "farming_armor_drops"
+ }
+ }
+ }
+ }
+
+ private fun addDrop(drop: ArmorDropType) {
+ val old = drops[drop] ?: 0
+ drops[drop] = old + 1
+ saveConfig()
+ update()
+ }
+
+ private fun update() {
+ display = drawDisplay()
+ }
+
+ private fun drawDisplay(): List<String> {
+ val help = mutableListOf<String>()
+ help.add("§7RNG Drops for Farming Armor:")
+ for ((drop, amount) in drops.sortedDesc()) {
+ val dropName = drop.dropName
+ help.add(" §7- §e${amount}x $dropName")
+ }
+
+ return help
+ }
+
+ private fun saveConfig() {
+ val map = SkyHanniMod.feature.hidden.gardenFarmingArmorDrops
+ map.clear()
+ for ((drop, amount) in drops) {
+ map[drop.toString()] = amount
+ }
+ }
+
+ @SubscribeEvent
+ fun onConfigLoad(event: ConfigLoadEvent) {
+ for ((rawName, amount) in SkyHanniMod.feature.hidden.gardenFarmingArmorDrops) {
+ drops[ArmorDropType.valueOf(rawName)] = amount
+ }
+ update()
+ }
+
+ @SubscribeEvent
+ fun onRenderOverlay(event: GuiRenderEvent.GameOverlayRenderEvent) {
+ if (!GardenAPI.inGarden()) return
+ if (!config.farmingArmorDropsEnabled) return
+ if (!hasArmor) return
+
+ config.farmingArmorDropsPos.renderStrings(display, posLabel = "Farming Armor Drops")
+ }
+
+ @SubscribeEvent
+ fun onTick(event: TickEvent.ClientTickEvent) {
+ if (event.phase != TickEvent.Phase.START) return
+ if (!GardenAPI.inGarden()) return
+ if (!config.farmingArmorDropsEnabled) return
+
+ tick++
+ if (tick % 30 == 0) {
+ checkArmor()
+ }
+ }
+
+ private fun checkArmor() {
+ val armorPieces = InventoryUtils.getArmor()
+ .mapNotNull { it?.getInternalName() }
+ .count { armorPattern.matcher(it).matches() }
+ hasArmor = armorPieces > 1
+ }
+} \ No newline at end of file
diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/ChickenHeadTimer.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/ChickenHeadTimer.kt
index 895974629..89e54fbb8 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/misc/ChickenHeadTimer.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/misc/ChickenHeadTimer.kt
@@ -3,27 +3,27 @@ package at.hannibal2.skyhanni.features.misc
import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.events.GuiRenderEvent
import at.hannibal2.skyhanni.events.LorenzChatEvent
+import at.hannibal2.skyhanni.utils.InventoryUtils
import at.hannibal2.skyhanni.utils.ItemUtils.name
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.RenderUtils.renderString
import at.hannibal2.skyhanni.utils.TimeUtils
-import net.minecraft.client.Minecraft
import net.minecraftforge.event.world.WorldEvent
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import net.minecraftforge.fml.common.gameevent.TickEvent
class ChickenHeadTimer {
-
private var tick = 0
private var hasChickenHead = false
private var lastTime = 0L
+ private val config get() = SkyHanniMod.feature.misc
@SubscribeEvent
fun onTick(event: TickEvent.ClientTickEvent) {
if (!isEnabled()) return
if (tick++ % 5 != 0) return
- val itemStack = Minecraft.getMinecraft().thePlayer.inventory.armorInventory[3]
+ val itemStack = InventoryUtils.getArmor()[3]
val name = itemStack?.name ?: ""
hasChickenHead = name.contains("Chicken Head")
}
@@ -39,6 +39,9 @@ class ChickenHeadTimer {
if (!hasChickenHead) return
if (event.message == "§aYou laid an egg!") {
lastTime = System.currentTimeMillis()
+ if (config.chickenHeadTimerHideChat) {
+ event.blockedReason = "chicken_head_timer"
+ }
}
}
@@ -58,8 +61,8 @@ class ChickenHeadTimer {
"Chicken Head Timer: §b$formatDuration"
}
- SkyHanniMod.feature.misc.chickenHeadTimerPosition.renderString(displayText, posLabel = "Chicken Head Timer")
+ config.chickenHeadTimerPosition.renderString(displayText, posLabel = "Chicken Head Timer")
}
- fun isEnabled() = LorenzUtils.inSkyBlock && SkyHanniMod.feature.misc.chickenHeadTimerDisplay
+ fun isEnabled() = LorenzUtils.inSkyBlock && config.chickenHeadTimerDisplay
} \ No newline at end of file
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/InventoryUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/InventoryUtils.kt
index da152a2c3..53e39e575 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/InventoryUtils.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/InventoryUtils.kt
@@ -54,4 +54,7 @@ object InventoryUtils {
Minecraft.getMinecraft().thePlayer.inventory.mainInventory
.filter { it != null && predicate(it) }
.sumOf { it.stackSize }
+
+ fun getArmor(): Array<ItemStack?> =
+ Minecraft.getMinecraft().thePlayer.inventory.armorInventory
} \ No newline at end of file