From 19c6f4f2ba0a0e6899c79f0c772809d528fc0dd7 Mon Sep 17 00:00:00 2001 From: Julian Krings Date: Mon, 19 Aug 2024 20:43:30 +0200 Subject: [PATCH] example --- .../com/volmit/iris/engine/object/IrisBiome.java | 11 +++++------ .../iris/engine/object/IrisBiomeReplacement.java | 13 +++++++++++++ .../volmit/iris/core/nms/v1_20_R3/NMSBinding.java | 3 +++ 3 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 core/src/main/java/com/volmit/iris/engine/object/IrisBiomeReplacement.java diff --git a/core/src/main/java/com/volmit/iris/engine/object/IrisBiome.java b/core/src/main/java/com/volmit/iris/engine/object/IrisBiome.java index 3f4958052..e745c9de7 100644 --- a/core/src/main/java/com/volmit/iris/engine/object/IrisBiome.java +++ b/core/src/main/java/com/volmit/iris/engine/object/IrisBiome.java @@ -197,12 +197,11 @@ public class IrisBiome extends IrisRegistrant implements IRare { public KList getCustomDerivitives() { if (customDerivitives == null || customDerivitives.isEmpty()) { - String biomeID = getLoadKey().replaceAll("\\s", "").replaceAll("[^a-z0-9/._-]", ""); - setCustomDerivitives(new KList<>(new IrisBiomeCustom().setId(biomeID))); - String dimID = getLoader().getEngine().getDimension().getLoadKey(); - String x = getLoader().getEngine().getDimension().getLoadKey() + ":" + biomeID; - INMS.get().registerReplacement(dimID, x, this.getDerivative()); - } + var key = getLoadKey(); + if (key == null) key = getVanillaDerivative().getKey().getKey(); + String biomeID = key.replaceAll("\\s", "").replaceAll("[^a-z0-9/._-]", ""); + setCustomDerivitives(new KList<>(new IrisBiomeReplacement().setId(biomeID))); + } return customDerivitives; } diff --git a/core/src/main/java/com/volmit/iris/engine/object/IrisBiomeReplacement.java b/core/src/main/java/com/volmit/iris/engine/object/IrisBiomeReplacement.java new file mode 100644 index 000000000..b67dc3f7a --- /dev/null +++ b/core/src/main/java/com/volmit/iris/engine/object/IrisBiomeReplacement.java @@ -0,0 +1,13 @@ +package com.volmit.iris.engine.object; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.bukkit.block.Biome; + +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = true) +public class IrisBiomeReplacement extends IrisBiomeCustom { + private Biome biome; +} diff --git a/nms/v1_20_R3/src/main/java/com/volmit/iris/core/nms/v1_20_R3/NMSBinding.java b/nms/v1_20_R3/src/main/java/com/volmit/iris/core/nms/v1_20_R3/NMSBinding.java index 31881880e..92b79a698 100644 --- a/nms/v1_20_R3/src/main/java/com/volmit/iris/core/nms/v1_20_R3/NMSBinding.java +++ b/nms/v1_20_R3/src/main/java/com/volmit/iris/core/nms/v1_20_R3/NMSBinding.java @@ -42,6 +42,7 @@ import com.volmit.iris.core.nms.IHeadless; import com.volmit.iris.core.nms.container.IPackRepository; import com.volmit.iris.core.nms.v1_20_R3.mca.ChunkSerializer; import com.volmit.iris.engine.object.IrisBiomeCustom; +import com.volmit.iris.engine.object.IrisBiomeReplacement; import com.volmit.iris.engine.object.IrisDimension; import com.volmit.iris.util.format.C; import com.volmit.iris.util.io.IO; @@ -670,6 +671,8 @@ public class NMSBinding implements INMSBinding { @Override public boolean registerBiome(String dimensionId, IrisBiomeCustom biome, boolean replace) { + if (biome instanceof IrisBiomeReplacement replacement) + return registerReplacement(dimensionId, replacement.getId(), replacement.getBiome()); var biomeBase = decode(net.minecraft.world.level.biome.Biome.CODEC, biome.generateJson()).map(Holder::value).orElse(null); if (biomeBase == null) return false; return register(Registries.BIOME, new ResourceLocation(dimensionId, biome.getId()), biomeBase, replace);