From cf31d76ee1494741be6c32d1179593ff13be224e Mon Sep 17 00:00:00 2001 From: Frank Date: Sat, 30 Oct 2021 15:00:43 +0200 Subject: [PATCH] added `c:immobile` for unmovable blocks like obsidian --- src/main/java/ru/bclib/api/TagAPI.java | 1 + .../mixin/common/PistonBaseBlockMixin.java | 23 +++++++++++++++++++ ...BlockMixi.java => TripWireBlockMixin.java} | 0 src/main/resources/bclib.mixins.common.json | 5 ++-- 4 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 src/main/java/ru/bclib/mixin/common/PistonBaseBlockMixin.java rename src/main/java/ru/bclib/mixin/common/shears/{TripWireBlockMixi.java => TripWireBlockMixin.java} (100%) diff --git a/src/main/java/ru/bclib/api/TagAPI.java b/src/main/java/ru/bclib/api/TagAPI.java index 1832ec67..a3956e46 100644 --- a/src/main/java/ru/bclib/api/TagAPI.java +++ b/src/main/java/ru/bclib/api/TagAPI.java @@ -43,6 +43,7 @@ public class TagAPI { public static final Tag.Named BLOCK_WORKBENCHES = makeCommonBlockTag("workbench"); public static final Tag.Named BLOCK_SAPLINGS = makeCommonBlockTag("saplings"); public static final Tag.Named BLOCK_LEAVES = makeCommonBlockTag("leaves"); + public static final Tag.Named BLOCK_IMMOBILE = makeCommonBlockTag("immobile"); public static final Tag.Named BLOCK_DRAGON_IMMUNE = getMCBlockTag("dragon_immune"); diff --git a/src/main/java/ru/bclib/mixin/common/PistonBaseBlockMixin.java b/src/main/java/ru/bclib/mixin/common/PistonBaseBlockMixin.java new file mode 100644 index 00000000..ae2d3a02 --- /dev/null +++ b/src/main/java/ru/bclib/mixin/common/PistonBaseBlockMixin.java @@ -0,0 +1,23 @@ +package ru.bclib.mixin.common; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.piston.PistonBaseBlock; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import ru.bclib.api.TagAPI; + +@Mixin(PistonBaseBlock.class) +public class PistonBaseBlockMixin { + @Inject(method="isPushable", at=@At("HEAD"), cancellable = true) + private static void bclib_isPushable(BlockState blockState, Level level, BlockPos blockPos, Direction direction, boolean bl, Direction direction2, CallbackInfoReturnable cir){ + if (blockState.is(TagAPI.BLOCK_IMMOBILE)){ + cir.setReturnValue(false); + cir.cancel(); + } + } +} diff --git a/src/main/java/ru/bclib/mixin/common/shears/TripWireBlockMixi.java b/src/main/java/ru/bclib/mixin/common/shears/TripWireBlockMixin.java similarity index 100% rename from src/main/java/ru/bclib/mixin/common/shears/TripWireBlockMixi.java rename to src/main/java/ru/bclib/mixin/common/shears/TripWireBlockMixin.java diff --git a/src/main/resources/bclib.mixins.common.json b/src/main/resources/bclib.mixins.common.json index f312d6ec..cda8afe9 100644 --- a/src/main/resources/bclib.mixins.common.json +++ b/src/main/resources/bclib.mixins.common.json @@ -27,8 +27,9 @@ "shears.PumpkinBlockMixin", "shears.SheepMixin", "shears.SnowGolemMixin", - "shears.TripWireBlockMixi", - "PortalShapeMixin" + "shears.TripWireBlockMixin", + "PortalShapeMixin", + "PistonBaseBlockMixin" ], "injectors": { "defaultRequire": 1