diff --git a/common/src/main/java/dev/worldgen/lithostitched/LithostitchedCommon.java b/common/src/main/java/dev/worldgen/lithostitched/LithostitchedCommon.java index b72f195..30cb050 100644 --- a/common/src/main/java/dev/worldgen/lithostitched/LithostitchedCommon.java +++ b/common/src/main/java/dev/worldgen/lithostitched/LithostitchedCommon.java @@ -141,6 +141,7 @@ public static void registerCommonPlacementConditions(BiConsumer> consumer) { diff --git a/common/src/main/java/dev/worldgen/lithostitched/worldgen/placementcondition/ModLoadedPlacementCondition.java b/common/src/main/java/dev/worldgen/lithostitched/worldgen/placementcondition/ModLoadedPlacementCondition.java new file mode 100644 index 0000000..e2df695 --- /dev/null +++ b/common/src/main/java/dev/worldgen/lithostitched/worldgen/placementcondition/ModLoadedPlacementCondition.java @@ -0,0 +1,23 @@ +package dev.worldgen.lithostitched.worldgen.placementcondition; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import dev.worldgen.lithostitched.platform.Services; +import net.minecraft.core.BlockPos; + +public record ModLoadedPlacementCondition(String mod) implements PlacementCondition { + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( + Codec.string(2, 64).fieldOf("mod").forGetter(ModLoadedPlacementCondition::mod) + ).apply(instance, ModLoadedPlacementCondition::new)); + + @Override + public boolean test(Context context, BlockPos pos) { + return Services.PLATFORM.isModLoaded(mod); + } + + @Override + public MapCodec codec() { + return CODEC; + } +}