diff options
| author | Thunderblade73 <85900443+Thunderblade73@users.noreply.github.com> | 2024-06-05 15:39:55 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-05 15:39:55 +0200 |
| commit | 5a04ad230cc4fb94884b34f795124d3b65af07ea (patch) | |
| tree | cace8dcaad1c989be42a52bff4a6da233642279f /src/main/java | |
| parent | eb4ab6eaafa17581df58a53fb4111fa96933d230 (diff) | |
| download | skyhanni-5a04ad230cc4fb94884b34f795124d3b65af07ea.tar.gz skyhanni-5a04ad230cc4fb94884b34f795124d3b65af07ea.tar.bz2 skyhanni-5a04ad230cc4fb94884b34f795124d3b65af07ea.zip | |
Improvement: Refactor of /ff for Improved Modularity and Code Reusability (#873)
Co-authored-by: Cal <cwolfson58@gmail.com>
Diffstat (limited to 'src/main/java')
31 files changed, 1553 insertions, 1350 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt b/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt index 4f5f0aa50..fdedfdbab 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt +++ b/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt @@ -12,7 +12,7 @@ import com.google.gson.JsonPrimitive object ConfigUpdaterMigrator { val logger = LorenzLogger("ConfigMigration") - const val CONFIG_VERSION = 47 + const val CONFIG_VERSION = 48 fun JsonElement.at(chain: List<String>, init: Boolean): JsonElement? { if (chain.isEmpty()) return this if (this !is JsonObject) return null diff --git a/src/main/java/at/hannibal2/skyhanni/config/commands/Commands.kt b/src/main/java/at/hannibal2/skyhanni/config/commands/Commands.kt index bd6cc8efe..89980d349 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/commands/Commands.kt +++ b/src/main/java/at/hannibal2/skyhanni/config/commands/Commands.kt @@ -371,17 +371,11 @@ object Commands { "Disables/enables the rendering of all skyhanni guis." ) { SkyHanniDebugsAndTests.toggleRender() } registerCommand( - "shcarrot", - "Toggles receiving the 12 fortune from carrots" - ) { CaptureFarmingGear.reverseCarrotFortune() } - registerCommand( - "shpumpkin", - "Toggles receiving the 12 fortune from pumpkins" - ) { CaptureFarmingGear.reversePumpkinFortune() } - registerCommand( - "shcocoabeans", - "Toggles receiving the 12 fortune from cocoa beans" - ) { CaptureFarmingGear.reverseCocoaBeansFortune() } + "shcarrolyn", + "Toggels if the specified crops effect is active from carrolyn" + ) { + CaptureFarmingGear.handelCarrolyn(it) + } registerCommand( "shrepostatus", "Shows the status of all the mods constants" diff --git a/src/main/java/at/hannibal2/skyhanni/config/storage/ProfileSpecificStorage.java b/src/main/java/at/hannibal2/skyhanni/config/storage/ProfileSpecificStorage.java index d88ccb315..cbdc90978 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/storage/ProfileSpecificStorage.java +++ b/src/main/java/at/hannibal2/skyhanni/config/storage/ProfileSpecificStorage.java @@ -373,13 +373,7 @@ public class ProfileSpecificStorage { public long cakeExpiring = -1L; @Expose - public boolean carrotFortune = false; - - @Expose - public boolean pumpkinFortune = false; - - @Expose - public boolean cocoaBeansFortune = false; + public Map<CropType, Boolean> carrolyn = new HashMap<>(); @Expose public Map<FarmingItems, ItemStack> farmingItems = new HashMap<>(); diff --git a/src/main/java/at/hannibal2/skyhanni/features/commands/tabcomplete/TabComplete.kt b/src/main/java/at/hannibal2/skyhanni/features/commands/tabcomplete/TabComplete.kt index 49bde5993..87130298c 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/commands/tabcomplete/TabComplete.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/commands/tabcomplete/TabComplete.kt @@ -3,6 +3,7 @@ package at.hannibal2.skyhanni.features.commands.tabcomplete import at.hannibal2.skyhanni.events.TabCompletionEvent import at.hannibal2.skyhanni.features.commands.PartyCommands import at.hannibal2.skyhanni.features.commands.ViewRecipeCommand +import at.hannibal2.skyhanni.features.garden.fortuneguide.CarrolynTable import at.hannibal2.skyhanni.features.misc.CollectionTracker import net.minecraftforge.fml.common.eventhandler.SubscribeEvent @@ -28,6 +29,7 @@ object TabComplete { CollectionTracker.handleTabComplete(command)?.let { return it } PartyCommands.customTabComplete(command)?.let { return it } ViewRecipeCommand.customTabComplete(command)?.let { return it } + CarrolynTable.customTabComplete(command)?.let { return it } return null } diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/CropType.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/CropType.kt index b7480f259..3a661161e 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/CropType.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/CropType.kt @@ -1,5 +1,6 @@ package at.hannibal2.skyhanni.features.garden +import at.hannibal2.skyhanni.features.garden.fortuneguide.FarmingItems import net.minecraft.block.state.IBlockState import net.minecraft.init.Blocks import net.minecraft.init.Items @@ -13,48 +14,49 @@ enum class CropType( val baseDrops: Double, iconSupplier: () -> ItemStack, val simpleName: String, + val farmingItem: FarmingItems, val replenish: Boolean = false, ) { WHEAT( "Wheat", "THEORETICAL_HOE_WHEAT", "CROPIE", 1.0, - { ItemStack(Items.wheat) }, "wheat" + { ItemStack(Items.wheat) }, "wheat", FarmingItems.WHEAT ), CARROT( "Carrot", "THEORETICAL_HOE_CARROT", "CROPIE", 3.0, - { ItemStack(Items.carrot) }, "carrot", replenish = true + { ItemStack(Items.carrot) }, "carrot", FarmingItems.CARROT, replenish = true ), POTATO( "Potato", "THEORETICAL_HOE_POTATO", "CROPIE", 3.0, - { ItemStack(Items.potato) }, "potato", replenish = true + { ItemStack(Items.potato) }, "potato", FarmingItems.POTATO, replenish = true ), NETHER_WART( "Nether Wart", "THEORETICAL_HOE_WARTS", "FERMENTO", 2.5, - { ItemStack(Items.nether_wart) }, "wart", replenish = true + { ItemStack(Items.nether_wart) }, "wart", FarmingItems.NETHER_WART, replenish = true ), PUMPKIN( "Pumpkin", "PUMPKIN_DICER", "SQUASH", 1.0, - { ItemStack(Blocks.pumpkin) }, "pumpkin" + { ItemStack(Blocks.pumpkin) }, "pumpkin", FarmingItems.PUMPKIN ), MELON( "Melon", "MELON_DICER", "SQUASH", 5.0, - { ItemStack(Items.melon) }, "melon" + { ItemStack(Items.melon) }, "melon", FarmingItems.MELON ), COCOA_BEANS( "Cocoa Beans", "COCO_CHOPPER", "SQUASH", 3.0, - { ItemStack(Items.dye, 1, EnumDyeColor.BROWN.dyeDamage) }, "cocoa", replenish = true + { ItemStack(Items.dye, 1, EnumDyeColor.BROWN.dyeDamage) }, "cocoa", FarmingItems.COCOA_BEANS, replenish = true ), SUGAR_CANE( "Sugar Cane", "THEORETICAL_HOE_CANE", "FERMENTO", 2.0, - { ItemStack(Items.reeds) }, "cane" + { ItemStack(Items.reeds) }, "cane", FarmingItems.SUGAR_CANE ), CACTUS( "Cactus", "CACTUS_KNIFE", "FERMENTO", 2.0, - { ItemStack(Blocks.cactus) }, "cactus" + { ItemStack(Blocks.cactus) }, "cactus", FarmingItems.CACTUS ), MUSHROOM( "Mushroom", "FUNGI_CUTTER", "FERMENTO", 1.0, - { ItemStack(Blocks.red_mushroom_block) }, "mushroom" + { ItemStack(Blocks.red_mushroom_block) }, "mushroom", FarmingItems.MUSHROOM ), ; @@ -64,6 +66,9 @@ enum class CropType( override fun toString(): String = cropName + val patternKeyName = name.lowercase().replace('_', '.') + val niceName = name.lowercase().replace('_', ' ') + companion object { fun getByNameOrNull(itemName: String): CropType? { diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/FarmingFortuneDisplay.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/FarmingFortuneDisplay.kt index 0d75c9325..41ea1aa71 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/FarmingFortuneDisplay.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/FarmingFortuneDisplay.kt @@ -345,7 +345,8 @@ object FarmingFortuneDisplay { // TODO code cleanup (after ff rework) - for (line in tool?.getLore()!!) { + val lore = tool?.getLore() ?: return + for (line in lore) { tooltipFortunePattern.matchMatcher(line) { displayedFortune = group("display")?.toDouble() ?: 0.0 reforgeFortune = groupOrNull("reforge")?.toDouble() ?: 0.0 diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/farming/FarmingWeightDisplay.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/farming/FarmingWeightDisplay.kt index 6f8523c34..0aac3e747 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/farming/FarmingWeightDisplay.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/farming/FarmingWeightDisplay.kt @@ -192,8 +192,9 @@ class FarmingWeightDisplay { list.add( Renderable.clickAndHover( "§6Farming Weight§7: $weight$leaderboard", - listOf("§eClick to open your Farming Profile."), - onClick = { openWebsite(LorenzUtils.getPlayerName()) } + listOf("§eClick to open your Farming Profile."), onClick = { + openWebsite(LorenzUtils.getPlayerName()) + } ) ) diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/fortuneguide/CaptureFarmingGear.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/fortuneguide/CaptureFarmingGear.kt index 55e756780..158d1309e 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/fortuneguide/CaptureFarmingGear.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/fortuneguide/CaptureFarmingGear.kt @@ -1,17 +1,21 @@ package at.hannibal2.skyhanni.features.garden.fortuneguide +import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator import at.hannibal2.skyhanni.config.storage.ProfileSpecificStorage import at.hannibal2.skyhanni.data.PetAPI import at.hannibal2.skyhanni.data.ProfileStorageData import at.hannibal2.skyhanni.events.GardenToolChangeEvent import at.hannibal2.skyhanni.events.InventoryFullyOpenedEvent import at.hannibal2.skyhanni.events.LorenzChatEvent +import at.hannibal2.skyhanni.features.garden.CropType import at.hannibal2.skyhanni.features.garden.FarmingFortuneDisplay import at.hannibal2.skyhanni.features.garden.GardenAPI import at.hannibal2.skyhanni.features.garden.GardenAPI.getCropType import at.hannibal2.skyhanni.utils.ChatUtils import at.hannibal2.skyhanni.utils.InventoryUtils +import at.hannibal2.skyhanni.utils.ItemCategory import at.hannibal2.skyhanni.utils.ItemUtils.getInternalName +import at.hannibal2.skyhanni.utils.ItemUtils.getItemCategoryOrNull import at.hannibal2.skyhanni.utils.ItemUtils.getItemRarityOrNull import at.hannibal2.skyhanni.utils.ItemUtils.getLore import at.hannibal2.skyhanni.utils.LorenzUtils @@ -29,7 +33,6 @@ import kotlin.math.round import kotlin.time.Duration.Companion.days object CaptureFarmingGear { - private val farmingItems get() = GardenAPI.storage?.fortune?.farmingItems private val outdatedItems get() = GardenAPI.storage?.fortune?.outdatedItems private val patternGroup = RepoPattern.group("garden.fortuneguide.capture") @@ -80,9 +83,24 @@ object CaptureFarmingGear { "RANCHERS", "FARMER", "RABBIT" ) + init { + CarrolynTable.entries.forEach { + it.completeMessagePattern + it.thxMessagePattern + } + } + // TODO upadte armor on equpment/wardeobe update as well fun captureFarmingGear() { - val farmingItems = farmingItems ?: return + for (armor in InventoryUtils.getArmor()) { + if (armor == null) continue + val split = armor.getInternalName().asString().split("_") + if (split.first() in farmingSets) { + val category = armor.getItemCategoryOrNull() ?: continue + FarmingItems.getFromItemCategoryOne(category)?.setItem(armor) + } + } + val itemStack = InventoryUtils.getItemInHand() ?: return val currentCrop = itemStack.getCropType() @@ -91,22 +109,7 @@ object CaptureFarmingGear { //todo better fall back items //todo Daedalus axe } else { - for (item in FarmingItems.entries) { - if (item.name == currentCrop.name) { - farmingItems[item] = itemStack - } - } - } - for (armor in InventoryUtils.getArmor()) { - if (armor == null) continue - val split = armor.getInternalName().asString().split("_") - if (split.first() in farmingSets) { - for (item in FarmingItems.entries) { - if (item.name == split.last()) { - farmingItems[item] = armor - } - } - } + currentCrop.farmingItem.setItem(itemStack) } TabListData.getTabList().matchFirst(strengthPattern) { @@ -114,22 +117,13 @@ object CaptureFarmingGear { } } - fun reverseCarrotFortune() { - val storage = GardenAPI.storage?.fortune ?: return - storage.carrotFortune = !storage.carrotFortune - ChatUtils.chat("Toggled exportable carrot fortune to: ${storage.carrotFortune}") - } - - fun reversePumpkinFortune() { - val storage = GardenAPI.storage?.fortune ?: return - storage.pumpkinFortune = !storage.pumpkinFortune - ChatUtils.chat("Toggled expired pumpkin fortune to: ${storage.pumpkinFortune}") - } - - fun reverseCocoaBeansFortune() { - val storage = GardenAPI.storage?.fortune ?: return - storage.cocoaBeansFortune = !storage.cocoaBeansFortune - ChatUtils.chat("Toggled supreme chocolate bar fortune to: ${storage.cocoaBeansFortune}") + fun handelCarrolyn(input: Array<String>) { + val string = input.joinToString("_").uppercase() + val crop = CropType.entries.firstOrNull { it.name == string } + ?: ChatUtils.userError("Invalid Argument, no crop with the name: $string").run { return } + val carrolyn = CarrolynTable.getByCrop(crop) + ?: ChatUtils.userError("Invalid Argument, crop is not valid").run { return } + carrolyn.setVisibleActive(!carrolyn.get()) } private fun getUniqueVisitorsForTier(tier: Int): Int { @@ -151,15 +145,14 @@ object CaptureFarmingGear { fun onInventoryOpen(event: InventoryFullyOpenedEvent) { if (!LorenzUtils.inSkyBlock) return val storage = GardenAPI.storage?.fortune ?: return - val farmingItems = farmingItems ?: return val outdatedItems = outdatedItems ?: return val items = event.inventoryItems if (PetAPI.isPetMenu(event.inventoryName)) { - pets(farmingItems, items, outdatedItems) + pets(items, outdatedItems) return } when (event.inventoryName) { - "Your Equipment and Stats" -> equipmentAndStats(items, farmingItems, outdatedItems) + "Your Equipment and Stats" -> equipmentAndStats(items, outdatedItems) "Your Skills" -> skills(items, storage) "Community Shop" -> communityShop(items) "Configure Plots" -> configurePlots(items, storage) @@ -248,69 +241,54 @@ object CaptureFarmingGear { } private fun pets( - farmingItems: MutableMap<FarmingItems, ItemStack>, items: Map<Int, ItemStack>, outdatedItems: MutableMap<FarmingItems, Boolean>, ) { // If they've 2 of same pet, one will be overwritten - // optimize - - for (pet in listOf( - FarmingItems.ELEPHANT, - FarmingItems.MOOSHROOM_COW, - FarmingItems.RABBIT, - FarmingItems.BEE - )) { - if (farmingItems[pet] == null) { - farmingItems[pet] = FFGuideGUI.getFallbackItem(pet) - } - } // setting to current saved level -1 to stop later pages saving low rarity pets - var highestElephantRarity = (farmingItems[FarmingItems.ELEPHANT]?.getItemRarityOrNull()?.id ?: -1) - 1 - var highestMooshroomRarity = (farmingItems[FarmingItems.MOOSHROOM_COW]?.getItemRarityOrNull()?.id ?: -1) - 1 - var highestRabbitRarity = (farmingItems[FarmingItems.RABBIT]?.getItemRarityOrNull()?.id ?: -1) - 1 - var highestBeeRarity = (farmingItems[FarmingItems.BEE]?.getItemRarityOrNull()?.id ?: -1) - 1 + var highestElephantRarity = (FarmingItems.ELEPHANT.getItemOrNull()?.getItemRarityOrNull()?.id ?: -1) - 1 + var highestMooshroomRarity = (FarmingItems.MOOSHROOM_COW.getItemOrNull()?.getItemRarityOrNull()?.id ?: -1) - 1 + var highestRabbitRarity = (FarmingItems.RABBIT.getItemOrNull()?.getItemRarityOrNull()?.id ?: -1) - 1 + var highestBeeRarity = (FarmingItems.BEE.getItemOrNull()?.getItemRarityOrNull()?.id ?: -1) - 1 for ((_, item) in items) { - val split = item.getInternalName().asString().split(";") - if (split.first() == "ELEPHANT" && split.last().toInt() > highestElephantRarity) { - farmingItems[FarmingItems.ELEPHANT] = item + if (item.getItemCategoryOrNull() != ItemCategory.PET) continue + val (name, rarity) = item.getInternalName().asString().split(";") + if (name == "ELEPHANT" && rarity.toInt() > highestElephantRarity) { + FarmingItems.ELEPHANT.setItem(item) outdatedItems[FarmingItems.ELEPHANT] = false - highestElephantRarity = split.last().toInt() + highestElephantRarity = rarity.toInt() } - if (split.first() == "MOOSHROOM_COW" && split.last().toInt() > highestMooshroomRarity) { - farmingItems[FarmingItems.MOOSHROOM_COW] = item + if (name == "MOOSHROOM_COW" && rarity.toInt() > highestMooshroomRarity) { + FarmingItems.MOOSHROOM_COW.setItem(item) outdatedItems[FarmingItems.MOOSHROOM_COW] = false - highestMooshroomRarity = split.last().toInt() + highestMooshroomRarity = rarity.toInt() } - if (split.first() == "RABBIT" && split.last().toInt() > highestRabbitRarity) { - farmingItems[FarmingItems.RABBIT] = item + if (name == "RABBIT" && rarity.toInt() > highestRabbitRarity) { + FarmingItems.RABBIT.setItem(item) outdatedItems[FarmingItems.RABBIT] = false - highestRabbitRarity = split.last().toInt() + highestRabbitRarity = rarity.toInt() } - if (split.first() == "BEE" && split.last().toInt() > highestBeeRarity) { - farmingItems[FarmingItems.BEE] = item + if (name == "BEE" && rarity.toInt() > highestBeeRarity) { + FarmingItems.BEE.setItem(item) outdatedItems[FarmingItems.BEE] = false - highestBeeRarity = split.last().toInt() + highestBeeRarity = rarity.toInt() } } } private fun equipmentAndStats( items: Map<Int, ItemStack>, - farmingItems: MutableMap<FarmingItems, ItemStack>, outdatedItems: MutableMap<FarmingItems, Boolean>, ) { for ((_, slot) in items) { val split = slot.getInternalName().asString().split("_") + val category = slot.getItemCategoryOrNull() ?: continue if (split.first() == "LOTUS") { - for (item in FarmingItems.entries) { - if (item.name == split.last()) { - farmingItems[item] = slot - outdatedItems[item] = false - } - } + val item = FarmingItems.getFromItemCategoryOne(category) ?: continue + item.setItem(slot) + outdatedItems[item] = false FarmingFortuneDisplay.loadFortuneLineData(slot, 0.0) val enchantments = slot.getEnchantments() ?: emptyMap() val greenThumbLvl = (enchantments["green_thumb"] ?: continue) @@ -328,12 +306,15 @@ object CaptureFarmingGear { val msg = event.message.removeColor().trim() fortuneUpgradePattern.matchMatcher(msg) { ProfileStorageData.playerSpecific?.gardenCommunityUpgrade = group("level").romanToDecimal() + return } farmingLevelUpPattern.matchMatcher(msg) { storage.farmingLevel = group("level").romanToDecimalIfNecessary() + return } anitaBuffPattern.matchMatcher(msg) { storage.anitaUpgrade = group("level").toInt() / 4 + return } lotusUpgradePattern.matchMatcher(msg) { val piece = group("piece").uppercase() @@ -342,6 +323,7 @@ object CaptureFarmingGear { outdatedItems[item] = true } } + return } petLevelUpPattern.matchMatcher(msg) { val pet = group("pet").uppercase().replace("✦", "").trim().replace(" ", "_") @@ -350,30 +332,29 @@ object CaptureFarmingGear { outdatedItems[item] = true } } + return } cakePattern.matchMatcher(msg) { storage.cakeExpiring = System.currentTimeMillis() + 2.days.inWholeMilliseconds + return } - if (msg == "CARROTS EXPORTATION COMPLETE!") { - storage.carrotFortune = true - } - if (msg == "PUMPKINS EXPORTATION COMPLETE!") { - storage.pumpkinFortune = true - } - if (msg == "CHOCOLATE BARS EXPORTATION COMPLETE!") { - storage.cocoaBeansFortune = true - } - if (msg == "[NPC] Carrolyn: Thank you for the carrots.") { - storage.carrotFortune = true - ChatUtils.chat("§aYou have already given Carrolyn enough Exportable Carrots.") - } - if (msg == "[NPC] Carrolyn: Thank you for the pumpkins.") { - storage.pumpkinFortune = true - ChatUtils.chat("§aYou have already given Carrolyn enough Expired Pumpkins.") - } - if (msg == "[NPC] Carrolyn: Thank you for the chocolate.") { - storage.cocoaBeansFortune = true - ChatUtils.chat("§aYou have already given Carrolyn enough Supreme Chocolate Bars.") + CarrolynTable.entries.forEach { + it.completeMessagePattern.matchMatcher(msg) { + it.set(true) + return + } + it.thxMessagePattern.matchMatcher(msg) { + it.set(true) + ChatUtils.chat(it.thxResponse) + return + } } } + + @SubscribeEvent + fun onConfigUpdaterMigratorConfigFix(event: ConfigUpdaterMigrator.ConfigFixEvent) { + event.move(48, "#profile.garden.fortune.carrotFortune", "#profile.garden.fortune.carrolyn.CARROT") + event.move(48, "#profile.garden.fortune.pumpkinFortune", "#profile.garden.fortune.carrolyn.PUMPKIN") + event.move(48, "#profile.garden.fortune.cocoaBeansFortune", "#profile.garden.fortune.carrolyn.COCOA_BEANS") + } } diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/fortuneguide/CarrolynTable.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/fortuneguide/CarrolynTable.kt new file mode 100644 index 000000000..b7163768b --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/fortuneguide/CarrolynTable.kt @@ -0,0 +1,58 @@ +package at.hannibal2.skyhanni.features.garden.fortuneguide + +import at.hannibal2.skyhanni.features.garden.CropType +import at.hannibal2.skyhanni.features.garden.GardenAPI +import at.hannibal2.skyhanni.utils.ChatUtils +import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern + +enum class CarrolynTable(val crop: CropType, val label: String, completeMessage: String, thxMessage: String) { + EXPORTABLE_CARROTS( + CropType.CARROT, + "Exportable Carrots", + "CARROTS EXPORTATION COMPLETE!", + "[NPC] Carrolyn: Thank you for the carrots." + ), + EXPIRED_PUMPKIN( + CropType.PUMPKIN, + "Expired Pumpkin", + "PUMPKINS EXPORTATION COMPLETE!", + "[NPC] Carrolyn: Thank you for the pumpkins." + ), + SUPREME_CHOCOLATE_BAR( + CropType.COCOA_BEANS, + "Supreme Chocolate Bar", + "CHOCOLATE BARS EXPORTATION COMPLETE!", + "[NPC] Carrolyn: Thank you for the chocolate." + ), + ; + + val completeMessagePattern by RepoPattern.pattern( + "garden.ff.carrolyn.complete.${crop.patternKeyName}", completeMessage + ) + val thxMessagePattern by RepoPattern.pattern( + "garden.ff.carrolyn.thx.${crop.patternKeyName}", thxMessage + ) + + val thxResponse = "§aYou have already given Carrolyn enough $label." + + fun get() = GardenAPI.storage?.fortune?.carrolyn?.get(crop) ?: false + fun set(value: Boolean) = GardenAPI.storage?.fortune?.carrolyn?.set(crop, value) + + fun setVisibleActive(value: Boolean) { + set(value) + ChatUtils.chat("Toggled $label fortune to: ${get()}") + } + + companion object { + fun getByCrop(crop: CropType?) = if (crop == null) null else entries.firstOrNull { it.crop == crop } + + fun isCarrolynCrop(crop: CropType): Boolean = CarrolynTable.getByCrop(crop) != null + fun customTabComplete(command: String): List<String>? { + if (command == "shcarrolyn") { + return entries.map { it.crop.name } + } + + return null + } + } +} diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/fortuneguide/FFGuideGUI.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/fortuneguide/FFGuideGUI.kt index 0cafabd1c..ff81cae6d 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/fortuneguide/FFGuideGUI.kt +++ b/ |
