mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-19 02:36:59 +00:00
Support ModX and ModZ
This commit is contained in:
parent
adb7b13599
commit
24ae8d1679
@ -23,6 +23,10 @@ public interface Engine
|
||||
|
||||
public int getMinHeight();
|
||||
|
||||
public double modifyX(double x);
|
||||
|
||||
public double modifyZ(double z);
|
||||
|
||||
default void save()
|
||||
{
|
||||
getParallax().saveAll();
|
||||
|
@ -13,6 +13,16 @@ public interface EngineComponent {
|
||||
|
||||
public String getName();
|
||||
|
||||
default double modX(double x)
|
||||
{
|
||||
return getEngine().modifyX(x);
|
||||
}
|
||||
|
||||
default double modZ(double z)
|
||||
{
|
||||
return getEngine().modifyZ(z);
|
||||
}
|
||||
|
||||
public default IrisDataManager getData()
|
||||
{
|
||||
return getEngine().getData();
|
||||
|
@ -44,4 +44,6 @@ public interface EngineFramework extends DataProvider
|
||||
public EngineModifier<BlockData> getRavineModifier();
|
||||
|
||||
public EngineModifier<BlockData> getDepositModifier();
|
||||
|
||||
public EngineModifier<BlockData> getPostModifier();
|
||||
}
|
||||
|
@ -6,6 +6,8 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import com.volmit.iris.object.*;
|
||||
import com.volmit.iris.util.*;
|
||||
import com.volmit.iris.v2.generator.actuator.IrisTerrainActuator;
|
||||
import com.volmit.iris.v2.generator.modifier.IrisCaveModifier;
|
||||
import com.volmit.iris.v2.scaffold.parallax.ParallaxChunkMeta;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.util.BlockVector;
|
||||
@ -322,7 +324,49 @@ public interface EngineParallax extends DataProvider, IObjectPlacer
|
||||
|
||||
@Override
|
||||
default int getHighest(int x, int z, boolean ignoreFluid) {
|
||||
return (int) Math.round(ignoreFluid ? getComplex().getHeightStream().get(x, z) : getComplex().getHeightFluidStream().get(x, z));
|
||||
return ignoreFluid ? trueHeight(x, z) : Math.max(trueHeight(x, z), getEngine().getDimension().getFluidHeight());
|
||||
}
|
||||
|
||||
default int trueHeight(int x, int z)
|
||||
{
|
||||
int rx = (int) Math.round(getEngine().modifyX(x));
|
||||
int rz = (int) Math.round(getEngine().modifyZ(z));
|
||||
int height = (int) Math.round(getComplex().getHeightStream().get(rx, rz));
|
||||
int m = height;
|
||||
|
||||
if(getEngine().getDimension().isCarving())
|
||||
{
|
||||
if(getEngine().getDimension().isCarved(rx, m, rz, ((IrisTerrainActuator)getFramework().getTerrainActuator()).getRng(), height))
|
||||
{
|
||||
m--;
|
||||
|
||||
while(getEngine().getDimension().isCarved(rx, m, rz, ((IrisTerrainActuator)getFramework().getTerrainActuator()).getRng(), height))
|
||||
{
|
||||
m--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(getEngine().getDimension().isCaves())
|
||||
{
|
||||
KList<CaveResult> caves = ((IrisCaveModifier)getFramework().getCaveModifier()).genCaves(rx, rz, 0, 0, null);
|
||||
boolean again = true;
|
||||
|
||||
while(again)
|
||||
{
|
||||
again = false;
|
||||
for(CaveResult i : caves)
|
||||
{
|
||||
if(i.getCeiling() > m && i.getFloor() < m)
|
||||
{
|
||||
m = i.getFloor();
|
||||
again = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return m;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Loading…
x
Reference in New Issue
Block a user