mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-19 10:43:14 +00:00
Fixes
This commit is contained in:
parent
6153b25bc7
commit
522aec1d3a
@ -1,8 +1,8 @@
|
|||||||
package com.volmit.iris.command;
|
package com.volmit.iris.command;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.NoiseView;
|
|
||||||
import com.volmit.iris.gen.IrisChunkGenerator;
|
import com.volmit.iris.gen.IrisChunkGenerator;
|
||||||
|
import com.volmit.iris.gui.NoiseView;
|
||||||
import com.volmit.iris.util.MortarCommand;
|
import com.volmit.iris.util.MortarCommand;
|
||||||
import com.volmit.iris.util.MortarSender;
|
import com.volmit.iris.util.MortarSender;
|
||||||
|
|
||||||
|
@ -19,7 +19,8 @@ import lombok.EqualsAndHashCode;
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
public class GenLayerBiome extends GenLayer {
|
public class GenLayerBiome extends GenLayer
|
||||||
|
{
|
||||||
private CNG regionGenerator;
|
private CNG regionGenerator;
|
||||||
private CNG bridgeGenerator;
|
private CNG bridgeGenerator;
|
||||||
private BiomeDataProvider seaProvider;
|
private BiomeDataProvider seaProvider;
|
||||||
@ -30,7 +31,8 @@ public class GenLayerBiome extends GenLayer {
|
|||||||
private BiomeDataProvider skylandProvider;
|
private BiomeDataProvider skylandProvider;
|
||||||
private DimensionChunkGenerator iris;
|
private DimensionChunkGenerator iris;
|
||||||
|
|
||||||
public GenLayerBiome(DimensionChunkGenerator iris, RNG rng) {
|
public GenLayerBiome(DimensionChunkGenerator iris, RNG rng)
|
||||||
|
{
|
||||||
super(iris, rng);
|
super(iris, rng);
|
||||||
this.iris = iris;
|
this.iris = iris;
|
||||||
seaProvider = new BiomeDataProvider(this, InferredType.SEA, rng);
|
seaProvider = new BiomeDataProvider(this, InferredType.SEA, rng);
|
||||||
@ -39,14 +41,14 @@ public class GenLayerBiome extends GenLayer {
|
|||||||
caveProvider = new BiomeDataProvider(this, InferredType.CAVE, rng);
|
caveProvider = new BiomeDataProvider(this, InferredType.CAVE, rng);
|
||||||
islandProvider = new BiomeDataProvider(this, InferredType.ISLAND, rng);
|
islandProvider = new BiomeDataProvider(this, InferredType.ISLAND, rng);
|
||||||
skylandProvider = new BiomeDataProvider(this, InferredType.SKYLAND, rng);
|
skylandProvider = new BiomeDataProvider(this, InferredType.SKYLAND, rng);
|
||||||
regionGenerator = iris.getDimension().getRegionStyle().create(rng.nextParallelRNG(1188519)).bake()
|
regionGenerator = iris.getDimension().getRegionStyle().create(rng.nextParallelRNG(1188519)).bake().scale(1D / iris.getDimension().getRegionZoom());
|
||||||
.scale(1D / iris.getDimension().getRegionZoom());
|
bridgeGenerator = iris.getDimension().getContinentalStyle().create(rng.nextParallelRNG(1541462)).bake().scale(1D / iris.getDimension().getContinentZoom());
|
||||||
bridgeGenerator = iris.getDimension().getContinentalStyle().create(rng.nextParallelRNG(1541462)).bake()
|
|
||||||
.scale(1D / iris.getDimension().getContinentZoom());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public IrisRegion getRegion(double bx, double bz) {
|
public IrisRegion getRegion(double bx, double bz)
|
||||||
if (iris.getDimension().getRegions().isEmpty()) {
|
{
|
||||||
|
if(iris.getDimension().getRegions().isEmpty())
|
||||||
|
{
|
||||||
Iris.error("NO REGIONS!");
|
Iris.error("NO REGIONS!");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -57,60 +59,84 @@ public class GenLayerBiome extends GenLayer {
|
|||||||
return regionGenerator.fitRarity(iris.getDimension().getAllRegions(iris), x, z);
|
return regionGenerator.fitRarity(iris.getDimension().getAllRegions(iris), x, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
public BiomeResult generateData(double bx, double bz, int rawX, int rawZ) {
|
public BiomeResult generateData(double bx, double bz, int rawX, int rawZ)
|
||||||
|
{
|
||||||
return generateRegionData(bx, bz, rawX, rawZ, getRegion(bx, bz));
|
return generateRegionData(bx, bz, rawX, rawZ, getRegion(bx, bz));
|
||||||
}
|
}
|
||||||
|
|
||||||
public BiomeResult generateData(InferredType type, double bx, double bz, int rawX, int rawZ,
|
public BiomeResult generateData(InferredType type, double bx, double bz, int rawX, int rawZ, IrisRegion regionData)
|
||||||
IrisRegion regionData) {
|
{
|
||||||
return getProvider(type).generateData(iris, bx, bz, rawX, rawZ, regionData);
|
return getProvider(type).generateData(iris, bx, bz, rawX, rawZ, regionData);
|
||||||
}
|
}
|
||||||
|
|
||||||
public BiomeDataProvider getProvider(InferredType type) {
|
public BiomeDataProvider getProvider(InferredType type)
|
||||||
if (type.equals(InferredType.SEA)) {
|
{
|
||||||
|
if(type.equals(InferredType.SEA))
|
||||||
|
{
|
||||||
return seaProvider;
|
return seaProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (type.equals(InferredType.LAND)) {
|
else if(type.equals(InferredType.LAND))
|
||||||
|
{
|
||||||
return landProvider;
|
return landProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (type.equals(InferredType.SHORE)) {
|
else if(type.equals(InferredType.SHORE))
|
||||||
|
{
|
||||||
return shoreProvider;
|
return shoreProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (type.equals(InferredType.CAVE)) {
|
else if(type.equals(InferredType.CAVE))
|
||||||
|
{
|
||||||
return caveProvider;
|
return caveProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (type.equals(InferredType.ISLAND)) {
|
else if(type.equals(InferredType.ISLAND))
|
||||||
|
{
|
||||||
return islandProvider;
|
return islandProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (type.equals(InferredType.SKYLAND)) {
|
else if(type.equals(InferredType.SKYLAND))
|
||||||
|
{
|
||||||
return skylandProvider;
|
return skylandProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
Iris.error("Cannot find a BiomeDataProvider for type " + type.name());
|
Iris.error("Cannot find a BiomeDataProvider for type " + type.name());
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BiomeResult generateRegionData(double bx, double bz, int rawX, int rawZ, IrisRegion regionData) {
|
public BiomeResult generateRegionData(double bx, double bz, int rawX, int rawZ, IrisRegion regionData)
|
||||||
|
{
|
||||||
return generateData(getType(bx, bz, regionData), bx, bz, rawX, rawZ, regionData);
|
return generateData(getType(bx, bz, regionData), bx, bz, rawX, rawZ, regionData);
|
||||||
}
|
}
|
||||||
|
|
||||||
public InferredType getType(double bx, double bz, IrisRegion regionData) {
|
public InferredType getType(double bx, double bz, IrisRegion regionData)
|
||||||
|
{
|
||||||
double x = bx;
|
double x = bx;
|
||||||
double z = bz;
|
double z = bz;
|
||||||
return bridgeGenerator.fit(0, 1, x, z) == 0 ? InferredType.LAND : InferredType.SEA;
|
double c = iris.getDimension().getLandChance();
|
||||||
|
|
||||||
|
if(c >= 1)
|
||||||
|
{
|
||||||
|
return InferredType.LAND;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(c <= 0)
|
||||||
|
{
|
||||||
|
return InferredType.SEA;
|
||||||
|
}
|
||||||
|
|
||||||
|
return bridgeGenerator.fitDouble(0, 1, x, z) < c ? InferredType.LAND : InferredType.SEA;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BiomeResult generateBiomeData(double bx, double bz, IrisRegion regionData, CNG cell, KList<IrisBiome> biomes,
|
public BiomeResult generateBiomeData(double bx, double bz, IrisRegion regionData, CNG cell, KList<IrisBiome> biomes, InferredType inferredType)
|
||||||
InferredType inferredType) {
|
{
|
||||||
if (biomes.isEmpty()) {
|
if(biomes.isEmpty())
|
||||||
|
{
|
||||||
return new BiomeResult(null, 0);
|
return new BiomeResult(null, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,16 +148,20 @@ public class GenLayerBiome extends GenLayer {
|
|||||||
return implode(bx, bz, regionData, cell, new BiomeResult(biome, 1));
|
return implode(bx, bz, regionData, cell, new BiomeResult(biome, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
public BiomeResult generateImpureData(int rawX, int rawZ, InferredType type, IrisRegion regionData,
|
public BiomeResult generateImpureData(int rawX, int rawZ, InferredType type, IrisRegion regionData, BiomeResult pureResult)
|
||||||
BiomeResult pureResult) {
|
{
|
||||||
for (IrisRegionRidge i : regionData.getRidgeBiomes()) {
|
for(IrisRegionRidge i : regionData.getRidgeBiomes())
|
||||||
if (i.getType().equals(type) && i.isRidge(rng, rawX, rawZ)) {
|
{
|
||||||
|
if(i.getType().equals(type) && i.isRidge(rng, rawX, rawZ))
|
||||||
|
{
|
||||||
return new BiomeResult(iris.loadBiome(i.getBiome()).infer(i.getAs(), type), 0.5);
|
return new BiomeResult(iris.loadBiome(i.getBiome()).infer(i.getAs(), type), 0.5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (IrisRegionSpot i : regionData.getSpotBiomes()) {
|
for(IrisRegionSpot i : regionData.getSpotBiomes())
|
||||||
if (i.getType().equals(type) && i.isSpot(rng, rawX, rawZ)) {
|
{
|
||||||
|
if(i.getType().equals(type) && i.isSpot(rng, rawX, rawZ))
|
||||||
|
{
|
||||||
return new BiomeResult(iris.loadBiome(i.getBiome()).infer(i.getAs(), type), 0.5);
|
return new BiomeResult(iris.loadBiome(i.getBiome()).infer(i.getAs(), type), 0.5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -139,20 +169,23 @@ public class GenLayerBiome extends GenLayer {
|
|||||||
return pureResult;
|
return pureResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BiomeResult implode(double bx, double bz, IrisRegion regionData, CNG parentCell, BiomeResult parent) {
|
public BiomeResult implode(double bx, double bz, IrisRegion regionData, CNG parentCell, BiomeResult parent)
|
||||||
|
{
|
||||||
return implode(bx, bz, regionData, parentCell, parent, 1);
|
return implode(bx, bz, regionData, parentCell, parent, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public BiomeResult implode(double bx, double bz, IrisRegion regionData, CNG parentCell, BiomeResult parent,
|
public BiomeResult implode(double bx, double bz, IrisRegion regionData, CNG parentCell, BiomeResult parent, int hits)
|
||||||
int hits) {
|
{
|
||||||
if (hits > IrisSettings.get().maxBiomeChildDepth) {
|
if(hits > IrisSettings.get().maxBiomeChildDepth)
|
||||||
|
{
|
||||||
return parent;
|
return parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
double x = bx / iris.getDimension().getBiomeZoom();
|
double x = bx / iris.getDimension().getBiomeZoom();
|
||||||
double z = bz / iris.getDimension().getBiomeZoom();
|
double z = bz / iris.getDimension().getBiomeZoom();
|
||||||
|
|
||||||
if (!parent.getBiome().getRealChildren(iris).isEmpty()) {
|
if(!parent.getBiome().getRealChildren(iris).isEmpty())
|
||||||
|
{
|
||||||
CNG childCell = parent.getBiome().getChildrenGenerator(rng, 123, parent.getBiome().getChildShrinkFactor());
|
CNG childCell = parent.getBiome().getChildrenGenerator(rng, 123, parent.getBiome().getChildShrinkFactor());
|
||||||
KList<IrisBiome> chx = parent.getBiome().getRealChildren(iris).copy(); // TODO Cache
|
KList<IrisBiome> chx = parent.getBiome().getRealChildren(iris).copy(); // TODO Cache
|
||||||
chx.add(parent.getBiome());
|
chx.add(parent.getBiome());
|
||||||
@ -166,7 +199,8 @@ public class GenLayerBiome extends GenLayer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double generate(double x, double z) {
|
public double generate(double x, double z)
|
||||||
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package com.volmit.iris;
|
package com.volmit.iris.gui;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
@ -24,6 +24,7 @@ import javax.swing.JLayeredPane;
|
|||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JViewport;
|
import javax.swing.JViewport;
|
||||||
|
|
||||||
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.gen.IrisChunkGenerator;
|
import com.volmit.iris.gen.IrisChunkGenerator;
|
||||||
import com.volmit.iris.noise.CNG;
|
import com.volmit.iris.noise.CNG;
|
||||||
import com.volmit.iris.object.NoiseStyle;
|
import com.volmit.iris.object.NoiseStyle;
|
@ -48,6 +48,12 @@ public class IrisDimension extends IrisRegistrant
|
|||||||
@Desc("The version of this dimension. Changing this will stop users from accidentally upgrading (and breaking their worlds).")
|
@Desc("The version of this dimension. Changing this will stop users from accidentally upgrading (and breaking their worlds).")
|
||||||
private int version = 1;
|
private int version = 1;
|
||||||
|
|
||||||
|
@MinNumber(0)
|
||||||
|
@MaxNumber(1)
|
||||||
|
@DontObfuscate
|
||||||
|
@Desc("The land chance. Up to 1.0 for total land or 0.0 for total sea")
|
||||||
|
private double landChance = 0.625;
|
||||||
|
|
||||||
@DontObfuscate
|
@DontObfuscate
|
||||||
@Desc("The placement style of regions")
|
@Desc("The placement style of regions")
|
||||||
private IrisGeneratorStyle regionStyle = NoiseStyle.CELLULAR_IRIS_DOUBLE.style();
|
private IrisGeneratorStyle regionStyle = NoiseStyle.CELLULAR_IRIS_DOUBLE.style();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user