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-24 22:28:33 -04:00
parent 432e95e4ec
commit 8df789ae34
84 changed files with 404 additions and 786 deletions

View File

@@ -19,7 +19,6 @@
package com.volmit.iris.engine;
import com.google.common.util.concurrent.AtomicDouble;
import com.google.gson.Gson;
import com.volmit.iris.Iris;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.actuator.IrisTerrainNormalActuator;
@@ -32,13 +31,10 @@ import com.volmit.iris.engine.object.decoration.IrisDecorationPart;
import com.volmit.iris.engine.object.decoration.IrisDecorator;
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
import com.volmit.iris.engine.object.noise.IrisGenerator;
import com.volmit.iris.engine.object.noise.IrisInterpolator;
import com.volmit.iris.engine.object.noise.IrisShapedGeneratorStyle;
import com.volmit.iris.engine.object.regional.IrisRegion;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.data.DataProvider;
import com.volmit.iris.util.function.NoiseProvider;
import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.noise.CNG;
@@ -49,7 +45,6 @@ import org.bukkit.Material;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
import java.lang.reflect.Field;
import java.util.List;
import java.util.UUID;

View File

@@ -30,7 +30,10 @@ import com.volmit.iris.engine.actuator.IrisTerrainNormalActuator;
import com.volmit.iris.engine.data.cache.AtomicCache;
import com.volmit.iris.engine.framework.*;
import com.volmit.iris.engine.mantle.EngineMantle;
import com.volmit.iris.engine.modifier.*;
import com.volmit.iris.engine.modifier.IrisCaveModifier;
import com.volmit.iris.engine.modifier.IrisDepositModifier;
import com.volmit.iris.engine.modifier.IrisPostModifier;
import com.volmit.iris.engine.modifier.IrisRavineModifier;
import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.biome.IrisBiomePaletteLayer;
import com.volmit.iris.engine.object.decoration.IrisDecorator;
@@ -41,22 +44,16 @@ import com.volmit.iris.util.atomics.AtomicRollingSequence;
import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.context.IrisContext;
import com.volmit.iris.util.documentation.BlockCoordinates;
import com.volmit.iris.util.documentation.ChunkCoordinates;
import com.volmit.iris.util.format.C;
import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.hunk.Hunk;
import com.volmit.iris.util.io.IO;
import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.math.RollingSequence;
import com.volmit.iris.util.scheduling.ChronoLatch;
import com.volmit.iris.util.scheduling.J;
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import lombok.Data;
import lombok.EqualsAndHashCode;
import net.minecraft.world.level.block.state.IBlockData;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Biome;
@@ -65,7 +62,6 @@ import org.bukkit.command.CommandSender;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
@@ -136,13 +132,12 @@ public class IrisEngine implements Engine {
}
private void tickRandomPlayer() {
if(effects != null) {
if (effects != null) {
effects.tickRandomPlayer();
}
}
private void prehotload()
{
private void prehotload() {
worldManager.close();
complex.close();
execution.close();
@@ -156,10 +151,8 @@ public class IrisEngine implements Engine {
effects.close();
}
private void setupEngine()
{
try
{
private void setupEngine() {
try {
Iris.debug("Setup Engine " + getCacheID());
cacheId = RNG.r.nextInt();
worldManager = new IrisWorldManager(this);
@@ -174,10 +167,7 @@ public class IrisEngine implements Engine {
postModifier = new IrisPostModifier(this);
effects = new IrisEngineEffects(this);
J.a(this::computeBiomeMaxes);
}
catch(Throwable e)
{
} catch (Throwable e) {
Iris.error("FAILED TO SETUP ENGINE!");
e.printStackTrace();
}
@@ -400,8 +390,7 @@ public class IrisEngine implements Engine {
@BlockCoordinates
@Override
public void generate(int x, int z, Hunk<BlockData> vblocks, Hunk<Biome> vbiomes, boolean multicore) throws WrongEngineBroException {
if(closed)
{
if (closed) {
throw new WrongEngineBroException();
}
@@ -412,17 +401,13 @@ public class IrisEngine implements Engine {
PrecisionStopwatch p = PrecisionStopwatch.start();
Hunk<BlockData> blocks = vblocks.listen((xx, y, zz, t) -> catchBlockUpdates(x + xx, y + getMinHeight(), z + zz, t));
if(multicore)
{
if (multicore) {
for (int i = 0; i < 16; i++) {
for (int j = 0; j < 16; j++) {
blocks.set(i, 0, j, Material.RED_GLAZED_TERRACOTTA.createBlockData());
}
}
}
else
{
} else {
getMantle().generateMatter(x >> 4, z >> 4, multicore);
burst().burst(multicore,
@@ -444,7 +429,6 @@ public class IrisEngine implements Engine {
}
getMetrics().getTotal().put(p.getMilliseconds());
generated.incrementAndGet();
recycle();

View File

@@ -18,7 +18,6 @@
package com.volmit.iris.engine;
import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.data.cache.AtomicCache;
import com.volmit.iris.engine.framework.Engine;
@@ -29,7 +28,6 @@ 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.deposits.IrisDepositGenerator;
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
import com.volmit.iris.engine.object.feature.IrisFeaturePotential;
import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructurePlacement;
import com.volmit.iris.engine.object.objects.IrisObject;
@@ -39,21 +37,14 @@ import com.volmit.iris.engine.object.regional.IrisRegion;
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.documentation.BlockCoordinates;
import com.volmit.iris.util.documentation.ChunkCoordinates;
import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.mantle.Mantle;
import com.volmit.iris.util.mantle.MantleFlag;
import com.volmit.iris.util.parallel.BurstExecutor;
import com.volmit.iris.util.stream.ProceduralStream;
import com.volmit.iris.util.stream.interpolation.Interpolated;
import com.volmit.iris.util.stream.utility.CachedStream2D;
import lombok.Data;
import org.bukkit.util.BlockVector;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;

View File

@@ -39,7 +39,6 @@ import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.scheduling.ChronoLatch;
import com.volmit.iris.util.scheduling.J;
import com.volmit.iris.util.scheduling.Looper;
import io.papermc.lib.PaperLib;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.bukkit.Chunk;
@@ -99,10 +98,8 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
interrupt();
}
if(getEngine().getWorld().hasRealWorld())
{
if(chunkUpdater.flip())
{
if (getEngine().getWorld().hasRealWorld()) {
if (chunkUpdater.flip()) {
updateChunks();
}
@@ -152,8 +149,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
}
private void updateChunks() {
for(Player i : getEngine().getWorld().realWorld().getPlayers())
{
for (Player i : getEngine().getWorld().realWorld().getPlayers()) {
J.s(() -> {
Chunk c = i.getLocation().getChunk();
J.a(() -> getEngine().updateChunk(c));

View File

@@ -26,12 +26,10 @@ import com.volmit.iris.engine.framework.EngineAssignedActuator;
import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.biome.IrisBiomeCustom;
import com.volmit.iris.util.documentation.BlockCoordinates;
import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.hunk.Hunk;
import com.volmit.iris.util.hunk.view.BiomeGridHunkView;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.parallel.BurstExecutor;
import com.volmit.iris.util.parallel.MultiBurst;
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import org.bukkit.block.Biome;
import org.bukkit.generator.ChunkGenerator;

View File

@@ -18,7 +18,6 @@
package com.volmit.iris.engine.actuator;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.decorator.*;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.EngineAssignedActuator;
@@ -26,7 +25,6 @@ import com.volmit.iris.engine.framework.EngineDecorator;
import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.carve.IrisCaveLayer;
import com.volmit.iris.util.documentation.BlockCoordinates;
import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.hunk.Hunk;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.parallel.BurstExecutor;
@@ -35,7 +33,6 @@ import lombok.Getter;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.BiPredicate;
import java.util.function.Predicate;
@@ -99,7 +96,7 @@ public class IrisDecorantActuator extends EngineAssignedActuator<BlockData> {
int realX = (int) Math.round(modX(x + finalI));
int realZ;
IrisBiome biome, cave;
for (int j=0; j < output.getDepth(); j++) {
for (int j = 0; j < output.getDepth(); j++) {
boolean solid, liquid;
int emptyFor = 0;
int liquidFor = 0;
@@ -113,8 +110,7 @@ public class IrisDecorantActuator extends EngineAssignedActuator<BlockData> {
continue;
}
if(height < getDimension().getFluidHeight())
{
if (height < getDimension().getFluidHeight()) {
getSeaSurfaceDecorator().decorate(finalI, j,
realX, (int) Math.round(modX(x + finalI + 1)), (int) Math.round(modX(x + finalI - 1)),
realZ, (int) Math.round(modZ(z + j + 1)), (int) Math.round(modZ(z + j - 1)),

View File

@@ -18,11 +18,9 @@
package com.volmit.iris.engine.actuator;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.EngineAssignedActuator;
import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.noise.IrisShapedGeneratorStyle;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.documentation.BlockCoordinates;
import com.volmit.iris.util.hunk.Hunk;
@@ -66,8 +64,7 @@ public class IrisTerrainNormalActuator extends EngineAssignedActuator<BlockData>
getEngine().getMetrics().getTerrain().put(p.getMilliseconds());
}
private int fluidOrHeight(int height)
{
private int fluidOrHeight(int height) {
return Math.max(getDimension().getFluidHeight(), height);
}
@@ -97,7 +94,7 @@ public class IrisTerrainNormalActuator extends EngineAssignedActuator<BlockData>
KList<BlockData> blocks = null;
KList<BlockData> fblocks = null;
int depth,fdepth;
int depth, fdepth;
for (int i = hf; i >= 0; i--) {
if (i >= h.getHeight()) {

View File

@@ -45,49 +45,35 @@ public class AtomicCache<T> {
public void reset() {
t.set(null);
if(nullSupport)
{
if (nullSupport) {
set.set(false);
}
}
public T aquire(Supplier<T> t) {
if(this.t.get() != null)
{
if (this.t.get() != null) {
return this.t.get();
}
else if(nullSupport && set.get())
{
} else if (nullSupport && set.get()) {
return null;
}
lock.lock();
if(this.t.get() != null)
{
if (this.t.get() != null) {
lock.unlock();
return this.t.get();
}
else if(nullSupport && set.get())
{
} else if (nullSupport && set.get()) {
lock.unlock();
return null;
}
try
{
try {
this.t.set(t.get());
if(nullSupport)
{
if (nullSupport) {
set.set(true);
}
}
catch(Throwable e)
{
} catch (Throwable e) {
Iris.error("Atomic cache failure!");
e.printStackTrace();
}

View File

@@ -92,8 +92,7 @@ public class MCATerrainChunk implements TerrainChunk {
return;
}
if(blockData == null)
{
if (blockData == null) {
Iris.error("NULL BD");
}

View File

@@ -18,7 +18,6 @@
package com.volmit.iris.engine.decorator;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.data.cache.Cache;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.object.biome.IrisBiome;

View File

@@ -21,8 +21,6 @@ package com.volmit.iris.engine.framework;
import com.volmit.iris.util.math.RNG;
import org.bukkit.Chunk;
import org.bukkit.block.data.BlockData;
import org.bukkit.generator.LimitedRegion;
import org.bukkit.generator.WorldInfo;
public interface BlockUpdater {

View File

@@ -45,10 +45,8 @@ 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.Mantle;
import com.volmit.iris.util.mantle.MantleFlag;
import com.volmit.iris.util.math.BlockPosition;
import com.volmit.iris.util.math.M;
@@ -60,7 +58,10 @@ 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;
@@ -70,7 +71,6 @@ 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;
@@ -393,8 +393,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
items.addAll(i.getLoot(debug, items.isEmpty(), rng, slot, x, y, z, b + b, mgf + b));
}
if(PaperLib.isPaper() && getWorld().hasRealWorld())
{
if (PaperLib.isPaper() && getWorld().hasRealWorld()) {
PaperLib.getChunkAtAsync(getWorld().realWorld(), x >> 4, z >> 4).thenAccept((c) -> {
Runnable r = () -> {
for (ItemStack i : items) {
@@ -404,20 +403,13 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
scramble(inv, rng);
};
if(Bukkit.isPrimaryThread())
{
if (Bukkit.isPrimaryThread()) {
r.run();
}
else
{
} else {
J.s(r);
}
});
}
else
{
} else {
for (ItemStack i : items) {
inv.addItem(i);
}

View File

@@ -18,7 +18,6 @@
package com.volmit.iris.engine.framework;
import com.volmit.iris.Iris;
import com.volmit.iris.util.documentation.BlockCoordinates;
import com.volmit.iris.util.hunk.Hunk;

View File

@@ -18,7 +18,6 @@
package com.volmit.iris.engine.framework;
import com.volmit.iris.Iris;
import com.volmit.iris.util.documentation.BlockCoordinates;
import com.volmit.iris.util.hunk.Hunk;

View File

@@ -80,8 +80,7 @@ public abstract class EngineAssignedWorldManager extends EngineAssignedComponent
Iris.debug("Ps: " + p.size());
for(Position2 i : p)
{
for (Position2 i : p) {
Iris.debug("- " + i.getX() + " " + i.getZ());
}

View File

@@ -33,8 +33,7 @@ public interface EngineComponent {
String getName();
default MultiBurst burst()
{
default MultiBurst burst() {
return getEngine().burst();
}

View File

@@ -18,7 +18,6 @@
package com.volmit.iris.engine.framework;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.object.common.IrisWorld;
import com.volmit.iris.engine.object.dimensional.IrisDimension;

View File

@@ -21,11 +21,8 @@ package com.volmit.iris.engine.jigsaw;
import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap;
import com.volmit.iris.Iris;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.core.tools.IrisToolbelt;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.object.basic.IrisPosition;
import com.volmit.iris.engine.object.common.IObjectPlacer;
import com.volmit.iris.engine.object.entity.IrisEntity;
import com.volmit.iris.engine.object.feature.IrisFeature;
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
import com.volmit.iris.engine.object.jigsaw.IrisJigsawPiece;
@@ -38,9 +35,7 @@ import com.volmit.iris.util.mantle.Mantle;
import com.volmit.iris.util.math.RNG;
import lombok.Data;
import org.bukkit.Axis;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Entity;
import java.util.function.Consumer;
@@ -116,20 +111,13 @@ public class PlannedStructure {
int offset = i.getPosition().getY() - startHeight;
int height = 0;
if(i.getStructure().getStructure().getLockY() == -1)
{
if(i.getStructure().getStructure().getOverrideYRange() != null)
{
height = (int)i.getStructure().getStructure().getOverrideYRange().get(rng, xx, zz, getData());
}
else
{
if (i.getStructure().getStructure().getLockY() == -1) {
if (i.getStructure().getStructure().getOverrideYRange() != null) {
height = (int) i.getStructure().getStructure().getOverrideYRange().get(rng, xx, zz, getData());
} else {
height = placer.getHighest(xx, zz, getData());
}
}
else{
} else {
height = i.getStructure().getStructure().getLockY();
}
@@ -244,8 +232,7 @@ public class PlannedStructure {
}
private boolean generateRotatedPiece(PlannedPiece piece, IrisJigsawPieceConnector pieceConnector, IrisJigsawPiece idea, IrisObjectRotation rotation) {
if (!idea.getPlacementOptions().getRotation().isEnabled())
{
if (!idea.getPlacementOptions().getRotation().isEnabled()) {
rotation = piece.getRotation();
}

View File

@@ -33,17 +33,13 @@ import com.volmit.iris.util.documentation.BlockCoordinates;
import com.volmit.iris.util.documentation.ChunkCoordinates;
import com.volmit.iris.util.hunk.Hunk;
import com.volmit.iris.util.mantle.Mantle;
import com.volmit.iris.util.mantle.MantleFlag;
import com.volmit.iris.util.noise.CNG;
import com.volmit.iris.util.parallel.BurstExecutor;
import com.volmit.iris.util.parallel.MultiBurst;
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import org.bukkit.Chunk;
import org.bukkit.block.TileState;
import org.bukkit.block.data.BlockData;
import java.util.List;
import java.util.concurrent.*;
import java.util.function.Consumer;
// TODO: MOVE PLACER OUT OF MATTER INTO ITS OWN THING
@@ -181,8 +177,7 @@ public interface EngineMantle extends IObjectPlacer {
KList<Runnable> post = new KList<>();
Consumer<Runnable> c = (i) -> {
synchronized (post)
{
synchronized (post) {
post.add(i);
}
};
@@ -201,8 +196,7 @@ public interface EngineMantle extends IObjectPlacer {
burst.complete();
while(!post.isEmpty())
{
while (!post.isEmpty()) {
KList<Runnable> px = post.copy();
post.clear();
burst().burst(multicore, px);

View File

@@ -20,7 +20,6 @@ package com.volmit.iris.engine.mantle;
import com.volmit.iris.Iris;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.IrisEngineMantle;
import com.volmit.iris.engine.data.cache.Cache;
import com.volmit.iris.engine.object.common.IObjectPlacer;
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
@@ -34,8 +33,7 @@ import org.bukkit.block.TileState;
import org.bukkit.block.data.BlockData;
@Data
public class MantleWriter implements IObjectPlacer
{
public class MantleWriter implements IObjectPlacer {
private final EngineMantle engineMantle;
private final Mantle mantle;
private final KMap<Long, MantleChunk> cachedChunks;
@@ -43,8 +41,7 @@ public class MantleWriter implements IObjectPlacer
private final int x;
private final int z;
public MantleWriter(EngineMantle engineMantle, Mantle mantle, int x, int z, int radius)
{
public MantleWriter(EngineMantle engineMantle, Mantle mantle, int x, int z, int radius) {
this.engineMantle = engineMantle;
this.mantle = mantle;
this.cachedChunks = new KMap<>();
@@ -59,8 +56,7 @@ public class MantleWriter implements IObjectPlacer
}
}
public <T> void setData(int x, int y, int z, T t)
{
public <T> void setData(int x, int y, int z, T t) {
int cx = x >> 4;
int cz = z >> 4;
@@ -68,31 +64,22 @@ public class MantleWriter implements IObjectPlacer
return;
}
if(cx >= this.x - radius && cx <= this.x + radius
&& cz >= this.z - radius && cz <= this.z + radius)
{
if (cx >= this.x - radius && cx <= this.x + radius
&& cz >= this.z - radius && cz <= this.z + radius) {
MantleChunk chunk = cachedChunks.get(Cache.key(cx, cz));
if(chunk == null)
{
if (chunk == null) {
Iris.error("Mantle Writer Accessed " + cx + "," + cz + " and came up null (and yet within bounds!)");
return;
}
if(t instanceof IrisFeaturePositional)
{
if (t instanceof IrisFeaturePositional) {
chunk.addFeature((IrisFeaturePositional) t);
}
else
{
} else {
Matter matter = chunk.getOrCreate(y >> 4);
matter.slice(matter.getClass(t)).set(x & 15, y & 15, z & 15, t);
}
}
else
{
} else {
Iris.error("Mantle Writer[" + this.x + "," + this.z + ",R" + this.radius + "] Tried to access " + x + "," + y + "," + z + " (Chunk " + cx + "," + cz + ") which is OUT OF BOUNDS!");
}
}
@@ -144,6 +131,6 @@ public class MantleWriter implements IObjectPlacer
@Override
public void setTile(int xx, int yy, int zz, TileData<? extends TileState> tile) {
getEngineMantle().setTile(xx,yy,zz,tile);
getEngineMantle().setTile(xx, yy, zz, tile);
}
}

View File

@@ -18,7 +18,6 @@
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;
@@ -26,11 +25,9 @@ import com.volmit.iris.engine.object.deposits.IrisDepositGenerator;
import com.volmit.iris.engine.object.objects.IrisObject;
import com.volmit.iris.engine.object.regional.IrisRegion;
import com.volmit.iris.util.data.HeightMap;
import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.hunk.Hunk;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.parallel.BurstExecutor;
import com.volmit.iris.util.parallel.MultiBurst;
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import org.bukkit.block.data.BlockData;
import org.bukkit.util.BlockVector;

View File

@@ -19,26 +19,14 @@
package com.volmit.iris.engine.modifier;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.data.cache.AtomicCache;
import com.volmit.iris.engine.data.cache.Cache;
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.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.function.*;
import com.volmit.iris.util.hunk.Hunk;
import com.volmit.iris.util.hunk.storage.ArrayHunk;
import com.volmit.iris.util.math.Average;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.math.RollingSequence;
import com.volmit.iris.util.parallel.BurstExecutor;
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import com.volmit.iris.util.stream.ProceduralStream;
import com.volmit.iris.util.stream.interpolation.Interpolated;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
import org.bukkit.block.data.Levelled;
@@ -46,8 +34,6 @@ import org.bukkit.block.data.Waterlogged;
import org.bukkit.block.data.type.Slab;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;
import java.util.function.Supplier;
public class IrisPostModifier extends EngineAssignedModifier<BlockData> {
private static final BlockData AIR = B.get("AIR");

View File

@@ -54,8 +54,9 @@ public class IrisPosition {
public IrisPosition(Vector v) {
this(v.getBlockX(), v.getBlockY(), v.getBlockZ());
}
public IrisPosition(double x, double y, double z) {
this((int)x,(int)y,(int)z);
this((int) x, (int) y, (int) z);
}

View File

@@ -35,7 +35,6 @@ import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructurePlacement;
import com.volmit.iris.engine.object.loot.IrisLootReference;
import com.volmit.iris.engine.object.meta.IrisEffect;
import com.volmit.iris.engine.object.noise.IrisGeneratorStyle;
import com.volmit.iris.engine.object.noise.IrisShapedGeneratorStyle;
import com.volmit.iris.engine.object.noise.IrisSlopeClip;
import com.volmit.iris.engine.object.noise.NoiseStyle;
import com.volmit.iris.engine.object.objects.IrisObject;

View File

@@ -18,26 +18,16 @@
package com.volmit.iris.engine.object.cave;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.core.project.loader.IrisRegistrant;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.noise.IrisWorm;
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.mantle.Mantle;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.noise.Worm;
import com.volmit.iris.util.noise.Worm3;
import com.volmit.iris.util.noise.WormIterator3;
import com.volmit.iris.util.plugin.VolmitSender;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.bukkit.block.data.BlockData;
import org.bukkit.util.Vector;
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)

View File

@@ -33,13 +33,11 @@ import com.volmit.iris.util.mantle.Mantle;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.noise.Worm3;
import com.volmit.iris.util.noise.WormIterator3;
import com.volmit.iris.util.plugin.VolmitSender;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.bukkit.block.data.BlockData;
import org.bukkit.util.BlockVector;
import org.bukkit.util.Vector;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -66,22 +64,18 @@ public class IrisCavePlacer implements IRare {
private transient final AtomicCache<IrisCave> caveCache = new AtomicCache<>();
private transient final AtomicBoolean fail = new AtomicBoolean(false);
public IrisCave getRealCave(IrisData data)
{
public IrisCave getRealCave(IrisData data) {
return caveCache.aquire(() -> data.getCaveLoader().load(getCave()));
}
public void generateCave(Mantle mantle, RNG rng, IrisData data, int x, int y, int z)
{
if(fail.get())
{
public void generateCave(Mantle mantle, RNG rng, IrisData data, int x, int y, int z) {
if (fail.get()) {
return;
}
IrisCave cave = getRealCave(data);
if(cave == null)
{
if (cave == null) {
Iris.warn("Unable to locate cave for generation!");
fail.set(true);
return;
@@ -90,8 +84,7 @@ public class IrisCavePlacer implements IRare {
WormIterator3 w = cave.getWorm().iterate3D(rng, data, x, y, z);
KList<Vector> points = new KList<>();
int itr = 0;
while(w.hasNext())
{
while (w.hasNext()) {
itr++;
Worm3 wx = w.next();
points.add(new Vector(wx.getX().getPosition(), wx.getY().getPosition(), wx.getZ().getPosition()));

View File

@@ -70,16 +70,13 @@ public class HeadlessWorld {
public HeadlessGenerator generate() {
Engine e = null;
if(getWorld().tryGetRealWorld())
{
if(IrisToolbelt.isIrisWorld(getWorld().realWorld()))
{
if (getWorld().tryGetRealWorld()) {
if (IrisToolbelt.isIrisWorld(getWorld().realWorld())) {
e = IrisToolbelt.access(getWorld().realWorld()).getEngine();
}
}
if(e != null)
{
if (e != null) {
Iris.info("Using Existing Engine " + getWorld().name() + " for Headless Pregeneration.");
}

View File

@@ -62,17 +62,14 @@ public class IrisWorld {
.environment(world.getEnvironment());
}
public boolean tryGetRealWorld()
{
if(hasRealWorld())
{
public boolean tryGetRealWorld() {
if (hasRealWorld()) {
return true;
}
World w = Bukkit.getWorld(name);
if(w != null)
{
if (w != null) {
realWorld = w;
return true;
}

View File

@@ -22,7 +22,6 @@ import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.data.cache.AtomicCache;
import com.volmit.iris.engine.object.annotations.*;
import com.volmit.iris.engine.object.block.IrisBlockData;
import com.volmit.iris.engine.object.noise.IrisGenerator;
import com.volmit.iris.engine.object.objects.IrisObject;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.math.RNG;

View File

@@ -39,7 +39,6 @@ import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructure;
import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructurePlacement;
import com.volmit.iris.engine.object.loot.IrisLootReference;
import com.volmit.iris.engine.object.noise.IrisGeneratorStyle;
import com.volmit.iris.engine.object.noise.IrisInterpolator;
import com.volmit.iris.engine.object.noise.IrisShapedGeneratorStyle;
import com.volmit.iris.engine.object.noise.NoiseStyle;
import com.volmit.iris.engine.object.objects.IrisObjectPlacement;

View File

@@ -105,21 +105,14 @@ public class IrisEntitySpawn implements IRare {
};
if (l != null) {
if(referenceSpawner.getAllowedLightLevels().getMin() > 0 || referenceSpawner.getAllowedLightLevels().getMax() < 15)
{
if(referenceSpawner.getAllowedLightLevels().contains(l.getBlock().getLightLevel()))
{
if (spawn100(gen, l) != null)
{
if (referenceSpawner.getAllowedLightLevels().getMin() > 0 || referenceSpawner.getAllowedLightLevels().getMax() < 15) {
if (referenceSpawner.getAllowedLightLevels().contains(l.getBlock().getLightLevel())) {
if (spawn100(gen, l) != null) {
s++;
}
}
}
else
{
if (spawn100(gen, l) != null)
{
} else {
if (spawn100(gen, l) != null) {
s++;
}
}

View File

@@ -65,13 +65,9 @@ public class IrisFeaturePositional {
public static IrisFeaturePositional read(DataInputStream s) throws IOException {
String sx = s.readUTF();
try
{
try {
return new Gson().fromJson(sx, IrisFeaturePositional.class);
}
catch(Throwable e)
{
} catch (Throwable e) {
Iris.error(sx);
e.printStackTrace();
throw new IOException(e);

View File

@@ -24,7 +24,6 @@ import com.volmit.iris.engine.data.cache.AtomicCache;
import com.volmit.iris.engine.object.annotations.*;
import com.volmit.iris.engine.object.common.IRare;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.context.IrisContext;
import com.volmit.iris.util.interpolation.IrisInterpolation;
import com.volmit.iris.util.json.JSONObject;
import com.volmit.iris.util.math.RNG;

View File

@@ -18,7 +18,6 @@
package com.volmit.iris.engine.object.noise;
import com.volmit.iris.Iris;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.data.cache.AtomicCache;
import com.volmit.iris.engine.object.annotations.Desc;

View File

@@ -21,17 +21,8 @@ package com.volmit.iris.engine.object.noise;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.data.cache.AtomicCache;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.engine.object.basic.IrisRange;
import com.volmit.iris.engine.object.common.IRare;
import com.volmit.iris.engine.object.noise.IrisGeneratorStyle;
import com.volmit.iris.engine.object.noise.IrisNoiseGenerator;
import com.volmit.iris.engine.object.noise.IrisStyledRange;
import com.volmit.iris.engine.object.noise.NoiseStyle;
import com.volmit.iris.util.function.NoiseProvider;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.noise.Worm;
import com.volmit.iris.util.noise.WormIterator2;
import com.volmit.iris.util.noise.WormIterator3;
import lombok.AllArgsConstructor;
@@ -64,13 +55,11 @@ public class IrisWorm {
private transient final AtomicCache<NoiseProvider> angleProviderCache = new AtomicCache<>();
public NoiseProvider getAngleProvider(RNG rng, IrisData data)
{
public NoiseProvider getAngleProvider(RNG rng, IrisData data) {
return angleProviderCache.aquire(() -> (xx, zz) -> angleStyle.create(rng, data).fitDouble(-0.5, 0.5, xx, zz) * segmentDistance.get(rng, xx, zz, data));
}
public WormIterator2 iterate2D(RNG rng, IrisData data, int x, int z)
{
public WormIterator2 iterate2D(RNG rng, IrisData data, int x, int z) {
return WormIterator2.builder()
.maxDistance(maxDistance)
.maxIterations(maxSegments == -1 ? maxDistance : maxSegments)
@@ -78,8 +67,7 @@ public class IrisWorm {
.build();
}
public WormIterator3 iterate3D(RNG rng, IrisData data, int x, int y, int z)
{
public WormIterator3 iterate3D(RNG rng, IrisData data, int x, int y, int z) {
return WormIterator3.builder()
.maxDistance(maxDistance)
.maxIterations(maxSegments == -1 ? maxDistance : maxSegments)

View File

@@ -34,7 +34,6 @@ import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructurePlacement;
import com.volmit.iris.engine.object.loot.IrisLootReference;
import com.volmit.iris.engine.object.meta.IrisEffect;
import com.volmit.iris.engine.object.noise.IrisGeneratorStyle;
import com.volmit.iris.engine.object.noise.IrisShapedGeneratorStyle;
import com.volmit.iris.engine.object.noise.NoiseStyle;
import com.volmit.iris.engine.object.objects.IrisObjectPlacement;
import com.volmit.iris.engine.object.spawners.IrisSpawner;

View File

@@ -35,7 +35,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.bukkit.Bukkit;
import org.bukkit.World;
@EqualsAndHashCode(callSuper = true)

View File

@@ -29,13 +29,11 @@ import com.volmit.iris.engine.framework.WrongEngineBroException;
import com.volmit.iris.engine.object.common.IrisWorld;
import com.volmit.iris.engine.object.dimensional.IrisDimension;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.format.C;
import com.volmit.iris.util.hunk.Hunk;
import com.volmit.iris.util.io.ReactiveFolder;
import com.volmit.iris.util.scheduling.ChronoLatch;
import com.volmit.iris.util.scheduling.J;
import com.volmit.iris.util.scheduling.Looper;
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.bukkit.Bukkit;
@@ -47,8 +45,6 @@ import org.bukkit.generator.BlockPopulator;
import org.bukkit.generator.ChunkGenerator;
import org.jetbrains.annotations.NotNull;
import javax.management.RuntimeErrorException;
import javax.swing.text.TableView;
import java.io.File;
import java.util.List;
import java.util.Random;
@@ -100,13 +96,11 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
IrisData data = IrisData.get(dataLocation);
IrisDimension dimension = data.getDimensionLoader().load(dimensionKey);
if(dimension == null)
{
if (dimension == null) {
Iris.error("Oh No! There's no pack in " + data.getDataFolder().getPath() + " or... there's no dimension for the key " + dimensionKey);
IrisDimension test = IrisData.loadAnyDimension(dimensionKey);
if(test != null)
{
if (test != null) {
Iris.warn("Looks like " + dimensionKey + " exists in " + test.getLoadFile().getPath());
Iris.service(StudioSVC.class).installIntoWorld(Iris.getSender(), dimensionKey, dataLocation.getParentFile().getParentFile());
Iris.warn("Attempted to install into " + data.getDataFolder().getPath());
@@ -114,21 +108,14 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
data.clearLists();
test = data.getDimensionLoader().load(dimensionKey);
if(test != null)
{
if (test != null) {
Iris.success("Woo! Patched the Engine!");
dimension = test;
}
else
{
} else {
Iris.error("Failed to patch dimension!");
throw new RuntimeException("Missing Dimension: " + dimensionKey);
}
}
else
{
} else {
Iris.error("Nope, you don't have an installation containing " + dimensionKey + " try downloading it?");
throw new RuntimeException("Missing Dimension: " + dimensionKey);
}
@@ -161,8 +148,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
withExclusiveControl(() -> getEngine().hotload());
}
public void withExclusiveControl(Runnable r)
{
public void withExclusiveControl(Runnable r) {
J.a(() -> {
try {
loadLock.acquire(LOAD_LOCKS);
@@ -179,8 +165,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
try {
if(lastSeed != world.getSeed())
{
if (lastSeed != world.getSeed()) {
Iris.warn("Seed for engine " + lastSeed + " does not match world seed if " + world.getSeed());
lastSeed = world.getSeed();
engine.getTarget().getWorld().seed(lastSeed);
@@ -198,29 +183,20 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
Iris.debug("Generated " + x + " " + z);
loadLock.release();
return c;
}
catch (WrongEngineBroException e)
{
} catch (WrongEngineBroException e) {
Iris.warn("Trying to generate with a shut-down engine! Did you reload? Attempting to resolve this...");
try
{
try {
setupEngine();
Iris.success("Resolved! Should generate now!");
}
catch(Throwable fe)
{
} catch (Throwable fe) {
Iris.error("FATAL! Iris cannot generate in this world since it was reloaded! This will cause a crash, with missing chunks, so we're crashing right now!");
Bukkit.shutdown();
throw new RuntimeException();
}
return generateChunkData(world, ignored, x, z, biome);
}
catch (Throwable e) {
} catch (Throwable e) {
loadLock.release();
Iris.error("======================================");
e.printStackTrace();

View File

@@ -19,20 +19,16 @@
package com.volmit.iris.engine.platform;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.nms.INMS;
import com.volmit.iris.core.pregenerator.PregenListener;
import com.volmit.iris.core.pregenerator.PregenTask;
import com.volmit.iris.engine.IrisEngine;
import com.volmit.iris.engine.data.cache.Cache;
import com.volmit.iris.engine.data.chunk.MCATerrainChunk;
import com.volmit.iris.engine.data.chunk.TerrainChunk;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.EngineTarget;
import com.volmit.iris.engine.framework.WrongEngineBroException;
import com.volmit.iris.engine.object.common.HeadlessWorld;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KSet;
import com.volmit.iris.util.documentation.ChunkCoordinates;
import com.volmit.iris.util.documentation.RegionCoordinates;
import com.volmit.iris.util.hunk.Hunk;