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