From 5e9b391ac4f6c1c042ec118a43ced27babb4867a Mon Sep 17 00:00:00 2001 From: Fx Morin Date: Sun, 3 Apr 2022 07:17:33 -0400 Subject: [PATCH] Sculk sensor range (#1389) * New Rule: `sculkSensorRange` --- src/main/java/carpet/CarpetSettings.java | 9 ++++++ .../mixins/SculkSensorBlock_rangeMixin.java | 30 +++++++++++++++++++ src/main/resources/carpet.mixins.json | 3 +- 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 src/main/java/carpet/mixins/SculkSensorBlock_rangeMixin.java diff --git a/src/main/java/carpet/CarpetSettings.java b/src/main/java/carpet/CarpetSettings.java index ab06b3be..f8803ef5 100644 --- a/src/main/java/carpet/CarpetSettings.java +++ b/src/main/java/carpet/CarpetSettings.java @@ -1102,4 +1102,13 @@ public class CarpetSettings ) public static boolean creativePlayersLoadChunks = true; + @Rule( + desc = "Customizable sculk sensor range", + options = {"8", "16", "32"}, + category = CREATIVE, + strict = false, + validate = PushLimitLimits.class + ) + public static int sculkSensorRange = 8; + } diff --git a/src/main/java/carpet/mixins/SculkSensorBlock_rangeMixin.java b/src/main/java/carpet/mixins/SculkSensorBlock_rangeMixin.java new file mode 100644 index 00000000..3e0a2077 --- /dev/null +++ b/src/main/java/carpet/mixins/SculkSensorBlock_rangeMixin.java @@ -0,0 +1,30 @@ +package carpet.mixins; + +import carpet.CarpetSettings; +import net.minecraft.world.level.block.SculkSensorBlock; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(SculkSensorBlock.class) +public class SculkSensorBlock_rangeMixin { + + @Shadow + @Final + private int listenerRange; + + + @Inject( + method = "getListenerRange()I", + at = @At("HEAD"), + cancellable = true + ) + public void getListenerRange(CallbackInfoReturnable cir) { + if (CarpetSettings.sculkSensorRange != this.listenerRange) { + cir.setReturnValue(CarpetSettings.sculkSensorRange); + } + } +} diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 77201504..c7239d9d 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -194,7 +194,8 @@ "Level_updateSuppressionCrashFixMixin", "MinecraftServer_updateSuppressionCrashFixMixin", "ServerPlayer_updateSuppressionCrashFixMixin", - "ChunkMap_creativePlayersLoadChunksMixin" + "ChunkMap_creativePlayersLoadChunksMixin", + "SculkSensorBlock_rangeMixin" ], "client": [ "Timer_tickSpeedMixin",