9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2025-12-28 11:39:07 +00:00
This commit is contained in:
cyberpwn
2021-08-28 21:50:50 -04:00
parent faf5bcb32b
commit dd0b4f27d4
49 changed files with 271 additions and 444 deletions

View File

@@ -21,11 +21,9 @@ package com.volmit.iris.engine;
import com.google.common.util.concurrent.AtomicDouble;
import com.volmit.iris.Iris;
import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.engine.actuator.IrisTerrainNormalActuator;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.object.biome.InferredType;
import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.common.CaveResult;
import com.volmit.iris.engine.object.decoration.IrisDecorationPart;
import com.volmit.iris.engine.object.decoration.IrisDecorator;
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
@@ -44,7 +42,6 @@ import org.bukkit.Material;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
import java.util.List;
import java.util.UUID;
@Data

View File

@@ -415,7 +415,7 @@ public class IrisEngine implements Engine {
getBiomeActuator().actuate(x, z, vbiomes, multicore);
getDecorantActuator().actuate(x, z, blocks, multicore);
getDepositModifier().modify(x, z, blocks, multicore);
getCaveModifier().modify(x >> 4,z >> 4, blocks, multicore);
getCaveModifier().modify(x >> 4, z >> 4, blocks, multicore);
getPostModifier().modify(x, z, blocks, multicore);
getMantle().insertMatter(x >> 4, z >> 4, BlockData.class, blocks, multicore);
}

View File

