diff options
| author | J10a1n15 <45315647+j10a1n15@users.noreply.github.com> | 2024-09-09 15:24:39 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-09 15:24:39 +0200 |
| commit | e17e70b6933982ca417577f441928f77cbbf9ef1 (patch) | |
| tree | 2602f9ac1cdb041f33cdff880a457c54878fd01f /src/main/java/at/hannibal2/skyhanni/features | |
| parent | 2b4011efc9ef79fc478b44bce4959dc37424138a (diff) | |
| download | skyhanni-e17e70b6933982ca417577f441928f77cbbf9ef1.tar.gz skyhanni-e17e70b6933982ca417577f441928f77cbbf9ef1.tar.bz2 skyhanni-e17e70b6933982ca417577f441928f77cbbf9ef1.zip | |
Feature: Current Minister in Calendar (#2342)
Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features')
| -rw-r--r-- | src/main/java/at/hannibal2/skyhanni/features/inventory/MinisterInCalendar.kt | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/inventory/MinisterInCalendar.kt b/src/main/java/at/hannibal2/skyhanni/features/inventory/MinisterInCalendar.kt new file mode 100644 index 000000000..d078f0d1a --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/inventory/MinisterInCalendar.kt @@ -0,0 +1,86 @@ +package at.hannibal2.skyhanni.features.inventory + +import at.hannibal2.skyhanni.SkyHanniMod +import at.hannibal2.skyhanni.data.Mayor +import at.hannibal2.skyhanni.data.MayorAPI +import at.hannibal2.skyhanni.events.InventoryCloseEvent +import at.hannibal2.skyhanni.events.InventoryOpenEvent +import at.hannibal2.skyhanni.events.render.gui.ReplaceItemEvent +import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule +import at.hannibal2.skyhanni.utils.InventoryUtils +import at.hannibal2.skyhanni.utils.ItemUtils.setLore +import at.hannibal2.skyhanni.utils.LorenzUtils +import at.hannibal2.skyhanni.utils.NEUInternalName.Companion.asInternalName +import at.hannibal2.skyhanni.utils.NEUItems.getItemStack +import at.hannibal2.skyhanni.utils.RegexUtils.matches +import at.hannibal2.skyhanni.utils.StringUtils.splitLines +import net.minecraft.client.player.inventory.ContainerLocalMenu +import net.minecraft.item.ItemStack +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent + +@SkyHanniModule +object MinisterInCalendar { + + private const val MINISTER_SLOT = 38 + private var ministerItemStack: ItemStack? = null + + private val prefix = listOf( + "§8(from SkyHanni)", + "", + "§8§m--------------------------", + ) + private val suffix = listOf( + "§8§m--------------------------", + "", + "§7The Minister is who came in 2nd place", + "§7during the election. They have one", + "§7of their perks active.", + ) + + @SubscribeEvent + fun onInventoryOpen(event: InventoryOpenEvent) { + if (!isEnabled()) return + if (!MayorAPI.calendarGuiPattern.matches(InventoryUtils.openInventoryName())) return + val minister = MayorAPI.currentMinister ?: return + + val itemStack = "${minister.name}_MAYOR_MONSTER".asInternalName().getItemStack() + val ministerColor = MayorAPI.mayorNameToColorCode(minister.mayorName) + + ministerItemStack = changeItem(ministerColor, minister, itemStack) + } + + @SubscribeEvent + fun onInventoryClose(event: InventoryCloseEvent) { + if (!isEnabled()) return + if (!MayorAPI.calendarGuiPattern.matches(InventoryUtils.openInventoryName())) return + ministerItemStack = null + } + + @SubscribeEvent + fun replaceItem(event: ReplaceItemEvent) { + if (!isEnabled()) return + if (event.inventory !is ContainerLocalMenu || event.slot != MINISTER_SLOT) return + if (!MayorAPI.calendarGuiPattern.matches(InventoryUtils.openInventoryName())) return + event.replace(ministerItemStack ?: return) + } + + private fun changeItem( + ministerColor: String, + minister: Mayor, + item: ItemStack, + ): ItemStack? { + val ministerDisplayName = "${ministerColor}Minister ${minister.mayorName}" + val ministerLore = buildList { + addAll(prefix) + for (perk in minister.activePerks) { + add("$ministerColor${perk.perkName}") + addAll(perk.description.splitLines(170).removePrefix("§r").split("\n").map { "§7$it" }) + } + addAll(suffix) + } + + return item.setLore(ministerLore).setStackDisplayName(ministerDisplayName) + } + + fun isEnabled() = LorenzUtils.inSkyBlock && SkyHanniMod.feature.inventory.ministerInCalendar +} |
