From fdfc406ca67290bdce2d2412911ab1218029cc77 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sun, 23 Mar 2025 01:48:33 +0700 Subject: [PATCH] Make exopack slot upgrades be consumed in stacks, to make bulk use way less annoying --- .../exopack/AbstractExopackSlotUpgradeItem.kt | 42 ++++++++++++------- .../mc/otm/item/exopack/ExopackUpgradeItem.kt | 4 +- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/exopack/AbstractExopackSlotUpgradeItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/exopack/AbstractExopackSlotUpgradeItem.kt index e9750cab0..dd15524c2 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/exopack/AbstractExopackSlotUpgradeItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/exopack/AbstractExopackSlotUpgradeItem.kt @@ -20,6 +20,9 @@ import ru.dbotthepony.mc.otm.client.minecraft import ru.dbotthepony.mc.otm.core.TranslatableComponent import ru.dbotthepony.mc.otm.core.isExplosion import ru.dbotthepony.mc.otm.core.isFire +import ru.dbotthepony.mc.otm.core.isNotEmpty +import ru.dbotthepony.mc.otm.core.nextUUID +import ru.dbotthepony.mc.otm.core.otmRandom import ru.dbotthepony.mc.otm.registry.game.MItems import ru.dbotthepony.mc.otm.runIfClient import ru.dbotthepony.mc.otm.triggers.ExopackSlotsExpandedTrigger @@ -35,7 +38,7 @@ abstract class AbstractExopackSlotUpgradeItem(properties: Properties = defaultPr } override fun getUseDuration(p_41454_: ItemStack, p_344979_: LivingEntity): Int { - return 30 + return 20 } override fun appendHoverText( @@ -76,7 +79,7 @@ abstract class AbstractExopackSlotUpgradeItem(properties: Properties = defaultPr } override fun use(p_41432_: Level, player: Player, hand: InteractionHand): InteractionResultHolder { - val matteryPlayer = player.matteryPlayer ?: return super.use(p_41432_, player, hand) + val matteryPlayer = player.matteryPlayer val uuid = uuid(player.getItemInHand(hand)) @@ -98,25 +101,32 @@ abstract class AbstractExopackSlotUpgradeItem(properties: Properties = defaultPr return super.finishUsingItem(itemStack, level, player) } - if (!player.abilities.instabuild) - itemStack.shrink(1) + var allowedUses = itemStack.count - if (player is ServerPlayer) { - if (uuid != null) { - if (ServerConfig.INFINITE_EXOSUIT_UPGRADES && uuid in matteryPlayer.exopackSlotModifier) { - matteryPlayer.exopackSlotModifier[UUID.randomUUID()] = slotCount + while (allowedUses > 0) { + if (!player.abilities.instabuild) + itemStack.shrink(1) + + allowedUses-- + + if (player is ServerPlayer) { + if (uuid != null) { + if (ServerConfig.INFINITE_EXOSUIT_UPGRADES && uuid in matteryPlayer.exopackSlotModifier) { + matteryPlayer.exopackSlotModifier[level.otmRandom.nextUUID()] = slotCount + } else { + matteryPlayer.exopackSlotModifier[uuid] = slotCount + allowedUses = 0 + } } else { - matteryPlayer.exopackSlotModifier[uuid] = slotCount + matteryPlayer.exopackSlotModifier[level.otmRandom.nextUUID()] = slotCount } - } else { - matteryPlayer.exopackSlotModifier[UUID.randomUUID()] = slotCount - } - ExopackSlotsExpandedTrigger.trigger(player, slotCount, matteryPlayer.exopackContainer.containerSize) - player.displayClientMessage(TranslatableComponent("otm.exopack_upgrades.slots_upgraded", slotCount).withStyle(ChatFormatting.DARK_GREEN), false) + ExopackSlotsExpandedTrigger.trigger(player, slotCount, matteryPlayer.exopackContainer.containerSize) + player.displayClientMessage(TranslatableComponent("otm.exopack_upgrades.slots_upgraded", slotCount).withStyle(ChatFormatting.DARK_GREEN), false) - if (this === MItems.ExopackUpgrades.INVENTORY_UPGRADE_ENDER_DRAGON) { - MItems.ExopackUpgrades.ENDER_UPGRADE.finishUsingItem(ItemStack(MItems.ExopackUpgrades.INVENTORY_UPGRADE_ENDER_DRAGON), level, player) + if (this === MItems.ExopackUpgrades.INVENTORY_UPGRADE_ENDER_DRAGON) { + MItems.ExopackUpgrades.ENDER_UPGRADE.finishUsingItem(ItemStack(MItems.ExopackUpgrades.INVENTORY_UPGRADE_ENDER_DRAGON), level, player) + } } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/exopack/ExopackUpgradeItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/exopack/ExopackUpgradeItem.kt index faf2b52ee..1db813729 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/exopack/ExopackUpgradeItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/exopack/ExopackUpgradeItem.kt @@ -60,7 +60,7 @@ class ExopackUpgradeItem( } override fun use(p_41432_: Level, player: Player, hand: InteractionHand): InteractionResultHolder { - if (player.matteryPlayer?.hasExopack == true && !type.prop.get(player.matteryPlayer!!)) { + if (player.matteryPlayer.hasExopack && !type.prop.get(player.matteryPlayer)) { player.startUsingItem(hand) return InteractionResultHolder.consume(player.getItemInHand(hand)) } @@ -70,7 +70,7 @@ class ExopackUpgradeItem( override fun finishUsingItem(itemStack: ItemStack, level: Level, player: LivingEntity): ItemStack { if (player !is Player) return super.finishUsingItem(itemStack, level, player) - val mattery = player.matteryPlayer ?: return super.finishUsingItem(itemStack, level, player) + val mattery = player.matteryPlayer if (!mattery.hasExopack || type.prop.get(mattery)) { return super.finishUsingItem(itemStack, level, player)