mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-12-27 19:19:07 +00:00
Cleanup
This commit is contained in:
@@ -22,7 +22,6 @@ import com.google.common.util.concurrent.AtomicDouble;
|
||||
import com.google.gson.Gson;
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.core.IrisSettings;
|
||||
import com.volmit.iris.core.events.IrisEngineHotloadEvent;
|
||||
import com.volmit.iris.engine.actuator.IrisBiomeActuator;
|
||||
import com.volmit.iris.engine.actuator.IrisDecorantActuator;
|
||||
import com.volmit.iris.engine.actuator.IrisTerrainIslandActuator;
|
||||
@@ -41,7 +40,6 @@ import com.volmit.iris.engine.object.engine.IrisEngineData;
|
||||
import com.volmit.iris.engine.object.objects.IrisObjectPlacement;
|
||||
import com.volmit.iris.engine.scripting.EngineExecutionEnvironment;
|
||||
import com.volmit.iris.util.atomics.AtomicRollingSequence;
|
||||
import com.volmit.iris.util.collection.KList;
|
||||
import com.volmit.iris.util.collection.KMap;
|
||||
import com.volmit.iris.util.context.IrisContext;
|
||||
import com.volmit.iris.util.documentation.BlockCoordinates;
|
||||
@@ -49,8 +47,6 @@ 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.hunk.storage.AtomicDoubleHunk;
|
||||
import com.volmit.iris.util.hunk.storage.AtomicLongHunk;
|
||||
import com.volmit.iris.util.io.IO;
|
||||
import com.volmit.iris.util.math.M;
|
||||
import com.volmit.iris.util.math.RNG;
|
||||
@@ -123,7 +119,7 @@ public class IrisEngine extends BlockPopulator implements Engine {
|
||||
generated = new AtomicInteger(0);
|
||||
execution = new IrisExecutionEnvironment(this);
|
||||
// TODO: HEIGHT ------------------------------------------------------------------------------------------------------>
|
||||
Iris.info("Initializing Engine: " + target.getWorld().name() + "/" + target.getDimension().getLoadKey() + " (" + 256+ " height)");
|
||||
Iris.info("Initializing Engine: " + target.getWorld().name() + "/" + target.getDimension().getLoadKey() + " (" + 256 + " height)");
|
||||
metrics = new EngineMetrics(32);
|
||||
this.target = target;
|
||||
getData().setEngine(this);
|
||||
@@ -187,19 +183,17 @@ public class IrisEngine extends BlockPopulator implements Engine {
|
||||
|
||||
@Override
|
||||
public double getGeneratedPerSecond() {
|
||||
if(perSecondLatch.flip())
|
||||
{
|
||||
if (perSecondLatch.flip()) {
|
||||
double g = generated.get() - generatedLast.get();
|
||||
generatedLast.set(generated.get());
|
||||
|
||||
if(g == 0)
|
||||
{
|
||||
if (g == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
long dur = M.ms() - lastGPS.get();
|
||||
lastGPS.set(M.ms());
|
||||
perSecond.set(1000D / ((double)dur / g));
|
||||
perSecond.set(1000D / ((double) dur / g));
|
||||
}
|
||||
|
||||
return perSecond.get();
|
||||
@@ -250,7 +244,7 @@ public class IrisEngine extends BlockPopulator implements Engine {
|
||||
}
|
||||
|
||||
for (String j : timings.k()) {
|
||||
weights.put(getName() + "." + j, (wallClock / totalWeight) * timings.get(j));
|
||||
weights.put(getName() + "." + j, (wallClock / totalWeight) * timings.get(j));
|
||||
}
|
||||
|
||||
totals.put(getName(), wallClock);
|
||||
@@ -328,18 +322,18 @@ public class IrisEngine extends BlockPopulator implements Engine {
|
||||
|
||||
cleaning.set(true);
|
||||
|
||||
J.a(() -> {
|
||||
try {
|
||||
getMantle().trim();
|
||||
getData().getObjectLoader().clean();
|
||||
} catch (Throwable e) {
|
||||
Iris.reportError(e);
|
||||
Iris.error("Cleanup failed!");
|
||||
e.printStackTrace();
|
||||
}
|
||||
J.a(() -> {
|
||||
try {
|
||||
getMantle().trim();
|
||||
getData().getObjectLoader().clean();
|
||||
} catch (Throwable e) {
|
||||
Iris.reportError(e);
|
||||
Iris.error("Cleanup failed!");
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
cleaning.lazySet(false);
|
||||
});
|
||||
cleaning.lazySet(false);
|
||||
});
|
||||
}
|
||||
|
||||
public EngineActuator<BlockData> getTerrainActuator() {
|
||||
@@ -372,14 +366,14 @@ public class IrisEngine extends BlockPopulator implements Engine {
|
||||
|
||||
switch (getDimension().getTerrainMode()) {
|
||||
case NORMAL -> {
|
||||
getMantle().generateMatter(x>>4, z>>4);
|
||||
getMantle().generateMatter(x >> 4, z >> 4);
|
||||
getTerrainActuator().actuate(x, z, vblocks, multicore);
|
||||
getBiomeActuator().actuate(x, z, vbiomes, multicore);
|
||||
getCaveModifier().modify(x, z, vblocks, multicore);
|
||||
getRavineModifier().modify(x, z, vblocks, multicore);
|
||||
getPostModifier().modify(x, z, vblocks, multicore);
|
||||
getDecorantActuator().actuate(x, z, blocks, multicore);
|
||||
getMantle().insertMatter(x>>4, z>>4, BlockData.class, blocks);
|
||||
getMantle().insertMatter(x >> 4, z >> 4, BlockData.class, blocks);
|
||||
getDepositModifier().modify(x, z, blocks, multicore);
|
||||
}
|
||||
case ISLANDS -> {
|
||||
|
||||
@@ -21,7 +21,6 @@ package com.volmit.iris.engine;
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.engine.framework.Engine;
|
||||
import com.volmit.iris.engine.mantle.EngineMantle;
|
||||
import com.volmit.iris.engine.mantle.IrisMantleComponent;
|
||||
import com.volmit.iris.engine.mantle.MantleComponent;
|
||||
import com.volmit.iris.engine.mantle.components.MantleFeatureComponent;
|
||||
import com.volmit.iris.engine.mantle.components.MantleJigsawComponent;
|
||||
@@ -287,10 +286,7 @@ public class IrisEngineMantle implements EngineMantle {
|
||||
z = Math.max(max, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -47,7 +47,6 @@ import com.volmit.iris.util.documentation.BlockCoordinates;
|
||||
import com.volmit.iris.util.documentation.ChunkCoordinates;
|
||||
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;
|
||||
@@ -129,8 +128,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
||||
|
||||
void setMinHeight(int min);
|
||||
|
||||
default int getMinHeight()
|
||||
{
|
||||
default int getMinHeight() {
|
||||
return getTarget().getWorld().minHeight();
|
||||
}
|
||||
|
||||
@@ -245,7 +243,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
||||
updateLighting(x, y, z, c);
|
||||
}
|
||||
}
|
||||
}, MantleFlag.UPDATE);
|
||||
}, MantleFlag.UPDATE);
|
||||
getMetrics().getUpdates().put(p.getMilliseconds());
|
||||
}
|
||||
|
||||
@@ -448,28 +446,23 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
||||
|
||||
int getGenerated();
|
||||
|
||||
default <T> IrisPosition lookForStreamResult(T find, ProceduralStream<T> stream, Function2<T, T, Boolean> matcher, long timeout)
|
||||
{
|
||||
default <T> IrisPosition lookForStreamResult(T find, ProceduralStream<T> stream, Function2<T, T, Boolean> matcher, long timeout) {
|
||||
AtomicInteger checked = new AtomicInteger();
|
||||
AtomicLong time = new AtomicLong(M.ms());
|
||||
AtomicReference<IrisPosition> r = new AtomicReference<>();
|
||||
BurstExecutor b = burst().burst();
|
||||
|
||||
while(M.ms() - time.get() < timeout && r.get() == null)
|
||||
{
|
||||
while (M.ms() - time.get() < timeout && r.get() == null) {
|
||||
b.queue(() -> {
|
||||
for(int i = 0; i < 1000; i++)
|
||||
{
|
||||
if(M.ms() - time.get() > timeout)
|
||||
{
|
||||
for (int i = 0; i < 1000; i++) {
|
||||
if (M.ms() - time.get() > timeout) {
|
||||
return;
|
||||
}
|
||||
|
||||
int x = RNG.r.i(-29999970, 29999970);
|
||||
int z = RNG.r.i(-29999970, 29999970);
|
||||
checked.incrementAndGet();
|
||||
if(matcher.apply(stream.get(x, z), find))
|
||||
{
|
||||
if (matcher.apply(stream.get(x, z), find)) {
|
||||
r.set(new IrisPosition(x, 120, z));
|
||||
time.set(0);
|
||||
}
|
||||
@@ -618,8 +611,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
||||
|
||||
double getGeneratedPerSecond();
|
||||
|
||||
default int getHeight()
|
||||
{
|
||||
default int getHeight() {
|
||||
return getWorld().getHeight();
|
||||
}
|
||||
|
||||
@@ -633,12 +625,10 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
||||
return getSurfaceBiome(x, z);
|
||||
}
|
||||
|
||||
default String getObjectPlacementKey(int x, int y, int z)
|
||||
{
|
||||
PlacedObject o = getObjectPlacement(x,y,z);
|
||||
default String getObjectPlacementKey(int x, int y, int z) {
|
||||
PlacedObject o = getObjectPlacement(x, y, z);
|
||||
|
||||
if(o != null && o.getObject() != null)
|
||||
{
|
||||
if (o != null && o.getObject() != null) {
|
||||
return o.getObject().getLoadKey() + "@" + o.getId();
|
||||
}
|
||||
|
||||
@@ -646,7 +636,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
||||
}
|
||||
|
||||
default PlacedObject getObjectPlacement(int x, int y, int z) {
|
||||
String objectAt = getMantle().getMantle().get(x,y,z, String.class);
|
||||
String objectAt = getMantle().getMantle().get(x, y, z, String.class);
|
||||
|
||||
if (objectAt == null || objectAt.isEmpty()) {
|
||||
return null;
|
||||
|
||||
@@ -55,8 +55,7 @@ public abstract class EngineAssignedWorldManager extends EngineAssignedComponent
|
||||
|
||||
@EventHandler
|
||||
public void on(IrisEngineHotloadEvent e) {
|
||||
for(Player i : e.getEngine().getWorld().getPlayers())
|
||||
{
|
||||
for (Player i : e.getEngine().getWorld().getPlayers()) {
|
||||
i.playSound(i.getLocation(), Sound.ITEM_TRIDENT_RETURN, 1f, 1.6f);
|
||||
VolmitSender s = new VolmitSender(i);
|
||||
s.sendTitle(C.IRIS + "Engine " + C.AQUA + "<font:minecraft:uniform>Hotloaded", 70, 60, 410);
|
||||
|
||||
@@ -41,8 +41,7 @@ public class EngineTarget {
|
||||
IrisSettings.getThreadCount(IrisSettings.get().getConcurrency().getEngineThreadCount()));
|
||||
}
|
||||
|
||||
public int getHeight()
|
||||
{
|
||||
public int getHeight() {
|
||||
return world.maxHeight() - world.minHeight();
|
||||
}
|
||||
|
||||
|
||||
@@ -120,7 +120,7 @@ public class PlannedStructure {
|
||||
|
||||
int id = rng.i(0, Integer.MAX_VALUE);
|
||||
int h = vo.place(xx, height, zz, placer, options, rng, (b)
|
||||
-> e.set(b.getX(), b.getY(), b.getZ(), v.getLoadKey() + "@" + id), null, getData());
|
||||
-> e.set(b.getX(), b.getY(), b.getZ(), v.getLoadKey() + "@" + id), null, getData());
|
||||
|
||||
|
||||
for (IrisJigsawPieceConnector j : i.getAvailableConnectors()) {
|
||||
|
||||
@@ -31,7 +31,6 @@ import com.volmit.iris.util.collection.KList;
|
||||
import com.volmit.iris.util.data.B;
|
||||
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.hunk.Hunk;
|
||||
import com.volmit.iris.util.mantle.Mantle;
|
||||
import com.volmit.iris.util.mantle.MantleFlag;
|
||||
@@ -46,7 +45,6 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
// TODO: MOVE PLACER OUT OF MATTER INTO ITS OWN THING
|
||||
@@ -156,28 +154,23 @@ public interface EngineMantle extends IObjectPlacer {
|
||||
getMantle().close();
|
||||
}
|
||||
|
||||
default void saveAllNow()
|
||||
{
|
||||
default void saveAllNow() {
|
||||
getMantle().saveAll();
|
||||
}
|
||||
|
||||
default void save()
|
||||
{
|
||||
default void save() {
|
||||
|
||||
}
|
||||
|
||||
default void trim()
|
||||
{
|
||||
default void trim() {
|
||||
getMantle().trim(60000);
|
||||
}
|
||||
|
||||
default MultiBurst burst()
|
||||
{
|
||||
default MultiBurst burst() {
|
||||
return getEngine().burst();
|
||||
}
|
||||
|
||||
default int getRealRadius()
|
||||
{
|
||||
default int getRealRadius() {
|
||||
try {
|
||||
return (int) Math.ceil(getRadius().get() / 2D);
|
||||
} catch (InterruptedException e) {
|
||||
@@ -191,8 +184,7 @@ public interface EngineMantle extends IObjectPlacer {
|
||||
|
||||
|
||||
@ChunkCoordinates
|
||||
default void generateMatter(int x, int z)
|
||||
{
|
||||
default void generateMatter(int x, int z) {
|
||||
if (!getEngine().getDimension().isUseMantle()) {
|
||||
return;
|
||||
}
|
||||
@@ -217,14 +209,12 @@ public interface EngineMantle extends IObjectPlacer {
|
||||
burst().burst(post);
|
||||
}
|
||||
|
||||
default void generateMantleComponent(int x, int z, MantleComponent c, Consumer<Runnable> post)
|
||||
{
|
||||
default void generateMantleComponent(int x, int z, MantleComponent c, Consumer<Runnable> post) {
|
||||
getMantle().raiseFlag(x, z, c.getFlag(), () -> c.generateLayer(x, z, post));
|
||||
}
|
||||
|
||||
@ChunkCoordinates
|
||||
default <T> void insertMatter(int x, int z, Class<T> t, Hunk<T> blocks)
|
||||
{
|
||||
default <T> void insertMatter(int x, int z, Class<T> t, Hunk<T> blocks) {
|
||||
if (!getEngine().getDimension().isUseMantle()) {
|
||||
return;
|
||||
}
|
||||
@@ -233,23 +223,20 @@ public interface EngineMantle extends IObjectPlacer {
|
||||
}
|
||||
|
||||
@BlockCoordinates
|
||||
default void updateBlock(int x, int y, int z)
|
||||
{
|
||||
getMantle().flag(x>>4, z>>4, MantleFlag.UPDATE, true);
|
||||
getMantle().set(x,y,z,true);
|
||||
default void updateBlock(int x, int y, int z) {
|
||||
getMantle().flag(x >> 4, z >> 4, MantleFlag.UPDATE, true);
|
||||
getMantle().set(x, y, z, true);
|
||||
}
|
||||
|
||||
@ChunkCoordinates
|
||||
default KList<IrisFeaturePositional> getFeaturesInChunk(Chunk c)
|
||||
{
|
||||
default KList<IrisFeaturePositional> getFeaturesInChunk(Chunk c) {
|
||||
return getFeaturesInChunk(c.getX(), c.getZ());
|
||||
}
|
||||
|
||||
@ChunkCoordinates
|
||||
default KList<IrisFeaturePositional> getFeaturesInChunk(int x, int z)
|
||||
{
|
||||
default KList<IrisFeaturePositional> getFeaturesInChunk(int x, int z) {
|
||||
KList<IrisFeaturePositional> pos = new KList<>();
|
||||
getMantle().iterateChunk(x, z, IrisFeaturePositional.class, (a,b,c,f) -> pos.add(f), MantleFlag.FEATURE);
|
||||
getMantle().iterateChunk(x, z, IrisFeaturePositional.class, (a, b, c, f) -> pos.add(f), MantleFlag.FEATURE);
|
||||
return pos;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ import com.volmit.iris.util.mantle.MantleFlag;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public abstract class IrisMantleComponent implements MantleComponent{
|
||||
public abstract class IrisMantleComponent implements MantleComponent {
|
||||
private final EngineMantle engineMantle;
|
||||
private final MantleFlag flag;
|
||||
}
|
||||
|
||||
@@ -27,44 +27,35 @@ import com.volmit.iris.util.mantle.MantleFlag;
|
||||
import com.volmit.iris.util.parallel.BurstExecutor;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public interface MantleComponent
|
||||
{
|
||||
default int getRadius()
|
||||
{
|
||||
public interface MantleComponent {
|
||||
default int getRadius() {
|
||||
return getEngineMantle().getRealRadius();
|
||||
}
|
||||
|
||||
default IrisData getData()
|
||||
{
|
||||
default IrisData getData() {
|
||||
return getEngineMantle().getData();
|
||||
}
|
||||
|
||||
default IrisDimension getDimension()
|
||||
{
|
||||
default IrisDimension getDimension() {
|
||||
return getEngineMantle().getEngine().getDimension();
|
||||
}
|
||||
|
||||
default IrisComplex getComplex()
|
||||
{
|
||||
default IrisComplex getComplex() {
|
||||
return getEngineMantle().getComplex();
|
||||
}
|
||||
|
||||
default long seed()
|
||||
{
|
||||
default long seed() {
|
||||
return getEngineMantle().getEngine().getTarget().getWorld().seed();
|
||||
}
|
||||
|
||||
default BurstExecutor burst()
|
||||
{
|
||||
default BurstExecutor burst() {
|
||||
return getEngineMantle().getEngine().burst().burst();
|
||||
}
|
||||
|
||||
EngineMantle getEngineMantle();
|
||||
|
||||
default Mantle getMantle()
|
||||
{
|
||||
default Mantle getMantle() {
|
||||
return getEngineMantle().getMantle();
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,6 @@ 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;
|
||||
import com.volmit.iris.util.parallel.BurstExecutor;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
|
||||
@@ -33,13 +33,11 @@ import com.volmit.iris.util.documentation.ChunkCoordinates;
|
||||
import com.volmit.iris.util.mantle.MantleFlag;
|
||||
import com.volmit.iris.util.math.Position2;
|
||||
import com.volmit.iris.util.math.RNG;
|
||||
import com.volmit.iris.util.parallel.BurstExecutor;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class MantleJigsawComponent extends IrisMantleComponent
|
||||
{
|
||||
public class MantleJigsawComponent extends IrisMantleComponent {
|
||||
public MantleJigsawComponent(EngineMantle engineMantle) {
|
||||
super(engineMantle, MantleFlag.JIGSAW);
|
||||
}
|
||||
|
||||
@@ -31,11 +31,8 @@ import com.volmit.iris.engine.object.objects.IrisObjectPlacement;
|
||||
import com.volmit.iris.engine.object.regional.IrisRegion;
|
||||
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.MantleFlag;
|
||||
import com.volmit.iris.util.math.RNG;
|
||||
import com.volmit.iris.util.parallel.BurstExecutor;
|
||||
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@@ -111,12 +108,12 @@ public class MantleObjectComponent extends IrisMantleComponent {
|
||||
f.setInterpolationRadius(objectPlacement.getVacuumInterpolationRadius());
|
||||
f.setInterpolator(objectPlacement.getVacuumInterpolationMethod());
|
||||
f.setStrength(1D);
|
||||
getMantle().set(xx,0,zz,new IrisFeaturePositional(xx, zz, f));
|
||||
getMantle().set(xx, 0, zz, new IrisFeaturePositional(xx, zz, f));
|
||||
}
|
||||
|
||||
for (IrisFeaturePotential j : objectPlacement.getAddFeatures()) {
|
||||
if (j.hasZone(rng, xx >> 4, zz >> 4)) {
|
||||
getMantle().set(xx,0,zz,new IrisFeaturePositional(xx, zz, j.getZone()));
|
||||
getMantle().set(xx, 0, zz, new IrisFeaturePositional(xx, zz, j.getZone()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -124,10 +121,7 @@ public class MantleObjectComponent extends IrisMantleComponent {
|
||||
|
||||
if (objectPlacement.usesFeatures()) {
|
||||
r.run();
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
} else {
|
||||
post.accept(r);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@ import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.core.gui.components.RenderType;
|
||||
import com.volmit.iris.core.project.loader.IrisData;
|
||||
import com.volmit.iris.core.project.loader.IrisRegistrant;
|
||||
import com.volmit.iris.core.tools.IrisToolbelt;
|
||||
import com.volmit.iris.engine.IrisComplex;
|
||||
import com.volmit.iris.engine.data.cache.AtomicCache;
|
||||
import com.volmit.iris.engine.framework.Engine;
|
||||
|
||||
@@ -21,9 +21,9 @@ package com.volmit.iris.engine.object.common;
|
||||
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.platform.HeadlessGenerator;
|
||||
import com.volmit.iris.engine.platform.BukkitChunkGenerator;
|
||||
import com.volmit.iris.engine.object.dimensional.IrisDimension;
|
||||
import com.volmit.iris.engine.platform.BukkitChunkGenerator;
|
||||
import com.volmit.iris.engine.platform.HeadlessGenerator;
|
||||
import com.volmit.iris.util.plugin.VolmitSender;
|
||||
import lombok.Data;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
@@ -81,9 +81,8 @@ public class IrisWorld {
|
||||
}
|
||||
|
||||
public void bind(World world) {
|
||||
if(hasRealWorld())
|
||||
{
|
||||
return;
|
||||
if (hasRealWorld()) {
|
||||
return;
|
||||
}
|
||||
|
||||
bindWorld(this, world);
|
||||
|
||||
@@ -29,7 +29,6 @@ import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
import net.minecraft.world.level.GeneratorAccess;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Particle;
|
||||
import org.bukkit.Sound;
|
||||
|
||||
@@ -19,21 +19,13 @@
|
||||
package com.volmit.iris.engine.platform;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.core.events.IrisEngineHotloadEvent;
|
||||
import com.volmit.iris.core.project.loader.IrisData;
|
||||
import com.volmit.iris.engine.IrisEngine;
|
||||
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.object.common.IrisWorld;
|
||||
import com.volmit.iris.engine.object.dimensional.IrisDimension;
|
||||
import com.volmit.iris.util.collection.KList;
|
||||
import com.volmit.iris.util.hunk.Hunk;
|
||||
import com.volmit.iris.util.io.IO;
|
||||
import com.volmit.iris.util.io.ReactiveFolder;
|
||||
import com.volmit.iris.util.parallel.MultiBurst;
|
||||
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 org.bukkit.Bukkit;
|
||||
@@ -48,7 +40,6 @@ import org.jetbrains.annotations.NotNull;
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChunkGenerator {
|
||||
private final EngineProvider provider;
|
||||
@@ -61,8 +52,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
|
||||
private final Looper hotloader;
|
||||
private final boolean studio;
|
||||
|
||||
public BukkitChunkGenerator(IrisWorld world, boolean studio, File dataLocation, String dimensionKey)
|
||||
{
|
||||
public BukkitChunkGenerator(IrisWorld world, boolean studio, File dataLocation, String dimensionKey) {
|
||||
populators = new KList<>();
|
||||
this.world = world;
|
||||
this.hotloadChecker = new ChronoLatch(1000, false);
|
||||
@@ -76,8 +66,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
|
||||
this.hotloader = new Looper() {
|
||||
@Override
|
||||
protected long loop() {
|
||||
if(hotloadChecker.flip())
|
||||
{
|
||||
if (hotloadChecker.flip()) {
|
||||
folder.check();
|
||||
}
|
||||
|
||||
@@ -89,8 +78,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
|
||||
hotloader.setName(getTarget().getWorld().name() + " Hotloader");
|
||||
}
|
||||
|
||||
public Engine getEngine()
|
||||
{
|
||||
public Engine getEngine() {
|
||||
return provider.getEngine();
|
||||
}
|
||||
|
||||
@@ -115,8 +103,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
|
||||
initialize();
|
||||
}
|
||||
|
||||
private void initialize()
|
||||
{
|
||||
private void initialize() {
|
||||
provider.provideEngine(world, dimensionKey, dataLocation, isStudio(), (e) -> {
|
||||
populators.clear();
|
||||
populators.add((BlockPopulator) e);
|
||||
@@ -126,8 +113,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
|
||||
|
||||
@Override
|
||||
public @NotNull ChunkData generateChunkData(@NotNull World world, @NotNull Random ignored, int x, int z, @NotNull BiomeGrid biome) {
|
||||
try
|
||||
{
|
||||
try {
|
||||
Iris.debug("Generated " + x + " " + z);
|
||||
PrecisionStopwatch ps = PrecisionStopwatch.start();
|
||||
TerrainChunk tc = TerrainChunk.create(world, biome);
|
||||
@@ -136,10 +122,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
|
||||
this.world.bind(world);
|
||||
getEngine().generate(x * 16, z * 16, blocks, biomes, true);
|
||||
return tc.getRaw();
|
||||
}
|
||||
|
||||
catch(Throwable e)
|
||||
{
|
||||
} catch (Throwable e) {
|
||||
Iris.error("======================================");
|
||||
e.printStackTrace();
|
||||
Iris.reportErrorChunk(x, z, e, "CHUNK");
|
||||
|
||||
@@ -27,7 +27,6 @@ import com.volmit.iris.engine.framework.EngineTarget;
|
||||
import com.volmit.iris.engine.object.common.IrisWorld;
|
||||
import com.volmit.iris.engine.object.dimensional.IrisDimension;
|
||||
import com.volmit.iris.util.parallel.MultiBurst;
|
||||
import org.bukkit.generator.BlockPopulator;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
@@ -51,13 +50,11 @@ public class EngineProvider {
|
||||
engine.get().whenComplete((e, x) -> Iris.callEvent(new IrisEngineHotloadEvent(e)));
|
||||
}
|
||||
|
||||
public Engine getEngine()
|
||||
{
|
||||
public Engine getEngine() {
|
||||
try {
|
||||
Engine e = engine.get().get();
|
||||
|
||||
if(e == null)
|
||||
{
|
||||
if (e == null) {
|
||||
throw new RuntimeException("NULL");
|
||||
}
|
||||
|
||||
@@ -72,12 +69,10 @@ public class EngineProvider {
|
||||
}
|
||||
|
||||
public void close() {
|
||||
if(engine.get() != null && engine.get().isDone())
|
||||
{
|
||||
if (engine.get() != null && engine.get().isDone()) {
|
||||
Engine e = getEngine();
|
||||
|
||||
if(e != null)
|
||||
{
|
||||
if (e != null) {
|
||||
e.close();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,11 +23,9 @@ 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.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.object.common.HeadlessWorld;
|
||||
import com.volmit.iris.util.collection.KList;
|
||||
import com.volmit.iris.util.documentation.ChunkCoordinates;
|
||||
@@ -61,7 +59,8 @@ public class HeadlessGenerator implements PlatformChunkGenerator {
|
||||
burst = new MultiBurst("Iris Headless Generator", 9, IrisSettings.getThreadCount(IrisSettings.get().getConcurrency().getPregenThreadCount()));
|
||||
writer = new NBTWorld(world.getWorld().worldFolder());
|
||||
provider = new EngineProvider();
|
||||
provider.provideEngine(world.getWorld(), world.getDimension().getLoadKey(), world.getDimension().getLoader().getDataFolder(), isStudio(), (e) -> {});
|
||||
provider.provideEngine(world.getWorld(), world.getDimension().getLoadKey(), world.getDimension().getLoader().getDataFolder(), isStudio(), (e) -> {
|
||||
});
|
||||
}
|
||||
|
||||
@ChunkCoordinates
|
||||
|
||||
@@ -24,21 +24,17 @@ import com.volmit.iris.engine.framework.EngineTarget;
|
||||
import com.volmit.iris.engine.framework.Hotloadable;
|
||||
import com.volmit.iris.util.data.DataProvider;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public interface PlatformChunkGenerator extends Hotloadable, DataProvider {
|
||||
Engine getEngine();
|
||||
|
||||
boolean isHeadless();
|
||||
|
||||
@Override
|
||||
default IrisData getData()
|
||||
{
|
||||
default IrisData getData() {
|
||||
return getEngine().getData();
|
||||
}
|
||||
|
||||
default EngineTarget getTarget()
|
||||
{
|
||||
default EngineTarget getTarget() {
|
||||
return getEngine().getTarget();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user