@@ -28,7 +28,6 @@ import com.volmit.iris.engine.mantle.components.MantleFeatureComponent;
import com.volmit.iris.engine.mantle.components.MantleJigsawComponent;
import com.volmit.iris.engine.mantle.components.MantleObjectComponent;
import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.carving.IrisCarving;
import com.volmit.iris.engine.object.deposits.IrisDepositGenerator;
import com.volmit.iris.engine.object.feature.IrisFeaturePotential;
import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructurePlacement;
@@ -316,13 +315,11 @@ public class IrisEngineMantle implements EngineMantle {
m = Math.max(m, getDimension().getCarving().getMaxRange(getData()));
for(IrisRegion i : getDimension().getAllRegions(getEngine()))
{
for (IrisRegion i : getDimension().getAllRegions(getEngine())) {
m = Math.max(m, i.getCarving().getMaxRange(getData()));
}
for(IrisBiome i : getDimension().getAllBiomes(getEngine()))
{
for (IrisBiome i : getDimension().getAllBiomes(getEngine())) {
m = Math.max(m, i.getCarving().getMaxRange(getData()));
}

View File

@@ -155,12 +155,9 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
for (Player i : getEngine().getWorld().realWorld().getPlayers()) {
int r = 2;
Chunk c = i.getLocation().getChunk();
for(int x = -r; x <= r; x++)
{
for(int z = -r; z <= r; z++)
{
if(c.getWorld().isChunkLoaded(c.getX() + x, c.getZ() + z))
{
for (int x = -r; x <= r; x++) {
for (int z = -r; z <= r; z++) {
if (c.getWorld().isChunkLoaded(c.getX() + x, c.getZ() + z)) {
getEngine().updateChunk(c.getWorld().getChunkAt(c.getX() + x, c.getZ() + z));
}
}
@@ -381,9 +378,8 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
() -> J.a(() -> spawnIn(e, true), RNG.r.i(5, 200))));
energy += 0.3;
fixEnergy();
if(!getMantle().hasFlag(e.getX(), e.getZ(), MantleFlag.UPDATE))
{
J.a(() -> getEngine().updateChunk(e),20);
if (!getMantle().hasFlag(e.getX(), e.getZ(), MantleFlag.UPDATE)) {
J.a(() -> getEngine().updateChunk(e), 20);
}
}

View File

@@ -32,7 +32,6 @@ import lombok.Getter;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
import java.util.function.BiPredicate;
import java.util.function.Predicate;
public class IrisDecorantActuator extends EngineAssignedActuator<BlockData> {

View File

@@ -70,37 +70,27 @@ public class IrisCeilingDecorator extends IrisEngineDecorator {
decorator.getBlockDataForTop(biome, getRng(), realX, h, realZ, getData()) :
decorator.getBlockData100(biome, getRng(), realX, h, realZ, getData());
if(bd instanceof PointedDripstone)
{
if (bd instanceof PointedDripstone) {
PointedDripstone.Thickness th = PointedDripstone.Thickness.BASE;
if(stack == 2)
{
if (stack == 2) {
th = PointedDripstone.Thickness.FRUSTUM;
if(i == stack-1)
{
if (i == stack - 1) {
th = PointedDripstone.Thickness.TIP;
}
}
else
{
if(i == stack-1)
{
} else {
if (i == stack - 1) {
th = PointedDripstone.Thickness.TIP;
}
else if(i == stack-2)
{
} else if (i == stack - 2) {
th = PointedDripstone.Thickness.FRUSTUM;
}
}
bd = Material.POINTED_DRIPSTONE.createBlockData();
((PointedDripstone)bd).setThickness(th);
((PointedDripstone)bd).setVerticalDirection(BlockFace.DOWN);
((PointedDripstone) bd).setThickness(th);
((PointedDripstone) bd).setVerticalDirection(BlockFace.DOWN);
}
data.set(x, h, z, bd);

View File

@@ -27,7 +27,6 @@ import com.volmit.iris.engine.object.decoration.IrisDecorationPart;
import com.volmit.iris.engine.object.decoration.IrisDecorator;
import com.volmit.iris.util.documentation.BlockCoordinates;
import com.volmit.iris.util.hunk.Hunk;
import net.minecraft.world.level.block.PointedDripstoneBlock;
import org.bukkit.Material;
import org.bukkit.block.BlockFace;
import org.bukkit.block.data.Bisected;
@@ -112,37 +111,27 @@ public class IrisSurfaceDecorator extends IrisEngineDecorator {
break;
}
if(bd instanceof PointedDripstone)
{
if (bd instanceof PointedDripstone) {
PointedDripstone.Thickness th = PointedDripstone.Thickness.BASE;
if(stack == 2)
{
if (stack == 2) {
th = PointedDripstone.Thickness.FRUSTUM;
if(i == stack-1)
{
if (i == stack - 1) {
th = PointedDripstone.Thickness.TIP;
}
}
else
{
if(i == stack-1)
{
} else {
if (i == stack - 1) {
th = PointedDripstone.Thickness.TIP;
}
else if(i == stack-2)
{
} else if (i == stack - 2) {
th = PointedDripstone.Thickness.FRUSTUM;
}
}
bd = Material.POINTED_DRIPSTONE.createBlockData();
((PointedDripstone)bd).setThickness(th);
((PointedDripstone)bd).setVerticalDirection(BlockFace.UP);
((PointedDripstone) bd).setThickness(th);
((PointedDripstone) bd).setVerticalDirection(BlockFace.UP);
}
data.set(x, height + 1 + i, z, bd);

View File

@@ -46,7 +46,6 @@ import com.volmit.iris.util.data.B;
import com.volmit.iris.util.data.DataProvider;
import com.volmit.iris.util.documentation.BlockCoordinates;
import com.volmit.iris.util.documentation.ChunkCoordinates;
import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.function.Function2;
import com.volmit.iris.util.hunk.Hunk;
import com.volmit.iris.util.mantle.MantleFlag;
@@ -55,7 +54,6 @@ import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.matter.MatterCavern;
import com.volmit.iris.util.matter.MatterUpdate;
import com.volmit.iris.util.matter.slices.UpdateMatter;
import com.volmit.iris.util.parallel.BurstExecutor;
import com.volmit.iris.util.parallel.MultiBurst;
import com.volmit.iris.util.scheduling.ChronoLatch;
@@ -63,20 +61,20 @@ import com.volmit.iris.util.scheduling.J;
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import com.volmit.iris.util.stream.ProceduralStream;
import io.papermc.lib.PaperLib;
import org.bukkit.*;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Biome;
import org.bukkit.block.Block;
import org.bukkit.block.data.BlockData;
import org.bukkit.command.CommandSender;
import org.bukkit.craftbukkit.v1_17_R1.CraftWorld;
import org.bukkit.craftbukkit.v1_17_R1.block.CraftBlock;
import org.bukkit.generator.ChunkGenerator;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
import java.awt.*;
import java.awt.Color;
import java.util.Arrays;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -235,28 +233,25 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
@ChunkCoordinates
@Override
default void updateChunk(Chunk c) {
if(c.getWorld().isChunkLoaded(c.getX() + 1, c.getZ() + 1)
if (c.getWorld().isChunkLoaded(c.getX() + 1, c.getZ() + 1)
&& c.getWorld().isChunkLoaded(c.getX(), c.getZ() + 1)
&& c.getWorld().isChunkLoaded(c.getX() + 1, c.getZ())
&& c.getWorld().isChunkLoaded(c.getX() - 1, c.getZ() - 1)
&& c.getWorld().isChunkLoaded(c.getX(), c.getZ() - 1)
&& c.getWorld().isChunkLoaded(c.getX() - 1, c.getZ())
&& c.getWorld().isChunkLoaded(c.getX() + 1, c.getZ() - 1)
&& c.getWorld().isChunkLoaded(c.getX() - 1, c.getZ() + 1))
{
&& c.getWorld().isChunkLoaded(c.getX() - 1, c.getZ() + 1)) {
getMantle().getMantle().raiseFlag(c.getX(), c.getZ(), MantleFlag.UPDATE, () -> J.s(() -> {
PrecisionStopwatch p = PrecisionStopwatch.start();
KMap<Long, Integer> updates = new KMap<>();
RNG r = new RNG(Cache.key(c.getX(), c.getZ()));
getMantle().getMantle().iterateChunk(c.getX(), c.getZ(), MatterCavern.class, (x, y, z, v) -> {
if(B.isAir(c.getBlock(x & 15, y, z & 15).getBlockData()))
{
if (B.isAir(c.getBlock(x & 15, y, z & 15).getBlockData())) {
return;
}
updates.compute(Cache.key(x & 15, z & 15), (k,vv) -> {
if(vv != null)
{
updates.compute(Cache.key(x & 15, z & 15), (k, vv) -> {
if (vv != null) {
return Math.max(vv, y);
}
@@ -264,7 +259,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
});
});
updates.forEach((k,v) -> update(Cache.keyX(k), v, Cache.keyZ(k), c, r));
updates.forEach((k, v) -> update(Cache.keyX(k), v, Cache.keyZ(k), c, r));
getMantle().getMantle().iterateChunk(c.getX(), c.getZ(), MatterUpdate.class, (x, y, z, v) -> {
if (v != null && v.isUpdate()) {
int vx = x & 15;
@@ -322,10 +317,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
Iris.reportError(e);
}
}
}
else
{
} else {
block.setType(Material.AIR, false);
block.setBlockData(data, true);
}

View File

@@ -84,8 +84,7 @@ public interface EngineMantle extends IObjectPlacer {
return getComplex().getTrueHeightStream().get(x, z);
}
default boolean isCarved(int x, int h, int z)
{
default boolean isCarved(int x, int h, int z) {
return getMantle().get(x, h, z, MatterCavern.class) != null;
}
@@ -248,8 +247,7 @@ public interface EngineMantle extends IObjectPlacer {
default void dropCavernBlock(int x, int y, int z) {
Matter matter = getMantle().getChunk(x & 15, z & 15).get(y & 15);
if(matter != null)
{
if (matter != null) {
matter.slice(MatterCavern.class).set(x & 15, y & 15, z & 15, null);
}
}

View File

@@ -26,22 +26,16 @@ import com.volmit.iris.engine.object.basic.IrisPosition;
import com.volmit.iris.engine.object.common.IObjectPlacer;
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
import com.volmit.iris.engine.object.tile.TileData;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.collection.KSet;
import com.volmit.iris.util.mantle.Mantle;
import com.volmit.iris.util.mantle.MantleChunk;
import com.volmit.iris.util.math.INode;
import com.volmit.iris.util.math.KochanekBartelsInterpolation;
import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.PathInterpolation;
import com.volmit.iris.util.matter.Matter;
import lombok.Data;
import org.bukkit.block.TileState;
import org.bukkit.block.data.BlockData;
import org.bukkit.util.Vector;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -150,6 +144,7 @@ public class MantleWriter implements IObjectPlacer {
public void setTile(int xx, int yy, int zz, TileData<? extends TileState> tile) {
getEngineMantle().setTile(xx, yy, zz, tile);
}
/**
* Set a sphere into the mantle
*
@@ -534,8 +529,7 @@ public class MantleWriter implements IObjectPlacer {
return isWithin(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ());
}
public boolean isWithin(int x, int y, int z)
{
public boolean isWithin(int x, int y, int z) {
int cx = x >> 4;
int cz = z >> 4;
@@ -543,11 +537,7 @@ public class MantleWriter implements IObjectPlacer {
return false;
}
if (cx >= this.x - radius && cx <= this.x + radius
&& cz >= this.z - radius && cz <= this.z + radius) {
return true;
}
return false;
return cx >= this.x - radius && cx <= this.x + radius
&& cz >= this.z - radius && cz <= this.z + radius;
}
}

View File

@@ -24,10 +24,7 @@ import com.volmit.iris.engine.mantle.IrisMantleComponent;
import com.volmit.iris.engine.mantle.MantleWriter;
import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.carving.IrisCarving;
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
import com.volmit.iris.engine.object.feature.IrisFeaturePotential;
import com.volmit.iris.engine.object.regional.IrisRegion;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.documentation.ChunkCoordinates;
import com.volmit.iris.util.mantle.MantleFlag;
import com.volmit.iris.util.math.RNG;

View File

@@ -64,8 +64,7 @@ public class MantleFeatureComponent extends IrisMantleComponent {
}
private void placeZone(MantleWriter writer, RNG rng, int cx, int cz, IrisFeaturePotential i) {
if(i.hasZone(rng, cx, cz))
{
if (i.hasZone(rng, cx, cz)) {
int x = (cx << 4) + rng.nextInt(16);
int z = (cz << 4) + rng.nextInt(16);
writer.setData(x, 0, z, new IrisFeaturePositional(x, z, i.getZone()));

View File

@@ -18,7 +18,6 @@
package com.volmit.iris.engine.modifier;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.IrisEngine;
import com.volmit.iris.engine.actuator.IrisDecorantActuator;
import com.volmit.iris.engine.data.cache.Cache;
@@ -32,14 +31,11 @@ import com.volmit.iris.engine.object.decoration.IrisDecorator;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.data.B;
import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.hunk.Hunk;
import com.volmit.iris.util.mantle.Mantle;
import com.volmit.iris.util.mantle.MantleChunk;
import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.matter.MatterCavern;
import com.volmit.iris.util.scheduling.J;
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import lombok.Data;
import org.bukkit.Material;
@@ -66,8 +62,7 @@ public class IrisCarveModifier extends EngineAssignedModifier<BlockData> {
KMap<IrisPosition, MatterCavern> walls = new KMap<>();
mc.iterate(MatterCavern.class, (xx, yy, zz, c) -> {
if(yy > 256 || yy < 0)
{
if (yy > 256 || yy < 0) {
return;
}
@@ -75,27 +70,29 @@ public class IrisCarveModifier extends EngineAssignedModifier<BlockData> {
int rz = zz & 15;
BlockData current = output.get(rx, yy, rz);
if(B.isFluid(current))
{
if (B.isFluid(current)) {
return;
}
positions.compute(Cache.key(rx, rz), (k,v) -> Objects.requireNonNullElseGet(v, (Supplier<KList<Integer>>) KList::new).qadd(yy));
positions.compute(Cache.key(rx, rz), (k, v) -> Objects.requireNonNullElseGet(v, (Supplier<KList<Integer>>) KList::new).qadd(yy));
if(rz < 15 && mantle.get(xx, yy, zz + 1, MatterCavern.class) == null)
{walls.put(new IrisPosition(rx, yy, rz + 1), c);}
if (rz < 15 && mantle.get(xx, yy, zz + 1, MatterCavern.class) == null) {
walls.put(new IrisPosition(rx, yy, rz + 1), c);
}
if(rx < 15 && mantle.get(xx + 1, yy, zz, MatterCavern.class) == null)
{walls.put(new IrisPosition(rx + 1, yy, rz), c);}
if (rx < 15 && mantle.get(xx + 1, yy, zz, MatterCavern.class) == null) {
walls.put(new IrisPosition(rx + 1, yy, rz), c);
}
if(rz > 0 && mantle.get(xx, yy, zz - 1, MatterCavern.class) == null)
{walls.put(new IrisPosition(rx, yy, rz - 1), c);}
if (rz > 0 && mantle.get(xx, yy, zz - 1, MatterCavern.class) == null) {
walls.put(new IrisPosition(rx, yy, rz - 1), c);
}
if(rx > 0 && mantle.get(xx - 1, yy, zz, MatterCavern.class) == null)
{walls.put(new IrisPosition(rx - 1, yy, rz), c);}
if (rx > 0 && mantle.get(xx - 1, yy, zz, MatterCavern.class) == null) {
walls.put(new IrisPosition(rx - 1, yy, rz), c);
}
if(current.getMaterial().isAir())
{
if (current.getMaterial().isAir()) {
return;
}
@@ -107,20 +104,18 @@ public class IrisCarveModifier extends EngineAssignedModifier<BlockData> {
? getEngine().getCaveBiome(i.getX() + (x << 4), i.getZ() + (z << 4))
: getEngine().getData().getBiomeLoader().load(v.getCustomBiome());
if(biome != null)
{
if (biome != null) {
biome.setInferredType(InferredType.CAVE);
BlockData d = biome.getWall().get(rng, i.getX() + (x << 4), i.getY(), i.getZ() + (z << 4), getData());
if(d != null && B.isSolid(output.get(i.getX(), i.getY(), i.getZ()))) {
if (d != null && B.isSolid(output.get(i.getX(), i.getY(), i.getZ()))) {
output.set(i.getX(), i.getY(), i.getZ(), d);
}
}
});
positions.forEach((k, v) -> {
if(v.isEmpty())
{
if (v.isEmpty()) {
return;
}
@@ -131,19 +126,15 @@ public class IrisCarveModifier extends EngineAssignedModifier<BlockData> {
zone.setFloor(v.get(0));
int buf = v.get(0) - 1;
for(Integer i : v) {
for (Integer i : v) {
if (i < 0 || i > 255) {
continue;
}
if (i == buf + 1)
{
if (i == buf + 1) {
buf = i;
zone.ceiling = buf;
}
else if(zone.isValid())
{
} else if (zone.isValid()) {
processZone(output, mc, zone, rx, rz, rx + (x << 4), rz + (z << 4));
zone = new CaveZone();
zone.setFloor(i);
@@ -151,8 +142,7 @@ public class IrisCarveModifier extends EngineAssignedModifier<BlockData> {
}
}
if(zone.isValid())
{
if (zone.isValid()) {
processZone(output, mc, zone, rx, rz, rx + (x << 4), rz + (z << 4));
}
});
@@ -167,13 +157,11 @@ public class IrisCarveModifier extends EngineAssignedModifier<BlockData> {
int thickness = zone.airThickness();
String customBiome = "";
for(int i = zone.floor; i <= zone.ceiling; i++)
{
for (int i = zone.floor; i <= zone.ceiling; i++) {
MatterCavern cavernData = (MatterCavern) mc.getOrCreate(i >> 4).slice(MatterCavern.class)
.get(rx, i & 15, rz);
if(cavernData != null && !cavernData.getCustomBiome().isEmpty())
{
if (cavernData != null && !cavernData.getCustomBiome().isEmpty()) {
customBiome = cavernData.getCustomBiome();
break;
}
@@ -183,38 +171,33 @@ public class IrisCarveModifier extends EngineAssignedModifier<BlockData> {
? getEngine().getCaveBiome(xx, zz)
: getEngine().getData().getBiomeLoader().load(customBiome);
if(biome == null)
{
if (biome == null) {
return;
}
biome.setInferredType(InferredType.CAVE);
IrisDecorantActuator actuator = (IrisDecorantActuator) ((IrisEngine)getEngine()).getDecorantActuator();
for(IrisDecorator i : biome.getDecorators()) {
if (i.getPartOf().equals(IrisDecorationPart.NONE) && B.isSolid(output.get(rx, zone.getFloor()-1, rz))) {
IrisDecorantActuator actuator = (IrisDecorantActuator) ((IrisEngine) getEngine()).getDecorantActuator();
for (IrisDecorator i : biome.getDecorators()) {
if (i.getPartOf().equals(IrisDecorationPart.NONE) && B.isSolid(output.get(rx, zone.getFloor() - 1, rz))) {
actuator.getSurfaceDecorator().decorate(rx, rz, xx, xx, xx, zz, zz, zz, output, biome, zone.getFloor() - 1, zone.airThickness());
} else if (i.getPartOf().equals(IrisDecorationPart.CEILING) && B.isSolid(output.get(rx, zone.getCeiling()+1, rz))) {
} else if (i.getPartOf().equals(IrisDecorationPart.CEILING) && B.isSolid(output.get(rx, zone.getCeiling() + 1, rz))) {
actuator.getCeilingDecorator().decorate(rx, rz, xx, xx, xx, zz, zz, zz, output, biome, zone.getCeiling(), zone.airThickness());
}
}
KList<BlockData> blocks = biome.generateLayers(getDimension(), xx, zz, rng, 3, zone.floor, getData(), getComplex());
for(int i = 0; i < zone.floor-1; i++)
{
if(!blocks.hasIndex(i))
{
for (int i = 0; i < zone.floor - 1; i++) {
if (!blocks.hasIndex(i)) {
break;
}
if(!B.isSolid(output.get(rx, zone.floor - i - 1, rz)))
{
if (!B.isSolid(output.get(rx, zone.floor - i - 1, rz))) {
continue;
}
if(B.isOre(output.get(rx, zone.floor - i - 1, rz)))
{
if (B.isOre(output.get(rx, zone.floor - i - 1, rz))) {
continue;
}
@@ -223,45 +206,37 @@ public class IrisCarveModifier extends EngineAssignedModifier<BlockData> {
blocks = biome.generateCeilingLayers(getDimension(), xx, zz, rng, 3, zone.ceiling, getData(), getComplex());
for(int i = 0; i < zone.ceiling+1; i++)
{
if(!blocks.hasIndex(i))
{
for (int i = 0; i < zone.ceiling + 1; i++) {
if (!blocks.hasIndex(i)) {
break;
}
if(!B.isSolid(output.get(rx, zone.ceiling + i + 1, rz)))
{
if (!B.isSolid(output.get(rx, zone.ceiling + i + 1, rz))) {
continue;
}
if(B.isOre(output.get(rx, zone.ceiling + i + 1, rz)))
{
if (B.isOre(output.get(rx, zone.ceiling + i + 1, rz))) {
continue;
}
output.set(rx, zone.ceiling + i + 1, rz, blocks.get(i));
output.set(rx, zone.ceiling + i + 1, rz, blocks.get(i));
}
}
@Data
public static class CaveZone
{
public static class CaveZone {
private int ceiling = -1;
private int floor = -1;
public int airThickness()
{
public int airThickness() {
return (ceiling - floor) - 1;
}
public boolean isValid()
{
public boolean isValid() {
return floor < ceiling && ceiling - floor >= 1 && floor >= 0 && ceiling <= 255 && airThickness() > 0;
}
public String toString()
{
public String toString() {
return floor + "-" + ceiling;
}
}

View File

@@ -18,11 +18,9 @@
package com.volmit.iris.engine.modifier;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.EngineAssignedModifier;
import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.common.CaveResult;
import com.volmit.iris.util.data.B;
import com.volmit.iris.util.hunk.Hunk;
import com.volmit.iris.util.math.RNG;

View File

@@ -82,7 +82,7 @@ public class IrisPosition {
}
public boolean isLongerThan(IrisPosition s, int maxLength) {
return Math.abs(Math.pow(s.x - x,2) + Math.pow(s.y - y,2) + Math.pow(s.z - z,2)) > maxLength * maxLength;
return Math.abs(Math.pow(s.x - x, 2) + Math.pow(s.y - y, 2) + Math.pow(s.z - z, 2)) > maxLength * maxLength;
}
public Vector toVector() {

View File

@@ -59,50 +59,37 @@ public class IrisCarving {
@BlockCoordinates
public void doCarving(MantleWriter writer, RNG rng, Engine engine, int x, int y, int z) {
if(caves.isNotEmpty())
{
for(IrisCavePlacer i : caves)
{
if (caves.isNotEmpty()) {
for (IrisCavePlacer i : caves) {
i.generateCave(writer, rng, engine, x, y, z);
}
}
if(ravines.isNotEmpty())
{
for(IrisRavinePlacer i : ravines)
{
if (ravines.isNotEmpty()) {
for (IrisRavinePlacer i : ravines) {
i.generateRavine(writer, rng, engine, x, y, z);
}
}
if(spheres.isNotEmpty())
{
for(IrisSphere i : spheres)
{
if(rng.nextInt(i.getRarity()) == 0)
{
if (spheres.isNotEmpty()) {
for (IrisSphere i : spheres) {
if (rng.nextInt(i.getRarity()) == 0) {
i.generate(rng, engine, writer, x, y, z);
}
}
}
if(elipsoids.isNotEmpty())
{
for(IrisElipsoid i : elipsoids)
{
if(rng.nextInt(i.getRarity()) == 0)
{
if (elipsoids.isNotEmpty()) {
for (IrisElipsoid i : elipsoids) {
if (rng.nextInt(i.getRarity()) == 0) {
i.generate(rng, engine, writer, x, y, z);
}
}
}
if(pyramids.isNotEmpty())
{
for(IrisPyramid i : pyramids)
{
if(rng.nextInt(i.getRarity()) == 0)
{
if (pyramids.isNotEmpty()) {
for (IrisPyramid i : pyramids) {
if (rng.nextInt(i.getRarity()) == 0) {
i.generate(rng, engine, writer, x, y, z);
}
}
@@ -112,23 +99,19 @@ public class IrisCarving {
public int getMaxRange(IrisData data) {
int max = 0;
for(IrisCavePlacer i : caves)
{
for (IrisCavePlacer i : caves) {
max = Math.max(max, i.getSize(data));
}
if(elipsoids.isNotEmpty())
{
if (elipsoids.isNotEmpty()) {
max = (int) Math.max(elipsoids.stream().mapToDouble(IrisElipsoid::maxSize).max().getAsDouble(), max);
}
if(spheres.isNotEmpty())
{
if (spheres.isNotEmpty()) {
max = (int) Math.max(spheres.stream().mapToDouble(IrisSphere::maxSize).max().getAsDouble(), max);
}
if(pyramids.isNotEmpty())
{
if (pyramids.isNotEmpty()) {
max = (int) Math.max(pyramids.stream().mapToDouble(IrisPyramid::maxSize).max().getAsDouble(), max);
}

View File

@@ -18,7 +18,6 @@
package com.volmit.iris.engine.object.carving;
import com.volmit.iris.Iris;
import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.core.loader.IrisRegistrant;
import com.volmit.iris.engine.data.cache.AtomicCache;
@@ -26,14 +25,9 @@ import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.mantle.MantleWriter;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.basic.IrisPosition;
import com.volmit.iris.engine.object.basic.IrisRange;
import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.block.IrisBlockData;
import com.volmit.iris.engine.object.noise.IrisWorm;
import com.volmit.iris.engine.object.objects.IrisObjectLimit;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.data.B;
import com.volmit.iris.util.json.JSONObject;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.matter.MatterCavern;
@@ -44,9 +38,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.bukkit.block.data.BlockData;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@@ -83,9 +74,9 @@ public class IrisCave extends IrisRegistrant {
public void generate(MantleWriter writer, RNG rng, Engine engine, int x, int y, int z) {
writer.setLine(getWorm().generate(rng, engine.getData(), writer, verticalRange, x, y, z,
(at) -> fork.doCarving(writer, rng, engine, at.getX(), at.getY(), at.getZ())),
getWorm().getGirth().get(rng, x, z, engine.getData()), true,
matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome())));
(at) -> fork.doCarving(writer, rng, engine, at.getX(), at.getY(), at.getZ())),
getWorm().getGirth().get(rng, x, z, engine.getData()), true,
matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome())));
}
@Override

View File

@@ -74,8 +74,7 @@ public class IrisCavePlacer implements IRare {
return;
}
if(rng.nextInt(rarity) != 0)
{
if (rng.nextInt(rarity) != 0) {
return;
}
@@ -88,20 +87,15 @@ public class IrisCavePlacer implements IRare {
return;
}
if(y == -1)
{
int h = (int) caveStartHeight.get(rng,x, z,data);
int ma = breakSurface ? h : (int) (engine.getComplex().getHeightStream().get(x, z) - 9);
if (y == -1) {
int h = (int) caveStartHeight.get(rng, x, z, data);
int ma = breakSurface ? h : (int) (engine.getComplex().getHeightStream().get(x, z) - 9);
y = Math.min(h, ma);
}
try
{
try {
cave.generate(mantle, rng, engine, x + rng.nextInt(15), y, z + rng.nextInt(15));
}
catch(Throwable e)
{
} catch (Throwable e) {
e.printStackTrace();
fail.set(true);
}

View File

@@ -26,7 +26,6 @@ import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.block.IrisBlockData;
import com.volmit.iris.engine.object.common.IRare;
import com.volmit.iris.engine.object.noise.IrisGeneratorStyle;
import com.volmit.iris.engine.object.noise.IrisStyledRange;
@@ -38,8 +37,7 @@ import lombok.Data;
@Desc("Represents an procedural eliptical shape")
@Data
public class IrisElipsoid implements IRare
{
public class IrisElipsoid implements IRare {
@Required
@Desc("Typically a 1 in RARITY on a per fork basis")
@MinNumber(1)
@@ -60,8 +58,7 @@ public class IrisElipsoid implements IRare
private transient final AtomicCache<MatterCavern> matterNodeCache = new AtomicCache<>();
@SuppressWarnings("SuspiciousNameCombination")
public void generate(RNG rng, Engine engine, MantleWriter writer, int x, int y, int z)
{
public void generate(RNG rng, Engine engine, MantleWriter writer, int x, int y, int z) {
writer.setElipsoid(x, y, z,
xRadius.get(rng, z, y, engine.getData()),
yRadius.get(rng, x, z, engine.getData()),

View File

@@ -26,7 +26,6 @@ import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.block.IrisBlockData;
import com.volmit.iris.engine.object.common.IRare;
import com.volmit.iris.engine.object.noise.IrisGeneratorStyle;
import com.volmit.iris.engine.object.noise.IrisStyledRange;
@@ -38,8 +37,7 @@ import lombok.Data;
@Desc("Represents an procedural eliptical shape")
@Data
public class IrisPyramid implements IRare
{
public class IrisPyramid implements IRare {
@Required
@Desc("Typically a 1 in RARITY on a per fork basis")
@MinNumber(1)
@@ -53,10 +51,10 @@ public class IrisPyramid implements IRare
private IrisStyledRange baseWidth = new IrisStyledRange(1, 5, new IrisGeneratorStyle(NoiseStyle.STATIC));
private transient final AtomicCache<MatterCavern> matterNodeCache = new AtomicCache<>();
public void generate(RNG rng, Engine engine, MantleWriter writer, int x, int y, int z)
{
public void generate(RNG rng, Engine engine, MantleWriter writer, int x, int y, int z) {
writer.setPyramid(x, y, z, matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome())),
(int)baseWidth.get(rng, z, y, engine.getData()), true);
(int) baseWidth.get(rng, z, y, engine.getData()), true);
}
public double maxSize() {

View File

@@ -18,7 +18,6 @@
package com.volmit.iris.engine.object.carving;
import com.volmit.iris.Iris;
import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.core.loader.IrisRegistrant;
import com.volmit.iris.engine.data.cache.AtomicCache;
@@ -29,7 +28,6 @@ import com.volmit.iris.engine.object.annotations.MaxNumber;
import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.basic.IrisPosition;
import com.volmit.iris.engine.object.basic.IrisRange;
import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.noise.IrisShapedGeneratorStyle;
import com.volmit.iris.engine.object.noise.IrisWorm;
@@ -89,6 +87,7 @@ public class IrisRavine extends IrisRegistrant {
private double ribThickness = 3;
private transient final AtomicCache<MatterCavern> matterNodeCache = new AtomicCache<>();
@Override
public String getFolderName() {
return "ravines";
@@ -101,36 +100,32 @@ public class IrisRavine extends IrisRegistrant {
public void generate(MantleWriter writer, RNG rng, Engine engine, int x, int y, int z) {
KList<IrisPosition> pos = getWorm().generate(rng, engine.getData(), writer, null, x, y, z, (at) -> {});
KList<IrisPosition> pos = getWorm().generate(rng, engine.getData(), writer, null, x, y, z, (at) -> {
});
CNG dg = depthStyle.getGenerator().createNoCache(rng, engine.getData());
CNG bw = baseWidthStyle.getGenerator().createNoCache(rng, engine.getData());
if(pos.size() < nodeThreshold)
{
if (pos.size() < nodeThreshold) {
return;
}
for(IrisPosition p : pos)
{
for (IrisPosition p : pos) {
int rsurface = y == -1 ? engine.getComplex().getHeightStream().get(x, z).intValue() : y;
int depth = (int) Math.round(dg.fitDouble(depthStyle.getMin(), depthStyle.getMax(), p.getX(), p.getZ()));
int width = (int) Math.round(bw.fitDouble(baseWidthStyle.getMin(), baseWidthStyle.getMax(), p.getX(), p.getZ()));
int surface = (int) Math.round(rsurface - depth * 0.45);
fork.doCarving(writer, rng, engine, p.getX(), rng.i(surface-depth, surface), p.getZ());
fork.doCarving(writer, rng, engine, p.getX(), rng.i(surface - depth, surface), p.getZ());
for(int i = surface + depth; i >= surface; i--)
{
if(i % ribThickness == 0) {
for (int i = surface + depth; i >= surface; i--) {
if (i % ribThickness == 0) {
double v = width + ((((surface + depth) - i) * (angle / 360D)));
if(v <= 0.25)
{
if (v <= 0.25) {
break;
}
if(i <= ribThickness+2)
{
if (i <= ribThickness + 2) {
break;
}
@@ -138,18 +133,15 @@ public class IrisRavine extends IrisRegistrant {
}
}
for(int i = surface - depth; i <= surface; i++)
{
if(i % ribThickness == 0) {
for (int i = surface - depth; i <= surface; i++) {
if (i % ribThickness == 0) {
double v = width - ((((surface - depth) - i) * (angle / 360D)));
if(v <= 0.25)
{
if (v <= 0.25) {
break;
}
if(i <= ribThickness+2)
{
if (i <= ribThickness + 2) {
break;
}

View File

@@ -28,9 +28,6 @@ import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.engine.object.common.IRare;
import com.volmit.iris.engine.object.noise.IrisGeneratorStyle;
import com.volmit.iris.engine.object.noise.IrisStyledRange;
import com.volmit.iris.engine.object.noise.NoiseStyle;
import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -68,8 +65,7 @@ public class IrisRavinePlacer implements IRare {
return;
}
if(rng.nextInt(rarity) != 0)
{
if (rng.nextInt(rarity) != 0) {
return;
}
@@ -82,15 +78,11 @@ public class IrisRavinePlacer implements IRare {
return;
}
try
{
try {
int xx = x + rng.nextInt(15);
int zz = z + rng.nextInt(15);
ravine.generate(mantle, rng, engine, xx, y, zz);
}
catch(Throwable e)
{
} catch (Throwable e) {
e.printStackTrace();
fail.set(true);
}

View File

@@ -26,7 +26,6 @@ import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.block.IrisBlockData;
import com.volmit.iris.engine.object.common.IRare;
import com.volmit.iris.engine.object.noise.IrisGeneratorStyle;
import com.volmit.iris.engine.object.noise.IrisStyledRange;
@@ -38,8 +37,7 @@ import lombok.Data;
@Desc("Represents an procedural eliptical shape")
@Data
public class IrisSphere implements IRare
{
public class IrisSphere implements IRare {
@Required
@Desc("Typically a 1 in RARITY on a per fork basis")
@MinNumber(1)
@@ -53,9 +51,9 @@ public class IrisSphere implements IRare
private IrisStyledRange radius = new IrisStyledRange(1, 5, new IrisGeneratorStyle(NoiseStyle.STATIC));
private transient final AtomicCache<MatterCavern> matterNodeCache = new AtomicCache<>();
public void generate(RNG rng, Engine engine, MantleWriter writer, int x, int y, int z)
{
writer.setSphere(x, y, z, radius.get(rng, z, y, engine.getData()),true, matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome())));
public void generate(RNG rng, Engine engine, MantleWriter writer, int x, int y, int z) {
writer.setSphere(x, y, z, radius.get(rng, z, y, engine.getData()), true, matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome())));
}
public double maxSize() {

View File

@@ -27,7 +27,6 @@ import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.common.CaveResult;
import com.volmit.iris.engine.object.common.IRare;
import com.volmit.iris.engine.object.spawners.IrisSpawner;
import com.volmit.iris.util.collection.KList;
@@ -87,7 +86,7 @@ public class IrisEntitySpawn implements IRare {
IrisComplex comp = gen.getComplex();
IrisBiome cave = comp.getCaveBiomeStream().get(x, z);
KList<Location> r = new KList<>();
r.add( new Location(c.getWorld(), x, hf + 1, z)); // TODO CAVE HEIGHT
r.add(new Location(c.getWorld(), x, hf + 1, z)); // TODO CAVE HEIGHT
yield r.getRandom(rng);
}

View File

@@ -75,8 +75,7 @@ public class IrisGeneratorStyle {
return this;
}
public CNG createNoCache(RNG rng, IrisData data)
{
public CNG createNoCache(RNG rng, IrisData data) {
if (getExpression() != null) {
IrisExpression e = data.getExpressionLoader().load(getExpression());

View File

@@ -18,16 +18,13 @@
package com.volmit.iris.engine.object.noise;
import com.volmit.iris.Iris;
import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.engine.data.cache.AtomicCache;
import com.volmit.iris.engine.mantle.MantleWriter;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.basic.IrisPosition;
import com.volmit.iris.engine.object.basic.IrisRange;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KSet;
import com.volmit.iris.util.function.NoiseProvider;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.noise.CNG;
import lombok.AllArgsConstructor;
@@ -65,8 +62,7 @@ public class IrisWorm {
private IrisStyledRange girth = new IrisStyledRange().setMin(3).setMax(5)
.setStyle(new IrisGeneratorStyle(NoiseStyle.PERLIN));
public KList<IrisPosition> generate(RNG rng, IrisData data, MantleWriter writer, IrisRange verticalRange, int x, int y, int z, Consumer<IrisPosition> fork)
{
public KList<IrisPosition> generate(RNG rng, IrisData data, MantleWriter writer, IrisRange verticalRange, int x, int y, int z, Consumer<IrisPosition> fork) {
int itr = maxIterations;
double jx, jy, jz;
double cx = x;
@@ -79,14 +75,12 @@ public class IrisWorm {
CNG gy = xStyle.getGenerator().createNoCache(new RNG(rng.lmax()), data);
CNG gz = xStyle.getGenerator().createNoCache(new RNG(rng.lmax()), data);
while(itr-- > 0)
{
while (itr-- > 0) {
IrisPosition current = new IrisPosition(Math.round(cx), Math.round(cy), Math.round(cz));
fork.accept(current);
pos.add(current);
if(check != null)
{
if (check != null) {
check.add(current);
}
@@ -98,23 +92,19 @@ public class IrisWorm {
cz += jz;
IrisPosition next = new IrisPosition(Math.round(cx), Math.round(cy), Math.round(cz));
if(verticalRange != null && !verticalRange.contains(next.getY()))
{
if (verticalRange != null && !verticalRange.contains(next.getY())) {
break;
}
if(!writer.isWithin((int)Math.round(cx), verticalRange != null ? (int)Math.round(cy) : 5, (int)Math.round(cz)))
{
if (!writer.isWithin((int) Math.round(cx), verticalRange != null ? (int) Math.round(cy) : 5, (int) Math.round(cz))) {
break;
}
if(next.isLongerThan(start, maxDistance))
{
if (next.isLongerThan(start, maxDistance)) {
break;
}
if(check != null && check.contains(next))
{
if (check != null && check.contains(next)) {
break;
}
}

View File

@@ -464,8 +464,7 @@ public class IrisObject extends IrisRegistrant {
if (yv < 0) {
if (config.getMode().equals(ObjectPlaceMode.CENTER_HEIGHT)) {
y = (c != null ? c.getSurface() : placer.getHighest(x, z, getLoader(), config.isUnderwater())) + rty;
if(placer.isCarved(x, y, z) || placer.isCarved(x, y-1, z))
{
if (placer.isCarved(x, y, z) || placer.isCarved(x, y - 1, z)) {
bail = true;
}
} else if (config.getMode().equals(ObjectPlaceMode.MAX_HEIGHT) || config.getMode().equals(ObjectPlaceMode.STILT)) {
@@ -476,8 +475,7 @@ public class IrisObject extends IrisRegistrant {
for (int j = z - (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j <= z + (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j++) {
int h = placer.getHighest(i, j, getLoader(), config.isUnderwater()) + rty;
if(placer.isCarved(i, h, j))
{
if (placer.isCarved(i, h, j)) {
bail = true;
break;
}
@@ -495,8 +493,7 @@ public class IrisObject extends IrisRegistrant {
for (int j = z - (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j <= z + (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j += (rotatedDimensions.getBlockZ() / 2) + 1) {
int h = placer.getHighest(i, j, getLoader(), config.isUnderwater()) + rty;
if(placer.isCarved(i, h, j))
{
if (placer.isCarved(i, h, j)) {
bail = true;
break;
}
@@ -514,8 +511,7 @@ public class IrisObject extends IrisRegistrant {
for (int i = x - (rotatedDimensions.getBlockX() / 2) + offset.getBlockX(); i <= x + (rotatedDimensions.getBlockX() / 2) + offset.getBlockX(); i++) {
for (int j = z - (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j <= z + (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j++) {
int h = placer.getHighest(i, j, getLoader(), config.isUnderwater()) + rty;
if(placer.isCarved(i, h, j))
{
if (placer.isCarved(i, h, j)) {
bail = true;
break;
}
@@ -532,8 +528,7 @@ public class IrisObject extends IrisRegistrant {
for (int i = x - (rotatedDimensions.getBlockX() / 2) + offset.getBlockX(); i <= x + (rotatedDimensions.getBlockX() / 2) + offset.getBlockX(); i += (rotatedDimensions.getBlockX() / 2) + 1) {
for (int j = z - (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j <= z + (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j += (rotatedDimensions.getBlockZ() / 2) + 1) {
int h = placer.getHighest(i, j, getLoader(), config.isUnderwater()) + rty;
if(placer.isCarved(i, h, j))
{
if (placer.isCarved(i, h, j)) {
bail = true;
break;
}
@@ -544,15 +539,13 @@ public class IrisObject extends IrisRegistrant {
}
} else if (config.getMode().equals(ObjectPlaceMode.PAINT)) {
y = placer.getHighest(x, z, getLoader(), config.isUnderwater()) + rty;
if(placer.isCarved(x, y, z))
{
if (placer.isCarved(x, y, z)) {
bail = true;
}
}
} else {
y = yv;
if(placer.isCarved(x, y, z))
{
if (placer.isCarved(x, y, z)) {
bail = true;
}
}
@@ -562,8 +555,7 @@ public class IrisObject extends IrisRegistrant {
bail = placer.isCarved(x, y, z);
}
if(bail)
{
if (bail) {
return -1;
}