From ec225714f03439571a45a82949414d40c9beb044 Mon Sep 17 00:00:00 2001 From: Pan <847687+Mansarde@users.noreply.github.com> Date: Fri, 26 Sep 2025 16:53:26 +0200 Subject: [PATCH] fix siege cube remaining on death via keepinventory This will prevent a siege cube from remaining in the player inventory on death when the gamerule keepinventory is true. This is to prevent a player from taking a siege cube into its TARDIS by setting their spawn point inside that TARDIS and dying with the siege cube in their inventory while outside of the TARDIS. --- .../ait/mixin/server/ServerPlayerMixin.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/main/java/dev/amble/ait/mixin/server/ServerPlayerMixin.java b/src/main/java/dev/amble/ait/mixin/server/ServerPlayerMixin.java index 38382cdb1e..973fb067be 100644 --- a/src/main/java/dev/amble/ait/mixin/server/ServerPlayerMixin.java +++ b/src/main/java/dev/amble/ait/mixin/server/ServerPlayerMixin.java @@ -1,5 +1,11 @@ package dev.amble.ait.mixin.server; +import dev.amble.ait.core.AITItems; +import dev.amble.ait.core.item.SiegeTardisItem; +import dev.amble.ait.core.tardis.manager.ServerTardisManager; +import net.minecraft.entity.damage.DamageSource; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -11,6 +17,8 @@ import dev.amble.ait.core.tardis.util.TardisUtil; import dev.amble.ait.core.world.TardisServerWorld; +import java.util.Objects; + @Mixin(ServerPlayerEntity.class) public class ServerPlayerMixin { @@ -31,4 +39,26 @@ public class ServerPlayerMixin { if (player.hasVehicle() && player.getVehicle() instanceof FlightTardisEntity) ci.cancel(); } + + @Inject(method = "onDeath", at = @At("HEAD")) + public void ait$onDeath(DamageSource damageSource, CallbackInfo ci) { + ServerPlayerEntity player = (ServerPlayerEntity) (Object) this; + + ServerTardisManager.getInstance().forEach(tardis -> { + if (!tardis.siege().isActive()) + return; + + if (!Objects.equals(tardis.siege().getHeldPlayerUUID(), player.getUuid())) + return; + + for (ItemStack itemStack : player.getInventory().main) { + if (itemStack.isOf(AITItems.SIEGE_ITEM)) { + if (tardis.getUuid().equals(SiegeTardisItem.getTardisIdStatic(itemStack))) { + player.getInventory().setStack(player.getInventory().getSlotWithStack(itemStack), Items.AIR.getDefaultStack()); + } + } + } + SiegeTardisItem.placeTardis(tardis, SiegeTardisItem.fromEntity(player)); + }); + } }