Make exopack slot upgrades be consumed in stacks, to make bulk use way less annoying

This commit is contained in:
DBotThePony 2025-03-23 01:48:33 +07:00
parent 16f91343d8
commit fdfc406ca6
Signed by: DBot
GPG Key ID: DCC23B5715498507
2 changed files with 28 additions and 18 deletions

View File

@ -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<ItemStack> {
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)
}
}
}

View File

@ -60,7 +60,7 @@ class ExopackUpgradeItem(
}
override fun use(p_41432_: Level, player: Player, hand: InteractionHand): InteractionResultHolder<ItemStack> {
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)