From 884e05f3d67c362bc695d6a29f20afc9fe825426 Mon Sep 17 00:00:00 2001 From: FlorianMichael <60033407+FlorianMichael@users.noreply.github.com> Date: Tue, 18 Jul 2023 06:06:39 +0200 Subject: [PATCH] Fixed Issue 5 and 9 from https://github.com/ViaVersion/ViaFabricPlus/issues/178 --- .../minecraft/block/MixinPistonHeadBlock.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinPistonHeadBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinPistonHeadBlock.java index 824c57c7..e48b4c86 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinPistonHeadBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinPistonHeadBlock.java @@ -17,6 +17,7 @@ */ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.block; +import net.minecraft.state.property.BooleanProperty; import net.raphimc.vialoader.util.VersionEnum; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; @@ -26,7 +27,9 @@ import net.minecraft.util.math.Direction; import net.minecraft.util.shape.VoxelShape; import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -35,14 +38,27 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(PistonHeadBlock.class) public class MixinPistonHeadBlock extends FacingBlock { + @Shadow @Final public static BooleanProperty SHORT; + + @Shadow @Final private static VoxelShape[] SHORT_HEAD_SHAPES; + + @Shadow @Final private static VoxelShape[] HEAD_SHAPES; + public MixinPistonHeadBlock(Settings settings) { super(settings); } + @Unique + private boolean viafabricplus_skipOutlineChange; + @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) public void injectGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { - if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_12_2)) { - cir.setReturnValue(viafabricplus_getCoreShape_v1_8_x(state)); + if (viafabricplus_skipOutlineChange) { + viafabricplus_skipOutlineChange = false; + return; + } + if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_11)) { + cir.setReturnValue(viafabricplus_getHeadShape_v1_8_x(state)); } } @@ -52,6 +68,7 @@ public class MixinPistonHeadBlock extends FacingBlock { return VoxelShapes.union(viafabricplus_getHeadShape_v1_8_x(state), viafabricplus_getCoreShape_v1_8_x(state)); } + viafabricplus_skipOutlineChange = true; return super.getCollisionShape(state, world, pos, context); }