From 0f03e6e3bdb87ece529d203a7f2c45186c015e98 Mon Sep 17 00:00:00 2001 From: gnembon Date: Fri, 11 Jun 2021 03:15:17 -0300 Subject: [PATCH] creativeNoClip player are not affected by opening shulkers. Fixes #878 --- ...kerBoxBlockEntity_creativeNoClipMixin.java | 25 +++++++++++++++++++ src/main/resources/carpet.mixins.json | 1 + 2 files changed, 26 insertions(+) create mode 100644 src/main/java/carpet/mixins/ShulkerBoxBlockEntity_creativeNoClipMixin.java diff --git a/src/main/java/carpet/mixins/ShulkerBoxBlockEntity_creativeNoClipMixin.java b/src/main/java/carpet/mixins/ShulkerBoxBlockEntity_creativeNoClipMixin.java new file mode 100644 index 00000000..d3deec9c --- /dev/null +++ b/src/main/java/carpet/mixins/ShulkerBoxBlockEntity_creativeNoClipMixin.java @@ -0,0 +1,25 @@ +package carpet.mixins; + +import carpet.CarpetSettings; +import net.minecraft.block.entity.ShulkerBoxBlockEntity; +import net.minecraft.block.piston.PistonBehavior; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.PlayerEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(ShulkerBoxBlockEntity.class) +public class ShulkerBoxBlockEntity_creativeNoClipMixin +{ + @Redirect(method = "pushEntities", at = @At( + value = "INVOKE", + target = "Lnet/minecraft/entity/Entity;getPistonBehavior()Lnet/minecraft/block/piston/PistonBehavior;" + )) + private PistonBehavior getPistonBehaviourOfNoClipPlayers(Entity entity) + { + if (CarpetSettings.creativeNoClip && entity instanceof PlayerEntity && (((PlayerEntity) entity).isCreative()) && ((PlayerEntity) entity).abilities.flying) + return PistonBehavior.IGNORE; + return entity.getPistonBehavior(); + } +} diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index dfc7ee5a..bc85dd1b 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -203,6 +203,7 @@ "PistonBlockEntity_playerHandlingMixin", "BlockItem_creativeNoClipMixin", "WallStandingBlockItem_creativeNoClipMixin", + "ShulkerBoxBlockEntity_creativeNoClipMixin", "LivingEntity_creativeFlyMixin" ],