mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-04-03 06:16:19 +00:00
Waow
This commit is contained in:
@@ -527,6 +527,7 @@ public class Iris extends VolmitPlugin implements Listener {
|
||||
|
||||
public void checkForBukkitWorlds(Predicate<String> filter) {
|
||||
try {
|
||||
KList<String> deferredStartupWorlds = new KList<>();
|
||||
IrisWorlds.readBukkitWorlds().forEach((s, generator) -> {
|
||||
try {
|
||||
if (Bukkit.getWorld(s) != null || !filter.test(s)) return;
|
||||
@@ -543,16 +544,27 @@ public class Iris extends VolmitPlugin implements Listener {
|
||||
INMS.get().createWorld(c);
|
||||
Iris.info(C.LIGHT_PURPLE + "Loaded " + s + "!");
|
||||
} catch (Throwable e) {
|
||||
Iris.error("Failed to load world " + s + "!");
|
||||
if (containsCreateWorldUnsupportedOperation(e)) {
|
||||
if (J.isFolia()) {
|
||||
if (!deferredStartupWorlds.contains(s)) {
|
||||
deferredStartupWorlds.add(s);
|
||||
}
|
||||
return;
|
||||
}
|
||||
Iris.error("Failed to load world " + s + "!");
|
||||
Iris.error("This server denied Bukkit.createWorld for \"" + s + "\" at the current startup phase.");
|
||||
Iris.error("Ensure Iris is loaded at STARTUP and restart after staging worlds in bukkit.yml.");
|
||||
reportError(e);
|
||||
return;
|
||||
}
|
||||
Iris.error("Failed to load world " + s + "!");
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
if (!deferredStartupWorlds.isEmpty()) {
|
||||
Iris.warn("World init delayed on Folia until server world-init phase for staged Iris worlds: %s", String.join(", ", deferredStartupWorlds));
|
||||
Iris.warn("Bukkit.createWorld is intentionally unavailable in this startup phase. Worlds remain staged in bukkit.yml.");
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
reportError(e);
|
||||
|
||||
@@ -31,6 +31,7 @@ import art.arcane.iris.core.service.IrisEngineSVC;
|
||||
import art.arcane.iris.core.service.StudioSVC;
|
||||
import art.arcane.iris.core.tools.IrisPackBenchmarking;
|
||||
import art.arcane.iris.core.tools.IrisToolbelt;
|
||||
import art.arcane.iris.engine.IrisEngineMantle;
|
||||
import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.iris.engine.object.IrisDimension;
|
||||
import art.arcane.iris.engine.object.IrisPosition;
|
||||
@@ -41,19 +42,19 @@ import art.arcane.volmlib.util.collection.KSet;
|
||||
import art.arcane.iris.util.context.IrisContext;
|
||||
import art.arcane.iris.engine.object.IrisJigsawStructurePlacement;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.iris.util.decree.DecreeExecutor;
|
||||
import art.arcane.iris.util.director.DirectorExecutor;
|
||||
import art.arcane.volmlib.util.director.DirectorOrigin;
|
||||
import art.arcane.volmlib.util.director.annotations.Director;
|
||||
import art.arcane.volmlib.util.director.annotations.Param;
|
||||
import art.arcane.iris.util.decree.specialhandlers.NullableDimensionHandler;
|
||||
import art.arcane.iris.util.director.specialhandlers.NullableDimensionHandler;
|
||||
import art.arcane.iris.util.format.C;
|
||||
import art.arcane.volmlib.util.format.Form;
|
||||
import art.arcane.volmlib.util.io.CountingDataInputStream;
|
||||
import art.arcane.volmlib.util.io.IO;
|
||||
import art.arcane.iris.util.mantle.TectonicPlate;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.mantle.runtime.TectonicPlate;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.M;
|
||||
import art.arcane.iris.util.matter.Matter;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import art.arcane.iris.util.nbt.mca.MCAFile;
|
||||
import art.arcane.iris.util.nbt.mca.MCAUtil;
|
||||
import art.arcane.iris.util.parallel.MultiBurst;
|
||||
@@ -82,7 +83,7 @@ import java.util.zip.GZIPInputStream;
|
||||
import java.util.zip.GZIPOutputStream;
|
||||
|
||||
@Director(name = "Developer", origin = DirectorOrigin.BOTH, description = "Iris World Manager", aliases = {"dev"})
|
||||
public class CommandDeveloper implements DecreeExecutor {
|
||||
public class CommandDeveloper implements DirectorExecutor {
|
||||
private static final long DELETE_CHUNK_HEARTBEAT_MS = 5000L;
|
||||
private static final int DELETE_CHUNK_MAX_ATTEMPTS = 2;
|
||||
private static final int DELETE_CHUNK_STACK_LIMIT = 20;
|
||||
@@ -313,7 +314,7 @@ public class CommandDeveloper implements DecreeExecutor {
|
||||
|
||||
if (plate) {
|
||||
try (var in = CountingDataInputStream.wrap(new BufferedInputStream(new FileInputStream(base)))) {
|
||||
new TectonicPlate(1088, in, true);
|
||||
TectonicPlate.read(1088, in, true, IrisEngineMantle.createRuntimeDataAdapter(), IrisEngineMantle.createRuntimeHooks());
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@@ -561,7 +562,7 @@ public class CommandDeveloper implements DecreeExecutor {
|
||||
return;
|
||||
}
|
||||
|
||||
art.arcane.iris.util.mantle.Mantle mantle = access.getEngine().getMantle().getMantle();
|
||||
art.arcane.volmlib.util.mantle.runtime.Mantle mantle = access.getEngine().getMantle().getMantle();
|
||||
VolmitSender sender = sender();
|
||||
|
||||
sender.sendMessage(C.GREEN + "Deleting blocks in " + C.GOLD + totalChunks + C.GREEN + " chunk(s) with " + C.GOLD + threads + C.GREEN + " worker(s).");
|
||||
@@ -634,7 +635,7 @@ public class CommandDeveloper implements DecreeExecutor {
|
||||
private void runDeleteChunkOrchestrator(
|
||||
VolmitSender sender,
|
||||
World world,
|
||||
art.arcane.iris.util.mantle.Mantle mantle,
|
||||
art.arcane.volmlib.util.mantle.runtime.Mantle mantle,
|
||||
List<Position2> targets,
|
||||
int threadCount,
|
||||
String runId,
|
||||
@@ -682,7 +683,7 @@ public class CommandDeveloper implements DecreeExecutor {
|
||||
|
||||
private DeleteChunkSummary executeDeleteChunkQueue(
|
||||
World world,
|
||||
art.arcane.iris.util.mantle.Mantle mantle,
|
||||
art.arcane.volmlib.util.mantle.runtime.Mantle mantle,
|
||||
List<Position2> targets,
|
||||
ThreadPoolExecutor pool,
|
||||
Set<Thread> workerThreads,
|
||||
@@ -822,7 +823,7 @@ public class CommandDeveloper implements DecreeExecutor {
|
||||
private DeleteChunkResult runDeleteChunkTask(
|
||||
DeleteChunkTask task,
|
||||
World world,
|
||||
art.arcane.iris.util.mantle.Mantle mantle,
|
||||
art.arcane.volmlib.util.mantle.runtime.Mantle mantle,
|
||||
ConcurrentMap<String, DeleteChunkActiveTask> activeTasks
|
||||
) {
|
||||
String worker = Thread.currentThread().getName();
|
||||
@@ -1150,7 +1151,7 @@ public class CommandDeveloper implements DecreeExecutor {
|
||||
service.submit(() -> {
|
||||
try {
|
||||
CountingDataInputStream raw = CountingDataInputStream.wrap(new FileInputStream(file));
|
||||
TectonicPlate plate = new TectonicPlate(height, raw, versioned);
|
||||
TectonicPlate<Matter> plate = TectonicPlate.read(height, raw, versioned, IrisEngineMantle.createRuntimeDataAdapter(), IrisEngineMantle.createRuntimeHooks());
|
||||
raw.close();
|
||||
|
||||
double d1 = 0;
|
||||
@@ -1169,7 +1170,7 @@ public class CommandDeveloper implements DecreeExecutor {
|
||||
size = tmp.length();
|
||||
start = System.currentTimeMillis();
|
||||
CountingDataInputStream din = createInput(tmp, algorithm);
|
||||
new TectonicPlate(height, din, true);
|
||||
TectonicPlate.read(height, din, true, IrisEngineMantle.createRuntimeDataAdapter(), IrisEngineMantle.createRuntimeHooks());
|
||||
din.close();
|
||||
d2 += System.currentTimeMillis() - start;
|
||||
tmp.delete();
|
||||
|
||||
@@ -21,7 +21,7 @@ package art.arcane.iris.core.commands;
|
||||
import art.arcane.iris.Iris;
|
||||
import art.arcane.iris.core.service.StudioSVC;
|
||||
import art.arcane.iris.engine.object.*;
|
||||
import art.arcane.iris.util.decree.DecreeExecutor;
|
||||
import art.arcane.iris.util.director.DirectorExecutor;
|
||||
import art.arcane.volmlib.util.director.DirectorOrigin;
|
||||
import art.arcane.volmlib.util.director.annotations.Director;
|
||||
import art.arcane.volmlib.util.director.annotations.Param;
|
||||
@@ -31,7 +31,7 @@ import java.awt.*;
|
||||
|
||||
|
||||
@Director(name = "edit", origin = DirectorOrigin.PLAYER, studio = true, description = "Edit something")
|
||||
public class CommandEdit implements DecreeExecutor {
|
||||
public class CommandEdit implements DirectorExecutor {
|
||||
|
||||
private boolean noStudio() {
|
||||
if (!sender().isPlayer()) {
|
||||
|
||||
@@ -22,15 +22,15 @@ import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.iris.engine.object.IrisBiome;
|
||||
import art.arcane.iris.engine.object.IrisJigsawStructure;
|
||||
import art.arcane.iris.engine.object.IrisRegion;
|
||||
import art.arcane.iris.util.decree.DecreeExecutor;
|
||||
import art.arcane.iris.util.director.DirectorExecutor;
|
||||
import art.arcane.volmlib.util.director.DirectorOrigin;
|
||||
import art.arcane.volmlib.util.director.annotations.Director;
|
||||
import art.arcane.volmlib.util.director.annotations.Param;
|
||||
import art.arcane.iris.util.decree.specialhandlers.ObjectHandler;
|
||||
import art.arcane.iris.util.director.specialhandlers.ObjectHandler;
|
||||
import art.arcane.iris.util.format.C;
|
||||
|
||||
@Director(name = "find", origin = DirectorOrigin.PLAYER, description = "Iris Find commands", aliases = "goto")
|
||||
public class CommandFind implements DecreeExecutor {
|
||||
public class CommandFind implements DirectorExecutor {
|
||||
@Director(description = "Find a biome")
|
||||
public void biome(
|
||||
@Param(description = "The biome to look for")
|
||||
|
||||
@@ -29,24 +29,25 @@ import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.iris.engine.object.IrisDimension;
|
||||
import art.arcane.iris.engine.platform.PlatformChunkGenerator;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.iris.util.decree.DecreeContext;
|
||||
import art.arcane.iris.util.director.DirectorContext;
|
||||
import art.arcane.volmlib.util.director.DirectorParameterHandler;
|
||||
import art.arcane.iris.util.decree.DecreeExecutor;
|
||||
import art.arcane.iris.util.director.DirectorExecutor;
|
||||
import art.arcane.volmlib.util.director.DirectorOrigin;
|
||||
import art.arcane.volmlib.util.director.annotations.Director;
|
||||
import art.arcane.volmlib.util.director.annotations.Param;
|
||||
import art.arcane.volmlib.util.director.exceptions.DirectorParsingException;
|
||||
import art.arcane.iris.util.decree.specialhandlers.NullablePlayerHandler;
|
||||
import art.arcane.iris.util.director.specialhandlers.NullablePlayerHandler;
|
||||
import art.arcane.iris.util.format.C;
|
||||
import art.arcane.volmlib.util.io.IO;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import art.arcane.iris.util.parallel.SyncExecutor;
|
||||
import art.arcane.iris.util.misc.ServerProperties;
|
||||
import art.arcane.iris.util.misc.RegenRuntime;
|
||||
import art.arcane.iris.util.mantle.MantleChunk;
|
||||
import art.arcane.volmlib.util.mantle.runtime.MantleChunk;
|
||||
import art.arcane.iris.util.matter.TileWrapper;
|
||||
import art.arcane.iris.util.plugin.VolmitSender;
|
||||
import art.arcane.iris.util.scheduling.J;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.World;
|
||||
@@ -89,7 +90,7 @@ import static art.arcane.iris.util.misc.ServerProperties.BUKKIT_YML;
|
||||
import static org.bukkit.Bukkit.getServer;
|
||||
|
||||
@Director(name = "iris", aliases = {"ir", "irs"}, description = "Basic Command")
|
||||
public class CommandIris implements DecreeExecutor {
|
||||
public class CommandIris implements DirectorExecutor {
|
||||
private static final long REGEN_HEARTBEAT_MS = 5000L;
|
||||
private static final int REGEN_MAX_ATTEMPTS = 2;
|
||||
private static final int REGEN_STACK_LIMIT = 20;
|
||||
@@ -777,7 +778,7 @@ public class CommandIris implements DecreeExecutor {
|
||||
try {
|
||||
setRegenSetupPhase(setupPhase, setupPhaseSince, "touch-context", world, runId);
|
||||
updateRegenSetupDisplay(display, mode, "Touching command context", 1, 6);
|
||||
DecreeContext.touch(sender);
|
||||
DirectorContext.touch(sender);
|
||||
if (mode.usesMaintenance()) {
|
||||
setRegenSetupPhase(setupPhase, setupPhaseSince, "enter-maintenance", world, runId);
|
||||
updateRegenSetupDisplay(display, mode, "Entering maintenance", 2, 6);
|
||||
@@ -886,7 +887,7 @@ public class CommandIris implements DecreeExecutor {
|
||||
if (!displayTerminal) {
|
||||
closeRegenDisplay(display, REGEN_DISPLAY_FINAL_TICKS);
|
||||
}
|
||||
DecreeContext.remove();
|
||||
DirectorContext.remove();
|
||||
Iris.info("Regen run closed: id=" + runId + " world=" + world.getName() + " totalMs=" + (System.currentTimeMillis() - runStart));
|
||||
}
|
||||
}
|
||||
@@ -1179,7 +1180,7 @@ public class CommandIris implements DecreeExecutor {
|
||||
double overallProgress = ((safePassIndex - 1) + passProgress) / safePassCount;
|
||||
int percent = (int) Math.round(overallProgress * 100.0D);
|
||||
String bar = buildRegenProgressBar(overallProgress);
|
||||
String statusColor = failed ? C.RED : terminal ? C.GREEN : stalled ? C.RED : C.AQUA;
|
||||
C statusColor = failed ? C.RED : terminal ? C.GREEN : stalled ? C.RED : C.AQUA;
|
||||
String statusLabel = failed ? "FAILED" : terminal ? "DONE" : stalled ? "STALLED" : "RUN";
|
||||
BarColor bossColor = failed ? BarColor.RED : terminal ? BarColor.GREEN : stalled ? BarColor.RED : BarColor.BLUE;
|
||||
String title = C.GOLD + "Regen " + mode.id()
|
||||
@@ -1202,7 +1203,8 @@ public class CommandIris implements DecreeExecutor {
|
||||
}
|
||||
|
||||
if (sender.isPlayer()) {
|
||||
J.runEntity(sender.player(), () -> sender.sendAction(action));
|
||||
String actionText = action;
|
||||
J.runEntity(sender.player(), () -> sender.sendAction(actionText));
|
||||
}
|
||||
return now;
|
||||
}
|
||||
@@ -1464,7 +1466,7 @@ public class CommandIris implements DecreeExecutor {
|
||||
}
|
||||
|
||||
private RegenMantleChunkState inspectRegenMantleChunk(PlatformChunkGenerator platform, int chunkX, int chunkZ) {
|
||||
MantleChunk chunk = platform.getEngine().getMantle().getMantle().getChunk(chunkX, chunkZ).use();
|
||||
MantleChunk<Matter> chunk = platform.getEngine().getMantle().getMantle().getChunk(chunkX, chunkZ).use();
|
||||
try {
|
||||
AtomicInteger blockDataEntries = new AtomicInteger();
|
||||
AtomicInteger stringEntries = new AtomicInteger();
|
||||
@@ -1528,7 +1530,7 @@ public class CommandIris implements DecreeExecutor {
|
||||
boolean scheduled = J.runRegion(world, chunkX, chunkZ, () -> {
|
||||
try {
|
||||
Chunk chunk = world.getChunkAt(chunkX, chunkZ);
|
||||
MantleChunk mantleChunk = platform.getEngine().getMantle().getMantle().getChunk(chunkX, chunkZ).use();
|
||||
MantleChunk<Matter> mantleChunk = platform.getEngine().getMantle().getMantle().getChunk(chunkX, chunkZ).use();
|
||||
try {
|
||||
mantleChunk.iterate(String.class, (x, y, z, value) -> {
|
||||
if (value != null && !value.isEmpty() && value.indexOf('@') > 0) {
|
||||
@@ -1705,7 +1707,7 @@ public class CommandIris implements DecreeExecutor {
|
||||
long total = (long) (toX - fromX + 1) * (long) (toZ - fromZ + 1);
|
||||
long started = System.currentTimeMillis();
|
||||
int resetCount = 0;
|
||||
art.arcane.iris.util.mantle.Mantle mantle = platform.getEngine().getMantle().getMantle();
|
||||
art.arcane.volmlib.util.mantle.runtime.Mantle mantle = platform.getEngine().getMantle().getMantle();
|
||||
AtomicReference<Thread> deleteThread = new AtomicReference<>();
|
||||
ThreadFactory deleteFactory = runnable -> {
|
||||
Thread thread = new Thread(runnable, "Iris-Regen-Reset-" + runId);
|
||||
|
||||
@@ -27,11 +27,11 @@ import art.arcane.iris.engine.object.IrisJigsawPiece;
|
||||
import art.arcane.iris.engine.object.IrisJigsawStructure;
|
||||
import art.arcane.iris.engine.object.IrisObject;
|
||||
import art.arcane.iris.engine.object.IrisPosition;
|
||||
import art.arcane.iris.util.decree.DecreeExecutor;
|
||||
import art.arcane.iris.util.director.DirectorExecutor;
|
||||
import art.arcane.volmlib.util.director.DirectorOrigin;
|
||||
import art.arcane.volmlib.util.director.annotations.Director;
|
||||
import art.arcane.volmlib.util.director.annotations.Param;
|
||||
import art.arcane.iris.util.decree.specialhandlers.ObjectHandler;
|
||||
import art.arcane.iris.util.director.specialhandlers.ObjectHandler;
|
||||
import art.arcane.iris.util.format.C;
|
||||
import art.arcane.volmlib.util.format.Form;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
@@ -41,7 +41,7 @@ import art.arcane.volmlib.util.scheduling.PrecisionStopwatch;
|
||||
import java.io.File;
|
||||
|
||||
@Director(name = "jigsaw", origin = DirectorOrigin.PLAYER, studio = true, description = "Iris jigsaw commands")
|
||||
public class CommandJigsaw implements DecreeExecutor {
|
||||
public class CommandJigsaw implements DirectorExecutor {
|
||||
@Director(description = "Edit a jigsaw piece")
|
||||
public void edit(
|
||||
@Param(description = "The jigsaw piece to edit")
|
||||
|
||||
@@ -24,11 +24,11 @@ import art.arcane.iris.core.gui.PregeneratorJob;
|
||||
import art.arcane.iris.core.pregenerator.LazyPregenerator;
|
||||
import art.arcane.iris.core.pregenerator.PregenTask;
|
||||
import art.arcane.iris.core.tools.IrisToolbelt;
|
||||
import art.arcane.iris.util.decree.DecreeExecutor;
|
||||
import art.arcane.iris.util.director.DirectorExecutor;
|
||||
import art.arcane.volmlib.util.director.annotations.Director;
|
||||
import art.arcane.volmlib.util.director.annotations.Param;
|
||||
import art.arcane.iris.util.format.C;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.util.Vector;
|
||||
@@ -37,7 +37,7 @@ import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
@Director(name = "lazypregen", aliases = "lazy", description = "Pregenerate your Iris worlds!")
|
||||
public class CommandLazyPregen implements DecreeExecutor {
|
||||
public class CommandLazyPregen implements DirectorExecutor {
|
||||
public String worldName;
|
||||
@Director(description = "Pregenerate a world")
|
||||
public void start(
|
||||
|
||||
@@ -30,11 +30,11 @@ import art.arcane.iris.engine.object.*;
|
||||
import art.arcane.volmlib.util.data.Cuboid;
|
||||
import art.arcane.iris.util.data.IrisCustomData;
|
||||
import art.arcane.iris.util.data.registry.Materials;
|
||||
import art.arcane.iris.util.decree.DecreeExecutor;
|
||||
import art.arcane.iris.util.director.DirectorExecutor;
|
||||
import art.arcane.volmlib.util.director.DirectorOrigin;
|
||||
import art.arcane.volmlib.util.director.annotations.Director;
|
||||
import art.arcane.volmlib.util.director.annotations.Param;
|
||||
import art.arcane.iris.util.decree.specialhandlers.ObjectHandler;
|
||||
import art.arcane.iris.util.director.specialhandlers.ObjectHandler;
|
||||
import art.arcane.iris.util.format.C;
|
||||
import art.arcane.iris.util.math.Direction;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
@@ -50,7 +50,7 @@ import java.text.NumberFormat;
|
||||
import java.util.*;
|
||||
|
||||
@Director(name = "object", aliases = "o", origin = DirectorOrigin.PLAYER, studio = true, description = "Iris object manipulation")
|
||||
public class CommandObject implements DecreeExecutor {
|
||||
public class CommandObject implements DirectorExecutor {
|
||||
|
||||
private static final Set<Material> skipBlocks = Set.of(Materials.GRASS, Material.SNOW, Material.VINE, Material.TORCH, Material.DEAD_BUSH,
|
||||
Material.POPPY, Material.DANDELION);
|
||||
|
||||
@@ -22,16 +22,16 @@ import art.arcane.iris.Iris;
|
||||
import art.arcane.iris.core.gui.PregeneratorJob;
|
||||
import art.arcane.iris.core.pregenerator.PregenTask;
|
||||
import art.arcane.iris.core.tools.IrisToolbelt;
|
||||
import art.arcane.iris.util.decree.DecreeExecutor;
|
||||
import art.arcane.iris.util.director.DirectorExecutor;
|
||||
import art.arcane.volmlib.util.director.annotations.Director;
|
||||
import art.arcane.volmlib.util.director.annotations.Param;
|
||||
import art.arcane.iris.util.format.C;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
@Director(name = "pregen", aliases = "pregenerate", description = "Pregenerate your Iris worlds!")
|
||||
public class CommandPregen implements DecreeExecutor {
|
||||
public class CommandPregen implements DirectorExecutor {
|
||||
@Director(description = "Pregenerate a world")
|
||||
public void start(
|
||||
@Param(description = "The radius of the pregen in blocks", aliases = "size")
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
|
||||
package art.arcane.iris.core.commands;
|
||||
|
||||
import art.arcane.iris.util.decree.DecreeExecutor;
|
||||
import art.arcane.iris.util.director.DirectorExecutor;
|
||||
|
||||
public class CommandSettings implements DecreeExecutor {
|
||||
public class CommandSettings implements DirectorExecutor {
|
||||
|
||||
}
|
||||
|
||||
@@ -33,10 +33,10 @@ import art.arcane.iris.engine.platform.PlatformChunkGenerator;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.volmlib.util.collection.KSet;
|
||||
import art.arcane.iris.util.decree.DecreeContext;
|
||||
import art.arcane.iris.util.decree.DecreeExecutor;
|
||||
import art.arcane.iris.util.decree.handlers.DimensionHandler;
|
||||
import art.arcane.iris.util.decree.specialhandlers.NullableDimensionHandler;
|
||||
import art.arcane.iris.util.director.DirectorContext;
|
||||
import art.arcane.iris.util.director.DirectorExecutor;
|
||||
import art.arcane.iris.util.director.handlers.DimensionHandler;
|
||||
import art.arcane.iris.util.director.specialhandlers.NullableDimensionHandler;
|
||||
import art.arcane.volmlib.util.director.DirectorOrigin;
|
||||
import art.arcane.volmlib.util.director.annotations.Director;
|
||||
import art.arcane.volmlib.util.director.annotations.Param;
|
||||
@@ -48,9 +48,9 @@ import art.arcane.iris.util.interpolation.InterpolationMethod;
|
||||
import art.arcane.volmlib.util.io.IO;
|
||||
import art.arcane.volmlib.util.json.JSONArray;
|
||||
import art.arcane.volmlib.util.json.JSONObject;
|
||||
import art.arcane.iris.util.mantle.MantleChunk;
|
||||
import art.arcane.volmlib.util.mantle.runtime.MantleChunk;
|
||||
import art.arcane.volmlib.util.math.M;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.volmlib.util.math.Spiraler;
|
||||
import art.arcane.iris.util.noise.CNG;
|
||||
@@ -84,7 +84,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
@Director(name = "studio", aliases = {"std", "s"}, description = "Studio Commands", studio = true)
|
||||
public class CommandStudio implements DecreeExecutor {
|
||||
public class CommandStudio implements DirectorExecutor {
|
||||
private CommandFind find;
|
||||
private CommandEdit edit;
|
||||
//private CommandDeepSearch deepSearch;
|
||||
@@ -188,7 +188,7 @@ public class CommandStudio implements DecreeExecutor {
|
||||
Thread orchestrator = new Thread(() -> {
|
||||
PlatformChunkGenerator plat = IrisToolbelt.access(world);
|
||||
Engine engine = plat.getEngine();
|
||||
DecreeContext.touch(sender);
|
||||
DirectorContext.touch(sender);
|
||||
IrisToolbelt.beginWorldMaintenance(world, "studio-regen");
|
||||
try (SyncExecutor executor = new SyncExecutor(20);
|
||||
var service = Executors.newFixedThreadPool(threadCount)
|
||||
@@ -256,7 +256,7 @@ public class CommandStudio implements DecreeExecutor {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
IrisToolbelt.endWorldMaintenance(world, "studio-regen");
|
||||
DecreeContext.remove();
|
||||
DirectorContext.remove();
|
||||
}
|
||||
}, orchestratorName);
|
||||
orchestrator.setDaemon(true);
|
||||
|
||||
@@ -22,7 +22,7 @@ import art.arcane.iris.Iris;
|
||||
import art.arcane.iris.core.pregenerator.LazyPregenerator;
|
||||
import art.arcane.iris.core.pregenerator.TurboPregenerator;
|
||||
import art.arcane.iris.core.pregenerator.TurboPregenerator;
|
||||
import art.arcane.iris.util.decree.DecreeExecutor;
|
||||
import art.arcane.iris.util.director.DirectorExecutor;
|
||||
import art.arcane.volmlib.util.director.annotations.Director;
|
||||
import art.arcane.volmlib.util.director.annotations.Param;
|
||||
import art.arcane.iris.util.format.C;
|
||||
@@ -34,7 +34,7 @@ import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
@Director(name = "turbopregen", aliases = "turbo", description = "Pregenerate your Iris worlds!")
|
||||
public class CommandTurboPregen implements DecreeExecutor {
|
||||
public class CommandTurboPregen implements DirectorExecutor {
|
||||
public String worldName;
|
||||
@Director(description = "Pregenerate a world")
|
||||
public void start(
|
||||
|
||||
@@ -24,7 +24,7 @@ import org.bukkit.World;
|
||||
import art.arcane.iris.Iris;
|
||||
import art.arcane.iris.core.pregenerator.ChunkUpdater;
|
||||
import art.arcane.iris.core.tools.IrisToolbelt;
|
||||
import art.arcane.iris.util.decree.DecreeExecutor;
|
||||
import art.arcane.iris.util.director.DirectorExecutor;
|
||||
import art.arcane.volmlib.util.director.DirectorOrigin;
|
||||
import art.arcane.volmlib.util.director.annotations.Director;
|
||||
import art.arcane.volmlib.util.director.annotations.Param;
|
||||
@@ -32,7 +32,7 @@ import art.arcane.iris.util.format.C;
|
||||
import art.arcane.volmlib.util.format.Form;
|
||||
|
||||
@Director(name = "updater", origin = DirectorOrigin.BOTH, description = "Iris World Updater")
|
||||
public class CommandUpdater implements DecreeExecutor {
|
||||
public class CommandUpdater implements DirectorExecutor {
|
||||
private final Object lock = new Object();
|
||||
private transient ChunkUpdater chunkUpdater;
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.iris.engine.object.IrisBiome;
|
||||
import art.arcane.iris.engine.object.IrisRegion;
|
||||
import art.arcane.iris.util.data.B;
|
||||
import art.arcane.iris.util.decree.DecreeExecutor;
|
||||
import art.arcane.iris.util.director.DirectorExecutor;
|
||||
import art.arcane.volmlib.util.director.DirectorOrigin;
|
||||
import art.arcane.volmlib.util.director.annotations.Director;
|
||||
import art.arcane.volmlib.util.director.annotations.Param;
|
||||
@@ -43,7 +43,7 @@ import java.util.Objects;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
@Director(name = "what", origin = DirectorOrigin.PLAYER, studio = true, description = "Iris What?")
|
||||
public class CommandWhat implements DecreeExecutor {
|
||||
public class CommandWhat implements DirectorExecutor {
|
||||
@Director(description = "What is in my hand?", origin = DirectorOrigin.PLAYER)
|
||||
public void hand() {
|
||||
try {
|
||||
|
||||
@@ -29,9 +29,10 @@ import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.format.Form;
|
||||
import art.arcane.volmlib.util.format.MemoryMonitor;
|
||||
import art.arcane.volmlib.util.function.Consumer2;
|
||||
import art.arcane.iris.util.mantle.Mantle;
|
||||
import art.arcane.volmlib.util.mantle.runtime.Mantle;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import art.arcane.volmlib.util.math.M;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import art.arcane.volmlib.util.scheduling.ChronoLatch;
|
||||
import art.arcane.iris.util.scheduling.J;
|
||||
import org.bukkit.World;
|
||||
|
||||
@@ -21,8 +21,7 @@ package art.arcane.iris.core.gui.components;
|
||||
import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.iris.engine.object.IrisBiome;
|
||||
import art.arcane.iris.engine.object.IrisBiomeGeneratorLink;
|
||||
import art.arcane.iris.util.interpolation.IrisInterpolation;
|
||||
|
||||
import art.arcane.iris.util.interpolation.IrisInterpolation;
|
||||
import java.awt.*;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.util.function.BiFunction;
|
||||
|
||||
@@ -27,7 +27,8 @@ import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.iris.engine.platform.PlatformChunkGenerator;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.iris.util.mantle.Mantle;
|
||||
import art.arcane.volmlib.util.mantle.runtime.Mantle;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import art.arcane.volmlib.util.math.Vector3d;
|
||||
import art.arcane.volmlib.util.nbt.mca.palette.MCABiomeContainer;
|
||||
import art.arcane.volmlib.util.nbt.mca.palette.MCAPaletteAccess;
|
||||
@@ -109,7 +110,7 @@ public interface INMSBinding {
|
||||
|
||||
MCAPaletteAccess createPalette();
|
||||
|
||||
void injectBiomesFromMantle(Chunk e, Mantle mantle);
|
||||
void injectBiomesFromMantle(Chunk e, Mantle<Matter> mantle);
|
||||
|
||||
ItemStack applyCustomNbt(ItemStack itemStack, KMap<String, Object> customNbt) throws IllegalArgumentException;
|
||||
|
||||
|
||||
@@ -29,7 +29,8 @@ import art.arcane.iris.core.nms.container.StructurePlacement;
|
||||
import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.iris.util.mantle.Mantle;
|
||||
import art.arcane.volmlib.util.mantle.runtime.Mantle;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import art.arcane.volmlib.util.math.Vector3d;
|
||||
import art.arcane.volmlib.util.nbt.mca.palette.MCABiomeContainer;
|
||||
import art.arcane.volmlib.util.nbt.mca.palette.MCAPaletteAccess;
|
||||
@@ -87,7 +88,7 @@ public class NMSBinding1X implements INMSBinding {
|
||||
|
||||
|
||||
@Override
|
||||
public void injectBiomesFromMantle(Chunk e, Mantle mantle) {
|
||||
public void injectBiomesFromMantle(Chunk e, Mantle<Matter> mantle) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.volmlib.util.format.Form;
|
||||
import art.arcane.volmlib.util.mantle.flag.MantleFlag;
|
||||
import art.arcane.volmlib.util.math.M;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.RollingSequence;
|
||||
import art.arcane.iris.util.plugin.chunk.TicketHolder;
|
||||
import art.arcane.iris.util.profile.LoadBalancer;
|
||||
|
||||
@@ -10,7 +10,7 @@ import art.arcane.iris.util.format.C;
|
||||
import art.arcane.volmlib.util.format.Form;
|
||||
import art.arcane.volmlib.util.io.IO;
|
||||
import art.arcane.volmlib.util.math.M;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.RollingSequence;
|
||||
import art.arcane.volmlib.util.math.Spiraler;
|
||||
import art.arcane.volmlib.util.scheduling.ChronoLatch;
|
||||
|
||||
@@ -24,9 +24,10 @@ import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.collection.KSet;
|
||||
import art.arcane.iris.util.format.C;
|
||||
import art.arcane.volmlib.util.format.Form;
|
||||
import art.arcane.iris.util.mantle.Mantle;
|
||||
import art.arcane.volmlib.util.mantle.runtime.Mantle;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import art.arcane.volmlib.util.math.M;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.RollingSequence;
|
||||
import art.arcane.volmlib.util.scheduling.ChronoLatch;
|
||||
import art.arcane.iris.util.scheduling.J;
|
||||
|
||||
@@ -6,7 +6,7 @@ import art.arcane.iris.util.format.C;
|
||||
import art.arcane.volmlib.util.format.Form;
|
||||
import art.arcane.volmlib.util.io.IO;
|
||||
import art.arcane.volmlib.util.math.M;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.RollingSequence;
|
||||
import art.arcane.volmlib.util.math.Spiraler;
|
||||
import art.arcane.volmlib.util.scheduling.ChronoLatch;
|
||||
|
||||
@@ -20,7 +20,7 @@ package art.arcane.iris.core.pregenerator;
|
||||
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Spiraled;
|
||||
import art.arcane.volmlib.util.math.Spiraler;
|
||||
import lombok.Builder;
|
||||
|
||||
@@ -18,7 +18,8 @@
|
||||
|
||||
package art.arcane.iris.core.pregenerator;
|
||||
|
||||
import art.arcane.iris.util.mantle.Mantle;
|
||||
import art.arcane.volmlib.util.mantle.runtime.Mantle;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
|
||||
/**
|
||||
* Represents something that is capable of generating in chunks or regions, or both
|
||||
|
||||
@@ -8,7 +8,7 @@ import art.arcane.iris.util.format.C;
|
||||
import art.arcane.volmlib.util.format.Form;
|
||||
import art.arcane.volmlib.util.io.IO;
|
||||
import art.arcane.volmlib.util.math.M;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.RollingSequence;
|
||||
import art.arcane.volmlib.util.math.Spiraler;
|
||||
import art.arcane.iris.util.parallel.BurstExecutor;
|
||||
|
||||
@@ -20,7 +20,8 @@ package art.arcane.iris.core.pregenerator.methods;
|
||||
|
||||
import art.arcane.iris.core.pregenerator.PregenListener;
|
||||
import art.arcane.iris.core.pregenerator.PregeneratorMethod;
|
||||
import art.arcane.iris.util.mantle.Mantle;
|
||||
import art.arcane.volmlib.util.mantle.runtime.Mantle;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import io.papermc.lib.PaperLib;
|
||||
import org.bukkit.World;
|
||||
|
||||
|
||||
@@ -23,7 +23,8 @@ import art.arcane.iris.core.IrisSettings;
|
||||
import art.arcane.iris.core.pregenerator.PregenListener;
|
||||
import art.arcane.iris.core.pregenerator.PregeneratorMethod;
|
||||
import art.arcane.iris.core.tools.IrisToolbelt;
|
||||
import art.arcane.iris.util.mantle.Mantle;
|
||||
import art.arcane.volmlib.util.mantle.runtime.Mantle;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import art.arcane.volmlib.util.math.M;
|
||||
import art.arcane.iris.util.parallel.MultiBurst;
|
||||
import art.arcane.iris.util.scheduling.J;
|
||||
|
||||
@@ -5,7 +5,8 @@ import art.arcane.iris.core.pregenerator.PregenListener;
|
||||
import art.arcane.iris.core.pregenerator.PregeneratorMethod;
|
||||
import art.arcane.iris.core.pregenerator.cache.PregenCache;
|
||||
import art.arcane.iris.core.service.GlobalCacheSVC;
|
||||
import art.arcane.iris.util.mantle.Mantle;
|
||||
import art.arcane.volmlib.util.mantle.runtime.Mantle;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
@AllArgsConstructor
|
||||
|
||||
@@ -20,7 +20,8 @@ package art.arcane.iris.core.pregenerator.methods;
|
||||
|
||||
import art.arcane.iris.core.pregenerator.PregenListener;
|
||||
import art.arcane.iris.core.pregenerator.PregeneratorMethod;
|
||||
import art.arcane.iris.util.mantle.Mantle;
|
||||
import art.arcane.volmlib.util.mantle.runtime.Mantle;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
|
||||
public class DummyPregenMethod implements PregeneratorMethod {
|
||||
@Override
|
||||
|
||||
@@ -20,7 +20,8 @@ package art.arcane.iris.core.pregenerator.methods;
|
||||
|
||||
import art.arcane.iris.core.pregenerator.PregenListener;
|
||||
import art.arcane.iris.core.pregenerator.PregeneratorMethod;
|
||||
import art.arcane.iris.util.mantle.Mantle;
|
||||
import art.arcane.volmlib.util.mantle.runtime.Mantle;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import org.bukkit.World;
|
||||
|
||||
public class HybridPregenMethod implements PregeneratorMethod {
|
||||
|
||||
@@ -24,7 +24,8 @@ import art.arcane.iris.core.pregenerator.PregenListener;
|
||||
import art.arcane.iris.core.pregenerator.PregeneratorMethod;
|
||||
import art.arcane.iris.core.tools.IrisToolbelt;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.iris.util.mantle.Mantle;
|
||||
import art.arcane.volmlib.util.mantle.runtime.Mantle;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import art.arcane.volmlib.util.math.M;
|
||||
import art.arcane.iris.util.scheduling.J;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
@@ -4,7 +4,7 @@ import art.arcane.iris.core.loader.IrisRegistrant;
|
||||
import art.arcane.iris.core.scripting.func.UpdateExecutor;
|
||||
import art.arcane.iris.core.scripting.kotlin.environment.IrisExecutionEnvironment;
|
||||
import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.iris.util.mantle.MantleChunk;
|
||||
import art.arcane.volmlib.util.mantle.runtime.MantleChunk;
|
||||
import lombok.NonNull;
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.Location;
|
||||
@@ -26,5 +26,5 @@ public interface EngineEnvironment extends PackEnvironment {
|
||||
|
||||
void preprocessObject(@NonNull String script, @NonNull IrisRegistrant object);
|
||||
|
||||
void updateChunk(@NonNull String script, @NonNull MantleChunk mantleChunk, @NonNull Chunk chunk, @NonNull UpdateExecutor executor);
|
||||
}
|
||||
void updateChunk(@NonNull String script, @NonNull MantleChunk<?> mantleChunk, @NonNull Chunk chunk, @NonNull UpdateExecutor executor);
|
||||
}
|
||||
|
||||
@@ -23,9 +23,9 @@ import art.arcane.iris.core.IrisSettings;
|
||||
import art.arcane.iris.core.commands.CommandIris;
|
||||
import art.arcane.iris.core.tools.IrisToolbelt;
|
||||
import art.arcane.iris.engine.data.cache.AtomicCache;
|
||||
import art.arcane.iris.util.decree.DecreeContext;
|
||||
import art.arcane.iris.util.decree.DecreeContextHandler;
|
||||
import art.arcane.iris.util.decree.DecreeSystem;
|
||||
import art.arcane.iris.util.director.DirectorContext;
|
||||
import art.arcane.iris.util.director.DirectorContextHandler;
|
||||
import art.arcane.iris.util.director.DirectorSystem;
|
||||
import art.arcane.iris.util.format.C;
|
||||
import art.arcane.iris.util.plugin.IrisService;
|
||||
import art.arcane.iris.util.plugin.VolmitSender;
|
||||
@@ -100,14 +100,14 @@ public class CommandSVC implements IrisService, CommandExecutor, TabCompleter, D
|
||||
buildDirectorContexts(),
|
||||
this::dispatchDirector,
|
||||
this,
|
||||
DecreeSystem.handlers
|
||||
DirectorSystem.handlers
|
||||
));
|
||||
}
|
||||
|
||||
private DirectorContextRegistry buildDirectorContexts() {
|
||||
DirectorContextRegistry contexts = new DirectorContextRegistry();
|
||||
|
||||
for (Map.Entry<Class<?>, DecreeContextHandler<?>> entry : DecreeContextHandler.contextHandlers.entrySet()) {
|
||||
for (Map.Entry<Class<?>, DirectorContextHandler<?>> entry : DirectorContextHandler.contextHandlers.entrySet()) {
|
||||
registerContextHandler(contexts, entry.getKey(), entry.getValue());
|
||||
}
|
||||
|
||||
@@ -115,10 +115,10 @@ public class CommandSVC implements IrisService, CommandExecutor, TabCompleter, D
|
||||
}
|
||||
|
||||
@SuppressWarnings({"rawtypes", "unchecked"})
|
||||
private void registerContextHandler(DirectorContextRegistry contexts, Class<?> type, DecreeContextHandler<?> handler) {
|
||||
private void registerContextHandler(DirectorContextRegistry contexts, Class<?> type, DirectorContextHandler<?> handler) {
|
||||
contexts.register((Class) type, (invocation, map) -> {
|
||||
if (invocation.getSender() instanceof BukkitDirectorSender sender) {
|
||||
return ((DecreeContextHandler) handler).handle(new VolmitSender(sender.sender()));
|
||||
return ((DirectorContextHandler) handler).handle(new VolmitSender(sender.sender()));
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -136,13 +136,13 @@ public class CommandSVC implements IrisService, CommandExecutor, TabCompleter, D
|
||||
@Override
|
||||
public void beforeInvoke(DirectorInvocation invocation, DirectorRuntimeNode node) {
|
||||
if (invocation.getSender() instanceof BukkitDirectorSender sender) {
|
||||
DecreeContext.touch(new VolmitSender(sender.sender()));
|
||||
DirectorContext.touch(new VolmitSender(sender.sender()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterInvoke(DirectorInvocation invocation, DirectorRuntimeNode node) {
|
||||
DecreeContext.remove();
|
||||
DirectorContext.remove();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -201,7 +201,7 @@ public class CommandSVC implements IrisService, CommandExecutor, TabCompleter, D
|
||||
}
|
||||
|
||||
VolmitSender volmitSender = new VolmitSender(sender);
|
||||
volmitSender.sendDecreeHelp(request.get().command(), request.get().page());
|
||||
volmitSender.sendDirectorHelp(request.get().command(), request.get().page());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -279,7 +279,7 @@ public class IrisEngineSVC implements IrisService {
|
||||
if (engine == null
|
||||
|| engine.isClosed()
|
||||
|| engine.getMantle().getMantle().isClosed()
|
||||
|| !engine.getMantle().getMantle().shouldReduce(engine))
|
||||
|| !shouldReduce(engine))
|
||||
return;
|
||||
World engineWorld = engine.getWorld().realWorld();
|
||||
if (engineWorld != null && IrisToolbelt.isWorldMaintenanceActive(engineWorld)) {
|
||||
@@ -306,7 +306,7 @@ public class IrisEngineSVC implements IrisService {
|
||||
if (engine == null
|
||||
|| engine.isClosed()
|
||||
|| engine.getMantle().getMantle().isClosed()
|
||||
|| !engine.getMantle().getMantle().shouldReduce(engine))
|
||||
|| !shouldReduce(engine))
|
||||
return;
|
||||
World engineWorld = engine.getWorld().realWorld();
|
||||
if (engineWorld != null && IrisToolbelt.isWorldMaintenanceActive(engineWorld)) {
|
||||
@@ -357,5 +357,9 @@ public class IrisEngineSVC implements IrisService {
|
||||
if (closed) return null;
|
||||
return access.getEngine();
|
||||
}
|
||||
|
||||
private boolean shouldReduce(Engine engine) {
|
||||
return !engine.isStudio() || IrisSettings.get().getPerformance().isTrimMantleInStudio();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.data.Cuboid;
|
||||
import art.arcane.iris.util.format.C;
|
||||
import art.arcane.volmlib.util.math.M;
|
||||
import art.arcane.iris.util.matter.Matter;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import art.arcane.iris.util.matter.WorldMatter;
|
||||
import art.arcane.iris.util.plugin.IrisService;
|
||||
import art.arcane.iris.util.plugin.VolmitSender;
|
||||
|
||||
@@ -47,8 +47,8 @@ import art.arcane.volmlib.util.io.IO;
|
||||
import art.arcane.volmlib.util.mantle.flag.MantleFlag;
|
||||
import art.arcane.volmlib.util.math.M;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.iris.util.matter.MatterStructurePOI;
|
||||
import art.arcane.iris.util.matter.slices.container.JigsawStructureContainer;
|
||||
import art.arcane.volmlib.util.matter.MatterStructurePOI;
|
||||
import art.arcane.volmlib.util.matter.slices.container.JigsawStructureContainer;
|
||||
import art.arcane.volmlib.util.scheduling.ChronoLatch;
|
||||
import art.arcane.iris.util.scheduling.J;
|
||||
import art.arcane.volmlib.util.scheduling.PrecisionStopwatch;
|
||||
@@ -236,7 +236,7 @@ public class IrisEngine implements Engine {
|
||||
@Override
|
||||
public IrisJigsawStructure getStructureAt(int x, int y, int z) {
|
||||
var container = getMantle().getMantle().get(x, y, z, JigsawStructureContainer.class);
|
||||
return container == null ? null : container.load(getData());
|
||||
return container == null ? null : getData().getJigsawStructureLoader().load(container.getLoadKey());
|
||||
}
|
||||
|
||||
private void warmupChunk(int x, int z) {
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
|
||||
package art.arcane.iris.engine;
|
||||
|
||||
import art.arcane.iris.Iris;
|
||||
import art.arcane.iris.core.IrisSettings;
|
||||
import art.arcane.iris.core.tools.IrisToolbelt;
|
||||
import art.arcane.iris.engine.EnginePanic;
|
||||
import art.arcane.iris.core.nms.container.Pair;
|
||||
import art.arcane.iris.engine.data.cache.AtomicCache;
|
||||
import art.arcane.iris.engine.framework.Engine;
|
||||
@@ -29,11 +33,29 @@ import art.arcane.iris.engine.mantle.components.MantleJigsawComponent;
|
||||
import art.arcane.iris.engine.mantle.components.MantleObjectComponent;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.iris.util.mantle.Mantle;
|
||||
import art.arcane.volmlib.util.format.Form;
|
||||
import art.arcane.volmlib.util.mantle.io.Lz4IOWorkerCodecSupport;
|
||||
import art.arcane.volmlib.util.mantle.runtime.IOWorker;
|
||||
import art.arcane.volmlib.util.mantle.runtime.Mantle;
|
||||
import art.arcane.volmlib.util.mantle.runtime.MantleDataAdapter;
|
||||
import art.arcane.volmlib.util.mantle.runtime.MantleHooks;
|
||||
import art.arcane.volmlib.util.mantle.runtime.TectonicPlate;
|
||||
import art.arcane.volmlib.util.mantle.flag.MantleFlag;
|
||||
import art.arcane.volmlib.util.scheduling.PrecisionStopwatch;
|
||||
import art.arcane.iris.util.format.C;
|
||||
import art.arcane.iris.util.matter.IrisMatterSupport;
|
||||
import art.arcane.volmlib.util.matter.IrisMatter;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import art.arcane.volmlib.util.matter.MatterSlice;
|
||||
import art.arcane.iris.util.parallel.HyperLock;
|
||||
import art.arcane.iris.util.parallel.MultiBurst;
|
||||
import lombok.*;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.entity.Entity;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -44,7 +66,7 @@ import java.util.Set;
|
||||
@ToString(exclude = "engine")
|
||||
public class IrisEngineMantle implements EngineMantle {
|
||||
private final Engine engine;
|
||||
private final Mantle mantle;
|
||||
private final Mantle<Matter> mantle;
|
||||
@Getter(AccessLevel.NONE)
|
||||
private final KMap<Integer, KList<MantleComponent>> components;
|
||||
private final KMap<MantleFlag, MantleComponent> registeredComponents = new KMap<>();
|
||||
@@ -55,7 +77,7 @@ public class IrisEngineMantle implements EngineMantle {
|
||||
|
||||
public IrisEngineMantle(Engine engine) {
|
||||
this.engine = engine;
|
||||
this.mantle = new Mantle(new File(engine.getWorld().worldFolder(), "mantle"), engine.getTarget().getHeight());
|
||||
this.mantle = createMantle(engine);
|
||||
components = new KMap<>();
|
||||
registerComponent(new MantleCarvingComponent(this));
|
||||
registerComponent(new MantleFluidBodyComponent(this));
|
||||
@@ -147,4 +169,239 @@ public class IrisEngineMantle implements EngineMantle {
|
||||
public MantleObjectComponent getObjectComponent() {
|
||||
return object;
|
||||
}
|
||||
|
||||
private static Mantle<Matter> createMantle(Engine engine) {
|
||||
IrisMatterSupport.ensureRegistered();
|
||||
File dataFolder = new File(engine.getWorld().worldFolder(), "mantle");
|
||||
int worldHeight = engine.getTarget().getHeight();
|
||||
MantleDataAdapter<Matter> adapter = createRuntimeDataAdapter();
|
||||
MantleHooks hooks = createRuntimeHooks();
|
||||
art.arcane.volmlib.util.mantle.Mantle.RegionIO<TectonicPlate<Matter>> regionIO =
|
||||
createRegionIO(dataFolder, worldHeight, adapter, hooks);
|
||||
return new Mantle<>(
|
||||
dataFolder,
|
||||
worldHeight,
|
||||
Short.MAX_VALUE,
|
||||
new HyperLock(),
|
||||
MultiBurst.ioBurst,
|
||||
regionIO,
|
||||
adapter,
|
||||
hooks
|
||||
);
|
||||
}
|
||||
|
||||
public static MantleDataAdapter<Matter> createRuntimeDataAdapter() {
|
||||
return createDataAdapter();
|
||||
}
|
||||
|
||||
public static MantleHooks createRuntimeHooks() {
|
||||
return createHooks();
|
||||
}
|
||||
|
||||
private static MantleDataAdapter<Matter> createDataAdapter() {
|
||||
return new MantleDataAdapter<>() {
|
||||
@Override
|
||||
public Matter createSection() {
|
||||
return new IrisMatter(16, 16, 16);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Matter readSection(art.arcane.volmlib.util.io.CountingDataInputStream din) throws IOException {
|
||||
return Matter.readDin(din);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeSection(Matter section, java.io.DataOutputStream dos) throws IOException {
|
||||
section.writeDos(dos);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void trimSection(Matter section) {
|
||||
section.trimSlices();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSectionEmpty(Matter section) {
|
||||
return section.getSliceMap().isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> classifyValue(Object value) {
|
||||
if (value instanceof World) {
|
||||
return World.class;
|
||||
}
|
||||
|
||||
if (value instanceof BlockData) {
|
||||
return BlockData.class;
|
||||
}
|
||||
|
||||
if (value instanceof Entity) {
|
||||
return Entity.class;
|
||||
}
|
||||
|
||||
return value.getClass();
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> void set(Matter section, int x, int y, int z, Class<?> type, T value) {
|
||||
MatterSlice<T> slice = (MatterSlice<T>) section.slice(type);
|
||||
slice.set(x, y, z, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void remove(Matter section, int x, int y, int z, Class<T> type) {
|
||||
MatterSlice<T> slice = section.slice(type);
|
||||
slice.set(x, y, z, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T get(Matter section, int x, int y, int z, Class<T> type) {
|
||||
MatterSlice<T> slice = section.slice(type);
|
||||
return slice.get(x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void iterate(Matter section, Class<T> type, art.arcane.volmlib.util.function.Consumer4<Integer, Integer, Integer, T> iterator) {
|
||||
MatterSlice<T> slice = section.getSlice(type);
|
||||
if (slice != null) {
|
||||
slice.iterateSync(iterator);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasSlice(Matter section, Class<?> type) {
|
||||
return section.hasSlice(type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteSlice(Matter section, Class<?> type) {
|
||||
section.deleteSlice(type);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static MantleHooks createHooks() {
|
||||
return new MantleHooks() {
|
||||
@Override
|
||||
public void onBeforeReadSection(int index) {
|
||||
Iris.addPanic("read.section", "Section[" + index + "]");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReadSectionFailure(int index,
|
||||
long start,
|
||||
long end,
|
||||
art.arcane.volmlib.util.io.CountingDataInputStream din,
|
||||
IOException error) {
|
||||
Iris.error("Failed to read chunk section, skipping it.");
|
||||
Iris.addPanic("read.byte.range", start + " " + end);
|
||||
Iris.addPanic("read.byte.current", din.count() + "");
|
||||
Iris.reportError(error);
|
||||
error.printStackTrace();
|
||||
Iris.panic();
|
||||
TectonicPlate.addError();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBeforeReadChunk(int index) {
|
||||
Iris.addPanic("read-chunk", "Chunk[" + index + "]");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAfterReadChunk(int index) {
|
||||
EnginePanic.saveLast();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReadChunkFailure(int index,
|
||||
long start,
|
||||
long end,
|
||||
art.arcane.volmlib.util.io.CountingDataInputStream din,
|
||||
Throwable error) {
|
||||
Iris.error("Failed to read chunk, creating a new chunk instead.");
|
||||
Iris.addPanic("read.byte.range", start + " " + end);
|
||||
Iris.addPanic("read.byte.current", din.count() + "");
|
||||
Iris.reportError(error);
|
||||
error.printStackTrace();
|
||||
Iris.panic();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldRetainSlice(Class<?> sliceType) {
|
||||
return IrisToolbelt.isRetainingMantleDataForSlice(sliceType.getCanonicalName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String formatDuration(double millis) {
|
||||
return Form.duration(millis, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDebug(String message) {
|
||||
Iris.debug(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWarn(String message) {
|
||||
Iris.warn(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable throwable) {
|
||||
Iris.reportError(throwable);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static art.arcane.volmlib.util.mantle.Mantle.RegionIO<TectonicPlate<Matter>> createRegionIO(File root,
|
||||
int worldHeight,
|
||||
MantleDataAdapter<Matter> adapter,
|
||||
MantleHooks hooks) {
|
||||
IOWorker<TectonicPlate<Matter>> worker = new IOWorker<>(
|
||||
root,
|
||||
new Lz4IOWorkerCodecSupport(),
|
||||
128,
|
||||
(name, millis) -> {
|
||||
String threadName = Thread.currentThread().getName();
|
||||
String message = "Acquired Channel for " + C.DARK_GREEN + name + C.RED + " in " + Form.duration(millis, 2)
|
||||
+ C.GRAY + " thread=" + threadName;
|
||||
if (millis >= 1000L) {
|
||||
Iris.warn(message);
|
||||
} else {
|
||||
Iris.debug(message);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
return new art.arcane.volmlib.util.mantle.Mantle.RegionIO<>() {
|
||||
@Override
|
||||
public TectonicPlate<Matter> read(String name) throws Exception {
|
||||
PrecisionStopwatch stopwatch = PrecisionStopwatch.start();
|
||||
try {
|
||||
return worker.read(name, (regionName, in) ->
|
||||
TectonicPlate.read(worldHeight, in, regionName.startsWith("pv."), adapter, hooks));
|
||||
} finally {
|
||||
if (TectonicPlate.hasError() && IrisSettings.get().getGeneral().isDumpMantleOnError()) {
|
||||
File dump = Iris.instance.getDataFolder("dump", name + ".bin");
|
||||
worker.dumpDecoded(name, dump.toPath());
|
||||
} else {
|
||||
Iris.debug("Read Tectonic Plate " + C.DARK_GREEN + name + C.RED + " in " + Form.duration(stopwatch.getMilliseconds(), 2));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(String name, TectonicPlate<Matter> region) throws Exception {
|
||||
PrecisionStopwatch stopwatch = PrecisionStopwatch.start();
|
||||
worker.write(name, "iris", ".bin", region, TectonicPlate::write);
|
||||
Iris.debug("Saved Tectonic Plate " + C.DARK_GREEN + name + C.RED + " in " + Form.duration(stopwatch.getMilliseconds(), 2));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() throws Exception {
|
||||
worker.close();
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,11 +33,13 @@ import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.volmlib.util.collection.KSet;
|
||||
import art.arcane.volmlib.util.format.Form;
|
||||
import art.arcane.iris.util.mantle.Mantle;
|
||||
import art.arcane.volmlib.util.mantle.runtime.Mantle;
|
||||
import art.arcane.volmlib.util.mantle.runtime.MantleChunk;
|
||||
import art.arcane.volmlib.util.mantle.flag.MantleFlag;
|
||||
import art.arcane.volmlib.util.math.M;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import art.arcane.volmlib.util.matter.MatterMarker;
|
||||
import art.arcane.iris.util.parallel.MultiBurst;
|
||||
import art.arcane.iris.util.plugin.Chunks;
|
||||
@@ -245,7 +247,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
|
||||
|
||||
J.a(() -> {
|
||||
try {
|
||||
Mantle mantle = getMantle();
|
||||
Mantle<Matter> mantle = getMantle();
|
||||
if (!mantle.hasFlag(chunkX, chunkZ, MantleFlag.DISCOVERED)) {
|
||||
mantle.flag(chunkX, chunkZ, MantleFlag.DISCOVERED, true);
|
||||
}
|
||||
@@ -352,7 +354,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
|
||||
J.a(() -> {
|
||||
boolean raised = false;
|
||||
try {
|
||||
Mantle mantle = getMantle();
|
||||
Mantle<Matter> mantle = getMantle();
|
||||
if (!mantle.hasFlag(chunkX, chunkZ, MantleFlag.INITIAL_SPAWNED_MARKER)) {
|
||||
mantle.flag(chunkX, chunkZ, MantleFlag.INITIAL_SPAWNED_MARKER, true);
|
||||
raised = true;
|
||||
@@ -680,7 +682,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
|
||||
}
|
||||
|
||||
Chunk chunkRef = world.getChunkAt(chunkX, chunkZ);
|
||||
var mantleChunk = getMantle().getChunk(chunkRef).use();
|
||||
MantleChunk<Matter> mantleChunk = getMantle().getChunk(chunkRef).use();
|
||||
try {
|
||||
mantleChunk.raiseFlagUnchecked(MantleFlag.CUSTOM, () -> {
|
||||
mantleChunk.iterate(Identifier.class, (x, y, z, v) -> {
|
||||
@@ -731,7 +733,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
|
||||
spawn(block, ss);
|
||||
}
|
||||
|
||||
public Mantle getMantle() {
|
||||
public Mantle<Matter> getMantle() {
|
||||
return getEngine().getMantle().getMantle();
|
||||
}
|
||||
|
||||
|
||||
@@ -27,8 +27,8 @@ import art.arcane.iris.util.context.ChunkContext;
|
||||
import art.arcane.volmlib.util.documentation.BlockCoordinates;
|
||||
import art.arcane.iris.util.hunk.Hunk;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.iris.util.matter.MatterBiomeInject;
|
||||
import art.arcane.iris.util.matter.slices.BiomeInjectMatter;
|
||||
import art.arcane.volmlib.util.matter.MatterBiomeInject;
|
||||
import art.arcane.volmlib.util.matter.slices.BiomeInjectMatter;
|
||||
import art.arcane.volmlib.util.scheduling.ChronoLatch;
|
||||
import art.arcane.volmlib.util.scheduling.PrecisionStopwatch;
|
||||
import org.bukkit.block.Biome;
|
||||
|
||||
@@ -18,8 +18,9 @@
|
||||
|
||||
package art.arcane.iris.engine.framework;
|
||||
|
||||
import art.arcane.iris.util.mantle.MantleChunk;
|
||||
import art.arcane.volmlib.util.mantle.runtime.MantleChunk;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
|
||||
@@ -29,5 +30,5 @@ public interface BlockUpdater {
|
||||
|
||||
void updateChunk(Chunk c);
|
||||
|
||||
void update(int x, int y, int z, Chunk c, MantleChunk mc, RNG rf);
|
||||
void update(int x, int y, int z, Chunk c, MantleChunk<Matter> mc, RNG rf);
|
||||
}
|
||||
|
||||
@@ -49,16 +49,17 @@ import art.arcane.volmlib.util.documentation.ChunkCoordinates;
|
||||
import art.arcane.iris.util.format.C;
|
||||
import art.arcane.volmlib.util.function.Function2;
|
||||
import art.arcane.iris.util.hunk.Hunk;
|
||||
import art.arcane.iris.util.mantle.MantleChunk;
|
||||
import art.arcane.volmlib.util.mantle.runtime.MantleChunk;
|
||||
import art.arcane.volmlib.util.mantle.flag.MantleFlag;
|
||||
import art.arcane.volmlib.util.math.BlockPosition;
|
||||
import art.arcane.volmlib.util.math.M;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import art.arcane.volmlib.util.matter.MatterCavern;
|
||||
import art.arcane.volmlib.util.matter.MatterUpdate;
|
||||
import art.arcane.iris.util.matter.TileWrapper;
|
||||
import art.arcane.iris.util.matter.slices.container.JigsawPieceContainer;
|
||||
import art.arcane.volmlib.util.matter.slices.container.JigsawPieceContainer;
|
||||
import art.arcane.iris.util.parallel.BurstExecutor;
|
||||
import art.arcane.iris.util.parallel.MultiBurst;
|
||||
import art.arcane.iris.util.reflect.W;
|
||||
@@ -400,7 +401,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
||||
@BlockCoordinates
|
||||
@Override
|
||||
|
||||
default void update(int x, int y, int z, Chunk c, MantleChunk mc, RNG rf) {
|
||||
default void update(int x, int y, int z, Chunk c, MantleChunk<Matter> mc, RNG rf) {
|
||||
Block block = c.getBlock(x, y, z);
|
||||
BlockData data = block.getBlockData();
|
||||
blockUpdatedMetric();
|
||||
@@ -483,7 +484,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
||||
@BlockCoordinates
|
||||
@Override
|
||||
default KList<IrisLootTable> getLootTables(RNG rng, Block b) {
|
||||
MantleChunk mc = getMantle().getMantle().getChunk(b.getChunk()).use();
|
||||
MantleChunk<Matter> mc = getMantle().getMantle().getChunk(b.getChunk()).use();
|
||||
try {
|
||||
return getLootTables(rng, b, mc);
|
||||
} finally {
|
||||
@@ -492,7 +493,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
||||
}
|
||||
|
||||
@BlockCoordinates
|
||||
default KList<IrisLootTable> getLootTables(RNG rng, Block b, MantleChunk mc) {
|
||||
default KList<IrisLootTable> getLootTables(RNG rng, Block b, MantleChunk<Matter> mc) {
|
||||
int rx = b.getX();
|
||||
int rz = b.getZ();
|
||||
int ry = b.getY() - getWorld().minHeight();
|
||||
@@ -822,7 +823,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
||||
}
|
||||
|
||||
default PlacedObject getObjectPlacement(int x, int y, int z) {
|
||||
MantleChunk chunk = getMantle().getMantle().getChunk(x >> 4, z >> 4).use();
|
||||
MantleChunk<Matter> chunk = getMantle().getMantle().getChunk(x >> 4, z >> 4).use();
|
||||
try {
|
||||
return getObjectPlacement(x, y, z, chunk);
|
||||
} finally {
|
||||
@@ -830,7 +831,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
||||
}
|
||||
}
|
||||
|
||||
default PlacedObject getObjectPlacement(int x, int y, int z, MantleChunk chunk) {
|
||||
default PlacedObject getObjectPlacement(int x, int y, int z, MantleChunk<Matter> chunk) {
|
||||
String objectAt = chunk.get(x & 15, y, z & 15, String.class);
|
||||
if (objectAt == null || objectAt.isEmpty()) {
|
||||
return null;
|
||||
@@ -843,7 +844,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
||||
|
||||
JigsawPieceContainer container = chunk.get(x & 15, y, z & 15, JigsawPieceContainer.class);
|
||||
if (container != null) {
|
||||
IrisJigsawPiece piece = container.load(getData());
|
||||
IrisJigsawPiece piece = getData().getJigsawPieceLoader().load(container.getLoadKey());
|
||||
if (piece.getObject().equals(object))
|
||||
return new PlacedObject(piece.getPlacementOptions(), getData().getObjectLoader().load(object), id, x, z);
|
||||
}
|
||||
|
||||
@@ -21,7 +21,6 @@ package art.arcane.iris.engine.framework;
|
||||
import art.arcane.iris.util.context.ChunkContext;
|
||||
import art.arcane.volmlib.util.documentation.BlockCoordinates;
|
||||
import art.arcane.iris.util.hunk.Hunk;
|
||||
|
||||
public interface EngineActuator<O> extends EngineComponent {
|
||||
@BlockCoordinates
|
||||
void actuate(int x, int z, Hunk<O> output, boolean multicore, ChunkContext context);
|
||||
|
||||
@@ -21,7 +21,6 @@ package art.arcane.iris.engine.framework;
|
||||
import art.arcane.iris.util.context.ChunkContext;
|
||||
import art.arcane.volmlib.util.documentation.BlockCoordinates;
|
||||
import art.arcane.iris.util.hunk.Hunk;
|
||||
|
||||
public abstract class EngineAssignedActuator<T> extends EngineAssignedComponent implements EngineActuator<T> {
|
||||
public EngineAssignedActuator(Engine engine, String name) {
|
||||
super(engine, name);
|
||||
|
||||
@@ -20,7 +20,6 @@ package art.arcane.iris.engine.framework;
|
||||
|
||||
|
||||
import art.arcane.iris.util.hunk.Hunk;
|
||||
|
||||
public abstract class EngineAssignedBiModifier<A, B> extends EngineAssignedComponent implements EngineBiModifier<A, B> {
|
||||
public EngineAssignedBiModifier(Engine engine, String name) {
|
||||
super(engine, name);
|
||||
|
||||
@@ -22,7 +22,6 @@ import art.arcane.iris.Iris;
|
||||
import art.arcane.iris.util.context.ChunkContext;
|
||||
import art.arcane.volmlib.util.documentation.BlockCoordinates;
|
||||
import art.arcane.iris.util.hunk.Hunk;
|
||||
|
||||
public abstract class EngineAssignedModifier<T> extends EngineAssignedComponent implements EngineModifier<T> {
|
||||
public EngineAssignedModifier(Engine engine, String name) {
|
||||
super(engine, name);
|
||||
|
||||
@@ -22,7 +22,7 @@ import art.arcane.iris.Iris;
|
||||
import art.arcane.iris.core.events.IrisEngineHotloadEvent;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.iris.util.format.C;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import art.arcane.iris.util.plugin.VolmitSender;
|
||||
import art.arcane.iris.util.scheduling.J;
|
||||
import org.bukkit.*;
|
||||
|
||||
@@ -20,7 +20,6 @@ package art.arcane.iris.engine.framework;
|
||||
|
||||
|
||||
import art.arcane.iris.util.hunk.Hunk;
|
||||
|
||||
public interface EngineBiModifier<A, B> extends EngineComponent {
|
||||
void modify(int x, int z, Hunk<A> a, Hunk<B> b);
|
||||
}
|
||||
|
||||
@@ -21,7 +21,6 @@ package art.arcane.iris.engine.framework;
|
||||
import art.arcane.iris.util.context.ChunkContext;
|
||||
import art.arcane.volmlib.util.documentation.BlockCoordinates;
|
||||
import art.arcane.iris.util.hunk.Hunk;
|
||||
|
||||
public interface EngineModifier<T> extends EngineComponent {
|
||||
@BlockCoordinates
|
||||
void modify(int x, int z, Hunk<T> t, boolean multicore, ChunkContext context);
|
||||
|
||||
@@ -30,7 +30,7 @@ import art.arcane.iris.util.context.ChunkContext;
|
||||
import art.arcane.iris.util.format.C;
|
||||
import art.arcane.volmlib.util.format.Form;
|
||||
import art.arcane.volmlib.util.math.M;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Spiraler;
|
||||
import art.arcane.volmlib.util.matter.MatterCavern;
|
||||
import art.arcane.iris.util.parallel.BurstExecutor;
|
||||
|
||||
@@ -4,7 +4,7 @@ import art.arcane.iris.core.IrisSettings;
|
||||
import art.arcane.iris.engine.object.IrisJigsawStructure;
|
||||
import art.arcane.iris.engine.object.IrisObject;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Spiraler;
|
||||
import art.arcane.iris.util.parallel.BurstExecutor;
|
||||
import art.arcane.iris.util.parallel.MultiBurst;
|
||||
|
||||
@@ -25,12 +25,13 @@ import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.iris.engine.framework.placer.WorldObjectPlacer;
|
||||
import art.arcane.iris.engine.object.*;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.iris.util.mantle.Mantle;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.mantle.runtime.Mantle;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.iris.util.matter.slices.container.JigsawPieceContainer;
|
||||
import art.arcane.iris.util.matter.slices.container.JigsawStructureContainer;
|
||||
import art.arcane.iris.util.matter.slices.container.JigsawStructuresContainer;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import art.arcane.volmlib.util.matter.slices.container.JigsawPieceContainer;
|
||||
import art.arcane.volmlib.util.matter.slices.container.JigsawStructureContainer;
|
||||
import art.arcane.volmlib.util.matter.slices.container.JigsawStructuresContainer;
|
||||
import art.arcane.iris.util.scheduling.J;
|
||||
import lombok.Data;
|
||||
import org.bukkit.Axis;
|
||||
@@ -78,7 +79,7 @@ public class PlannedStructure {
|
||||
}
|
||||
}
|
||||
|
||||
public boolean place(IObjectPlacer placer, Mantle e, Engine eng) {
|
||||
public boolean place(IObjectPlacer placer, Mantle<Matter> e, Engine eng) {
|
||||
IrisObjectPlacement options = new IrisObjectPlacement();
|
||||
options.setRotation(IrisObjectRotation.of(0,0,0));
|
||||
int startHeight = pieces.get(0).getPosition().getY();
|
||||
@@ -93,13 +94,13 @@ public class PlannedStructure {
|
||||
Position2 regionPos = new Position2(chunkPos.getX() >> 5, chunkPos.getZ() >> 5);
|
||||
JigsawStructuresContainer slice = e.get(regionPos.getX(), 0, regionPos.getZ(), JigsawStructuresContainer.class);
|
||||
if (slice == null) slice = new JigsawStructuresContainer();
|
||||
slice.add(structure, chunkPos);
|
||||
slice.add(structure.getLoadKey(), chunkPos);
|
||||
e.set(regionPos.getX(), 0, regionPos.getZ(), slice);
|
||||
}
|
||||
return placed;
|
||||
}
|
||||
|
||||
public boolean place(PlannedPiece i, int startHeight, IrisObjectPlacement o, IObjectPlacer placer, Mantle e, Engine eng) {
|
||||
public boolean place(PlannedPiece i, int startHeight, IrisObjectPlacement o, IObjectPlacer placer, Mantle<Matter> e, Engine eng) {
|
||||
IrisObjectPlacement options = o;
|
||||
|
||||
if (i.getPiece().getPlacementOptions() != null) {
|
||||
@@ -150,8 +151,8 @@ public class PlannedStructure {
|
||||
}
|
||||
|
||||
int id = rng.i(0, Integer.MAX_VALUE);
|
||||
JigsawPieceContainer piece = JigsawPieceContainer.toContainer(i.getPiece());
|
||||
JigsawStructureContainer structure = JigsawStructureContainer.toContainer(getStructure());
|
||||
JigsawPieceContainer piece = new JigsawPieceContainer(i.getPiece().getLoadKey());
|
||||
JigsawStructureContainer structure = new JigsawStructureContainer(getStructure().getLoadKey());
|
||||
i.setRealPositions(xx, height, zz, placer);
|
||||
return v.place(xx, height, zz, placer, options, rng, (b, data) -> {
|
||||
placer.setData(b.getX(), b.getY(), b.getZ(), v.getLoadKey() + "@" + id);
|
||||
|
||||
@@ -33,14 +33,14 @@ import art.arcane.iris.util.data.B;
|
||||
import art.arcane.volmlib.util.documentation.BlockCoordinates;
|
||||
import art.arcane.volmlib.util.documentation.ChunkCoordinates;
|
||||
import art.arcane.iris.util.hunk.Hunk;
|
||||
import art.arcane.iris.util.mantle.Mantle;
|
||||
import art.arcane.iris.util.mantle.MantleChunk;
|
||||
import art.arcane.volmlib.util.mantle.runtime.Mantle;
|
||||
import art.arcane.volmlib.util.mantle.runtime.MantleChunk;
|
||||
import art.arcane.volmlib.util.mantle.flag.MantleFlag;
|
||||
import art.arcane.volmlib.util.matter.MatterCavern;
|
||||
import art.arcane.volmlib.util.matter.MatterFluidBody;
|
||||
import art.arcane.volmlib.util.matter.MatterMarker;
|
||||
import art.arcane.iris.util.matter.*;
|
||||
import art.arcane.iris.util.matter.slices.UpdateMatter;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import art.arcane.volmlib.util.matter.slices.UpdateMatter;
|
||||
import art.arcane.iris.util.parallel.MultiBurst;
|
||||
import art.arcane.iris.util.scheduling.J;
|
||||
import org.bukkit.World;
|
||||
@@ -54,7 +54,7 @@ import java.util.concurrent.TimeUnit;
|
||||
public interface EngineMantle extends MatterGenerator {
|
||||
BlockData AIR = B.get("AIR");
|
||||
|
||||
Mantle getMantle();
|
||||
Mantle<Matter> getMantle();
|
||||
|
||||
Engine getEngine();
|
||||
|
||||
@@ -248,7 +248,7 @@ public interface EngineMantle extends MatterGenerator {
|
||||
|
||||
default void cleanupChunk(int x, int z) {
|
||||
if (!isCovered(x, z)) return;
|
||||
MantleChunk chunk = getMantle().getChunk(x, z).use();
|
||||
MantleChunk<Matter> chunk = getMantle().getChunk(x, z).use();
|
||||
try {
|
||||
chunk.raiseFlagUnchecked(MantleFlag.CLEANED, () -> {
|
||||
chunk.deleteSlices(BlockData.class);
|
||||
|
||||
@@ -23,8 +23,9 @@ import art.arcane.iris.engine.IrisComplex;
|
||||
import art.arcane.iris.engine.object.IrisDimension;
|
||||
import art.arcane.iris.util.context.ChunkContext;
|
||||
import art.arcane.volmlib.util.documentation.ChunkCoordinates;
|
||||
import art.arcane.iris.util.mantle.Mantle;
|
||||
import art.arcane.volmlib.util.mantle.runtime.Mantle;
|
||||
import art.arcane.volmlib.util.mantle.flag.MantleFlag;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import art.arcane.iris.util.parallel.BurstExecutor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -55,7 +56,7 @@ public interface MantleComponent extends Comparable<MantleComponent> {
|
||||
|
||||
EngineMantle getEngineMantle();
|
||||
|
||||
default Mantle getMantle() {
|
||||
default Mantle<Matter> getMantle() {
|
||||
return getEngineMantle().getMantle();
|
||||
}
|
||||
|
||||
|
||||
@@ -35,10 +35,10 @@ import art.arcane.iris.util.data.B;
|
||||
import art.arcane.iris.util.data.IrisCustomData;
|
||||
import art.arcane.volmlib.util.documentation.ChunkCoordinates;
|
||||
import art.arcane.volmlib.util.function.Function3;
|
||||
import art.arcane.iris.util.mantle.Mantle;
|
||||
import art.arcane.iris.util.mantle.MantleChunk;
|
||||
import art.arcane.volmlib.util.mantle.runtime.Mantle;
|
||||
import art.arcane.volmlib.util.mantle.runtime.MantleChunk;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.iris.util.matter.Matter;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import art.arcane.volmlib.util.matter.MatterCavern;
|
||||
import art.arcane.iris.util.matter.TileWrapper;
|
||||
import art.arcane.iris.util.noise.CNG;
|
||||
@@ -55,13 +55,13 @@ import static art.arcane.iris.engine.mantle.EngineMantle.AIR;
|
||||
@Data
|
||||
public class MantleWriter implements IObjectPlacer, AutoCloseable {
|
||||
private final EngineMantle engineMantle;
|
||||
private final Mantle mantle;
|
||||
private final Map<Long, MantleChunk> cachedChunks;
|
||||
private final Mantle<Matter> mantle;
|
||||
private final Map<Long, MantleChunk<Matter>> cachedChunks;
|
||||
private final int radius;
|
||||
private final int x;
|
||||
private final int z;
|
||||
|
||||
public MantleWriter(EngineMantle engineMantle, Mantle mantle, int x, int z, int radius, boolean multicore) {
|
||||
public MantleWriter(EngineMantle engineMantle, Mantle<Matter> mantle, int x, int z, int radius, boolean multicore) {
|
||||
this.engineMantle = engineMantle;
|
||||
this.mantle = mantle;
|
||||
this.radius = radius * 2;
|
||||
@@ -76,7 +76,7 @@ public class MantleWriter implements IObjectPlacer, AutoCloseable {
|
||||
if (foliaMaintenance && IrisSettings.get().getGeneral().isDebug()) {
|
||||
Iris.info("MantleWriter using sequential chunk prefetch for maintenance regen at " + x + "," + z + ".");
|
||||
}
|
||||
final var map = multicore ? cachedChunks : new KMap<Long, MantleChunk>(d * d, 1f, parallelism);
|
||||
final var map = multicore ? cachedChunks : new KMap<Long, MantleChunk<Matter>>(d * d, 1f, parallelism);
|
||||
mantle.getChunks(
|
||||
x - radius,
|
||||
x + radius,
|
||||
@@ -163,7 +163,7 @@ public class MantleWriter implements IObjectPlacer, AutoCloseable {
|
||||
return;
|
||||
}
|
||||
|
||||
MantleChunk chunk = acquireChunk(cx, cz);
|
||||
MantleChunk<Matter> chunk = acquireChunk(cx, cz);
|
||||
if (chunk == null) return;
|
||||
|
||||
Matter matter = chunk.getOrCreate(y >> 4);
|
||||
@@ -178,7 +178,7 @@ public class MantleWriter implements IObjectPlacer, AutoCloseable {
|
||||
return null;
|
||||
}
|
||||
|
||||
MantleChunk chunk = acquireChunk(cx, cz);
|
||||
MantleChunk<Matter> chunk = acquireChunk(cx, cz);
|
||||
if (chunk == null) {
|
||||
return null;
|
||||
}
|
||||
@@ -189,14 +189,14 @@ public class MantleWriter implements IObjectPlacer, AutoCloseable {
|
||||
}
|
||||
|
||||
@ChunkCoordinates
|
||||
public MantleChunk acquireChunk(int cx, int cz) {
|
||||
public MantleChunk<Matter> acquireChunk(int cx, int cz) {
|
||||
if (cx < this.x - radius || cx > this.x + radius
|
||||
|| cz < this.z - radius || cz > this.z + radius) {
|
||||
Iris.error("Mantle Writer Accessed chunk out of bounds" + cx + "," + cz);
|
||||
return null;
|
||||
}
|
||||
final Long key = Cache.key(cx, cz);
|
||||
MantleChunk chunk = cachedChunks.get(key);
|
||||
MantleChunk<Matter> chunk = cachedChunks.get(key);
|
||||
if (chunk == null) {
|
||||
chunk = mantle.getChunk(cx, cz).use();
|
||||
var old = cachedChunks.put(key, chunk);
|
||||
|
||||
@@ -31,9 +31,9 @@ import art.arcane.iris.util.context.ChunkContext;
|
||||
import art.arcane.volmlib.util.documentation.BlockCoordinates;
|
||||
import art.arcane.volmlib.util.documentation.ChunkCoordinates;
|
||||
import art.arcane.volmlib.util.mantle.flag.ReservedFlag;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.iris.util.matter.slices.container.JigsawStructuresContainer;
|
||||
import art.arcane.volmlib.util.matter.slices.container.JigsawStructuresContainer;
|
||||
import art.arcane.iris.util.noise.CNG;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -68,7 +68,7 @@ public class MantleJigsawComponent extends IrisMantleComponent {
|
||||
for (Position2 pos : poss) {
|
||||
if (x == pos.getX() >> 4 && z == pos.getZ() >> 4) {
|
||||
IrisJigsawStructure structure = getData().getJigsawStructureLoader().load(getDimension().getStronghold());
|
||||
place(writer, pos.toIris(), structure, new RNG(seed), true);
|
||||
place(writer, new IrisPosition(pos.getX(), 23, pos.getZ()), structure, new RNG(seed), true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -113,7 +113,8 @@ public class MantleJigsawComponent extends IrisMantleComponent {
|
||||
JigsawStructuresContainer container = getMantle().get(pos.getX(), 0, pos.getZ(), JigsawStructuresContainer.class);
|
||||
if (container == null) continue;
|
||||
for (String key : container.getStructures()) {
|
||||
cache.computeIfAbsent(key, k -> new KSet<>()).addAll(container.getPositions(key));
|
||||
KSet<Position2> positions = cache.computeIfAbsent(key, k -> new KSet<>());
|
||||
container.getPositions(key).forEach(p -> positions.add(new Position2(p.getX(), p.getZ())));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ import art.arcane.volmlib.util.documentation.ChunkCoordinates;
|
||||
import art.arcane.volmlib.util.format.Form;
|
||||
import art.arcane.volmlib.util.mantle.flag.ReservedFlag;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.iris.util.matter.MatterStructurePOI;
|
||||
import art.arcane.volmlib.util.matter.MatterStructurePOI;
|
||||
import art.arcane.iris.util.noise.CNG;
|
||||
import art.arcane.iris.util.noise.NoiseType;
|
||||
import art.arcane.iris.util.parallel.BurstExecutor;
|
||||
|
||||
@@ -30,12 +30,13 @@ import art.arcane.iris.util.data.B;
|
||||
import art.arcane.volmlib.util.documentation.ChunkCoordinates;
|
||||
import art.arcane.volmlib.util.function.Consumer4;
|
||||
import art.arcane.iris.util.hunk.Hunk;
|
||||
import art.arcane.iris.util.mantle.Mantle;
|
||||
import art.arcane.iris.util.mantle.MantleChunk;
|
||||
import art.arcane.volmlib.util.mantle.runtime.Mantle;
|
||||
import art.arcane.volmlib.util.mantle.runtime.MantleChunk;
|
||||
import art.arcane.volmlib.util.math.M;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import art.arcane.volmlib.util.matter.MatterCavern;
|
||||
import art.arcane.iris.util.matter.slices.MarkerMatter;
|
||||
import art.arcane.volmlib.util.matter.slices.MarkerMatter;
|
||||
import art.arcane.volmlib.util.scheduling.PrecisionStopwatch;
|
||||
import lombok.Data;
|
||||
import org.bukkit.Material;
|
||||
@@ -57,8 +58,8 @@ public class IrisCarveModifier extends EngineAssignedModifier<BlockData> {
|
||||
@ChunkCoordinates
|
||||
public void onModify(int x, int z, Hunk<BlockData> output, boolean multicore, ChunkContext context) {
|
||||
PrecisionStopwatch p = PrecisionStopwatch.start();
|
||||
Mantle mantle = getEngine().getMantle().getMantle();
|
||||
MantleChunk mc = mantle.getChunk(x, z).use();
|
||||
Mantle<Matter> mantle = getEngine().getMantle().getMantle();
|
||||
MantleChunk<Matter> mc = mantle.getChunk(x, z).use();
|
||||
KMap<Long, KList<Integer>> positions = new KMap<>();
|
||||
KMap<IrisPosition, MatterCavern> walls = new KMap<>();
|
||||
Consumer4<Integer, Integer, Integer, MatterCavern> iterator = (xx, yy, zz, c) -> {
|
||||
@@ -170,7 +171,7 @@ public class IrisCarveModifier extends EngineAssignedModifier<BlockData> {
|
||||
mc.release();
|
||||
}
|
||||
|
||||
private void processZone(Hunk<BlockData> output, MantleChunk mc, Mantle mantle, CaveZone zone, int rx, int rz, int xx, int zz) {
|
||||
private void processZone(Hunk<BlockData> output, MantleChunk<Matter> mc, Mantle<Matter> mantle, CaveZone zone, int rx, int rz, int xx, int zz) {
|
||||
boolean decFloor = B.isSolid(output.getClosest(rx, zone.floor - 1, rz));
|
||||
boolean decCeiling = B.isSolid(output.getClosest(rx, zone.ceiling + 1, rz));
|
||||
int center = (zone.floor + zone.ceiling) / 2;
|
||||
|
||||
@@ -25,7 +25,7 @@ import art.arcane.iris.util.context.ChunkContext;
|
||||
import art.arcane.iris.util.data.B;
|
||||
import art.arcane.volmlib.util.data.HeightMap;
|
||||
import art.arcane.iris.util.hunk.Hunk;
|
||||
import art.arcane.iris.util.mantle.MantleChunk;
|
||||
import art.arcane.volmlib.util.mantle.runtime.MantleChunk;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.volmlib.util.matter.MatterCavern;
|
||||
import art.arcane.iris.util.parallel.BurstExecutor;
|
||||
|
||||
@@ -21,7 +21,6 @@ package art.arcane.iris.engine.object;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.iris.util.stream.ProceduralStream;
|
||||
import art.arcane.iris.util.stream.interpolation.Interpolated;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface IRare {
|
||||
|
||||
@@ -36,9 +36,9 @@ import art.arcane.iris.util.data.DataProvider;
|
||||
import art.arcane.volmlib.util.io.IO;
|
||||
import art.arcane.volmlib.util.json.JSONObject;
|
||||
import art.arcane.volmlib.util.mantle.flag.MantleFlag;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.iris.util.noise.CNG;
|
||||
import art.arcane.iris.util.noise.CNG;
|
||||
import art.arcane.iris.util.plugin.VolmitSender;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
||||
@@ -24,7 +24,7 @@ import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.collection.KMap;
|
||||
import art.arcane.volmlib.util.data.Cuboid.CuboidDirection;
|
||||
import art.arcane.volmlib.util.math.DOP;
|
||||
import art.arcane.iris.util.math.VectorMath;
|
||||
import art.arcane.volmlib.util.math.VectorMath;
|
||||
import org.bukkit.Axis;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.data.type.Jigsaw;
|
||||
|
||||
@@ -24,7 +24,7 @@ import art.arcane.iris.engine.mantle.MantleWriter;
|
||||
import art.arcane.iris.engine.object.annotations.*;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.volmlib.util.matter.MatterCavern;
|
||||
import art.arcane.iris.util.matter.slices.CavernMatter;
|
||||
import art.arcane.volmlib.util.matter.slices.CavernMatter;
|
||||
import lombok.Data;
|
||||
|
||||
@Snippet("carving-elipsoid")
|
||||
|
||||
@@ -21,7 +21,6 @@ package art.arcane.iris.engine.object;
|
||||
import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.iris.engine.object.annotations.Desc;
|
||||
import art.arcane.iris.util.stream.ProceduralStream;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
@Desc("Represents a stream from the engine")
|
||||
|
||||
@@ -27,7 +27,7 @@ import art.arcane.iris.util.format.C;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.volmlib.util.math.Vector3d;
|
||||
import art.arcane.volmlib.util.matter.MatterMarker;
|
||||
import art.arcane.iris.util.matter.slices.MarkerMatter;
|
||||
import art.arcane.volmlib.util.matter.slices.MarkerMatter;
|
||||
import art.arcane.iris.util.scheduling.J;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
||||
@@ -30,7 +30,7 @@ import art.arcane.iris.util.data.B;
|
||||
import art.arcane.iris.util.format.C;
|
||||
import art.arcane.volmlib.util.format.Form;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.iris.util.noise.CNG;
|
||||
import art.arcane.iris.util.noise.CNG;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@@ -35,6 +35,7 @@ import art.arcane.volmlib.util.format.Form;
|
||||
import art.arcane.iris.util.interpolation.IrisInterpolation;
|
||||
import art.arcane.volmlib.util.json.JSONObject;
|
||||
import art.arcane.volmlib.util.math.BlockPosition;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.iris.util.math.*;
|
||||
import art.arcane.volmlib.util.matter.MatterMarker;
|
||||
|
||||
@@ -24,7 +24,7 @@ import art.arcane.iris.engine.mantle.MantleWriter;
|
||||
import art.arcane.iris.engine.object.annotations.*;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.volmlib.util.matter.MatterCavern;
|
||||
import art.arcane.iris.util.matter.slices.CavernMatter;
|
||||
import art.arcane.volmlib.util.matter.slices.CavernMatter;
|
||||
import lombok.Data;
|
||||
|
||||
@Snippet("carving-pyramid")
|
||||
|
||||
@@ -24,7 +24,7 @@ import art.arcane.iris.engine.mantle.MantleWriter;
|
||||
import art.arcane.iris.engine.object.annotations.*;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.volmlib.util.matter.MatterCavern;
|
||||
import art.arcane.iris.util.matter.slices.CavernMatter;
|
||||
import art.arcane.volmlib.util.matter.slices.CavernMatter;
|
||||
import lombok.Data;
|
||||
|
||||
@Snippet("carving-sphere")
|
||||
|
||||
@@ -4,7 +4,7 @@ import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.iris.engine.framework.EngineAssignedComponent;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.documentation.ChunkCoordinates;
|
||||
import art.arcane.iris.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.Position2;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.iris.util.noise.CNG;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -24,7 +24,6 @@ import art.arcane.iris.util.noise.CNG;
|
||||
import art.arcane.iris.util.noise.CNGFactory;
|
||||
import art.arcane.iris.util.noise.NoiseType;
|
||||
import art.arcane.iris.util.stream.ProceduralStream;
|
||||
|
||||
@Desc("Styles of noise")
|
||||
public enum NoiseStyle {
|
||||
@Desc("White Noise is like static. Useful for block scattering but not terrain.")
|
||||
|
||||
@@ -2,9 +2,10 @@ package art.arcane.iris.engine.object.matter;
|
||||
|
||||
import art.arcane.iris.core.loader.IrisRegistrant;
|
||||
import art.arcane.iris.engine.object.IrisObject;
|
||||
import art.arcane.iris.util.matter.IrisMatterSupport;
|
||||
import art.arcane.volmlib.util.json.JSONObject;
|
||||
import art.arcane.iris.util.matter.IrisMatter;
|
||||
import art.arcane.iris.util.matter.Matter;
|
||||
import art.arcane.volmlib.util.matter.IrisMatter;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import art.arcane.iris.util.plugin.VolmitSender;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@@ -22,21 +23,28 @@ public class IrisMatterObject extends IrisRegistrant {
|
||||
}
|
||||
|
||||
public IrisMatterObject(int w, int h, int d) {
|
||||
this(new IrisMatter(w, h, d));
|
||||
this(createMatter(w, h, d));
|
||||
}
|
||||
|
||||
public IrisMatterObject(Matter matter) {
|
||||
IrisMatterSupport.ensureRegistered();
|
||||
this.matter = matter;
|
||||
}
|
||||
|
||||
public static IrisMatterObject from(IrisObject object) {
|
||||
return new IrisMatterObject(Matter.from(object));
|
||||
return new IrisMatterObject(IrisMatterSupport.from(object));
|
||||
}
|
||||
|
||||
public static IrisMatterObject from(File j) throws IOException, ClassNotFoundException {
|
||||
IrisMatterSupport.ensureRegistered();
|
||||
return new IrisMatterObject(Matter.read(j));
|
||||
}
|
||||
|
||||
private static Matter createMatter(int w, int h, int d) {
|
||||
IrisMatterSupport.ensureRegistered();
|
||||
return new IrisMatter(w, h, d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFolderName() {
|
||||
return "matter";
|
||||
|
||||
@@ -24,9 +24,10 @@ import art.arcane.iris.engine.object.IRare;
|
||||
import art.arcane.iris.engine.object.IrisStyledRange;
|
||||
import art.arcane.iris.engine.object.annotations.*;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.iris.util.mantle.Mantle;
|
||||
import art.arcane.volmlib.util.mantle.runtime.Mantle;
|
||||
import art.arcane.volmlib.util.matter.Matter;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.iris.util.matter.MatterSlice;
|
||||
import art.arcane.volmlib.util.matter.MatterSlice;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@@ -37,7 +37,7 @@ import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.data.IrisBiomeStorage;
|
||||
import art.arcane.iris.util.hunk.view.BiomeGridHunkHolder;
|
||||
import art.arcane.iris.util.hunk.view.ChunkDataHunkHolder;
|
||||
import art.arcane.iris.util.io.ReactiveFolder;
|
||||
import art.arcane.volmlib.util.io.ReactiveFolder;
|
||||
import art.arcane.volmlib.util.scheduling.ChronoLatch;
|
||||
import art.arcane.iris.util.scheduling.J;
|
||||
import art.arcane.volmlib.util.scheduling.Looper;
|
||||
@@ -103,7 +103,13 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
|
||||
this.studio = studio;
|
||||
this.dataLocation = dataLocation;
|
||||
this.dimensionKey = dimensionKey;
|
||||
this.folder = new ReactiveFolder(dataLocation, (_a, _b, _c) -> hotload());
|
||||
this.folder = new ReactiveFolder(
|
||||
dataLocation,
|
||||
(_a, _b, _c) -> hotload(),
|
||||
new KList<>(".iob", ".json", ".kts"),
|
||||
new KList<>(".iris"),
|
||||
new KList<>(".gradle.kts")
|
||||
);
|
||||
Bukkit.getServer().getPluginManager().registerEvents(this, Iris.instance);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
package art.arcane.iris.util.cache;
|
||||
|
||||
import art.arcane.volmlib.util.cache.ChunkCache2D;
|
||||
|
||||
import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap;
|
||||
import art.arcane.iris.engine.data.cache.Cache;
|
||||
import art.arcane.volmlib.util.function.Function2;
|
||||
|
||||
public class WorldCache2D<T> {
|
||||
private final ConcurrentLinkedHashMap<Long, ChunkCache2D<T>> chunks;
|
||||
private final Function2<Integer, Integer, T> resolver;
|
||||
|
||||
public WorldCache2D(Function2<Integer, Integer, T> resolver, int size) {
|
||||
this.resolver = resolver;
|
||||
chunks = new ConcurrentLinkedHashMap.Builder<Long, ChunkCache2D<T>>()
|
||||
.initialCapacity(size)
|
||||
.maximumWeightedCapacity(size)
|
||||
.concurrencyLevel(Math.max(32, Runtime.getRuntime().availableProcessors() * 4))
|
||||
.build();
|
||||
}
|
||||
|
||||
public T get(int x, int z) {
|
||||
ChunkCache2D<T> chunk = chunks.computeIfAbsent(Cache.key(x >> 4, z >> 4), $ -> new ChunkCache2D<>("iris"));
|
||||
return chunk.get(x, z, resolver);
|
||||
}
|
||||
|
||||
public long getSize() {
|
||||
return chunks.size() * 256L;
|
||||
}
|
||||
|
||||
public long getMaxSize() {
|
||||
return chunks.capacity() * 256L;
|
||||
}
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
package art.arcane.iris.util.decree;
|
||||
|
||||
import art.arcane.volmlib.util.director.context.DirectorContextHandlers;
|
||||
import art.arcane.volmlib.util.director.context.DirectorContextHandlerType;
|
||||
import art.arcane.iris.Iris;
|
||||
import art.arcane.iris.util.plugin.VolmitSender;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface DecreeContextHandler<T> extends DirectorContextHandlerType<T, VolmitSender> {
|
||||
Map<Class<?>, DecreeContextHandler<?>> contextHandlers = buildContextHandlers();
|
||||
|
||||
static Map<Class<?>, DecreeContextHandler<?>> buildContextHandlers() {
|
||||
return DirectorContextHandlers.buildOrEmpty(
|
||||
Iris.initialize("art.arcane.iris.util.decree.context"),
|
||||
DecreeContextHandler.class,
|
||||
h -> ((DecreeContextHandler<?>) h).getType(),
|
||||
e -> {
|
||||
Iris.reportError(e);
|
||||
e.printStackTrace();
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package art.arcane.iris.util.decree;
|
||||
|
||||
public interface DirectorParameterHandler<T>
|
||||
extends DecreeExecutor, art.arcane.volmlib.util.director.DirectorParameterHandler<T> {
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
package art.arcane.iris.util.decree;
|
||||
package art.arcane.iris.util.director;
|
||||
|
||||
import art.arcane.volmlib.util.director.context.DirectorContextBase;
|
||||
import art.arcane.iris.util.plugin.VolmitSender;
|
||||
|
||||
public class DecreeContext {
|
||||
public class DirectorContext {
|
||||
private static final DirectorContextBase<VolmitSender> context = new DirectorContextBase<>();
|
||||
|
||||
public static VolmitSender get() {
|
||||
@@ -0,0 +1,23 @@
|
||||
package art.arcane.iris.util.director;
|
||||
|
||||
import art.arcane.volmlib.util.director.context.DirectorContextHandlers;
|
||||
import art.arcane.volmlib.util.director.context.DirectorContextHandlerType;
|
||||
import art.arcane.iris.Iris;
|
||||
import art.arcane.iris.util.plugin.VolmitSender;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface DirectorContextHandler<T> extends DirectorContextHandlerType<T, VolmitSender> {
|
||||
Map<Class<?>, DirectorContextHandler<?>> contextHandlers = buildContextHandlers();
|
||||
|
||||
static Map<Class<?>, DirectorContextHandler<?>> buildContextHandlers() {
|
||||
return DirectorContextHandlers.buildOrEmpty(
|
||||
Iris.initialize("art.arcane.iris.util.director.context"),
|
||||
DirectorContextHandler.class,
|
||||
h -> ((DirectorContextHandler<?>) h).getType(),
|
||||
e -> {
|
||||
Iris.reportError(e);
|
||||
e.printStackTrace();
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package art.arcane.iris.util.decree;
|
||||
package art.arcane.iris.util.director;
|
||||
|
||||
import art.arcane.volmlib.util.director.DirectorExecutorBase;
|
||||
import art.arcane.iris.core.loader.IrisData;
|
||||
@@ -26,9 +26,9 @@ import art.arcane.iris.engine.platform.PlatformChunkGenerator;
|
||||
import art.arcane.iris.util.plugin.VolmitSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public interface DecreeExecutor extends DirectorExecutorBase {
|
||||
public interface DirectorExecutor extends DirectorExecutorBase {
|
||||
default VolmitSender sender() {
|
||||
return DecreeContext.get();
|
||||
return DirectorContext.get();
|
||||
}
|
||||
|
||||
default Player player() {
|
||||
@@ -0,0 +1,5 @@
|
||||
package art.arcane.iris.util.director;
|
||||
|
||||
public interface DirectorParameterHandler<T>
|
||||
extends DirectorExecutor, art.arcane.volmlib.util.director.DirectorParameterHandler<T> {
|
||||
}
|
||||
@@ -16,15 +16,15 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package art.arcane.iris.util.decree;
|
||||
package art.arcane.iris.util.director;
|
||||
|
||||
import art.arcane.volmlib.util.director.DirectorSystemSupport;
|
||||
import art.arcane.iris.Iris;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
public final class DecreeSystem {
|
||||
public static final KList<DirectorParameterHandler<?>> handlers = Iris.initialize("art.arcane.iris.util.decree.handlers", null).convert((i) -> (DirectorParameterHandler<?>) i);
|
||||
public final class DirectorSystem {
|
||||
public static final KList<art.arcane.volmlib.util.director.DirectorParameterHandler<?>> handlers = Iris.initialize("art.arcane.iris.util.director.handlers", null).convert((i) -> (art.arcane.volmlib.util.director.DirectorParameterHandler<?>) i);
|
||||
|
||||
private DecreeSystem() {
|
||||
private DirectorSystem() {
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -33,8 +33,8 @@ public final class DecreeSystem {
|
||||
* @param type The type to handle
|
||||
* @return The corresponding {@link DirectorParameterHandler}, or null
|
||||
*/
|
||||
public static DirectorParameterHandler<?> getHandler(Class<?> type) {
|
||||
DirectorParameterHandler<?> handler = DirectorSystemSupport.getHandler(handlers, type, (h, t) -> h.supports(t));
|
||||
public static art.arcane.volmlib.util.director.DirectorParameterHandler<?> getHandler(Class<?> type) {
|
||||
art.arcane.volmlib.util.director.DirectorParameterHandler<?> handler = DirectorSystemSupport.getHandler(handlers, type, (h, t) -> h.supports(t));
|
||||
if (handler != null) {
|
||||
return handler;
|
||||
}
|
||||
@@ -16,14 +16,14 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package art.arcane.iris.util.decree.context;
|
||||
package art.arcane.iris.util.director.context;
|
||||
|
||||
import art.arcane.iris.core.tools.IrisToolbelt;
|
||||
import art.arcane.iris.engine.object.IrisBiome;
|
||||
import art.arcane.iris.util.decree.DecreeContextHandler;
|
||||
import art.arcane.iris.util.director.DirectorContextHandler;
|
||||
import art.arcane.iris.util.plugin.VolmitSender;
|
||||
|
||||
public class BiomeContextHandler implements DecreeContextHandler<IrisBiome> {
|
||||
public class BiomeContextHandler implements DirectorContextHandler<IrisBiome> {
|
||||
public Class<IrisBiome> getType() {
|
||||
return IrisBiome.class;
|
||||
}
|
||||
@@ -16,14 +16,14 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package art.arcane.iris.util.decree.context;
|
||||
package art.arcane.iris.util.director.context;
|
||||
|
||||
import art.arcane.iris.core.tools.IrisToolbelt;
|
||||
import art.arcane.iris.engine.object.IrisDimension;
|
||||
import art.arcane.iris.util.decree.DecreeContextHandler;
|
||||
import art.arcane.iris.util.director.DirectorContextHandler;
|
||||
import art.arcane.iris.util.plugin.VolmitSender;
|
||||
|
||||
public class DimensionContextHandler implements DecreeContextHandler<IrisDimension> {
|
||||
public class DimensionContextHandler implements DirectorContextHandler<IrisDimension> {
|
||||
public Class<IrisDimension> getType() {
|
||||
return IrisDimension.class;
|
||||
}
|
||||
@@ -16,15 +16,15 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package art.arcane.iris.util.decree.context;
|
||||
package art.arcane.iris.util.director.context;
|
||||
|
||||
import art.arcane.iris.core.tools.IrisToolbelt;
|
||||
import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.iris.engine.object.IrisGenerator;
|
||||
import art.arcane.iris.util.decree.DecreeContextHandler;
|
||||
import art.arcane.iris.util.director.DirectorContextHandler;
|
||||
import art.arcane.iris.util.plugin.VolmitSender;
|
||||
|
||||
public class GeneratorContextHandler implements DecreeContextHandler<IrisGenerator> {
|
||||
public class GeneratorContextHandler implements DirectorContextHandler<IrisGenerator> {
|
||||
@Override
|
||||
public Class<IrisGenerator> getType() {
|
||||
return IrisGenerator.class;
|
||||
@@ -16,14 +16,14 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package art.arcane.iris.util.decree.context;
|
||||
package art.arcane.iris.util.director.context;
|
||||
|
||||
import art.arcane.iris.core.tools.IrisToolbelt;
|
||||
import art.arcane.iris.engine.object.IrisRegion;
|
||||
import art.arcane.iris.util.decree.DecreeContextHandler;
|
||||
import art.arcane.iris.util.director.DirectorContextHandler;
|
||||
import art.arcane.iris.util.plugin.VolmitSender;
|
||||
|
||||
public class RegionContextHandler implements DecreeContextHandler<IrisRegion> {
|
||||
public class RegionContextHandler implements DirectorContextHandler<IrisRegion> {
|
||||
public Class<IrisRegion> getType() {
|
||||
return IrisRegion.class;
|
||||
}
|
||||
@@ -16,13 +16,13 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package art.arcane.iris.util.decree.context;
|
||||
package art.arcane.iris.util.director.context;
|
||||
|
||||
import art.arcane.iris.util.decree.DecreeContextHandler;
|
||||
import art.arcane.iris.util.director.DirectorContextHandler;
|
||||
import art.arcane.iris.util.plugin.VolmitSender;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
public class VectorContextHandler implements DecreeContextHandler<Vector> {
|
||||
public class VectorContextHandler implements DirectorContextHandler<Vector> {
|
||||
public Class<Vector> getType() {
|
||||
return Vector.class;
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
package art.arcane.iris.util.decree.context;
|
||||
package art.arcane.iris.util.director.context;
|
||||
|
||||
import art.arcane.volmlib.util.director.context.WorldContextHandlerBase;
|
||||
import art.arcane.iris.util.decree.DecreeContextHandler;
|
||||
import art.arcane.iris.util.director.DirectorContextHandler;
|
||||
import art.arcane.iris.util.plugin.VolmitSender;
|
||||
import org.bukkit.World;
|
||||
|
||||
public class WorldContextHandler extends WorldContextHandlerBase<VolmitSender> implements DecreeContextHandler<World> {
|
||||
public class WorldContextHandler extends WorldContextHandlerBase<VolmitSender> implements DirectorContextHandler<World> {
|
||||
@Override
|
||||
protected boolean isPlayer(VolmitSender sender) {
|
||||
return sender.isPlayer();
|
||||
@@ -16,10 +16,10 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package art.arcane.iris.util.decree.handlers;
|
||||
package art.arcane.iris.util.director.handlers;
|
||||
|
||||
import art.arcane.iris.engine.object.IrisBiome;
|
||||
import art.arcane.iris.util.decree.specialhandlers.RegistrantHandler;
|
||||
import art.arcane.iris.util.director.specialhandlers.RegistrantHandler;
|
||||
|
||||
public class BiomeHandler extends RegistrantHandler<IrisBiome> {
|
||||
public BiomeHandler() {
|
||||
@@ -1,8 +1,8 @@
|
||||
package art.arcane.iris.util.decree.handlers;
|
||||
package art.arcane.iris.util.director.handlers;
|
||||
|
||||
import art.arcane.iris.util.decree.DecreeContext;
|
||||
import art.arcane.iris.util.decree.DirectorParameterHandler;
|
||||
import art.arcane.iris.util.decree.DecreeSystem;
|
||||
import art.arcane.iris.util.director.DirectorContext;
|
||||
import art.arcane.volmlib.util.director.DirectorParameterHandler;
|
||||
import art.arcane.iris.util.director.DirectorSystem;
|
||||
import art.arcane.volmlib.util.director.handlers.base.BlockVectorHandlerBase;
|
||||
import art.arcane.volmlib.util.format.Form;
|
||||
import org.bukkit.FluidCollisionMode;
|
||||
@@ -14,22 +14,22 @@ import java.util.List;
|
||||
public class BlockVectorHandler extends BlockVectorHandlerBase implements DirectorParameterHandler<BlockVector> {
|
||||
@Override
|
||||
protected boolean isSenderPlayer() {
|
||||
return DecreeContext.get().isPlayer();
|
||||
return DirectorContext.get().isPlayer();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected BlockVector getSenderBlockVector() {
|
||||
return DecreeContext.get().player().getLocation().toVector().toBlockVector();
|
||||
return DirectorContext.get().player().getLocation().toVector().toBlockVector();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected BlockVector getLookBlockVector() {
|
||||
return DecreeContext.get().player().getTargetBlockExact(256, FluidCollisionMode.NEVER).getLocation().toVector().toBlockVector();
|
||||
return DirectorContext.get().player().getTargetBlockExact(256, FluidCollisionMode.NEVER).getLocation().toVector().toBlockVector();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<?> playerPossibilities(String query) {
|
||||
return DecreeSystem.getHandler(Player.class).getPossibilities(query);
|
||||
return DirectorSystem.getHandler(Player.class).getPossibilities(query);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1,7 +1,7 @@
|
||||
package art.arcane.iris.util.decree.handlers;
|
||||
package art.arcane.iris.util.director.handlers;
|
||||
|
||||
import art.arcane.volmlib.util.director.handlers.base.BooleanHandlerBase;
|
||||
import art.arcane.iris.util.decree.DirectorParameterHandler;
|
||||
import art.arcane.volmlib.util.director.DirectorParameterHandler;
|
||||
|
||||
public class BooleanHandler extends BooleanHandlerBase implements DirectorParameterHandler<Boolean> {
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package art.arcane.iris.util.decree.handlers;
|
||||
package art.arcane.iris.util.director.handlers;
|
||||
|
||||
import art.arcane.volmlib.util.director.handlers.base.ByteHandlerBase;
|
||||
import art.arcane.iris.util.decree.DirectorParameterHandler;
|
||||
import art.arcane.volmlib.util.director.DirectorParameterHandler;
|
||||
|
||||
public class ByteHandler extends ByteHandlerBase implements DirectorParameterHandler<Byte> {
|
||||
}
|
||||
@@ -16,10 +16,10 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package art.arcane.iris.util.decree.handlers;
|
||||
package art.arcane.iris.util.director.handlers;
|
||||
|
||||
import art.arcane.iris.engine.object.IrisCave;
|
||||
import art.arcane.iris.util.decree.specialhandlers.RegistrantHandler;
|
||||
import art.arcane.iris.util.director.specialhandlers.RegistrantHandler;
|
||||
|
||||
public class CaveHandler extends RegistrantHandler<IrisCave> {
|
||||
public CaveHandler() {
|
||||
@@ -1,8 +1,8 @@
|
||||
package art.arcane.iris.util.decree.handlers;
|
||||
package art.arcane.iris.util.director.handlers;
|
||||
|
||||
import art.arcane.iris.core.nms.datapack.DataVersion;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.iris.util.decree.DirectorParameterHandler;
|
||||
import art.arcane.volmlib.util.director.DirectorParameterHandler;
|
||||
import art.arcane.volmlib.util.director.exceptions.DirectorParsingException;
|
||||
|
||||
public class DataVersionHandler implements DirectorParameterHandler<DataVersion> {
|
||||
@@ -16,14 +16,14 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package art.arcane.iris.util.decree.handlers;
|
||||
package art.arcane.iris.util.director.handlers;
|
||||
|
||||
import art.arcane.iris.core.IrisSettings;
|
||||
import art.arcane.iris.core.tools.IrisToolbelt;
|
||||
import art.arcane.iris.engine.object.IrisDimension;
|
||||
import art.arcane.volmlib.util.collection.KList;
|
||||
import art.arcane.volmlib.util.director.exceptions.DirectorParsingException;
|
||||
import art.arcane.iris.util.decree.specialhandlers.RegistrantHandler;
|
||||
import art.arcane.iris.util.director.specialhandlers.RegistrantHandler;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package art.arcane.iris.util.decree.handlers;
|
||||
package art.arcane.iris.util.director.handlers;
|
||||
|
||||
import art.arcane.volmlib.util.director.handlers.base.DoubleHandlerBase;
|
||||
import art.arcane.iris.util.decree.DirectorParameterHandler;
|
||||
import art.arcane.volmlib.util.director.DirectorParameterHandler;
|
||||
|
||||
public class DoubleHandler extends DoubleHandlerBase implements DirectorParameterHandler<Double> {
|
||||
}
|
||||
@@ -16,10 +16,10 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package art.arcane.iris.util.decree.handlers;
|
||||
package art.arcane.iris.util.director.handlers;
|
||||
|
||||
import art.arcane.iris.engine.object.IrisEntity;
|
||||
import art.arcane.iris.util.decree.specialhandlers.RegistrantHandler;
|
||||
import art.arcane.iris.util.director.specialhandlers.RegistrantHandler;
|
||||
|
||||
public class EntityHandler extends RegistrantHandler<IrisEntity> {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package art.arcane.iris.util.decree.handlers;
|
||||
package art.arcane.iris.util.director.handlers;
|
||||
|
||||
import art.arcane.volmlib.util.director.handlers.base.FloatHandlerBase;
|
||||
import art.arcane.iris.util.decree.DirectorParameterHandler;
|
||||
import art.arcane.volmlib.util.director.DirectorParameterHandler;
|
||||
|
||||
public class FloatHandler extends FloatHandlerBase implements DirectorParameterHandler<Float> {
|
||||
}
|
||||
@@ -16,10 +16,10 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package art.arcane.iris.util.decree.handlers;
|
||||
package art.arcane.iris.util.director.handlers;
|
||||
|
||||
import art.arcane.iris.engine.object.IrisGenerator;
|
||||
import art.arcane.iris.util.decree.specialhandlers.RegistrantHandler;
|
||||
import art.arcane.iris.util.director.specialhandlers.RegistrantHandler;
|
||||
|
||||
public class GeneratorHandler extends RegistrantHandler<IrisGenerator> {
|
||||
public GeneratorHandler() {
|
||||
@@ -1,7 +1,7 @@
|
||||
package art.arcane.iris.util.decree.handlers;
|
||||
package art.arcane.iris.util.director.handlers;
|
||||
|
||||
import art.arcane.volmlib.util.director.handlers.base.IntegerHandlerBase;
|
||||
import art.arcane.iris.util.decree.DirectorParameterHandler;
|
||||
import art.arcane.volmlib.util.director.DirectorParameterHandler;
|
||||
|
||||
public class IntegerHandler extends IntegerHandlerBase implements DirectorParameterHandler<Integer> {
|
||||
}
|
||||
@@ -16,10 +16,10 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package art.arcane.iris.util.decree.handlers;
|
||||
package art.arcane.iris.util.director.handlers;
|
||||
|
||||
import art.arcane.iris.engine.object.IrisJigsawPiece;
|
||||
import art.arcane.iris.util.decree.specialhandlers.RegistrantHandler;
|
||||
import art.arcane.iris.util.director.specialhandlers.RegistrantHandler;
|
||||
|
||||
public class JigsawPieceHandler extends RegistrantHandler<IrisJigsawPiece> {
|
||||
public JigsawPieceHandler() {
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user