mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-18 10:12:53 +00:00
Reduced updates
This commit is contained in:
parent
2191b539e3
commit
c4fe14bd45
@ -23,6 +23,7 @@ import com.volmit.iris.core.loader.IrisData;
|
|||||||
import com.volmit.iris.core.service.ObjectSVC;
|
import com.volmit.iris.core.service.ObjectSVC;
|
||||||
import com.volmit.iris.core.service.StudioSVC;
|
import com.volmit.iris.core.service.StudioSVC;
|
||||||
import com.volmit.iris.core.service.WandSVC;
|
import com.volmit.iris.core.service.WandSVC;
|
||||||
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.object.IObjectPlacer;
|
import com.volmit.iris.engine.object.IObjectPlacer;
|
||||||
import com.volmit.iris.engine.object.IrisDimension;
|
import com.volmit.iris.engine.object.IrisDimension;
|
||||||
import com.volmit.iris.engine.object.IrisObject;
|
import com.volmit.iris.engine.object.IrisObject;
|
||||||
@ -138,6 +139,11 @@ public class CommandObject implements DecreeExecutor {
|
|||||||
tile.toBukkitTry(state);
|
tile.toBukkitTry(state);
|
||||||
state.update();
|
state.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Engine getEngine() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,6 +138,7 @@ public class TreeSVC implements IrisService {
|
|||||||
List<BlockState> blockStateList = new KList<>();
|
List<BlockState> blockStateList = new KList<>();
|
||||||
KMap<Location, BlockData> dataCache = new KMap<>();
|
KMap<Location, BlockData> dataCache = new KMap<>();
|
||||||
// TODO: REAL CLASSES!!!!
|
// TODO: REAL CLASSES!!!!
|
||||||
|
|
||||||
IObjectPlacer placer = new IObjectPlacer() {
|
IObjectPlacer placer = new IObjectPlacer() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -198,6 +199,11 @@ public class TreeSVC implements IrisService {
|
|||||||
public void setTile(int xx, int yy, int zz, TileData<? extends TileState> tile) {
|
public void setTile(int xx, int yy, int zz, TileData<? extends TileState> tile) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Engine getEngine() {
|
||||||
|
return engine;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
object.place(
|
object.place(
|
||||||
|
@ -95,7 +95,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
|
|||||||
|
|
||||||
public IrisWorldManager(Engine engine) {
|
public IrisWorldManager(Engine engine) {
|
||||||
super(engine);
|
super(engine);
|
||||||
chunkUpdater = new ChronoLatch(1000);
|
chunkUpdater = new ChronoLatch(3000);
|
||||||
cln = new ChronoLatch(60000);
|
cln = new ChronoLatch(60000);
|
||||||
cl = new ChronoLatch(3000);
|
cl = new ChronoLatch(3000);
|
||||||
ecl = new ChronoLatch(250);
|
ecl = new ChronoLatch(250);
|
||||||
@ -115,6 +115,11 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (getEngine().getWorld().hasRealWorld()) {
|
if (getEngine().getWorld().hasRealWorld()) {
|
||||||
|
if(getEngine().getWorld().getPlayers().isEmpty())
|
||||||
|
{
|
||||||
|
return 5000;
|
||||||
|
}
|
||||||
|
|
||||||
if (chunkUpdater.flip()) {
|
if (chunkUpdater.flip()) {
|
||||||
updateChunks();
|
updateChunks();
|
||||||
}
|
}
|
||||||
@ -156,7 +161,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
|
|||||||
onAsyncTick();
|
onAsyncTick();
|
||||||
}
|
}
|
||||||
|
|
||||||
return 250;
|
return 700;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
looper.setPriority(Thread.MIN_PRIORITY);
|
looper.setPriority(Thread.MIN_PRIORITY);
|
||||||
@ -447,9 +452,6 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
|
|||||||
}));
|
}));
|
||||||
energy += 0.3;
|
energy += 0.3;
|
||||||
fixEnergy();
|
fixEnergy();
|
||||||
if (!getMantle().hasFlag(e.getX(), e.getZ(), MantleFlag.UPDATE)) {
|
|
||||||
J.a(() -> getEngine().updateChunk(e), 20);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void spawn(IrisPosition block, IrisSpawner spawner, boolean initial) {
|
private void spawn(IrisPosition block, IrisSpawner spawner, boolean initial) {
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
package com.volmit.iris.engine.framework.placer;
|
package com.volmit.iris.engine.framework.placer;
|
||||||
|
|
||||||
import com.volmit.iris.core.loader.IrisData;
|
import com.volmit.iris.core.loader.IrisData;
|
||||||
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.object.IObjectPlacer;
|
import com.volmit.iris.engine.object.IObjectPlacer;
|
||||||
import com.volmit.iris.engine.object.IrisObjectPlacement;
|
import com.volmit.iris.engine.object.IrisObjectPlacement;
|
||||||
import com.volmit.iris.engine.object.TileData;
|
import com.volmit.iris.engine.object.TileData;
|
||||||
@ -30,11 +31,13 @@ public class HeightmapObjectPlacer implements IObjectPlacer {
|
|||||||
private final long s;
|
private final long s;
|
||||||
private final IrisObjectPlacement config;
|
private final IrisObjectPlacement config;
|
||||||
private final IObjectPlacer oplacer;
|
private final IObjectPlacer oplacer;
|
||||||
|
private final Engine engine;
|
||||||
|
|
||||||
public HeightmapObjectPlacer(RNG rng, int x, int yv, int z, IrisObjectPlacement config, IObjectPlacer oplacer) {
|
public HeightmapObjectPlacer(Engine engine, RNG rng, int x, int yv, int z, IrisObjectPlacement config, IObjectPlacer oplacer) {
|
||||||
s = rng.nextLong() + yv + z - x;
|
s = rng.nextLong() + yv + z - x;
|
||||||
this.config = config;
|
this.config = config;
|
||||||
this.oplacer = oplacer;
|
this.oplacer = oplacer;
|
||||||
|
this.engine = engine;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getHighest(int param1Int1, int param1Int2, IrisData data) {
|
public int getHighest(int param1Int1, int param1Int2, IrisData data) {
|
||||||
@ -81,4 +84,9 @@ public class HeightmapObjectPlacer implements IObjectPlacer {
|
|||||||
public void setTile(int param1Int1, int param1Int2, int param1Int3, TileData<? extends TileState> param1TileData) {
|
public void setTile(int param1Int1, int param1Int2, int param1Int3, TileData<? extends TileState> param1TileData) {
|
||||||
oplacer.setTile(param1Int1, param1Int2, param1Int3, param1TileData);
|
oplacer.setTile(param1Int1, param1Int2, param1Int3, param1TileData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Engine getEngine() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,7 @@ import com.volmit.iris.engine.object.IrisPosition;
|
|||||||
import com.volmit.iris.engine.object.TileData;
|
import com.volmit.iris.engine.object.TileData;
|
||||||
import com.volmit.iris.engine.platform.PlatformChunkGenerator;
|
import com.volmit.iris.engine.platform.PlatformChunkGenerator;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
|
import com.volmit.iris.util.context.IrisContext;
|
||||||
import com.volmit.iris.util.math.AxisAlignedBB;
|
import com.volmit.iris.util.math.AxisAlignedBB;
|
||||||
import com.volmit.iris.util.math.BlockPosition;
|
import com.volmit.iris.util.math.BlockPosition;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
@ -239,6 +240,11 @@ public class PlannedPiece {
|
|||||||
tile.toBukkitTry(state);
|
tile.toBukkitTry(state);
|
||||||
state.update();
|
state.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Engine getEngine() {
|
||||||
|
return IrisContext.get().getEngine();
|
||||||
|
}
|
||||||
}, piece.getPlacementOptions(), rng, getData());
|
}, piece.getPlacementOptions(), rng, getData());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,7 @@ import com.volmit.iris.engine.object.IrisDimension;
|
|||||||
import com.volmit.iris.engine.object.IrisPosition;
|
import com.volmit.iris.engine.object.IrisPosition;
|
||||||
import com.volmit.iris.engine.object.TileData;
|
import com.volmit.iris.engine.object.TileData;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
|
import com.volmit.iris.util.context.IrisContext;
|
||||||
import com.volmit.iris.util.data.B;
|
import com.volmit.iris.util.data.B;
|
||||||
import com.volmit.iris.util.documentation.BlockCoordinates;
|
import com.volmit.iris.util.documentation.BlockCoordinates;
|
||||||
import com.volmit.iris.util.documentation.ChunkCoordinates;
|
import com.volmit.iris.util.documentation.ChunkCoordinates;
|
||||||
@ -203,6 +204,7 @@ public interface EngineMantle extends IObjectPlacer {
|
|||||||
int xx = i + x;
|
int xx = i + x;
|
||||||
int zz = j + z;
|
int zz = j + z;
|
||||||
burst.queue(() -> {
|
burst.queue(() -> {
|
||||||
|
IrisContext.touch(getEngine().getContext());
|
||||||
MantleChunk mc = getMantle().getChunk(xx, zz);
|
MantleChunk mc = getMantle().getChunk(xx, zz);
|
||||||
|
|
||||||
for (MantleComponent k : getComponents()) {
|
for (MantleComponent k : getComponents()) {
|
||||||
|
@ -22,6 +22,7 @@ import com.google.common.collect.ImmutableList;
|
|||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.loader.IrisData;
|
import com.volmit.iris.core.loader.IrisData;
|
||||||
import com.volmit.iris.engine.data.cache.Cache;
|
import com.volmit.iris.engine.data.cache.Cache;
|
||||||
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.object.IObjectPlacer;
|
import com.volmit.iris.engine.object.IObjectPlacer;
|
||||||
import com.volmit.iris.engine.object.IrisPosition;
|
import com.volmit.iris.engine.object.IrisPosition;
|
||||||
import com.volmit.iris.engine.object.TileData;
|
import com.volmit.iris.engine.object.TileData;
|
||||||
@ -201,6 +202,11 @@ public class MantleWriter implements IObjectPlacer {
|
|||||||
getEngineMantle().setTile(xx, yy, zz, tile);
|
getEngineMantle().setTile(xx, yy, zz, tile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Engine getEngine() {
|
||||||
|
return getEngineMantle().getEngine();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a sphere into the mantle
|
* Set a sphere into the mantle
|
||||||
*
|
*
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object;
|
||||||
|
|
||||||
import com.volmit.iris.core.loader.IrisData;
|
import com.volmit.iris.core.loader.IrisData;
|
||||||
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import org.bukkit.block.TileState;
|
import org.bukkit.block.TileState;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
|
||||||
@ -44,4 +45,6 @@ public interface IObjectPlacer {
|
|||||||
boolean isDebugSmartBore();
|
boolean isDebugSmartBore();
|
||||||
|
|
||||||
void setTile(int xx, int yy, int zz, TileData<? extends TileState> tile);
|
void setTile(int xx, int yy, int zz, TileData<? extends TileState> tile);
|
||||||
|
|
||||||
|
Engine getEngine();
|
||||||
}
|
}
|
||||||
|
@ -22,9 +22,11 @@ import com.volmit.iris.Iris;
|
|||||||
import com.volmit.iris.core.loader.IrisData;
|
import com.volmit.iris.core.loader.IrisData;
|
||||||
import com.volmit.iris.core.loader.IrisRegistrant;
|
import com.volmit.iris.core.loader.IrisRegistrant;
|
||||||
import com.volmit.iris.engine.data.cache.AtomicCache;
|
import com.volmit.iris.engine.data.cache.AtomicCache;
|
||||||
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.framework.placer.HeightmapObjectPlacer;
|
import com.volmit.iris.engine.framework.placer.HeightmapObjectPlacer;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.collection.KMap;
|
import com.volmit.iris.util.collection.KMap;
|
||||||
|
import com.volmit.iris.util.context.IrisContext;
|
||||||
import com.volmit.iris.util.data.B;
|
import com.volmit.iris.util.data.B;
|
||||||
import com.volmit.iris.util.interpolation.IrisInterpolation;
|
import com.volmit.iris.util.interpolation.IrisInterpolation;
|
||||||
import com.volmit.iris.util.json.JSONObject;
|
import com.volmit.iris.util.json.JSONObject;
|
||||||
@ -32,6 +34,7 @@ import com.volmit.iris.util.math.AxisAlignedBB;
|
|||||||
import com.volmit.iris.util.math.BlockPosition;
|
import com.volmit.iris.util.math.BlockPosition;
|
||||||
import com.volmit.iris.util.math.Position2;
|
import com.volmit.iris.util.math.Position2;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
|
import com.volmit.iris.util.matter.MatterMarker;
|
||||||
import com.volmit.iris.util.plugin.VolmitSender;
|
import com.volmit.iris.util.plugin.VolmitSender;
|
||||||
import com.volmit.iris.util.scheduling.IrisLock;
|
import com.volmit.iris.util.scheduling.IrisLock;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
@ -484,7 +487,7 @@ public class IrisObject extends IrisRegistrant {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int place(int x, int yv, int z, IObjectPlacer oplacer, IrisObjectPlacement config, RNG rng, Consumer<BlockPosition> listener, CarveResult c, IrisData rdata) {
|
public int place(int x, int yv, int z, IObjectPlacer oplacer, IrisObjectPlacement config, RNG rng, Consumer<BlockPosition> listener, CarveResult c, IrisData rdata) {
|
||||||
IObjectPlacer placer = (config.getHeightmap() != null) ? new HeightmapObjectPlacer(rng, x, yv, z, config, oplacer) : oplacer;
|
IObjectPlacer placer = (config.getHeightmap() != null) ? new HeightmapObjectPlacer(IrisContext.get().getEngine(), rng, x, yv, z, config, oplacer) : oplacer;
|
||||||
|
|
||||||
if (config.isSmartBore()) {
|
if (config.isSmartBore()) {
|
||||||
ensureSmartBored(placer.isDebugSmartBore());
|
ensureSmartBored(placer.isDebugSmartBore());
|
||||||
@ -634,7 +637,36 @@ public class IrisObject extends IrisRegistrant {
|
|||||||
int lowest = Integer.MAX_VALUE;
|
int lowest = Integer.MAX_VALUE;
|
||||||
y += yrand;
|
y += yrand;
|
||||||
readLock.lock();
|
readLock.lock();
|
||||||
|
|
||||||
|
KMap<BlockVector, String> markers = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
if(config.getMarkers().isNotEmpty() && placer.getEngine() != null)
|
||||||
|
{
|
||||||
|
markers = new KMap<>();
|
||||||
|
for(IrisObjectMarker j : config.getMarkers())
|
||||||
|
{
|
||||||
|
int max = j.getMaximumMarkers();
|
||||||
|
|
||||||
|
for(BlockVector i : getBlocks().k().shuffle())
|
||||||
|
{
|
||||||
|
BlockData data = getBlocks().get(i);
|
||||||
|
|
||||||
|
for (BlockData k : j.getMark(rdata)) {
|
||||||
|
if (j.isExact() ? k.matches(data) : k.getMaterial().equals(data.getMaterial())) {
|
||||||
|
boolean a = !blocks.containsKey(new BlockVector(i.clone().add(new BlockVector(0, 1, 0))));
|
||||||
|
boolean fff = !blocks.containsKey(new BlockVector(i.clone().add(new BlockVector(0, 2, 0))));
|
||||||
|
|
||||||
|
if((j.isEmptyAbove() && a && fff) || !j.isEmptyAbove())
|
||||||
|
{
|
||||||
|
markers.put(i, j.getMarker());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (BlockVector g : getBlocks().keySet()) {
|
for (BlockVector g : getBlocks().keySet()) {
|
||||||
BlockData d;
|
BlockData d;
|
||||||
TileData<? extends TileState> tile = null;
|
TileData<? extends TileState> tile = null;
|
||||||
@ -720,6 +752,11 @@ public class IrisObject extends IrisRegistrant {
|
|||||||
listener.accept(new BlockPosition(xx, yy, zz));
|
listener.accept(new BlockPosition(xx, yy, zz));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(markers != null && markers.containsKey(g))
|
||||||
|
{
|
||||||
|
placer.getEngine().getMantle().getMantle().set(xx,yy,zz,new MatterMarker(markers.get(g)));
|
||||||
|
}
|
||||||
|
|
||||||
if (!data.getMaterial().equals(Material.AIR) && !data.getMaterial().equals(Material.CAVE_AIR)) {
|
if (!data.getMaterial().equals(Material.AIR) && !data.getMaterial().equals(Material.CAVE_AIR)) {
|
||||||
placer.set(xx, yy, zz, data);
|
placer.set(xx, yy, zz, data);
|
||||||
|
|
||||||
|
@ -18,10 +18,13 @@
|
|||||||
|
|
||||||
package com.volmit.iris.engine.object;
|
package com.volmit.iris.engine.object;
|
||||||
|
|
||||||
|
import com.volmit.iris.core.loader.IrisData;
|
||||||
|
import com.volmit.iris.engine.data.cache.AtomicCache;
|
||||||
import com.volmit.iris.engine.object.annotations.ArrayType;
|
import com.volmit.iris.engine.object.annotations.ArrayType;
|
||||||
import com.volmit.iris.engine.object.annotations.Desc;
|
import com.volmit.iris.engine.object.annotations.Desc;
|
||||||
import com.volmit.iris.engine.object.annotations.MaxNumber;
|
import com.volmit.iris.engine.object.annotations.MaxNumber;
|
||||||
import com.volmit.iris.engine.object.annotations.MinNumber;
|
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.annotations.Required;
|
||||||
import com.volmit.iris.engine.object.annotations.Snippet;
|
import com.volmit.iris.engine.object.annotations.Snippet;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
@ -29,6 +32,7 @@ import lombok.AllArgsConstructor;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
import org.bukkit.block.data.BlockData;
|
||||||
|
|
||||||
@Snippet("object-marker")
|
@Snippet("object-marker")
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
@ -47,11 +51,33 @@ public class IrisObjectMarker {
|
|||||||
@Desc("The maximum amount of markers to place. Use these sparingly!")
|
@Desc("The maximum amount of markers to place. Use these sparingly!")
|
||||||
private int maximumMarkers = 8;
|
private int maximumMarkers = 8;
|
||||||
|
|
||||||
@MinNumber(0.01)
|
|
||||||
@MaxNumber(1)
|
|
||||||
@Desc("The percentage of blocks in this object to check.")
|
|
||||||
private double checkRatio = 0.33;
|
|
||||||
|
|
||||||
@Desc("If true, markers will only be placed here if there is 2 air blocks above it.")
|
@Desc("If true, markers will only be placed here if there is 2 air blocks above it.")
|
||||||
private boolean emptyAbove = true;
|
private boolean emptyAbove = true;
|
||||||
|
|
||||||
|
@Desc("If true, markers will only be placed if the block matches the mark list perfectly.")
|
||||||
|
private boolean exact = false;
|
||||||
|
|
||||||
|
@Required
|
||||||
|
@RegistryListResource(IrisMarker.class)
|
||||||
|
@Desc("The marker to add")
|
||||||
|
private String marker;
|
||||||
|
|
||||||
|
private final transient AtomicCache<KList<BlockData>> findData = new AtomicCache<>();
|
||||||
|
|
||||||
|
public KList<BlockData> getMark(IrisData rdata) {
|
||||||
|
return findData.aquire(() ->
|
||||||
|
{
|
||||||
|
KList<BlockData> b = new KList<>();
|
||||||
|
|
||||||
|
for (IrisBlockData i : mark) {
|
||||||
|
BlockData bx = i.getBlockData(rdata);
|
||||||
|
|
||||||
|
if (bx != null) {
|
||||||
|
b.add(bx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return b;
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -82,6 +82,9 @@ public class IrisObjectPlacement {
|
|||||||
@MinNumber(0)
|
@MinNumber(0)
|
||||||
@Desc("When bore is enabled, expand max-y of the cuboid it removes")
|
@Desc("When bore is enabled, expand max-y of the cuboid it removes")
|
||||||
private int boreExtendMaxY = 0;
|
private int boreExtendMaxY = 0;
|
||||||
|
@ArrayType(min = 1,type = IrisObjectMarker.class)
|
||||||
|
@Desc("Add markers to blocks in this object")
|
||||||
|
private KList<IrisObjectMarker> markers = new KList<>();
|
||||||
@MaxNumber(64)
|
@MaxNumber(64)
|
||||||
@MinNumber(-1)
|
@MinNumber(-1)
|
||||||
@Desc("When bore is enabled, lower min-y of the cuboid it removes")
|
@Desc("When bore is enabled, lower min-y of the cuboid it removes")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user