mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-18 18:23:06 +00:00
74 lines
1.4 KiB
Java
74 lines
1.4 KiB
Java
package ninja.bytecode.iris.object;
|
|
|
|
import org.bukkit.Material;
|
|
import org.bukkit.block.data.BlockData;
|
|
|
|
import lombok.Data;
|
|
import ninja.bytecode.iris.util.CNG;
|
|
import ninja.bytecode.iris.util.KList;
|
|
import ninja.bytecode.iris.util.KMap;
|
|
import ninja.bytecode.iris.util.RNG;
|
|
|
|
@Data
|
|
public class IrisBiomePaletteLayer
|
|
{
|
|
private Dispersion dispersion = Dispersion.WISPY;
|
|
private int minHeight = 1;
|
|
private int maxHeight = 1;
|
|
private double terrainZoom = 5;
|
|
private KList<String> palette = new KList<String>().qadd("GRASS_BLOCK");
|
|
|
|
private transient KMap<Long, CNG> layerGenerators;
|
|
private transient KList<BlockData> blockData;
|
|
|
|
public CNG getGenerator(RNG rng)
|
|
{
|
|
long key = rng.nextParallelRNG(1).nextLong();
|
|
|
|
if(layerGenerators == null)
|
|
{
|
|
layerGenerators = new KMap<>();
|
|
}
|
|
|
|
if(!layerGenerators.containsKey(key))
|
|
{
|
|
layerGenerators.put(key, CNG.signature(rng.nextParallelRNG(minHeight + maxHeight + getBlockData().size())));
|
|
}
|
|
|
|
return layerGenerators.get(key);
|
|
}
|
|
|
|
public KList<String> add(String b)
|
|
{
|
|
palette.add(b);
|
|
|
|
return palette;
|
|
}
|
|
|
|
public KList<BlockData> getBlockData()
|
|
{
|
|
if(blockData == null)
|
|
{
|
|
blockData = new KList<>();
|
|
for(String i : palette)
|
|
{
|
|
try
|
|
{
|
|
Material m = Material.valueOf(i);
|
|
|
|
if(m != null)
|
|
{
|
|
blockData.add(m.createBlockData());
|
|
}
|
|
}
|
|
catch(Throwable e)
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
return blockData;
|
|
}
|
|
}
|