From e64aaf11cd6e398eb07bec52a0868784437ef36d Mon Sep 17 00:00:00 2001 From: MicrocontrollersDev Date: Tue, 15 Jul 2025 15:48:46 -0700 Subject: [PATCH 1/3] fix MC-134110 --- PATCHED.md | 1 + .../basic/mc134110/ChestBlockMixin.java | 21 +++++++++++++++++++ src/main/resources/debugify.mixins.json | 1 + 3 files changed, 23 insertions(+) create mode 100644 src/main/java/dev/isxander/debugify/mixins/basic/mc134110/ChestBlockMixin.java diff --git a/PATCHED.md b/PATCHED.md index 0933aac5..2956cc01 100644 --- a/PATCHED.md +++ b/PATCHED.md @@ -48,6 +48,7 @@ | Basic | [MC-121903](https://bugs.mojang.com/browse/MC-121903) | Command block minecarts do not save execution cooldown to NBT | | Basic | [MC-129909](https://bugs.mojang.com/browse/MC-129909) | Players in spectator mode continue to consume foods and liquids shortly after switching game modes | | Basic | [MC-132878](https://bugs.mojang.com/browse/MC-132878) | Armor stands destroyed by explosions/lava/fire don't produce particles | +| Basic | [MC-134110](https://bugs.mojang.com/browse/MC-134110) | Structure mirroring breaking apart double chests | | Basic | [MC-155509](https://bugs.mojang.com/browse/MC-155509) | Puffed pufferfish can hurt the player while dying | | Basic | [MC-160095](https://bugs.mojang.com/browse/MC-160095) | End Rods only break Cactus when moved by pistons | | Basic | [MC-179072](https://bugs.mojang.com/browse/MC-179072) | Creepers do not defuse when switching from Survival to Creative/Spectator | diff --git a/src/main/java/dev/isxander/debugify/mixins/basic/mc134110/ChestBlockMixin.java b/src/main/java/dev/isxander/debugify/mixins/basic/mc134110/ChestBlockMixin.java new file mode 100644 index 00000000..ba731593 --- /dev/null +++ b/src/main/java/dev/isxander/debugify/mixins/basic/mc134110/ChestBlockMixin.java @@ -0,0 +1,21 @@ +package dev.isxander.debugify.mixins.basic.mc134110; + +import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import dev.isxander.debugify.fixes.BugFix; +import dev.isxander.debugify.fixes.FixCategory; +import net.minecraft.world.level.block.ChestBlock; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; + +import static net.minecraft.world.level.block.ChestBlock.TYPE; + +@BugFix(id = "MC-134110", category = FixCategory.BASIC, env = BugFix.Env.SERVER, description = "Structure mirroring breaking apart double chests") +@Mixin(ChestBlock.class) +public class ChestBlockMixin { + @WrapMethod(method = "mirror") + private BlockState fixChestRotations(BlockState blockState, Mirror mirror, Operation original) { + return mirror == Mirror.NONE ? original.call(blockState, mirror) : original.call(blockState, mirror).setValue(TYPE, original.call(blockState, mirror).getValue(TYPE).getOpposite()); + } +} diff --git a/src/main/resources/debugify.mixins.json b/src/main/resources/debugify.mixins.json index 4b1b991a..b2bf5885 100644 --- a/src/main/resources/debugify.mixins.json +++ b/src/main/resources/debugify.mixins.json @@ -16,6 +16,7 @@ "basic.mc121903.MinecraftCommandBlockMixin", "basic.mc129909.ServerPlayerMixin", "basic.mc132878.ArmorStandMixin", + "basic.mc134110.ChestBlockMixin", "basic.mc155509.PufferfishMixin", "basic.mc160095.CactusBlockMixin", "basic.mc179072.SwellGoalMixin", From 3ad518cdc1c26cd0e23162a5f9ae953d409fe3fc Mon Sep 17 00:00:00 2001 From: MicrocontrollersDev Date: Sun, 20 Jul 2025 19:46:09 -0700 Subject: [PATCH 2/3] add fix explanation since the bug report description is weird --- src/main/resources/assets/debugify/lang/en_us.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/assets/debugify/lang/en_us.json b/src/main/resources/assets/debugify/lang/en_us.json index b0d49e48..1b911469 100644 --- a/src/main/resources/assets/debugify/lang/en_us.json +++ b/src/main/resources/assets/debugify/lang/en_us.json @@ -66,6 +66,7 @@ "debugify.fix_explanation.mc-121903": "Adds NBT tag 'LastExecuted' to command blocks to save and load their last executed property.", "debugify.fix_explanation.mc-124117": "Sends players packets to update all their effects, their experience and their abilities after cross dimensional teleport.", "debugify.fix_explanation.mc-132878": "Spawns breaking particles when armour stands are hurt.", + "debugify.fix_explanation.mc-134110": "Correctly rotates double chests when a structure that is mirrored is placed.", "debugify.fix_explanation.mc-135971": "Overrides CTRL+Q behaviour in crafting slot to repeatedly CTRL+Q until there are no items left in the crafting slot.", "debugify.fix_explanation.mc-155509": "Checks if the pufferfish is alive before attempting to sting the player.", "debugify.fix_explanation.mc-160095": "If cacti encounter a piston head, the block that is being moved by the piston is considered instead of the piston.", From c0c18a4766cad6f8ff6d90a16a3548bd06012705 Mon Sep 17 00:00:00 2001 From: MicrocontrollersDev <66657148+MicrocontrollersDev@users.noreply.github.com> Date: Mon, 21 Jul 2025 11:48:51 -0700 Subject: [PATCH 3/3] Update src/main/java/dev/isxander/debugify/mixins/basic/mc134110/ChestBlockMixin.java Co-authored-by: Xander --- .../debugify/mixins/basic/mc134110/ChestBlockMixin.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/dev/isxander/debugify/mixins/basic/mc134110/ChestBlockMixin.java b/src/main/java/dev/isxander/debugify/mixins/basic/mc134110/ChestBlockMixin.java index ba731593..0d82b3aa 100644 --- a/src/main/java/dev/isxander/debugify/mixins/basic/mc134110/ChestBlockMixin.java +++ b/src/main/java/dev/isxander/debugify/mixins/basic/mc134110/ChestBlockMixin.java @@ -16,6 +16,7 @@ public class ChestBlockMixin { @WrapMethod(method = "mirror") private BlockState fixChestRotations(BlockState blockState, Mirror mirror, Operation original) { - return mirror == Mirror.NONE ? original.call(blockState, mirror) : original.call(blockState, mirror).setValue(TYPE, original.call(blockState, mirror).getValue(TYPE).getOpposite()); + BlockState result = original.call(blockState, mirror); + return mirror == Mirror.NONE ? result : result.setValue(TYPE, result.getValue(TYPE).getOpposite()); } }