mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-18 10:12:53 +00:00
Biomes support multi-custom instances
This commit is contained in:
parent
fd8077a5cd
commit
c167e881fb
@ -2,6 +2,7 @@ package com.volmit.iris.generator.actuator;
|
||||
|
||||
import com.volmit.iris.nms.INMS;
|
||||
import com.volmit.iris.object.IrisBiome;
|
||||
import com.volmit.iris.object.IrisBiomeCustom;
|
||||
import com.volmit.iris.scaffold.engine.Engine;
|
||||
import com.volmit.iris.scaffold.engine.EngineAssignedActuator;
|
||||
import com.volmit.iris.scaffold.hunk.Hunk;
|
||||
@ -13,8 +14,11 @@ import com.volmit.iris.util.RNG;
|
||||
import org.bukkit.block.Biome;
|
||||
|
||||
public class IrisBiomeActuator extends EngineAssignedActuator<Biome> {
|
||||
private final RNG rng;
|
||||
|
||||
public IrisBiomeActuator(Engine engine) {
|
||||
super(engine, "Biome");
|
||||
rng = new RNG(engine.getWorld().getSeed() + 243995);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -35,7 +39,8 @@ public class IrisBiomeActuator extends EngineAssignedActuator<Biome> {
|
||||
{
|
||||
try
|
||||
{
|
||||
Object biomeBase = INMS.get().getCustomBiomeBaseFor(getDimension().getLoadKey()+":"+ib.getCustom().getId());
|
||||
IrisBiomeCustom custom = ib.getCustomBiome(rng, x, 0, z);
|
||||
Object biomeBase = INMS.get().getCustomBiomeBaseFor(getDimension().getLoadKey()+":"+custom.getId());
|
||||
((BiomeGridHunkView)h).forceBiomeBaseInto(x, 0, z, biomeBase);
|
||||
|
||||
for (int i = 0; i < h.getHeight(); i++) {
|
||||
@ -46,7 +51,7 @@ public class IrisBiomeActuator extends EngineAssignedActuator<Biome> {
|
||||
catch(Throwable e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
Biome v = ib.getSkyBiome(RNG.r, x, 0, z);
|
||||
Biome v = ib.getSkyBiome(rng, x, 0, z);
|
||||
for (int i = 0; i < h.getHeight(); i++) {
|
||||
h.set(xxf, i, zzf, v);
|
||||
}
|
||||
@ -55,7 +60,7 @@ public class IrisBiomeActuator extends EngineAssignedActuator<Biome> {
|
||||
|
||||
else
|
||||
{
|
||||
Biome v = ib.getSkyBiome(RNG.r, x, 0, z);
|
||||
Biome v = ib.getSkyBiome(rng, x, 0, z);
|
||||
for (int i = 0; i < h.getHeight(); i++) {
|
||||
h.set(xxf, i, zzf, v);
|
||||
}
|
||||
|
@ -32,8 +32,9 @@ public class IrisBiome extends IrisRegistrant implements IRare {
|
||||
private String name = "A Biome";
|
||||
|
||||
@DontObfuscate
|
||||
@ArrayType(min = 1, type = IrisBiomeCustom.class)
|
||||
@Desc("If the biome type custom is defined, specify this")
|
||||
private IrisBiomeCustom custom;
|
||||
private KList<IrisBiomeCustom> customDerivitives;
|
||||
|
||||
@DontObfuscate
|
||||
@Desc("Entity spawns to override or add to this biome. Anytime an entity spawns, it has a chance to be replaced as one of these overrides.")
|
||||
@ -201,7 +202,7 @@ public class IrisBiome extends IrisRegistrant implements IRare {
|
||||
|
||||
public boolean isCustom()
|
||||
{
|
||||
return getCustom() != null;
|
||||
return getCustomDerivitives() != null && getCustomDerivitives().isNotEmpty();
|
||||
}
|
||||
|
||||
public double getGenLinkMax(String loadKey) {
|
||||
@ -535,6 +536,14 @@ public class IrisBiome extends IrisRegistrant implements IRare {
|
||||
return biomeSkyScatter.get(getBiomeGenerator(rng).fit(0, biomeSkyScatter.size() - 1, x, y, z));
|
||||
}
|
||||
|
||||
public IrisBiomeCustom getCustomBiome(RNG rng, double x, double y, double z) {
|
||||
if (customDerivitives.size() == 1) {
|
||||
return customDerivitives.get(0);
|
||||
}
|
||||
|
||||
return customDerivitives.get(getBiomeGenerator(rng).fit(0, customDerivitives.size() - 1, x, y, z));
|
||||
}
|
||||
|
||||
public KList<IrisBiome> getRealChildren(DataProvider g) {
|
||||
return realChildren.aquire(() ->
|
||||
{
|
||||
@ -564,6 +573,7 @@ public class IrisBiome extends IrisRegistrant implements IRare {
|
||||
return new KList<String>(m);
|
||||
}
|
||||
|
||||
//TODO: Test
|
||||
public Biome getGroundBiome(RNG rng, double x, double y, double z) {
|
||||
if (biomeScatter.isEmpty()) {
|
||||
return getDerivative();
|
||||
|
@ -65,6 +65,8 @@ public class IrisBlockDrops {
|
||||
return false;
|
||||
}
|
||||
|
||||
// TODO: WARNING USES RNG.R
|
||||
@Deprecated
|
||||
public void fillDrops(boolean debug, KList<ItemStack> d) {
|
||||
for (IrisLoot i : getDrops()) {
|
||||
if (RNG.r.i(1, i.getRarity()) == i.getRarity()) {
|
||||
|
@ -468,7 +468,10 @@ public class IrisDimension extends IrisRegistrant {
|
||||
if(i.isCustom())
|
||||
{
|
||||
write = true;
|
||||
File output = new File(datapacks, "iris/data/" + getLoadKey() + "/worldgen/biome/" + i.getCustom().getId() + ".json");
|
||||
|
||||
for(IrisBiomeCustom j : i.getCustomDerivitives())
|
||||
{
|
||||
File output = new File(datapacks, "iris/data/" + getLoadKey() + "/worldgen/biome/" + j.getId() + ".json");
|
||||
|
||||
if(!output.exists())
|
||||
{
|
||||
@ -478,12 +481,13 @@ public class IrisDimension extends IrisRegistrant {
|
||||
Iris.verbose(" Installing Data Pack Biome: " + output.getPath());
|
||||
output.getParentFile().mkdirs();
|
||||
try {
|
||||
IO.writeAll(output, i.getCustom().generateJson());
|
||||
IO.writeAll(output, j.generateJson());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(write)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user