mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-04 00:46:08 +00:00
f
This commit is contained in:
parent
d72518207e
commit
05f501a66a
@ -2,12 +2,14 @@ package ninja.bytecode.iris;
|
|||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import org.bukkit.Chunk;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
import org.bukkit.block.data.Bisected;
|
import org.bukkit.block.data.Bisected;
|
||||||
import org.bukkit.block.data.Bisected.Half;
|
import org.bukkit.block.data.Bisected.Half;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
import ninja.bytecode.iris.gen.GenLayerBase;
|
import ninja.bytecode.iris.gen.GenLayerBase;
|
||||||
import ninja.bytecode.iris.gen.GenLayerBiome;
|
import ninja.bytecode.iris.gen.GenLayerBiome;
|
||||||
@ -15,7 +17,6 @@ import ninja.bytecode.iris.gen.GenLayerDeepOcean;
|
|||||||
import ninja.bytecode.iris.gen.IGenLayer;
|
import ninja.bytecode.iris.gen.IGenLayer;
|
||||||
import ninja.bytecode.iris.util.RealBiome;
|
import ninja.bytecode.iris.util.RealBiome;
|
||||||
import ninja.bytecode.shuriken.collections.GList;
|
import ninja.bytecode.shuriken.collections.GList;
|
||||||
import ninja.bytecode.shuriken.math.M;
|
|
||||||
import ninja.bytecode.shuriken.math.RNG;
|
import ninja.bytecode.shuriken.math.RNG;
|
||||||
|
|
||||||
public class IrisGenerator extends ParallelChunkGenerator
|
public class IrisGenerator extends ParallelChunkGenerator
|
||||||
@ -28,10 +29,22 @@ public class IrisGenerator extends ParallelChunkGenerator
|
|||||||
private GenLayerBiome glBiome;
|
private GenLayerBiome glBiome;
|
||||||
private GenLayerBase glBase;
|
private GenLayerBase glBase;
|
||||||
private int waterLevel = 127;
|
private int waterLevel = 127;
|
||||||
|
private GList<Vector> updates = new GList<>();
|
||||||
|
|
||||||
|
public void doUpdates(Chunk c)
|
||||||
|
{
|
||||||
|
for(Vector i : updates)
|
||||||
|
{
|
||||||
|
c.getBlock(i.getBlockX(), i.getBlockY(), i.getBlockZ()).getState().update(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
updates.clear();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInit(World world, Random random)
|
public void onInit(World world, Random random)
|
||||||
{
|
{
|
||||||
|
updates = new GList<>();
|
||||||
genLayers = new GList<>();
|
genLayers = new GList<>();
|
||||||
RNG rng = new RNG(world.getSeed());
|
RNG rng = new RNG(world.getSeed());
|
||||||
genLayers.add(glBiome = new GenLayerBiome(world, random, rng.nextRNG()));
|
genLayers.add(glBiome = new GenLayerBiome(world, random, rng.nextRNG()));
|
||||||
@ -59,9 +72,8 @@ public class IrisGenerator extends ParallelChunkGenerator
|
|||||||
public Biome genColumn(int wx, int wz, int x, int z)
|
public Biome genColumn(int wx, int wz, int x, int z)
|
||||||
{
|
{
|
||||||
int height = getHeight(wx, wz);
|
int height = getHeight(wx, wz);
|
||||||
double temp = glBiome.getTemperature(wx, wz);
|
double temp = glBiome.getTemperature(wx, wz, height);
|
||||||
double humidity = glBiome.getHumidity(wx, wz);
|
RealBiome b = glBiome.getBiome(wx, wz, temp, height);
|
||||||
RealBiome b = glBiome.getBiome(wx, wz);
|
|
||||||
boolean underwater = height < waterLevel;
|
boolean underwater = height < waterLevel;
|
||||||
|
|
||||||
// Change biome to ocean / deep ocean if underwater height
|
// Change biome to ocean / deep ocean if underwater height
|
||||||
@ -141,38 +153,9 @@ public class IrisGenerator extends ParallelChunkGenerator
|
|||||||
|
|
||||||
// Surface blocks
|
// Surface blocks
|
||||||
else if(i == height - 1)
|
else if(i == height - 1)
|
||||||
{
|
|
||||||
if(temp > 0.6 && b.getBiome().equals(Biome.BEACH))
|
|
||||||
{
|
|
||||||
if(humidity > 0.6)
|
|
||||||
{
|
|
||||||
mb = Material.YELLOW_CONCRETE_POWDER.createBlockData();
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mb = Material.BLACK_CONCRETE_POWDER.createBlockData();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
else if(temp < 0.4 && b.getBiome().equals(Biome.BEACH))
|
|
||||||
{
|
|
||||||
if(humidity > 0.6)
|
|
||||||
{
|
|
||||||
mb = Material.WHITE_CONCRETE_POWDER.createBlockData();
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mb = Material.LIGHT_GRAY_CONCRETE_POWDER.createBlockData();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
mb = b.surface(wx, i, wz, glBase);
|
mb = b.surface(wx, i, wz, glBase);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Dirt Blocks
|
// Dirt Blocks
|
||||||
else if(!underwater && i > height - glBase.scatterInt(wx, i, wz, 12))
|
else if(!underwater && i > height - glBase.scatterInt(wx, i, wz, 12))
|
||||||
@ -223,6 +206,11 @@ public class IrisGenerator extends ParallelChunkGenerator
|
|||||||
return b.getBiome();
|
return b.getBiome();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void scheduleUpdate(int x, int y, int z)
|
||||||
|
{
|
||||||
|
updates.add(new Vector(x, y, z));
|
||||||
|
}
|
||||||
|
|
||||||
public int pick(int max, double noise)
|
public int pick(int max, double noise)
|
||||||
{
|
{
|
||||||
return (int) (noise * max);
|
return (int) (noise * max);
|
||||||
|
@ -15,6 +15,7 @@ public class GenLayerBiome extends GenLayer
|
|||||||
private CNG humidity;
|
private CNG humidity;
|
||||||
private CNG hfracture;
|
private CNG hfracture;
|
||||||
private CNG alt;
|
private CNG alt;
|
||||||
|
private CNG bfracture;
|
||||||
private CNG height;
|
private CNG height;
|
||||||
private CNG superheight;
|
private CNG superheight;
|
||||||
|
|
||||||
@ -30,6 +31,8 @@ public class GenLayerBiome extends GenLayer
|
|||||||
humidity = new CNG(rng.nextRNG(), 1, 2)
|
humidity = new CNG(rng.nextRNG(), 1, 2)
|
||||||
.scale(0.0024)
|
.scale(0.0024)
|
||||||
.fractureWith(new CNG(rng.nextRNG(), 1, 1).scale(0.06), 32);
|
.fractureWith(new CNG(rng.nextRNG(), 1, 1).scale(0.06), 32);
|
||||||
|
bfracture = new CNG(rng.nextRNG(), 1, 1)
|
||||||
|
.scale(0.524);
|
||||||
superheight = new CNG(rng.nextRNG(), 1, 8)
|
superheight = new CNG(rng.nextRNG(), 1, 8)
|
||||||
.scale(0.0004)
|
.scale(0.0004)
|
||||||
.fractureWith(new CNG(rng.nextRNG(), 1, 1).scale(0.021), 250);
|
.fractureWith(new CNG(rng.nextRNG(), 1, 1).scale(0.021), 250);
|
||||||
@ -51,6 +54,11 @@ public class GenLayerBiome extends GenLayer
|
|||||||
return RealBiome.match(getTemperature(x, z) * 2, getHumidity(x, z), getHeight(x, z), getAlt(x, z));
|
return RealBiome.match(getTemperature(x, z) * 2, getHumidity(x, z), getHeight(x, z), getAlt(x, z));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RealBiome getBiome(double x, double z, double temp, double height)
|
||||||
|
{
|
||||||
|
return RealBiome.match(temp * 2, getHumidity(x, z), height, getAlt(x, z));
|
||||||
|
}
|
||||||
|
|
||||||
private double getAlt(double x, double z)
|
private double getAlt(double x, double z)
|
||||||
{
|
{
|
||||||
return alt.noise(x, z);
|
return alt.noise(x, z);
|
||||||
@ -58,7 +66,17 @@ public class GenLayerBiome extends GenLayer
|
|||||||
|
|
||||||
public double getTemperature(double x, double z)
|
public double getTemperature(double x, double z)
|
||||||
{
|
{
|
||||||
return M.clip(temperature.noise(x, z) - (getHeight(x, z) * 0.19), 0D, 1D);
|
return getTemperature(x, z, getHeight(x, z));
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getTemperature(double x, double z, double height)
|
||||||
|
{
|
||||||
|
return M.clip(temperature.noise(x, z) - (height * 0.19), 0D, 1D);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getBFracture(double x, double z)
|
||||||
|
{
|
||||||
|
return bfracture.noise(x, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getHumidity(double x, double z)
|
public double getHumidity(double x, double z)
|
||||||
|
@ -103,10 +103,13 @@ public class RealBiome
|
|||||||
.surface(Material.SAND.createBlockData(), Material.CLAY.createBlockData(), Material.GRAVEL.createBlockData()),
|
.surface(Material.SAND.createBlockData(), Material.CLAY.createBlockData(), Material.GRAVEL.createBlockData()),
|
||||||
new RealBiome(Biome.DEEP_WARM_OCEAN.ordinal(), 0.6, h, -1)
|
new RealBiome(Biome.DEEP_WARM_OCEAN.ordinal(), 0.6, h, -1)
|
||||||
.water()
|
.water()
|
||||||
.surface(Material.BRAIN_CORAL_BLOCK.createBlockData(), Material.FIRE_CORAL_BLOCK.createBlockData(), Material.HORN_CORAL_BLOCK.createBlockData(), Material.MAGMA_BLOCK.createBlockData(), Material.TUBE_CORAL_BLOCK.createBlockData(), Material.BRAIN_CORAL_BLOCK.createBlockData(), Material.BLUE_CONCRETE_POWDER.createBlockData(), Material.CYAN_CONCRETE_POWDER.createBlockData(), Material.LIGHT_BLUE_CONCRETE_POWDER.createBlockData(), Material.SAND.createBlockData())
|
.surface(Material.BRAIN_CORAL_BLOCK.createBlockData(), Material.FIRE_CORAL_BLOCK.createBlockData(), Material.HORN_CORAL_BLOCK.createBlockData(), Material.TUBE_CORAL_BLOCK.createBlockData(), Material.BRAIN_CORAL_BLOCK.createBlockData(), Material.BLUE_CONCRETE_POWDER.createBlockData(), Material.CYAN_CONCRETE_POWDER.createBlockData(), Material.LIGHT_BLUE_CONCRETE_POWDER.createBlockData(), Material.SAND.createBlockData())
|
||||||
.surface(Material.SAND.createBlockData())
|
|
||||||
.surface(Material.SEAGRASS.createBlockData(), 0.39)
|
.surface(Material.SEAGRASS.createBlockData(), 0.39)
|
||||||
.surface(Material.TALL_SEAGRASS.createBlockData(), 0.52)
|
.surface(Material.TALL_SEAGRASS.createBlockData(), 0.52)
|
||||||
|
.surface(Material.MAGMA_BLOCK.createBlockData(), 0.003)
|
||||||
|
.surface(Material.SEA_LANTERN.createBlockData(), 0.003)
|
||||||
|
.surface(Material.SOUL_SAND.createBlockData(), 0.003)
|
||||||
|
.surface(Material.BRAIN_CORAL.createBlockData(), 0.09)
|
||||||
.surface(Material.BRAIN_CORAL.createBlockData(), 0.09)
|
.surface(Material.BRAIN_CORAL.createBlockData(), 0.09)
|
||||||
.surface(Material.BUBBLE_CORAL.createBlockData(), 0.09)
|
.surface(Material.BUBBLE_CORAL.createBlockData(), 0.09)
|
||||||
.surface(Material.FIRE_CORAL.createBlockData(), 0.09)
|
.surface(Material.FIRE_CORAL.createBlockData(), 0.09)
|
||||||
@ -116,7 +119,6 @@ public class RealBiome
|
|||||||
.surface(Material.BUBBLE_CORAL_FAN.createBlockData(), 0.05)
|
.surface(Material.BUBBLE_CORAL_FAN.createBlockData(), 0.05)
|
||||||
.surface(Material.FIRE_CORAL_FAN.createBlockData(), 0.05)
|
.surface(Material.FIRE_CORAL_FAN.createBlockData(), 0.05)
|
||||||
.surface(Material.HORN_CORAL_FAN.createBlockData(), 0.05)
|
.surface(Material.HORN_CORAL_FAN.createBlockData(), 0.05)
|
||||||
.surface(Material.SEA_LANTERN.createBlockData(), 0.006)
|
|
||||||
.surface(Material.TUBE_CORAL_FAN.createBlockData(), 0.05),
|
.surface(Material.TUBE_CORAL_FAN.createBlockData(), 0.05),
|
||||||
new RealBiome(Biome.DEEP_LUKEWARM_OCEAN.ordinal(), 0.7, h, -1)
|
new RealBiome(Biome.DEEP_LUKEWARM_OCEAN.ordinal(), 0.7, h, -1)
|
||||||
.water()
|
.water()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user