diff --git a/src/main/java/carpet/mixins/BlockStateArgument_fillUpdatesMixin.java b/src/main/java/carpet/mixins/BlockStateArgument_fillUpdatesMixin.java new file mode 100644 index 00000000..0e432022 --- /dev/null +++ b/src/main/java/carpet/mixins/BlockStateArgument_fillUpdatesMixin.java @@ -0,0 +1,30 @@ +package carpet.mixins; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import carpet.CarpetSettings; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.command.argument.BlockStateArgument; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.WorldAccess; + +@Mixin(BlockStateArgument.class) +public class BlockStateArgument_fillUpdatesMixin +{ + @Redirect(method = "setBlockState", at = @At( + value = "INVOKE", + target = "Lnet/minecraft/block/Block;postProcessState(Lnet/minecraft/block/BlockState;Lnet/minecraft/world/WorldAccess;Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/block/BlockState;" + )) + private BlockState postProcessStateProxy(BlockState state, WorldAccess serverWorld, BlockPos blockPos) + { + if (CarpetSettings.impendingFillSkipUpdates) + { + return state; + } + + return Block.postProcessState(state, serverWorld, blockPos); + } +} diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index d818e4e2..eeddebc8 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -15,6 +15,7 @@ "CloneCommandMixin", "SetBlockCommandMixin", "ForceLoadCommand_forceLoadLimitMixin", + "BlockStateArgument_fillUpdatesMixin", "World_fillUpdatesMixin", "WorldChunk_fillUpdatesMixin", "StructureBlockBlockEntity_fillUpdatesMixin",