diff --git a/src/main/java/carpet/mixins/ChunkMixin.java b/src/main/java/carpet/mixins/ChunkMixin.java index 92eb8dd7..b1a9b128 100644 --- a/src/main/java/carpet/mixins/ChunkMixin.java +++ b/src/main/java/carpet/mixins/ChunkMixin.java @@ -11,6 +11,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(Chunk.class) public abstract class ChunkMixin { + // failed to mixin into interface. need to mixin in two places that uses it @Inject(method = "markBlockForPostProcessing(Lnet/minecraft/util/math/BlockPos;)V", at =@At("HEAD"), cancellable = true) private void squashWarnings(BlockPos blockPos_1, CallbackInfo ci) diff --git a/src/main/java/carpet/mixins/ChunkRegion_scarpetPlopMixin.java b/src/main/java/carpet/mixins/ChunkRegion_scarpetPlopMixin.java new file mode 100644 index 00000000..fb06e695 --- /dev/null +++ b/src/main/java/carpet/mixins/ChunkRegion_scarpetPlopMixin.java @@ -0,0 +1,19 @@ +package carpet.mixins; + +import carpet.CarpetSettings; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ChunkRegion; +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.CallbackInfo; + +@Mixin(ChunkRegion.class) +public class ChunkRegion_scarpetPlopMixin +{ + @Inject(method = "markBlockForPostProcessing", at = @At("HEAD")) + private void markOrNot(BlockPos blockPos, CallbackInfo ci) + { + if (CarpetSettings.skipGenerationChecks) ci.cancel(); + } +} diff --git a/src/main/java/carpet/mixins/StructurePiece_scarpetPlopMixin.java b/src/main/java/carpet/mixins/StructurePiece_scarpetPlopMixin.java new file mode 100644 index 00000000..94b2cfc1 --- /dev/null +++ b/src/main/java/carpet/mixins/StructurePiece_scarpetPlopMixin.java @@ -0,0 +1,22 @@ +package carpet.mixins; + +import carpet.CarpetSettings; +import net.minecraft.structure.StructurePiece; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.chunk.Chunk; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(StructurePiece.class) +public class StructurePiece_scarpetPlopMixin +{ + @Redirect(method = "addBlock", at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/chunk/Chunk;markBlockForPostProcessing(Lnet/minecraft/util/math/BlockPos;)V" + )) + private void markOrNot(Chunk chunk, BlockPos pos) + { + if (!CarpetSettings.skipGenerationChecks) chunk.markBlockForPostProcessing(pos); + } +} diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 46ccfed2..c1356941 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -64,6 +64,8 @@ "CoralFeatureMixin", "StructureFeatureMixin", "World_scarpetPlopMixin", + "ChunkRegion_scarpetPlopMixin", + "StructurePiece_scarpetPlopMixin", "ServerPlayNetworkHandler_scarpetEventsMixin", "ServerPlayerInteractionManager_scarpetEventsMixin",