mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-18 18:23:06 +00:00
Fixes
This commit is contained in:
parent
4304cad029
commit
086bb764a5
@ -110,7 +110,15 @@ public abstract class PostBlockChunkGenerator extends ParallaxChunkGenerator imp
|
|||||||
{
|
{
|
||||||
while(f.getQueue().size() > 0)
|
while(f.getQueue().size() > 0)
|
||||||
{
|
{
|
||||||
f.getQueue().pop().run();
|
try
|
||||||
|
{
|
||||||
|
f.getQueue().pop().run();
|
||||||
|
}
|
||||||
|
|
||||||
|
catch(Throwable e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -162,9 +162,11 @@ public class GenLayerCave extends GenLayer
|
|||||||
Material e = data.getType(y + 3);
|
Material e = data.getType(y + 3);
|
||||||
Material f = data.getType(y - 1);
|
Material f = data.getType(y - 1);
|
||||||
|
|
||||||
if(can(a) && canAir(c) && canAir(f) && canWater(d) && canWater(e))
|
if(can(a) && canAir(c) && canAir(f) && canWater(d) && canAir(d) && canWater(e))
|
||||||
{
|
{
|
||||||
data.set(y, CAVE_AIR);
|
data.set(y, CAVE_AIR);
|
||||||
|
data.set(y + 1, CAVE_AIR);
|
||||||
|
data.set(y + 2, CAVE_AIR);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -173,7 +175,7 @@ public class GenLayerCave extends GenLayer
|
|||||||
|
|
||||||
public boolean canAir(Material m)
|
public boolean canAir(Material m)
|
||||||
{
|
{
|
||||||
return (m.isSolid() || m.equals(Material.AIR) || m.equals(Material.CAVE_AIR)) && !m.equals(Material.BEDROCK);
|
return (m.isSolid() || (BlockDataTools.isDecorant(m)) || m.equals(Material.AIR) || m.equals(Material.CAVE_AIR)) && !m.equals(Material.BEDROCK);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canWater(Material m)
|
public boolean canWater(Material m)
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
package com.volmit.iris.object;
|
package com.volmit.iris.object;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
|
import com.volmit.iris.gen.atomics.AtomicCache;
|
||||||
|
import com.volmit.iris.util.CellGenerator;
|
||||||
import com.volmit.iris.util.Desc;
|
import com.volmit.iris.util.Desc;
|
||||||
import com.volmit.iris.util.DontObfuscate;
|
import com.volmit.iris.util.DontObfuscate;
|
||||||
import com.volmit.iris.util.IrisInterpolation;
|
import com.volmit.iris.util.IrisInterpolation;
|
||||||
import com.volmit.iris.util.KList;
|
import com.volmit.iris.util.KList;
|
||||||
|
import com.volmit.iris.util.RNG;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
@ -22,6 +25,22 @@ public class IrisGenerator extends IrisRegistrant
|
|||||||
@Desc("The opacity, essentially a multiplier on the output.")
|
@Desc("The opacity, essentially a multiplier on the output.")
|
||||||
private double opacity = 1;
|
private double opacity = 1;
|
||||||
|
|
||||||
|
@DontObfuscate
|
||||||
|
@Desc("The size of the cell fractures")
|
||||||
|
private double cellFractureZoom = 1D;
|
||||||
|
|
||||||
|
@DontObfuscate
|
||||||
|
@Desc("Cell Fracture Coordinate Shuffling")
|
||||||
|
private double cellFractureShuffle = 12D;
|
||||||
|
|
||||||
|
@DontObfuscate
|
||||||
|
@Desc("The height of fracture cells. Set to 0 to disable")
|
||||||
|
private double cellFractureHeight = 0D;
|
||||||
|
|
||||||
|
@DontObfuscate
|
||||||
|
@Desc("How big are the cells (X,Z) relative to the veins that touch them. Between 0 and 1. 0.1 means thick veins, small cells.")
|
||||||
|
private double cellPercentSize = 0.75D;
|
||||||
|
|
||||||
@DontObfuscate
|
@DontObfuscate
|
||||||
@Desc("The offset to shift this noise x")
|
@Desc("The offset to shift this noise x")
|
||||||
private double offsetX = 0;
|
private double offsetX = 0;
|
||||||
@ -58,6 +77,8 @@ public class IrisGenerator extends IrisRegistrant
|
|||||||
@Desc("The noise gen for cliff height.")
|
@Desc("The noise gen for cliff height.")
|
||||||
private IrisNoiseGenerator cliffHeightGenerator = new IrisNoiseGenerator();
|
private IrisNoiseGenerator cliffHeightGenerator = new IrisNoiseGenerator();
|
||||||
|
|
||||||
|
private transient AtomicCache<CellGenerator> cellGen = new AtomicCache<>();
|
||||||
|
|
||||||
public double getMax()
|
public double getMax()
|
||||||
{
|
{
|
||||||
return opacity;
|
return opacity;
|
||||||
@ -68,6 +89,11 @@ public class IrisGenerator extends IrisRegistrant
|
|||||||
return cliffHeightMax > 0;
|
return cliffHeightMax > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public CellGenerator getCellGenerator(long seed)
|
||||||
|
{
|
||||||
|
return cellGen.aquire(() -> new CellGenerator(new RNG(seed + 239466)));
|
||||||
|
}
|
||||||
|
|
||||||
public double getHeight(double rx, double rz, long superSeed)
|
public double getHeight(double rx, double rz, long superSeed)
|
||||||
{
|
{
|
||||||
if(composite.isEmpty())
|
if(composite.isEmpty())
|
||||||
@ -93,7 +119,21 @@ public class IrisGenerator extends IrisRegistrant
|
|||||||
Iris.warn("Nan value on gen: " + getLoadKey() + ": H = " + h + " TP = " + tp + " OPACITY = " + opacity + " ZOOM = " + zoom);
|
Iris.warn("Nan value on gen: " + getLoadKey() + ": H = " + h + " TP = " + tp + " OPACITY = " + opacity + " ZOOM = " + zoom);
|
||||||
}
|
}
|
||||||
|
|
||||||
return hasCliffs() ? cliff(rx, rz, v, superSeed + 294596 + hc) : v;
|
v = hasCliffs() ? cliff(rx, rz, v, superSeed + 294596 + hc) : v;
|
||||||
|
v = hasCellCracks() ? cell(rx, rz, v, superSeed + 48622 + hc) : v;
|
||||||
|
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double cell(double rx, double rz, double v, double superSeed)
|
||||||
|
{
|
||||||
|
getCellGenerator(seed + 46222).setShuffle(getCellFractureShuffle());
|
||||||
|
return getCellGenerator(seed + 46222).getDistance(rx / getCellFractureZoom(), rz / getCellFractureZoom()) > getCellPercentSize() ? (v * getCellFractureHeight()) : v;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean hasCellCracks()
|
||||||
|
{
|
||||||
|
return getCellFractureHeight() != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getCliffHeight(double rx, double rz, double superSeed)
|
public double getCliffHeight(double rx, double rz, double superSeed)
|
||||||
|
@ -18,6 +18,10 @@ public class IrisNoiseGenerator
|
|||||||
@Desc("The coordinate input zoom")
|
@Desc("The coordinate input zoom")
|
||||||
private double zoom = 1;
|
private double zoom = 1;
|
||||||
|
|
||||||
|
@DontObfuscate
|
||||||
|
@Desc("Reverse the output. So that noise = -noise + opacity")
|
||||||
|
private boolean negative = false;
|
||||||
|
|
||||||
@DontObfuscate
|
@DontObfuscate
|
||||||
@Desc("The output multiplier")
|
@Desc("The output multiplier")
|
||||||
private double opacity = 1;
|
private double opacity = 1;
|
||||||
@ -115,6 +119,7 @@ public class IrisNoiseGenerator
|
|||||||
}
|
}
|
||||||
|
|
||||||
double n = getGenerator(superSeed).fitDoubleD(0, opacity, (x / zoom) + offsetX, (z / zoom) + offsetZ);
|
double n = getGenerator(superSeed).fitDoubleD(0, opacity, (x / zoom) + offsetX, (z / zoom) + offsetZ);
|
||||||
|
n = negative ? (-n + opacity) : n;
|
||||||
n = (exponent != 1 ? n < 0 ? -Math.pow(-n, exponent) : Math.pow(n, exponent) : n) + offsetY;
|
n = (exponent != 1 ? n < 0 ? -Math.pow(-n, exponent) : Math.pow(n, exponent) : n) + offsetY;
|
||||||
n = parametric ? IrisInterpolation.parametric(n, 1) : n;
|
n = parametric ? IrisInterpolation.parametric(n, 1) : n;
|
||||||
n = bezier ? IrisInterpolation.bezier(n) : n;
|
n = bezier ? IrisInterpolation.bezier(n) : n;
|
||||||
|
@ -13,14 +13,14 @@ public class BlockDataTools
|
|||||||
private static final KList<String> nulls = new KList<>();
|
private static final KList<String> nulls = new KList<>();
|
||||||
|
|
||||||
public static BlockData getBlockData(String bd)
|
public static BlockData getBlockData(String bd)
|
||||||
{try
|
|
||||||
{
|
{
|
||||||
if(bdc.containsKey(bd))
|
try
|
||||||
{
|
{
|
||||||
return bdc.get(bd).clone();
|
if(bdc.containsKey(bd))
|
||||||
}
|
{
|
||||||
|
return bdc.get(bd).clone();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
BlockData bdx = parseBlockData(bd);
|
BlockData bdx = parseBlockData(bd);
|
||||||
|
|
||||||
if(bdx == null)
|
if(bdx == null)
|
||||||
@ -96,6 +96,11 @@ public class BlockDataTools
|
|||||||
|
|
||||||
public static boolean canPlaceOnto(Material mat, Material onto)
|
public static boolean canPlaceOnto(Material mat, Material onto)
|
||||||
{
|
{
|
||||||
|
if(onto.equals(Material.AIR) || onto.equals(Material.CAVE_AIR))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if(onto.equals(Material.GRASS_BLOCK) && mat.equals(Material.DEAD_BUSH))
|
if(onto.equals(Material.GRASS_BLOCK) && mat.equals(Material.DEAD_BUSH))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@ -127,4 +132,62 @@ public class BlockDataTools
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isDecorant(Material m)
|
||||||
|
{
|
||||||
|
//@builder
|
||||||
|
return m.equals(Material.GRASS)
|
||||||
|
|| m.equals(Material.TALL_GRASS)
|
||||||
|
|| m.equals(Material.CORNFLOWER)
|
||||||
|
|| m.equals(Material.SUNFLOWER)
|
||||||
|
|| m.equals(Material.CHORUS_FLOWER)
|
||||||
|
|| m.equals(Material.POPPY)
|
||||||
|
|| m.equals(Material.DANDELION)
|
||||||
|
|| m.equals(Material.OXEYE_DAISY)
|
||||||
|
|| m.equals(Material.ORANGE_TULIP)
|
||||||
|
|| m.equals(Material.PINK_TULIP)
|
||||||
|
|| m.equals(Material.RED_TULIP)
|
||||||
|
|| m.equals(Material.WHITE_TULIP)
|
||||||
|
|| m.equals(Material.LILAC)
|
||||||
|
|| m.equals(Material.DEAD_BUSH)
|
||||||
|
|| m.equals(Material.SWEET_BERRY_BUSH)
|
||||||
|
|| m.equals(Material.ROSE_BUSH)
|
||||||
|
|| m.equals(Material.WITHER_ROSE)
|
||||||
|
|| m.equals(Material.ALLIUM)
|
||||||
|
|| m.equals(Material.BLUE_ORCHID)
|
||||||
|
|| m.equals(Material.LILY_OF_THE_VALLEY)
|
||||||
|
|| m.equals(Material.CRIMSON_FUNGUS)
|
||||||
|
|| m.equals(Material.WARPED_FUNGUS)
|
||||||
|
|| m.equals(Material.RED_MUSHROOM)
|
||||||
|
|| m.equals(Material.BROWN_MUSHROOM)
|
||||||
|
|| m.equals(Material.CRIMSON_ROOTS)
|
||||||
|
|| m.equals(Material.AZURE_BLUET)
|
||||||
|
|| m.equals(Material.WEEPING_VINES)
|
||||||
|
|| m.equals(Material.WEEPING_VINES_PLANT)
|
||||||
|
|| m.equals(Material.WARPED_ROOTS)
|
||||||
|
|| m.equals(Material.NETHER_SPROUTS)
|
||||||
|
|| m.equals(Material.TWISTING_VINES)
|
||||||
|
|| m.equals(Material.TWISTING_VINES_PLANT)
|
||||||
|
|| m.equals(Material.SUGAR_CANE)
|
||||||
|
|| m.equals(Material.WHEAT)
|
||||||
|
|| m.equals(Material.POTATOES)
|
||||||
|
|| m.equals(Material.CARROTS)
|
||||||
|
|| m.equals(Material.BEETROOTS)
|
||||||
|
|| m.equals(Material.NETHER_WART)
|
||||||
|
|| m.equals(Material.SEA_PICKLE)
|
||||||
|
|| m.equals(Material.SEAGRASS)
|
||||||
|
|| m.equals(Material.ACACIA_BUTTON)
|
||||||
|
|| m.equals(Material.BIRCH_BUTTON)
|
||||||
|
|| m.equals(Material.CRIMSON_BUTTON)
|
||||||
|
|| m.equals(Material.DARK_OAK_BUTTON)
|
||||||
|
|| m.equals(Material.JUNGLE_BUTTON)
|
||||||
|
|| m.equals(Material.OAK_BUTTON)
|
||||||
|
|| m.equals(Material.POLISHED_BLACKSTONE_BUTTON)
|
||||||
|
|| m.equals(Material.SPRUCE_BUTTON)
|
||||||
|
|| m.equals(Material.STONE_BUTTON)
|
||||||
|
|| m.equals(Material.WARPED_BUTTON)
|
||||||
|
|| m.equals(Material.TORCH)
|
||||||
|
|| m.equals(Material.SOUL_TORCH);
|
||||||
|
//@done
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ public abstract class IrisPostBlockFilter implements IPostBlockAccess
|
|||||||
public PostBlockChunkGenerator gen;
|
public PostBlockChunkGenerator gen;
|
||||||
private int phase;
|
private int phase;
|
||||||
private String key;
|
private String key;
|
||||||
private KList<Runnable> queue;
|
private KList<Runnable> queue = new KList<>();
|
||||||
|
|
||||||
public IrisPostBlockFilter(PostBlockChunkGenerator gen, int phase)
|
public IrisPostBlockFilter(PostBlockChunkGenerator gen, int phase)
|
||||||
{
|
{
|
||||||
@ -67,24 +67,7 @@ public abstract class IrisPostBlockFilter implements IPostBlockAccess
|
|||||||
public boolean hasGravity(int x, int y, int z)
|
public boolean hasGravity(int x, int y, int z)
|
||||||
{
|
{
|
||||||
BlockData d = getPostBlock(x, y, z);
|
BlockData d = getPostBlock(x, y, z);
|
||||||
return d.getMaterial().equals(Material.SAND)
|
return d.getMaterial().equals(Material.SAND) || d.getMaterial().equals(Material.RED_SAND) || d.getMaterial().equals(Material.BLACK_CONCRETE_POWDER) || d.getMaterial().equals(Material.BLUE_CONCRETE_POWDER) || d.getMaterial().equals(Material.BROWN_CONCRETE_POWDER) || d.getMaterial().equals(Material.CYAN_CONCRETE_POWDER) || d.getMaterial().equals(Material.GRAY_CONCRETE_POWDER) || d.getMaterial().equals(Material.GREEN_CONCRETE_POWDER) || d.getMaterial().equals(Material.LIGHT_BLUE_CONCRETE_POWDER) || d.getMaterial().equals(Material.LIGHT_GRAY_CONCRETE_POWDER) || d.getMaterial().equals(Material.LIME_CONCRETE_POWDER) || d.getMaterial().equals(Material.MAGENTA_CONCRETE_POWDER) || d.getMaterial().equals(Material.ORANGE_CONCRETE_POWDER) || d.getMaterial().equals(Material.PINK_CONCRETE_POWDER) || d.getMaterial().equals(Material.PURPLE_CONCRETE_POWDER) || d.getMaterial().equals(Material.RED_CONCRETE_POWDER) || d.getMaterial().equals(Material.WHITE_CONCRETE_POWDER) || d.getMaterial().equals(Material.YELLOW_CONCRETE_POWDER);
|
||||||
|| d.getMaterial().equals(Material.RED_SAND)
|
|
||||||
|| d.getMaterial().equals(Material.BLACK_CONCRETE_POWDER)
|
|
||||||
|| d.getMaterial().equals(Material.BLUE_CONCRETE_POWDER)
|
|
||||||
|| d.getMaterial().equals(Material.BROWN_CONCRETE_POWDER)
|
|
||||||
|| d.getMaterial().equals(Material.CYAN_CONCRETE_POWDER)
|
|
||||||
|| d.getMaterial().equals(Material.GRAY_CONCRETE_POWDER)
|
|
||||||
|| d.getMaterial().equals(Material.GREEN_CONCRETE_POWDER)
|
|
||||||
|| d.getMaterial().equals(Material.LIGHT_BLUE_CONCRETE_POWDER)
|
|
||||||
|| d.getMaterial().equals(Material.LIGHT_GRAY_CONCRETE_POWDER)
|
|
||||||
|| d.getMaterial().equals(Material.LIME_CONCRETE_POWDER)
|
|
||||||
|| d.getMaterial().equals(Material.MAGENTA_CONCRETE_POWDER)
|
|
||||||
|| d.getMaterial().equals(Material.ORANGE_CONCRETE_POWDER)
|
|
||||||
|| d.getMaterial().equals(Material.PINK_CONCRETE_POWDER)
|
|
||||||
|| d.getMaterial().equals(Material.PURPLE_CONCRETE_POWDER)
|
|
||||||
|| d.getMaterial().equals(Material.RED_CONCRETE_POWDER)
|
|
||||||
|| d.getMaterial().equals(Material.WHITE_CONCRETE_POWDER)
|
|
||||||
|| d.getMaterial().equals(Material.YELLOW_CONCRETE_POWDER);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSolid(int x, int y, int z)
|
public boolean isSolid(int x, int y, int z)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user