mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-03 08:26:11 +00:00
weeee
This commit is contained in:
parent
3f66634e5f
commit
8a753b42f8
@ -127,6 +127,10 @@ public interface INMSBinding {
|
||||
|
||||
boolean registerBiome(String dimensionId, IrisBiomeCustom biome, boolean replace);
|
||||
|
||||
default boolean registerReplacement(String dimensionId, String key, Biome biome) {
|
||||
throw new IllegalStateException("Unsupported registerReplacement");
|
||||
}
|
||||
|
||||
boolean dumpRegistry(File... folders);
|
||||
|
||||
void injectBukkit();
|
||||
|
@ -22,6 +22,7 @@ import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.core.gui.components.RenderType;
|
||||
import com.volmit.iris.core.loader.IrisData;
|
||||
import com.volmit.iris.core.loader.IrisRegistrant;
|
||||
import com.volmit.iris.core.nms.INMS;
|
||||
import com.volmit.iris.engine.IrisComplex;
|
||||
import com.volmit.iris.engine.data.cache.AtomicCache;
|
||||
import com.volmit.iris.engine.framework.Engine;
|
||||
@ -195,8 +196,13 @@ public class IrisBiome extends IrisRegistrant implements IRare {
|
||||
}
|
||||
|
||||
public KList<IrisBiomeCustom> getCustomDerivitives() {
|
||||
if (customDerivitives == null || customDerivitives.isEmpty())
|
||||
setCustomDerivitives(new KList<>(new IrisBiomeCustom().setId(getLoadKey().replaceAll("\\s", "").replaceAll("[^a-z0-9/._-]", ""))));
|
||||
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());
|
||||
}
|
||||
return customDerivitives;
|
||||
}
|
||||
|
||||
|
@ -64,6 +64,7 @@ import net.minecraft.world.RandomSequences;
|
||||
import net.minecraft.world.level.ChunkPos;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.LevelHeightAccessor;
|
||||
import net.minecraft.world.level.biome.MobSpawnSettings;
|
||||
import net.minecraft.world.level.chunk.ProtoChunk;
|
||||
import net.minecraft.world.level.chunk.UpgradeData;
|
||||
import net.minecraft.world.level.dimension.DimensionType;
|
||||
@ -493,6 +494,7 @@ public class NMSBinding implements INMSBinding {
|
||||
|
||||
@Override
|
||||
public int countCustomBiomes() {
|
||||
// todo inaccurate shit
|
||||
AtomicInteger a = new AtomicInteger(0);
|
||||
|
||||
getCustomBiomeRegistry().keySet().forEach((i) -> {
|
||||
@ -673,6 +675,27 @@ public class NMSBinding implements INMSBinding {
|
||||
return register(Registries.BIOME, new ResourceLocation(dimensionId, biome.getId()), biomeBase, replace);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean registerReplacement(String dimensionId, String key, Biome biome) {
|
||||
var registry = getCustomBiomeRegistry();
|
||||
var location = new ResourceLocation(dimensionId, key);
|
||||
if (registry.containsKey(location)) return false;
|
||||
|
||||
var base = registry.get(new ResourceLocation(biome.getKey().toString()));
|
||||
if (base == null) throw new IllegalArgumentException("Base biome not found: " + biome.getKey());
|
||||
var clone = new net.minecraft.world.level.biome.Biome.BiomeBuilder()
|
||||
.hasPrecipitation(base.climateSettings.hasPrecipitation())
|
||||
.temperature(base.climateSettings.temperature())
|
||||
.temperatureAdjustment(base.climateSettings.temperatureModifier())
|
||||
.downfall(base.climateSettings.downfall())
|
||||
.generationSettings(base.getGenerationSettings())
|
||||
.specialEffects(base.getSpecialEffects())
|
||||
.mobSpawnSettings(MobSpawnSettings.EMPTY)
|
||||
.build();
|
||||
|
||||
return register(Registries.BIOME, location, clone, false);
|
||||
}
|
||||
|
||||
private <T> Optional<T> decode(Codec<T> codec, String json) {
|
||||
return codec.decode(JsonOps.INSTANCE, GsonHelper.parse(json)).get().left().map(Pair::getFirst);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user