From 6361eb9e3b58382b3a6aa8bd1a22b4c301d9583a Mon Sep 17 00:00:00 2001 From: nischhelm Date: Thu, 11 Jun 2026 17:18:39 +0200 Subject: [PATCH] fix chest rendering with the old behavior, vanilla chests+trapped chests started rendering wrong when they were next to each other. also added build.gradle auto mixin export in indev runs to easier check for mixin results --- build.gradle | 2 ++ .../renderer/EndChestTileEntityRenderer.java | 1 - .../common/tileentity/EChestTileEntity.java | 1 - .../mixin/minecraft/TileEntityChestMixin.java | 23 +++++++++++-------- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/build.gradle b/build.gradle index b0acd612..0eaf8aa4 100644 --- a/build.gradle +++ b/build.gradle @@ -23,6 +23,7 @@ minecraft { jvmArg "-Dfml.coreMods.load=${mixin_loader_class}" jvmArg "-Dmixin.hotSwap=true" jvmArg "-Dmixin.checks.interfaces=true" + jvmArg "-Dmixin.debug.export=true" workingDirectory project.file('run') @@ -35,6 +36,7 @@ minecraft { jvmArg "-Dfml.coreMods.load=${mixin_loader_class}" jvmArg "-Dmixin.hotSwap=true" jvmArg "-Dmixin.checks.interfaces=true" + jvmArg "-Dmixin.debug.export=true" workingDirectory project.file('run') diff --git a/src/main/java/mod/beethoven92/betterendforge/client/renderer/EndChestTileEntityRenderer.java b/src/main/java/mod/beethoven92/betterendforge/client/renderer/EndChestTileEntityRenderer.java index 492809b6..93b3fa6d 100644 --- a/src/main/java/mod/beethoven92/betterendforge/client/renderer/EndChestTileEntityRenderer.java +++ b/src/main/java/mod/beethoven92/betterendforge/client/renderer/EndChestTileEntityRenderer.java @@ -16,7 +16,6 @@ import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemBlock; -import net.minecraft.tileentity.TileEntityChest; import net.minecraft.util.EnumFacing; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; diff --git a/src/main/java/mod/beethoven92/betterendforge/common/tileentity/EChestTileEntity.java b/src/main/java/mod/beethoven92/betterendforge/common/tileentity/EChestTileEntity.java index 7804dd2e..020e135a 100644 --- a/src/main/java/mod/beethoven92/betterendforge/common/tileentity/EChestTileEntity.java +++ b/src/main/java/mod/beethoven92/betterendforge/common/tileentity/EChestTileEntity.java @@ -1,6 +1,5 @@ package mod.beethoven92.betterendforge.common.tileentity; -import mod.beethoven92.betterendforge.common.init.ModTileEntityTypes; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.tileentity.TileEntityChest; diff --git a/src/main/java/mod/beethoven92/betterendforge/mixin/minecraft/TileEntityChestMixin.java b/src/main/java/mod/beethoven92/betterendforge/mixin/minecraft/TileEntityChestMixin.java index 828458e0..ec2c8b3b 100644 --- a/src/main/java/mod/beethoven92/betterendforge/mixin/minecraft/TileEntityChestMixin.java +++ b/src/main/java/mod/beethoven92/betterendforge/mixin/minecraft/TileEntityChestMixin.java @@ -3,7 +3,6 @@ import mod.beethoven92.betterendforge.common.tileentity.EChestTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityChest; -import net.minecraft.tileentity.TileEntityLockable; import net.minecraft.util.math.BlockPos; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -11,15 +10,19 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(TileEntityChest.class) -public abstract class TileEntityChestMixin extends TileEntityLockable { +public abstract class TileEntityChestMixin extends TileEntity { - @Inject(method = "isChestAt", at = @At("RETURN"), cancellable = true) - private void isChestAt(BlockPos p_174912_1_, CallbackInfoReturnable cir) { - if (this.world == null) { - cir.setReturnValue(false); - } else { - TileEntity tile = this.world.getTileEntity(p_174912_1_); - cir.setReturnValue(!(tile instanceof EChestTileEntity) || ((Object)this) instanceof EChestTileEntity); - } + @Inject(method = "isChestAt", at = @At(value = "RETURN", ordinal = 1), cancellable = true) + private void betterendforge_isChestAt(BlockPos pos, CallbackInfoReturnable cir){ + TileEntityChest thisTile = (TileEntityChest)(Object)this; + TileEntity thatTile = this.world.getTileEntity(pos); + + boolean thisIsBE = thisTile instanceof EChestTileEntity; + boolean thatIsBE = thatTile instanceof EChestTileEntity; + + if(thisIsBE != thatIsBE) cir.setReturnValue(false); //one vanilla chest, one BE, don't connect + else if(thisIsBE && thatIsBE) + cir.setReturnValue(this.world.getBlockState(pos).getBlock() == this.getBlockType()); + //else vanilla behavior } }