From a990be607f2ece06286007de7a7276837316fe94 Mon Sep 17 00:00:00 2001 From: gnembon Date: Sun, 28 Nov 2021 20:23:41 +0100 Subject: [PATCH] allowed plopping of all sorts of structures regardless of required conditions --- .../StructureGeneratorFactory_plopMixin.java | 23 +++++++++++++++++++ src/main/resources/carpet.mixins.json | 1 + 2 files changed, 24 insertions(+) create mode 100644 src/main/java/carpet/mixins/StructureGeneratorFactory_plopMixin.java diff --git a/src/main/java/carpet/mixins/StructureGeneratorFactory_plopMixin.java b/src/main/java/carpet/mixins/StructureGeneratorFactory_plopMixin.java new file mode 100644 index 00000000..b1f55208 --- /dev/null +++ b/src/main/java/carpet/mixins/StructureGeneratorFactory_plopMixin.java @@ -0,0 +1,23 @@ +package carpet.mixins; + +import carpet.CarpetSettings; +import net.minecraft.structure.StructureGeneratorFactory; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import java.util.function.Predicate; + +@Mixin(StructureGeneratorFactory.class) +public interface StructureGeneratorFactory_plopMixin +{ + @SuppressWarnings("UnresolvedMixinReference") + @Redirect(method = "method_39845(Ljava/util/function/Predicate;Ljava/util/Optional;Lnet/minecraft/structure/StructureGeneratorFactory$Context;)Ljava/util/Optional;", at = @At( + value = "INVOKE", + target = "java/util/function/Predicate.test(Ljava/lang/Object;)Z" + )) + private static boolean checkMate(Predicate predicate, Object o) + { + return CarpetSettings.skipGenerationChecks.get() || predicate.test(o); + } +} diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 072fb832..8c7bd0e5 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -102,6 +102,7 @@ "ChunkRegion_scarpetPlopMixin", "StructurePiece_scarpetPlopMixin", "PlacedFeature_scarpetMixin", + "StructureGeneratorFactory_plopMixin", "ServerPlayNetworkHandler_scarpetEventsMixin", "ServerPlayerInteractionManager_scarpetEventsMixin",