From a3954d50f488bd8b90205607ed2c4d91d04dfff0 Mon Sep 17 00:00:00 2001 From: hugeblank Date: Mon, 31 May 2021 12:15:16 -0700 Subject: [PATCH] Add Movable Amethyst Rule (#894) * Add Pushable Amethyst Rule As discussed in #79 of ilmangos peaceful challenge. He said he'd do it, I figured I could beat him to the punch :) https://youtu.be/0-fAKpr_J8k?t=1076 * Name change - movableAmethyst Co-authored-by: hugeblank --- src/main/java/carpet/CarpetSettings.java | 3 +++ ...ngAmethystBlock_getPistonBehaviorMixin.java | 18 ++++++++++++++++++ src/main/resources/carpet.mixins.json | 1 + 3 files changed, 22 insertions(+) create mode 100644 src/main/java/carpet/mixins/BuddingAmethystBlock_getPistonBehaviorMixin.java diff --git a/src/main/java/carpet/CarpetSettings.java b/src/main/java/carpet/CarpetSettings.java index 132c0c64..c76989f2 100644 --- a/src/main/java/carpet/CarpetSettings.java +++ b/src/main/java/carpet/CarpetSettings.java @@ -315,6 +315,9 @@ public class CarpetSettings ) public static boolean hopperCounters = false; + @Rule( desc = "Allows Budding Amethyst blocks to be moved by pistons", category = FEATURE ) + public static boolean movableAmethyst = false; + @Rule( desc = "Guardians turn into Elder Guardian when struck by lightning", category = FEATURE ) public static boolean renewableSponges = false; diff --git a/src/main/java/carpet/mixins/BuddingAmethystBlock_getPistonBehaviorMixin.java b/src/main/java/carpet/mixins/BuddingAmethystBlock_getPistonBehaviorMixin.java new file mode 100644 index 00000000..03085c47 --- /dev/null +++ b/src/main/java/carpet/mixins/BuddingAmethystBlock_getPistonBehaviorMixin.java @@ -0,0 +1,18 @@ +package carpet.mixins; + +import carpet.CarpetSettings; +import net.minecraft.block.BlockState; +import net.minecraft.block.BuddingAmethystBlock; +import net.minecraft.block.piston.PistonBehavior; +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; + +@Mixin(BuddingAmethystBlock.class) +public class BuddingAmethystBlock_getPistonBehaviorMixin { + @Inject(at = @At("HEAD"), method = "getPistonBehavior(Lnet/minecraft/block/BlockState;)Lnet/minecraft/block/piston/PistonBehavior;", cancellable = true) + void getPistonBehavior(BlockState state, CallbackInfoReturnable cir) { + if (CarpetSettings.movableAmethyst) cir.setReturnValue(PistonBehavior.NORMAL); + } +} diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 4fdcaafd..f6f49e46 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -89,6 +89,7 @@ "ServerWorld_onePlayerSleepingMixin", "CoralBlockMixin", "CoralFeatureMixin", + "BuddingAmethystBlock_getPistonBehaviorMixin", "FluidBlock_renewableBlackstoneMixin", "FluidBlock_renewableDeepslateMixin", "LavaFluid_renewableDeepslateMixin",