mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-04 00:46:08 +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);
|
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);
|
boolean dumpRegistry(File... folders);
|
||||||
|
|
||||||
void injectBukkit();
|
void injectBukkit();
|
||||||
|
@ -22,6 +22,7 @@ import com.volmit.iris.Iris;
|
|||||||
import com.volmit.iris.core.gui.components.RenderType;
|
import com.volmit.iris.core.gui.components.RenderType;
|
||||||
import com.volmit.iris.core.loader.IrisData;
|
import com.volmit.iris.core.loader.IrisData;
|
||||||
import com.volmit.iris.core.loader.IrisRegistrant;
|
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.IrisComplex;
|
||||||
import com.volmit.iris.engine.data.cache.AtomicCache;
|
import com.volmit.iris.engine.data.cache.AtomicCache;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
@ -195,8 +196,13 @@ 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()) {
|
||||||
setCustomDerivitives(new KList<>(new IrisBiomeCustom().setId(getLoadKey().replaceAll("\\s", "").replaceAll("[^a-z0-9/._-]", ""))));
|
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;
|
return customDerivitives;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,6 +64,7 @@ import net.minecraft.world.RandomSequences;
|
|||||||
import net.minecraft.world.level.ChunkPos;
|
import net.minecraft.world.level.ChunkPos;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.LevelHeightAccessor;
|
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.ProtoChunk;
|
||||||
import net.minecraft.world.level.chunk.UpgradeData;
|
import net.minecraft.world.level.chunk.UpgradeData;
|
||||||
import net.minecraft.world.level.dimension.DimensionType;
|
import net.minecraft.world.level.dimension.DimensionType;
|
||||||
@ -493,6 +494,7 @@ public class NMSBinding implements INMSBinding {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int countCustomBiomes() {
|
public int countCustomBiomes() {
|
||||||
|
// todo inaccurate shit
|
||||||
AtomicInteger a = new AtomicInteger(0);
|
AtomicInteger a = new AtomicInteger(0);
|
||||||
|
|
||||||
getCustomBiomeRegistry().keySet().forEach((i) -> {
|
getCustomBiomeRegistry().keySet().forEach((i) -> {
|
||||||
@ -673,6 +675,27 @@ public class NMSBinding implements INMSBinding {
|
|||||||
return register(Registries.BIOME, new ResourceLocation(dimensionId, biome.getId()), biomeBase, replace);
|
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) {
|
private <T> Optional<T> decode(Codec<T> codec, String json) {
|
||||||
return codec.decode(JsonOps.INSTANCE, GsonHelper.parse(json)).get().left().map(Pair::getFirst);
|
return codec.decode(JsonOps.INSTANCE, GsonHelper.parse(json)).get().left().map(Pair::getFirst);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user