This commit is contained in:
Julian Krings
2024-08-19 20:43:30 +02:00
parent 8a753b42f8
commit 19c6f4f2ba
3 changed files with 21 additions and 6 deletions
@@ -197,11 +197,10 @@ public class IrisBiome extends IrisRegistrant implements IRare {
public KList<IrisBiomeCustom> getCustomDerivitives() { public KList<IrisBiomeCustom> getCustomDerivitives() {
if (customDerivitives == null || customDerivitives.isEmpty()) { if (customDerivitives == null || customDerivitives.isEmpty()) {
String biomeID = getLoadKey().replaceAll("\\s", "").replaceAll("[^a-z0-9/._-]", ""); var key = getLoadKey();
setCustomDerivitives(new KList<>(new IrisBiomeCustom().setId(biomeID))); if (key == null) key = getVanillaDerivative().getKey().getKey();
String dimID = getLoader().getEngine().getDimension().getLoadKey(); String biomeID = key.replaceAll("\\s", "").replaceAll("[^a-z0-9/._-]", "");
String x = getLoader().getEngine().getDimension().getLoadKey() + ":" + biomeID; setCustomDerivitives(new KList<>(new IrisBiomeReplacement().setId(biomeID)));
INMS.get().registerReplacement(dimID, x, this.getDerivative());
} }
return customDerivitives; return customDerivitives;
} }
@@ -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;
}
@@ -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.container.IPackRepository;
import com.volmit.iris.core.nms.v1_20_R3.mca.ChunkSerializer; import com.volmit.iris.core.nms.v1_20_R3.mca.ChunkSerializer;
import com.volmit.iris.engine.object.IrisBiomeCustom; 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.engine.object.IrisDimension;
import com.volmit.iris.util.format.C; import com.volmit.iris.util.format.C;
import com.volmit.iris.util.io.IO; import com.volmit.iris.util.io.IO;
@@ -670,6 +671,8 @@ public class NMSBinding implements INMSBinding {
@Override @Override
public boolean registerBiome(String dimensionId, IrisBiomeCustom biome, boolean replace) { 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); var biomeBase = decode(net.minecraft.world.level.biome.Biome.CODEC, biome.generateJson()).map(Holder::value).orElse(null);
if (biomeBase == null) return false; if (biomeBase == null) return false;
return register(Registries.BIOME, new ResourceLocation(dimensionId, biome.getId()), biomeBase, replace); return register(Registries.BIOME, new ResourceLocation(dimensionId, biome.getId()), biomeBase, replace);