This commit is contained in:
Daniel Mills 2020-04-07 00:52:09 -04:00
parent a82ba6503f
commit 5d7126f772
4 changed files with 75 additions and 3 deletions

View File

@ -16,6 +16,7 @@ import org.bukkit.generator.ChunkGenerator;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import ninja.bytecode.iris.util.IO; import ninja.bytecode.iris.util.IO;
import ninja.bytecode.iris.util.KMap;
public class Iris extends JavaPlugin public class Iris extends JavaPlugin
{ {

View File

@ -0,0 +1,27 @@
package ninja.bytecode.iris;
import org.bukkit.World;
import ninja.bytecode.iris.util.BiomeResult;
import ninja.bytecode.iris.util.KMap;
public interface IrisContext
{
static KMap<World, IrisContext> contexts = new KMap<>();
public static void pushContext(IrisContext context)
{
contexts.put(context.getWorld(), context);
}
public static IrisContext of(World world)
{
return contexts.get(world);
}
public BiomeResult getBiome(int x, int z);
public IrisMetrics getMetrics();
public World getWorld();
}

View File

@ -18,11 +18,12 @@ import ninja.bytecode.iris.object.IrisDimension;
import ninja.bytecode.iris.object.IrisRegion; import ninja.bytecode.iris.object.IrisRegion;
import ninja.bytecode.iris.util.BiomeResult; import ninja.bytecode.iris.util.BiomeResult;
import ninja.bytecode.iris.util.CNG; import ninja.bytecode.iris.util.CNG;
import ninja.bytecode.iris.util.ChronoLatch;
import ninja.bytecode.iris.util.IrisInterpolation; import ninja.bytecode.iris.util.IrisInterpolation;
import ninja.bytecode.iris.util.KList; import ninja.bytecode.iris.util.KList;
import ninja.bytecode.iris.util.RNG; import ninja.bytecode.iris.util.RNG;
public class IrisGenerator extends ChunkGenerator public class IrisGenerator extends ChunkGenerator implements IrisContext
{ {
// TODO REMOVE OR FIND A BETTER PLACE // TODO REMOVE OR FIND A BETTER PLACE
private BlockData STONE = Material.STONE.createBlockData(); private BlockData STONE = Material.STONE.createBlockData();
@ -30,12 +31,16 @@ public class IrisGenerator extends ChunkGenerator
private String dimensionName; private String dimensionName;
private GenLayerBiome glBiome; private GenLayerBiome glBiome;
private CNG terrainNoise; private CNG terrainNoise;
private IrisMetrics metrics;
private World world;
private ChronoLatch pushLatch;
private boolean initialized = false; private boolean initialized = false;
public IrisGenerator(String dimensionName) public IrisGenerator(String dimensionName)
{ {
this.dimensionName = dimensionName; this.dimensionName = dimensionName;
pushLatch = new ChronoLatch(3000);
} }
public IrisDimension getDimension() public IrisDimension getDimension()
@ -50,6 +55,8 @@ public class IrisGenerator extends ChunkGenerator
return; return;
} }
this.world = world;
metrics = new IrisMetrics(1024);
initialized = true; initialized = true;
glBiome = new GenLayerBiome(this, rng.nextParallelRNG(1)); glBiome = new GenLayerBiome(this, rng.nextParallelRNG(1));
terrainNoise = CNG.signature(rng.nextParallelRNG(2)); terrainNoise = CNG.signature(rng.nextParallelRNG(2));
@ -64,7 +71,12 @@ public class IrisGenerator extends ChunkGenerator
@Override @Override
public ChunkData generateChunkData(World world, Random no, int x, int z, BiomeGrid biomeGrid) public ChunkData generateChunkData(World world, Random no, int x, int z, BiomeGrid biomeGrid)
{ {
Iris.hotloader.check(); if(pushLatch.flip())
{
Iris.hotloader.check();
IrisContext.pushContext(this);
}
int i, j, k, height, depth; int i, j, k, height, depth;
double wx, wz, rx, rz, noise, ox, oz; double wx, wz, rx, rz, noise, ox, oz;
boolean underwater; boolean underwater;
@ -79,7 +91,6 @@ public class IrisGenerator extends ChunkGenerator
for(i = 0; i < 16; i++) for(i = 0; i < 16; i++)
{ {
for(j = 0; j < 16; j++) for(j = 0; j < 16; j++)
{ {
rx = (x * 16) + i; rx = (x * 16) + i;
@ -163,9 +174,27 @@ public class IrisGenerator extends ChunkGenerator
return super.getFixedSpawnLocation(world, random); return super.getFixedSpawnLocation(world, random);
} }
@Override
public BiomeResult getBiome(int x, int z)
{
return null;
}
@Override @Override
public boolean isParallelCapable() public boolean isParallelCapable()
{ {
return true; return true;
} }
@Override
public IrisMetrics getMetrics()
{
return metrics;
}
@Override
public World getWorld()
{
return world;
}
} }

View File

@ -0,0 +1,15 @@
package ninja.bytecode.iris;
import lombok.Data;
import ninja.bytecode.iris.util.RollingSequence;
@Data
public class IrisMetrics
{
private final RollingSequence total;
public IrisMetrics(int memory)
{
total = new RollingSequence(memory);
}
}