mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-12-23 17:19:16 +00:00
Cleanup
This commit is contained in:
@@ -31,7 +31,6 @@ import com.volmit.iris.core.project.loader.IrisData;
|
|||||||
import com.volmit.iris.core.service.StudioSVC;
|
import com.volmit.iris.core.service.StudioSVC;
|
||||||
import com.volmit.iris.engine.object.biome.IrisBiome;
|
import com.volmit.iris.engine.object.biome.IrisBiome;
|
||||||
import com.volmit.iris.engine.object.biome.IrisBiomeCustom;
|
import com.volmit.iris.engine.object.biome.IrisBiomeCustom;
|
||||||
import com.volmit.iris.engine.object.block.IrisBlockData;
|
|
||||||
import com.volmit.iris.engine.object.common.IrisWorld;
|
import com.volmit.iris.engine.object.common.IrisWorld;
|
||||||
import com.volmit.iris.engine.object.compat.IrisCompat;
|
import com.volmit.iris.engine.object.compat.IrisCompat;
|
||||||
import com.volmit.iris.engine.object.dimensional.IrisDimension;
|
import com.volmit.iris.engine.object.dimensional.IrisDimension;
|
||||||
@@ -52,7 +51,10 @@ import com.volmit.iris.util.math.RNG;
|
|||||||
import com.volmit.iris.util.parallel.MultiBurst;
|
import com.volmit.iris.util.parallel.MultiBurst;
|
||||||
import com.volmit.iris.util.plugin.*;
|
import com.volmit.iris.util.plugin.*;
|
||||||
import com.volmit.iris.util.reflect.ShadeFix;
|
import com.volmit.iris.util.reflect.ShadeFix;
|
||||||
import com.volmit.iris.util.scheduling.*;
|
import com.volmit.iris.util.scheduling.J;
|
||||||
|
import com.volmit.iris.util.scheduling.Looper;
|
||||||
|
import com.volmit.iris.util.scheduling.Queue;
|
||||||
|
import com.volmit.iris.util.scheduling.ShurikenQueue;
|
||||||
import io.papermc.lib.PaperLib;
|
import io.papermc.lib.PaperLib;
|
||||||
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
||||||
import net.kyori.adventure.text.serializer.ComponentSerializer;
|
import net.kyori.adventure.text.serializer.ComponentSerializer;
|
||||||
@@ -132,8 +134,7 @@ public class Iris extends VolmitPlugin implements Listener {
|
|||||||
services.values().forEach(this::registerListener);
|
services.values().forEach(this::registerListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void postShutdown(Runnable r)
|
public void postShutdown(Runnable r) {
|
||||||
{
|
|
||||||
postShutdown.add(r);
|
postShutdown.add(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -437,18 +438,12 @@ public class Iris extends VolmitPlugin implements Listener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ChunkGenerator getDefaultWorldGenerator(String worldName, String id) {
|
public ChunkGenerator getDefaultWorldGenerator(String worldName, String id) {
|
||||||
if(worldName.equals("test"))
|
if (worldName.equals("test")) {
|
||||||
{
|
try {
|
||||||
try
|
|
||||||
{
|
|
||||||
throw new RuntimeException();
|
throw new RuntimeException();
|
||||||
}
|
} catch (Throwable e) {
|
||||||
|
|
||||||
catch(Throwable e)
|
|
||||||
{
|
|
||||||
Iris.info(e.getStackTrace()[1].getClassName());
|
Iris.info(e.getStackTrace()[1].getClassName());
|
||||||
if(e.getStackTrace()[1].getClassName().contains("com.onarandombox.MultiverseCore"))
|
if (e.getStackTrace()[1].getClassName().contains("com.onarandombox.MultiverseCore")) {
|
||||||
{
|
|
||||||
Iris.debug("MVC Test detected, Quick! Send them the dummy!");
|
Iris.debug("MVC Test detected, Quick! Send them the dummy!");
|
||||||
return new DummyChunkGenerator();
|
return new DummyChunkGenerator();
|
||||||
}
|
}
|
||||||
@@ -490,8 +485,7 @@ public class Iris extends VolmitPlugin implements Listener {
|
|||||||
Iris.debug("Generator Config: " + w.toString());
|
Iris.debug("Generator Config: " + w.toString());
|
||||||
|
|
||||||
File ff = new File(w.worldFolder(), "iris/pack");
|
File ff = new File(w.worldFolder(), "iris/pack");
|
||||||
if(!ff.exists() || ff.listFiles().length == 0)
|
if (!ff.exists() || ff.listFiles().length == 0) {
|
||||||
{
|
|
||||||
ff.mkdirs();
|
ff.mkdirs();
|
||||||
service(StudioSVC.class).installIntoWorld(sender, dim.getLoadKey(), ff.getParentFile());
|
service(StudioSVC.class).installIntoWorld(sender, dim.getLoadKey(), ff.getParentFile());
|
||||||
}
|
}
|
||||||
@@ -736,21 +730,17 @@ public class Iris extends VolmitPlugin implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void dump()
|
public static void dump() {
|
||||||
{
|
try {
|
||||||
try
|
|
||||||
{
|
|
||||||
File fi = Iris.instance.getDataFile("dump", "td-" + new java.sql.Date(M.ms()) + ".txt");
|
File fi = Iris.instance.getDataFile("dump", "td-" + new java.sql.Date(M.ms()) + ".txt");
|
||||||
FileOutputStream fos = new FileOutputStream(fi);
|
FileOutputStream fos = new FileOutputStream(fi);
|
||||||
Map<Thread, StackTraceElement[]> f = Thread.getAllStackTraces();
|
Map<Thread, StackTraceElement[]> f = Thread.getAllStackTraces();
|
||||||
PrintWriter pw = new PrintWriter(fos);
|
PrintWriter pw = new PrintWriter(fos);
|
||||||
for(Thread i : f.keySet())
|
for (Thread i : f.keySet()) {
|
||||||
{
|
|
||||||
pw.println("========================================");
|
pw.println("========================================");
|
||||||
pw.println("Thread: '" + i.getName() + "' ID: " + i.getId() + " STATUS: " + i.getState().name());
|
pw.println("Thread: '" + i.getName() + "' ID: " + i.getId() + " STATUS: " + i.getState().name());
|
||||||
|
|
||||||
for(StackTraceElement j : f.get(i))
|
for (StackTraceElement j : f.get(i)) {
|
||||||
{
|
|
||||||
pw.println(" @ " + j.toString());
|
pw.println(" @ " + j.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -761,10 +751,7 @@ public class Iris extends VolmitPlugin implements Listener {
|
|||||||
|
|
||||||
pw.close();
|
pw.close();
|
||||||
System.out.println("DUMPED! See " + fi.getAbsolutePath());
|
System.out.println("DUMPED! See " + fi.getAbsolutePath());
|
||||||
}
|
} catch (Throwable e) {
|
||||||
|
|
||||||
catch(Throwable e)
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,12 +20,9 @@ package com.volmit.iris.core;
|
|||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.engine.object.basic.IrisRange;
|
|
||||||
import com.volmit.iris.util.collection.KSet;
|
|
||||||
import com.volmit.iris.util.io.IO;
|
import com.volmit.iris.util.io.IO;
|
||||||
import com.volmit.iris.util.json.JSONException;
|
import com.volmit.iris.util.json.JSONException;
|
||||||
import com.volmit.iris.util.json.JSONObject;
|
import com.volmit.iris.util.json.JSONObject;
|
||||||
import com.volmit.iris.util.scheduling.J;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -57,8 +54,7 @@ public class IrisSettings {
|
|||||||
return getParallax().getParallaxRegionEvictionMS();
|
return getParallax().getParallaxRegionEvictionMS();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int getPriority(int c)
|
public static int getPriority(int c) {
|
||||||
{
|
|
||||||
return Math.max(Math.min(c, Thread.MAX_PRIORITY), Thread.MIN_PRIORITY);
|
return Math.max(Math.min(c, Thread.MAX_PRIORITY), Thread.MIN_PRIORITY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,23 +21,13 @@ package com.volmit.iris.core.command.object;
|
|||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.IrisSettings;
|
import com.volmit.iris.core.IrisSettings;
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.core.service.StudioSVC;
|
|
||||||
import com.volmit.iris.core.tools.IrisToolbelt;
|
import com.volmit.iris.core.tools.IrisToolbelt;
|
||||||
import com.volmit.iris.engine.object.objects.IrisObject;
|
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.plugin.MortarCommand;
|
import com.volmit.iris.util.plugin.MortarCommand;
|
||||||
import com.volmit.iris.util.plugin.VolmitSender;
|
import com.volmit.iris.util.plugin.VolmitSender;
|
||||||
import com.volmit.iris.util.scheduling.J;
|
import com.volmit.iris.util.scheduling.J;
|
||||||
import com.volmit.iris.util.scheduling.Queue;
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.block.data.BlockData;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.text.NumberFormat;
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
public class CommandIrisObjectAnalyze extends MortarCommand {
|
public class CommandIrisObjectAnalyze extends MortarCommand {
|
||||||
|
|
||||||
public CommandIrisObjectAnalyze() {
|
public CommandIrisObjectAnalyze() {
|
||||||
|
|||||||
@@ -21,13 +21,10 @@ package com.volmit.iris.core.command.studio;
|
|||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.IrisSettings;
|
import com.volmit.iris.core.IrisSettings;
|
||||||
import com.volmit.iris.core.project.IrisProject;
|
import com.volmit.iris.core.project.IrisProject;
|
||||||
import com.volmit.iris.core.service.ConversionSVC;
|
|
||||||
import com.volmit.iris.core.service.StudioSVC;
|
import com.volmit.iris.core.service.StudioSVC;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.plugin.MortarCommand;
|
import com.volmit.iris.util.plugin.MortarCommand;
|
||||||
import com.volmit.iris.util.plugin.VolmitSender;
|
import com.volmit.iris.util.plugin.VolmitSender;
|
||||||
import com.volmit.iris.util.scheduling.jobs.Job;
|
|
||||||
import com.volmit.iris.util.scheduling.jobs.JobCollection;
|
|
||||||
|
|
||||||
public class CommandIrisStudioCompile extends MortarCommand {
|
public class CommandIrisStudioCompile extends MortarCommand {
|
||||||
public CommandIrisStudioCompile() {
|
public CommandIrisStudioCompile() {
|
||||||
@@ -49,8 +46,7 @@ public class CommandIrisStudioCompile extends MortarCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(args.length == 0)
|
if (args.length == 0) {
|
||||||
{
|
|
||||||
sender.sendMessage(getArgsUsage());
|
sender.sendMessage(getArgsUsage());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,13 +28,8 @@ import com.volmit.iris.util.decree.DecreeOrigin;
|
|||||||
import com.volmit.iris.util.decree.annotations.Decree;
|
import com.volmit.iris.util.decree.annotations.Decree;
|
||||||
import com.volmit.iris.util.decree.annotations.Param;
|
import com.volmit.iris.util.decree.annotations.Param;
|
||||||
import com.volmit.iris.util.format.C;
|
import com.volmit.iris.util.format.C;
|
||||||
import com.volmit.iris.util.math.M;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.PrintWriter;
|
|
||||||
import java.sql.Date;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Decree(name = "irisd", aliases = {"ird"}, description = "Basic Command")
|
@Decree(name = "irisd", aliases = {"ird"}, description = "Basic Command")
|
||||||
public class DecIris implements DecreeExecutor {
|
public class DecIris implements DecreeExecutor {
|
||||||
@@ -122,7 +117,8 @@ public class DecIris implements DecreeExecutor {
|
|||||||
case "%" -> v = value1 % value2;
|
case "%" -> v = value1 % value2;
|
||||||
case ">>" -> v = value1 >> value2;
|
case ">>" -> v = value1 >> value2;
|
||||||
case "<<" -> v = value1 << value2;
|
case "<<" -> v = value1 << value2;
|
||||||
};
|
}
|
||||||
|
;
|
||||||
if (v == null) {
|
if (v == null) {
|
||||||
sender().sendMessage(C.RED + "The operator you entered: (" + operator + ") is invalid!");
|
sender().sendMessage(C.RED + "The operator you entered: (" + operator + ") is invalid!");
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import org.bukkit.block.Block;
|
|||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
import org.bukkit.block.TileState;
|
import org.bukkit.block.TileState;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.text.NumberFormat;
|
import java.text.NumberFormat;
|
||||||
@@ -180,8 +179,10 @@ public class DecObject implements DecreeExecutor {
|
|||||||
player().setItemInHand(WandSVC.createWand(g[0], g[1]));
|
player().setItemInHand(WandSVC.createWand(g[0], g[1]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Set<Material> skipBlocks = Set.of(Material.GRASS, Material.SNOW, Material.VINE, Material.TORCH, Material.DEAD_BUSH,
|
private static final Set<Material> skipBlocks = Set.of(Material.GRASS, Material.SNOW, Material.VINE, Material.TORCH, Material.DEAD_BUSH,
|
||||||
Material.POPPY, Material.DANDELION);
|
Material.POPPY, Material.DANDELION);
|
||||||
|
|
||||||
@Decree(description = "Paste an object")
|
@Decree(description = "Paste an object")
|
||||||
public void paste(
|
public void paste(
|
||||||
@Param(description = "The object to paste")
|
@Param(description = "The object to paste")
|
||||||
|
|||||||
@@ -76,7 +76,6 @@ import org.bukkit.util.Vector;
|
|||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.concurrent.Future;
|
import java.util.concurrent.Future;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ import io.papermc.lib.PaperLib;
|
|||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
import java.util.concurrent.Future;
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
public class AsyncPregenMethod implements PregeneratorMethod {
|
public class AsyncPregenMethod implements PregeneratorMethod {
|
||||||
|
|||||||
@@ -32,13 +32,11 @@ import java.net.MalformedURLException;
|
|||||||
public class IrisPack {
|
public class IrisPack {
|
||||||
private final File folder;
|
private final File folder;
|
||||||
|
|
||||||
public IrisPack(File folder)
|
public IrisPack(File folder) {
|
||||||
{
|
|
||||||
this.folder = folder;
|
this.folder = folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void delete()
|
public void delete() {
|
||||||
{
|
|
||||||
IO.delete(folder);
|
IO.delete(folder);
|
||||||
folder.delete();
|
folder.delete();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,9 +39,7 @@ import com.volmit.iris.engine.platform.PlatformChunkGenerator;
|
|||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.collection.KMap;
|
import com.volmit.iris.util.collection.KMap;
|
||||||
import com.volmit.iris.util.collection.KSet;
|
import com.volmit.iris.util.collection.KSet;
|
||||||
import com.volmit.iris.util.data.B;
|
|
||||||
import com.volmit.iris.util.exceptions.IrisException;
|
import com.volmit.iris.util.exceptions.IrisException;
|
||||||
import com.volmit.iris.util.format.C;
|
|
||||||
import com.volmit.iris.util.format.Form;
|
import com.volmit.iris.util.format.Form;
|
||||||
import com.volmit.iris.util.io.IO;
|
import com.volmit.iris.util.io.IO;
|
||||||
import com.volmit.iris.util.json.JSONArray;
|
import com.volmit.iris.util.json.JSONArray;
|
||||||
@@ -55,7 +53,6 @@ import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
|||||||
import com.volmit.iris.util.scheduling.jobs.Job;
|
import com.volmit.iris.util.scheduling.jobs.Job;
|
||||||
import com.volmit.iris.util.scheduling.jobs.JobCollection;
|
import com.volmit.iris.util.scheduling.jobs.JobCollection;
|
||||||
import com.volmit.iris.util.scheduling.jobs.ParallelQueueJob;
|
import com.volmit.iris.util.scheduling.jobs.ParallelQueueJob;
|
||||||
import com.volmit.iris.util.scheduling.jobs.QueueJob;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
@@ -522,15 +519,13 @@ public class IrisProject {
|
|||||||
IrisObject o = new IrisObject(0, 0, 0);
|
IrisObject o = new IrisObject(0, 0, 0);
|
||||||
o.read(f);
|
o.read(f);
|
||||||
|
|
||||||
if(o.getBlocks().isEmpty())
|
if (o.getBlocks().isEmpty()) {
|
||||||
{
|
|
||||||
sender.sendMessageRaw("<hover:show_text:'Error:\n" +
|
sender.sendMessageRaw("<hover:show_text:'Error:\n" +
|
||||||
"<yellow>" + f.getPath() +
|
"<yellow>" + f.getPath() +
|
||||||
"'><red>- IOB " + f.getName() + " has 0 blocks!");
|
"'><red>- IOB " + f.getName() + " has 0 blocks!");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(o.getW() == 0 || o.getH() == 0 || o.getD() == 0)
|
if (o.getW() == 0 || o.getH() == 0 || o.getD() == 0) {
|
||||||
{
|
|
||||||
sender.sendMessageRaw("<hover:show_text:'Error:\n" +
|
sender.sendMessageRaw("<hover:show_text:'Error:\n" +
|
||||||
"<yellow>" + f.getPath() + "\n<red>The width height or depth has a zero in it (bad format)" +
|
"<yellow>" + f.getPath() + "\n<red>The width height or depth has a zero in it (bad format)" +
|
||||||
"'><red>- IOB " + f.getName() + " is not 3D!");
|
"'><red>- IOB " + f.getName() + " is not 3D!");
|
||||||
@@ -576,8 +571,7 @@ public class IrisProject {
|
|||||||
String key = data.toLoadKey(f);
|
String key = data.toLoadKey(f);
|
||||||
ResourceLoader<?> loader = data.getTypedLoaderFor(f);
|
ResourceLoader<?> loader = data.getTypedLoaderFor(f);
|
||||||
|
|
||||||
if(loader == null)
|
if (loader == null) {
|
||||||
{
|
|
||||||
sender.sendMessageBasic("Can't find loader for " + f.getPath());
|
sender.sendMessageBasic("Can't find loader for " + f.getPath());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -587,15 +581,10 @@ public class IrisProject {
|
|||||||
load.scanForErrors(p, sender);
|
load.scanForErrors(p, sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void compare(Class<?> c, JSONObject j, VolmitSender sender, KList<String> path)
|
public void compare(Class<?> c, JSONObject j, VolmitSender sender, KList<String> path) {
|
||||||
{
|
try {
|
||||||
try
|
|
||||||
{
|
|
||||||
Object o = c.getClass().getConstructor().newInstance();
|
Object o = c.getClass().getConstructor().newInstance();
|
||||||
}
|
} catch (Throwable e) {
|
||||||
|
|
||||||
catch(Throwable e)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ import org.bukkit.enchantments.Enchantment;
|
|||||||
import org.bukkit.potion.PotionEffectType;
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.lang.reflect.AccessibleObject;
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
package com.volmit.iris.core.project.loader;
|
package com.volmit.iris.core.project.loader;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.service.StudioSVC;
|
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.object.biome.IrisBiome;
|
import com.volmit.iris.engine.object.biome.IrisBiome;
|
||||||
import com.volmit.iris.engine.object.block.IrisBlockData;
|
import com.volmit.iris.engine.object.block.IrisBlockData;
|
||||||
@@ -44,9 +43,8 @@ import com.volmit.iris.util.math.RNG;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.*;
|
import java.util.Objects;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class IrisData {
|
public class IrisData {
|
||||||
@@ -73,8 +71,7 @@ public class IrisData {
|
|||||||
private Engine engine;
|
private Engine engine;
|
||||||
private final int id;
|
private final int id;
|
||||||
|
|
||||||
public static IrisData get(File dataFolder)
|
public static IrisData get(File dataFolder) {
|
||||||
{
|
|
||||||
return dataLoaders.compute(dataFolder, (k, v) -> v == null ? new IrisData(dataFolder) : v);
|
return dataLoaders.compute(dataFolder, (k, v) -> v == null ? new IrisData(dataFolder) : v);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,20 +83,16 @@ public class IrisData {
|
|||||||
hotloaded();
|
hotloaded();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void dereference()
|
public static void dereference() {
|
||||||
{
|
|
||||||
dataLoaders.v().forEach(IrisData::cleanupEngine);
|
dataLoaders.v().forEach(IrisData::cleanupEngine);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResourceLoader<?> getTypedLoaderFor(File f) {
|
public ResourceLoader<?> getTypedLoaderFor(File f) {
|
||||||
String[] k = f.getPath().split("\\Q" + File.separator + "\\E");
|
String[] k = f.getPath().split("\\Q" + File.separator + "\\E");
|
||||||
|
|
||||||
for(String i : k)
|
for (String i : k) {
|
||||||
{
|
for (ResourceLoader<?> j : loaders.values()) {
|
||||||
for(ResourceLoader<?> j : loaders.values())
|
if (j.getFolderName().equals(i)) {
|
||||||
{
|
|
||||||
if(j.getFolderName().equals(i))
|
|
||||||
{
|
|
||||||
return j;
|
return j;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -108,10 +101,8 @@ public class IrisData {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void cleanupEngine()
|
public void cleanupEngine() {
|
||||||
{
|
if (engine != null && engine.isClosed()) {
|
||||||
if(engine != null && engine.isClosed())
|
|
||||||
{
|
|
||||||
engine = null;
|
engine = null;
|
||||||
Iris.debug("Dereferenced Data<Engine> " + getId() + " " + getDataFolder());
|
Iris.debug("Dereferenced Data<Engine> " + getId() + " " + getDataFolder());
|
||||||
}
|
}
|
||||||
@@ -119,10 +110,8 @@ public class IrisData {
|
|||||||
|
|
||||||
public static int cacheSize() {
|
public static int cacheSize() {
|
||||||
int m = 0;
|
int m = 0;
|
||||||
for(IrisData i : dataLoaders.values())
|
for (IrisData i : dataLoaders.values()) {
|
||||||
{
|
for (ResourceLoader<?> j : i.getLoaders().values()) {
|
||||||
for(ResourceLoader<?> j : i.getLoaders().values())
|
|
||||||
{
|
|
||||||
m += j.getLoadCache().size();
|
m += j.getLoadCache().size();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -332,18 +321,14 @@ public class IrisData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String toLoadKey(File f) {
|
public String toLoadKey(File f) {
|
||||||
if(f.getPath().startsWith(getDataFolder().getPath()))
|
if (f.getPath().startsWith(getDataFolder().getPath())) {
|
||||||
{
|
|
||||||
String[] full = f.getPath().split("\\Q" + File.separator + "\\E");
|
String[] full = f.getPath().split("\\Q" + File.separator + "\\E");
|
||||||
String[] df = getDataFolder().getPath().split("\\Q" + File.separator + "\\E");
|
String[] df = getDataFolder().getPath().split("\\Q" + File.separator + "\\E");
|
||||||
String g = "";
|
String g = "";
|
||||||
boolean m = true;
|
boolean m = true;
|
||||||
for(int i = 0; i < full.length; i++)
|
for (int i = 0; i < full.length; i++) {
|
||||||
{
|
if (i >= df.length) {
|
||||||
if(i >= df.length)
|
if (m) {
|
||||||
{
|
|
||||||
if(m)
|
|
||||||
{
|
|
||||||
m = false;
|
m = false;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -354,10 +339,7 @@ public class IrisData {
|
|||||||
|
|
||||||
String ff = g.toString().substring(1).split("\\Q.\\E")[0];
|
String ff = g.toString().substring(1).split("\\Q.\\E")[0];
|
||||||
return ff;
|
return ff;
|
||||||
}
|
} else {
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Iris.error("Forign file from loader " + f.getPath() + " (loader realm: " + getDataFolder().getPath() + ")");
|
Iris.error("Forign file from loader " + f.getPath() + " (loader realm: " + getDataFolder().getPath() + ")");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
package com.volmit.iris.core.service;
|
package com.volmit.iris.core.service;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
|
||||||
import com.volmit.iris.core.decrees.DecIris;
|
import com.volmit.iris.core.decrees.DecIris;
|
||||||
import com.volmit.iris.engine.data.cache.AtomicCache;
|
import com.volmit.iris.engine.data.cache.AtomicCache;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
|
|||||||
@@ -28,29 +28,24 @@ import com.volmit.iris.util.scheduling.Looper;
|
|||||||
|
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
|
|
||||||
public class PreservationSVC implements IrisService
|
public class PreservationSVC implements IrisService {
|
||||||
{
|
|
||||||
private KList<Thread> threads = new KList<>();
|
private KList<Thread> threads = new KList<>();
|
||||||
private KList<ExecutorService> services = new KList<>();
|
private KList<ExecutorService> services = new KList<>();
|
||||||
private Looper dereferencer;
|
private Looper dereferencer;
|
||||||
|
|
||||||
public void register(Thread t)
|
public void register(Thread t) {
|
||||||
{
|
|
||||||
threads.add(t);
|
threads.add(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void register(MultiBurst burst)
|
public void register(MultiBurst burst) {
|
||||||
{
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void register(ExecutorService service)
|
public void register(ExecutorService service) {
|
||||||
{
|
|
||||||
services.add(service);
|
services.add(service);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void dereference()
|
public void dereference() {
|
||||||
{
|
|
||||||
IrisContext.dereference();
|
IrisContext.dereference();
|
||||||
IrisData.dereference();
|
IrisData.dereference();
|
||||||
}
|
}
|
||||||
@@ -76,33 +71,22 @@ public class PreservationSVC implements IrisService
|
|||||||
dereference();
|
dereference();
|
||||||
|
|
||||||
postShutdown(() -> {
|
postShutdown(() -> {
|
||||||
for(Thread i : threads)
|
for (Thread i : threads) {
|
||||||
{
|
if (i.isAlive()) {
|
||||||
if(i.isAlive())
|
try {
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
i.interrupt();
|
i.interrupt();
|
||||||
Iris.info("Shutdown Thread " + i.getName());
|
Iris.info("Shutdown Thread " + i.getName());
|
||||||
}
|
} catch (Throwable e) {
|
||||||
|
|
||||||
catch(Throwable e)
|
|
||||||
{
|
|
||||||
Iris.reportError(e);
|
Iris.reportError(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(ExecutorService i : services)
|
for (ExecutorService i : services) {
|
||||||
{
|
try {
|
||||||
try
|
|
||||||
{
|
|
||||||
i.shutdownNow();
|
i.shutdownNow();
|
||||||
Iris.info("Shutdown Executor Service " + i);
|
Iris.info("Shutdown Executor Service " + i);
|
||||||
}
|
} catch (Throwable e) {
|
||||||
|
|
||||||
catch(Throwable e)
|
|
||||||
{
|
|
||||||
Iris.reportError(e);
|
Iris.reportError(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ package com.volmit.iris.core.service;
|
|||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.JsonSyntaxException;
|
import com.google.gson.JsonSyntaxException;
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.IrisSettings;
|
|
||||||
import com.volmit.iris.core.project.IrisProject;
|
import com.volmit.iris.core.project.IrisProject;
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.core.tools.IrisToolbelt;
|
import com.volmit.iris.core.tools.IrisToolbelt;
|
||||||
@@ -77,8 +76,7 @@ public class StudioSVC implements IrisService {
|
|||||||
|
|
||||||
for (World i : Bukkit.getWorlds()) {
|
for (World i : Bukkit.getWorlds()) {
|
||||||
if (IrisToolbelt.isIrisWorld(i)) {
|
if (IrisToolbelt.isIrisWorld(i)) {
|
||||||
if(IrisToolbelt.isStudio(i))
|
if (IrisToolbelt.isStudio(i)) {
|
||||||
{
|
|
||||||
IrisToolbelt.evacuate(i);
|
IrisToolbelt.evacuate(i);
|
||||||
IrisToolbelt.access(i).close();
|
IrisToolbelt.access(i).close();
|
||||||
}
|
}
|
||||||
@@ -165,8 +163,7 @@ public class StudioSVC implements IrisService {
|
|||||||
try {
|
try {
|
||||||
url = getListing(false).get(key);
|
url = getListing(false).get(key);
|
||||||
|
|
||||||
if(url == null)
|
if (url == null) {
|
||||||
{
|
|
||||||
Iris.warn("ITS ULL for " + key);
|
Iris.warn("ITS ULL for " + key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
package com.volmit.iris.engine;
|
package com.volmit.iris.engine;
|
||||||
|
|
||||||
import com.google.common.util.concurrent.AtomicDouble;
|
import com.google.common.util.concurrent.AtomicDouble;
|
||||||
import com.google.gson.Gson;
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.engine.actuator.IrisTerrainNormalActuator;
|
import com.volmit.iris.engine.actuator.IrisTerrainNormalActuator;
|
||||||
@@ -32,13 +31,10 @@ import com.volmit.iris.engine.object.decoration.IrisDecorationPart;
|
|||||||
import com.volmit.iris.engine.object.decoration.IrisDecorator;
|
import com.volmit.iris.engine.object.decoration.IrisDecorator;
|
||||||
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
|
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
|
||||||
import com.volmit.iris.engine.object.noise.IrisGenerator;
|
import com.volmit.iris.engine.object.noise.IrisGenerator;
|
||||||
import com.volmit.iris.engine.object.noise.IrisInterpolator;
|
|
||||||
import com.volmit.iris.engine.object.noise.IrisShapedGeneratorStyle;
|
|
||||||
import com.volmit.iris.engine.object.regional.IrisRegion;
|
import com.volmit.iris.engine.object.regional.IrisRegion;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.collection.KMap;
|
import com.volmit.iris.util.collection.KMap;
|
||||||
import com.volmit.iris.util.data.DataProvider;
|
import com.volmit.iris.util.data.DataProvider;
|
||||||
import com.volmit.iris.util.function.NoiseProvider;
|
|
||||||
import com.volmit.iris.util.math.M;
|
import com.volmit.iris.util.math.M;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import com.volmit.iris.util.noise.CNG;
|
import com.volmit.iris.util.noise.CNG;
|
||||||
@@ -49,7 +45,6 @@ import org.bukkit.Material;
|
|||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,10 @@ import com.volmit.iris.engine.actuator.IrisTerrainNormalActuator;
|
|||||||
import com.volmit.iris.engine.data.cache.AtomicCache;
|
import com.volmit.iris.engine.data.cache.AtomicCache;
|
||||||
import com.volmit.iris.engine.framework.*;
|
import com.volmit.iris.engine.framework.*;
|
||||||
import com.volmit.iris.engine.mantle.EngineMantle;
|
import com.volmit.iris.engine.mantle.EngineMantle;
|
||||||
import com.volmit.iris.engine.modifier.*;
|
import com.volmit.iris.engine.modifier.IrisCaveModifier;
|
||||||
|
import com.volmit.iris.engine.modifier.IrisDepositModifier;
|
||||||
|
import com.volmit.iris.engine.modifier.IrisPostModifier;
|
||||||
|
import com.volmit.iris.engine.modifier.IrisRavineModifier;
|
||||||
import com.volmit.iris.engine.object.biome.IrisBiome;
|
import com.volmit.iris.engine.object.biome.IrisBiome;
|
||||||
import com.volmit.iris.engine.object.biome.IrisBiomePaletteLayer;
|
import com.volmit.iris.engine.object.biome.IrisBiomePaletteLayer;
|
||||||
import com.volmit.iris.engine.object.decoration.IrisDecorator;
|
import com.volmit.iris.engine.object.decoration.IrisDecorator;
|
||||||
@@ -41,22 +44,16 @@ import com.volmit.iris.util.atomics.AtomicRollingSequence;
|
|||||||
import com.volmit.iris.util.collection.KMap;
|
import com.volmit.iris.util.collection.KMap;
|
||||||
import com.volmit.iris.util.context.IrisContext;
|
import com.volmit.iris.util.context.IrisContext;
|
||||||
import com.volmit.iris.util.documentation.BlockCoordinates;
|
import com.volmit.iris.util.documentation.BlockCoordinates;
|
||||||
import com.volmit.iris.util.documentation.ChunkCoordinates;
|
|
||||||
import com.volmit.iris.util.format.C;
|
import com.volmit.iris.util.format.C;
|
||||||
import com.volmit.iris.util.format.Form;
|
import com.volmit.iris.util.format.Form;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.util.io.IO;
|
import com.volmit.iris.util.io.IO;
|
||||||
import com.volmit.iris.util.math.M;
|
import com.volmit.iris.util.math.M;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import com.volmit.iris.util.math.RollingSequence;
|
|
||||||
import com.volmit.iris.util.scheduling.ChronoLatch;
|
import com.volmit.iris.util.scheduling.ChronoLatch;
|
||||||
import com.volmit.iris.util.scheduling.J;
|
import com.volmit.iris.util.scheduling.J;
|
||||||
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
import net.minecraft.world.level.block.state.IBlockData;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Chunk;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
@@ -65,7 +62,6 @@ import org.bukkit.command.CommandSender;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Random;
|
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
@@ -141,8 +137,7 @@ public class IrisEngine implements Engine {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void prehotload()
|
private void prehotload() {
|
||||||
{
|
|
||||||
worldManager.close();
|
worldManager.close();
|
||||||
complex.close();
|
complex.close();
|
||||||
execution.close();
|
execution.close();
|
||||||
@@ -156,10 +151,8 @@ public class IrisEngine implements Engine {
|
|||||||
effects.close();
|
effects.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupEngine()
|
private void setupEngine() {
|
||||||
{
|
try {
|
||||||
try
|
|
||||||
{
|
|
||||||
Iris.debug("Setup Engine " + getCacheID());
|
Iris.debug("Setup Engine " + getCacheID());
|
||||||
cacheId = RNG.r.nextInt();
|
cacheId = RNG.r.nextInt();
|
||||||
worldManager = new IrisWorldManager(this);
|
worldManager = new IrisWorldManager(this);
|
||||||
@@ -174,10 +167,7 @@ public class IrisEngine implements Engine {
|
|||||||
postModifier = new IrisPostModifier(this);
|
postModifier = new IrisPostModifier(this);
|
||||||
effects = new IrisEngineEffects(this);
|
effects = new IrisEngineEffects(this);
|
||||||
J.a(this::computeBiomeMaxes);
|
J.a(this::computeBiomeMaxes);
|
||||||
}
|
} catch (Throwable e) {
|
||||||
|
|
||||||
catch(Throwable e)
|
|
||||||
{
|
|
||||||
Iris.error("FAILED TO SETUP ENGINE!");
|
Iris.error("FAILED TO SETUP ENGINE!");
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@@ -400,8 +390,7 @@ public class IrisEngine implements Engine {
|
|||||||
@BlockCoordinates
|
@BlockCoordinates
|
||||||
@Override
|
@Override
|
||||||
public void generate(int x, int z, Hunk<BlockData> vblocks, Hunk<Biome> vbiomes, boolean multicore) throws WrongEngineBroException {
|
public void generate(int x, int z, Hunk<BlockData> vblocks, Hunk<Biome> vbiomes, boolean multicore) throws WrongEngineBroException {
|
||||||
if(closed)
|
if (closed) {
|
||||||
{
|
|
||||||
throw new WrongEngineBroException();
|
throw new WrongEngineBroException();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -412,17 +401,13 @@ public class IrisEngine implements Engine {
|
|||||||
PrecisionStopwatch p = PrecisionStopwatch.start();
|
PrecisionStopwatch p = PrecisionStopwatch.start();
|
||||||
Hunk<BlockData> blocks = vblocks.listen((xx, y, zz, t) -> catchBlockUpdates(x + xx, y + getMinHeight(), z + zz, t));
|
Hunk<BlockData> blocks = vblocks.listen((xx, y, zz, t) -> catchBlockUpdates(x + xx, y + getMinHeight(), z + zz, t));
|
||||||
|
|
||||||
if(multicore)
|
if (multicore) {
|
||||||
{
|
|
||||||
for (int i = 0; i < 16; i++) {
|
for (int i = 0; i < 16; i++) {
|
||||||
for (int j = 0; j < 16; j++) {
|
for (int j = 0; j < 16; j++) {
|
||||||
blocks.set(i, 0, j, Material.RED_GLAZED_TERRACOTTA.createBlockData());
|
blocks.set(i, 0, j, Material.RED_GLAZED_TERRACOTTA.createBlockData());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
getMantle().generateMatter(x >> 4, z >> 4, multicore);
|
getMantle().generateMatter(x >> 4, z >> 4, multicore);
|
||||||
|
|
||||||
burst().burst(multicore,
|
burst().burst(multicore,
|
||||||
@@ -444,7 +429,6 @@ public class IrisEngine implements Engine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
getMetrics().getTotal().put(p.getMilliseconds());
|
getMetrics().getTotal().put(p.getMilliseconds());
|
||||||
generated.incrementAndGet();
|
generated.incrementAndGet();
|
||||||
recycle();
|
recycle();
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
package com.volmit.iris.engine;
|
package com.volmit.iris.engine;
|
||||||
|
|
||||||
import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap;
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.engine.data.cache.AtomicCache;
|
import com.volmit.iris.engine.data.cache.AtomicCache;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
@@ -29,7 +28,6 @@ import com.volmit.iris.engine.mantle.components.MantleJigsawComponent;
|
|||||||
import com.volmit.iris.engine.mantle.components.MantleObjectComponent;
|
import com.volmit.iris.engine.mantle.components.MantleObjectComponent;
|
||||||
import com.volmit.iris.engine.object.biome.IrisBiome;
|
import com.volmit.iris.engine.object.biome.IrisBiome;
|
||||||
import com.volmit.iris.engine.object.deposits.IrisDepositGenerator;
|
import com.volmit.iris.engine.object.deposits.IrisDepositGenerator;
|
||||||
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
|
|
||||||
import com.volmit.iris.engine.object.feature.IrisFeaturePotential;
|
import com.volmit.iris.engine.object.feature.IrisFeaturePotential;
|
||||||
import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructurePlacement;
|
import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructurePlacement;
|
||||||
import com.volmit.iris.engine.object.objects.IrisObject;
|
import com.volmit.iris.engine.object.objects.IrisObject;
|
||||||
@@ -39,21 +37,14 @@ import com.volmit.iris.engine.object.regional.IrisRegion;
|
|||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.collection.KMap;
|
import com.volmit.iris.util.collection.KMap;
|
||||||
import com.volmit.iris.util.collection.KSet;
|
import com.volmit.iris.util.collection.KSet;
|
||||||
import com.volmit.iris.util.documentation.BlockCoordinates;
|
|
||||||
import com.volmit.iris.util.documentation.ChunkCoordinates;
|
|
||||||
import com.volmit.iris.util.format.Form;
|
import com.volmit.iris.util.format.Form;
|
||||||
import com.volmit.iris.util.mantle.Mantle;
|
import com.volmit.iris.util.mantle.Mantle;
|
||||||
import com.volmit.iris.util.mantle.MantleFlag;
|
|
||||||
import com.volmit.iris.util.parallel.BurstExecutor;
|
import com.volmit.iris.util.parallel.BurstExecutor;
|
||||||
import com.volmit.iris.util.stream.ProceduralStream;
|
|
||||||
import com.volmit.iris.util.stream.interpolation.Interpolated;
|
|
||||||
import com.volmit.iris.util.stream.utility.CachedStream2D;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.bukkit.util.BlockVector;
|
import org.bukkit.util.BlockVector;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ import com.volmit.iris.util.math.RNG;
|
|||||||
import com.volmit.iris.util.scheduling.ChronoLatch;
|
import com.volmit.iris.util.scheduling.ChronoLatch;
|
||||||
import com.volmit.iris.util.scheduling.J;
|
import com.volmit.iris.util.scheduling.J;
|
||||||
import com.volmit.iris.util.scheduling.Looper;
|
import com.volmit.iris.util.scheduling.Looper;
|
||||||
import io.papermc.lib.PaperLib;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
@@ -99,10 +98,8 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
|
|||||||
interrupt();
|
interrupt();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(getEngine().getWorld().hasRealWorld())
|
if (getEngine().getWorld().hasRealWorld()) {
|
||||||
{
|
if (chunkUpdater.flip()) {
|
||||||
if(chunkUpdater.flip())
|
|
||||||
{
|
|
||||||
updateChunks();
|
updateChunks();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -152,8 +149,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateChunks() {
|
private void updateChunks() {
|
||||||
for(Player i : getEngine().getWorld().realWorld().getPlayers())
|
for (Player i : getEngine().getWorld().realWorld().getPlayers()) {
|
||||||
{
|
|
||||||
J.s(() -> {
|
J.s(() -> {
|
||||||
Chunk c = i.getLocation().getChunk();
|
Chunk c = i.getLocation().getChunk();
|
||||||
J.a(() -> getEngine().updateChunk(c));
|
J.a(() -> getEngine().updateChunk(c));
|
||||||
|
|||||||
@@ -26,12 +26,10 @@ import com.volmit.iris.engine.framework.EngineAssignedActuator;
|
|||||||
import com.volmit.iris.engine.object.biome.IrisBiome;
|
import com.volmit.iris.engine.object.biome.IrisBiome;
|
||||||
import com.volmit.iris.engine.object.biome.IrisBiomeCustom;
|
import com.volmit.iris.engine.object.biome.IrisBiomeCustom;
|
||||||
import com.volmit.iris.util.documentation.BlockCoordinates;
|
import com.volmit.iris.util.documentation.BlockCoordinates;
|
||||||
import com.volmit.iris.util.format.Form;
|
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.util.hunk.view.BiomeGridHunkView;
|
import com.volmit.iris.util.hunk.view.BiomeGridHunkView;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import com.volmit.iris.util.parallel.BurstExecutor;
|
import com.volmit.iris.util.parallel.BurstExecutor;
|
||||||
import com.volmit.iris.util.parallel.MultiBurst;
|
|
||||||
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
import org.bukkit.generator.ChunkGenerator;
|
import org.bukkit.generator.ChunkGenerator;
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
package com.volmit.iris.engine.actuator;
|
package com.volmit.iris.engine.actuator;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
|
||||||
import com.volmit.iris.engine.decorator.*;
|
import com.volmit.iris.engine.decorator.*;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.framework.EngineAssignedActuator;
|
import com.volmit.iris.engine.framework.EngineAssignedActuator;
|
||||||
@@ -26,7 +25,6 @@ import com.volmit.iris.engine.framework.EngineDecorator;
|
|||||||
import com.volmit.iris.engine.object.biome.IrisBiome;
|
import com.volmit.iris.engine.object.biome.IrisBiome;
|
||||||
import com.volmit.iris.engine.object.carve.IrisCaveLayer;
|
import com.volmit.iris.engine.object.carve.IrisCaveLayer;
|
||||||
import com.volmit.iris.util.documentation.BlockCoordinates;
|
import com.volmit.iris.util.documentation.BlockCoordinates;
|
||||||
import com.volmit.iris.util.format.Form;
|
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import com.volmit.iris.util.parallel.BurstExecutor;
|
import com.volmit.iris.util.parallel.BurstExecutor;
|
||||||
@@ -35,7 +33,6 @@ import lombok.Getter;
|
|||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
|
||||||
import java.util.function.BiPredicate;
|
import java.util.function.BiPredicate;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
@@ -113,8 +110,7 @@ public class IrisDecorantActuator extends EngineAssignedActuator<BlockData> {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(height < getDimension().getFluidHeight())
|
if (height < getDimension().getFluidHeight()) {
|
||||||
{
|
|
||||||
getSeaSurfaceDecorator().decorate(finalI, j,
|
getSeaSurfaceDecorator().decorate(finalI, j,
|
||||||
realX, (int) Math.round(modX(x + finalI + 1)), (int) Math.round(modX(x + finalI - 1)),
|
realX, (int) Math.round(modX(x + finalI + 1)), (int) Math.round(modX(x + finalI - 1)),
|
||||||
realZ, (int) Math.round(modZ(z + j + 1)), (int) Math.round(modZ(z + j - 1)),
|
realZ, (int) Math.round(modZ(z + j + 1)), (int) Math.round(modZ(z + j - 1)),
|
||||||
|
|||||||
@@ -18,11 +18,9 @@
|
|||||||
|
|
||||||
package com.volmit.iris.engine.actuator;
|
package com.volmit.iris.engine.actuator;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.framework.EngineAssignedActuator;
|
import com.volmit.iris.engine.framework.EngineAssignedActuator;
|
||||||
import com.volmit.iris.engine.object.biome.IrisBiome;
|
import com.volmit.iris.engine.object.biome.IrisBiome;
|
||||||
import com.volmit.iris.engine.object.noise.IrisShapedGeneratorStyle;
|
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.documentation.BlockCoordinates;
|
import com.volmit.iris.util.documentation.BlockCoordinates;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
@@ -66,8 +64,7 @@ public class IrisTerrainNormalActuator extends EngineAssignedActuator<BlockData>
|
|||||||
getEngine().getMetrics().getTerrain().put(p.getMilliseconds());
|
getEngine().getMetrics().getTerrain().put(p.getMilliseconds());
|
||||||
}
|
}
|
||||||
|
|
||||||
private int fluidOrHeight(int height)
|
private int fluidOrHeight(int height) {
|
||||||
{
|
|
||||||
return Math.max(getDimension().getFluidHeight(), height);
|
return Math.max(getDimension().getFluidHeight(), height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,49 +45,35 @@ public class AtomicCache<T> {
|
|||||||
public void reset() {
|
public void reset() {
|
||||||
t.set(null);
|
t.set(null);
|
||||||
|
|
||||||
if(nullSupport)
|
if (nullSupport) {
|
||||||
{
|
|
||||||
set.set(false);
|
set.set(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public T aquire(Supplier<T> t) {
|
public T aquire(Supplier<T> t) {
|
||||||
if(this.t.get() != null)
|
if (this.t.get() != null) {
|
||||||
{
|
|
||||||
return this.t.get();
|
return this.t.get();
|
||||||
}
|
} else if (nullSupport && set.get()) {
|
||||||
|
|
||||||
else if(nullSupport && set.get())
|
|
||||||
{
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
lock.lock();
|
lock.lock();
|
||||||
|
|
||||||
if(this.t.get() != null)
|
if (this.t.get() != null) {
|
||||||
{
|
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
return this.t.get();
|
return this.t.get();
|
||||||
}
|
} else if (nullSupport && set.get()) {
|
||||||
|
|
||||||
else if(nullSupport && set.get())
|
|
||||||
{
|
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try {
|
||||||
{
|
|
||||||
this.t.set(t.get());
|
this.t.set(t.get());
|
||||||
|
|
||||||
if(nullSupport)
|
if (nullSupport) {
|
||||||
{
|
|
||||||
set.set(true);
|
set.set(true);
|
||||||
}
|
}
|
||||||
}
|
} catch (Throwable e) {
|
||||||
|
|
||||||
catch(Throwable e)
|
|
||||||
{
|
|
||||||
Iris.error("Atomic cache failure!");
|
Iris.error("Atomic cache failure!");
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,8 +92,7 @@ public class MCATerrainChunk implements TerrainChunk {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(blockData == null)
|
if (blockData == null) {
|
||||||
{
|
|
||||||
Iris.error("NULL BD");
|
Iris.error("NULL BD");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
package com.volmit.iris.engine.decorator;
|
package com.volmit.iris.engine.decorator;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
|
||||||
import com.volmit.iris.engine.data.cache.Cache;
|
import com.volmit.iris.engine.data.cache.Cache;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.object.biome.IrisBiome;
|
import com.volmit.iris.engine.object.biome.IrisBiome;
|
||||||
|
|||||||
@@ -21,8 +21,6 @@ package com.volmit.iris.engine.framework;
|
|||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.generator.LimitedRegion;
|
|
||||||
import org.bukkit.generator.WorldInfo;
|
|
||||||
|
|
||||||
public interface BlockUpdater {
|
public interface BlockUpdater {
|
||||||
|
|
||||||
|
|||||||
@@ -45,10 +45,8 @@ import com.volmit.iris.util.data.B;
|
|||||||
import com.volmit.iris.util.data.DataProvider;
|
import com.volmit.iris.util.data.DataProvider;
|
||||||
import com.volmit.iris.util.documentation.BlockCoordinates;
|
import com.volmit.iris.util.documentation.BlockCoordinates;
|
||||||
import com.volmit.iris.util.documentation.ChunkCoordinates;
|
import com.volmit.iris.util.documentation.ChunkCoordinates;
|
||||||
import com.volmit.iris.util.format.Form;
|
|
||||||
import com.volmit.iris.util.function.Function2;
|
import com.volmit.iris.util.function.Function2;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.util.mantle.Mantle;
|
|
||||||
import com.volmit.iris.util.mantle.MantleFlag;
|
import com.volmit.iris.util.mantle.MantleFlag;
|
||||||
import com.volmit.iris.util.math.BlockPosition;
|
import com.volmit.iris.util.math.BlockPosition;
|
||||||
import com.volmit.iris.util.math.M;
|
import com.volmit.iris.util.math.M;
|
||||||
@@ -60,7 +58,10 @@ import com.volmit.iris.util.scheduling.J;
|
|||||||
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
||||||
import com.volmit.iris.util.stream.ProceduralStream;
|
import com.volmit.iris.util.stream.ProceduralStream;
|
||||||
import io.papermc.lib.PaperLib;
|
import io.papermc.lib.PaperLib;
|
||||||
import org.bukkit.*;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Chunk;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
@@ -70,7 +71,6 @@ import org.bukkit.inventory.InventoryHolder;
|
|||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.Color;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
@@ -393,8 +393,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
|||||||
items.addAll(i.getLoot(debug, items.isEmpty(), rng, slot, x, y, z, b + b, mgf + b));
|
items.addAll(i.getLoot(debug, items.isEmpty(), rng, slot, x, y, z, b + b, mgf + b));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(PaperLib.isPaper() && getWorld().hasRealWorld())
|
if (PaperLib.isPaper() && getWorld().hasRealWorld()) {
|
||||||
{
|
|
||||||
PaperLib.getChunkAtAsync(getWorld().realWorld(), x >> 4, z >> 4).thenAccept((c) -> {
|
PaperLib.getChunkAtAsync(getWorld().realWorld(), x >> 4, z >> 4).thenAccept((c) -> {
|
||||||
Runnable r = () -> {
|
Runnable r = () -> {
|
||||||
for (ItemStack i : items) {
|
for (ItemStack i : items) {
|
||||||
@@ -404,20 +403,13 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
|||||||
scramble(inv, rng);
|
scramble(inv, rng);
|
||||||
};
|
};
|
||||||
|
|
||||||
if(Bukkit.isPrimaryThread())
|
if (Bukkit.isPrimaryThread()) {
|
||||||
{
|
|
||||||
r.run();
|
r.run();
|
||||||
}
|
} else {
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
J.s(r);
|
J.s(r);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
} else {
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (ItemStack i : items) {
|
for (ItemStack i : items) {
|
||||||
inv.addItem(i);
|
inv.addItem(i);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
package com.volmit.iris.engine.framework;
|
package com.volmit.iris.engine.framework;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
|
||||||
import com.volmit.iris.util.documentation.BlockCoordinates;
|
import com.volmit.iris.util.documentation.BlockCoordinates;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
package com.volmit.iris.engine.framework;
|
package com.volmit.iris.engine.framework;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
|
||||||
import com.volmit.iris.util.documentation.BlockCoordinates;
|
import com.volmit.iris.util.documentation.BlockCoordinates;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
|
|
||||||
|
|||||||
@@ -80,8 +80,7 @@ public abstract class EngineAssignedWorldManager extends EngineAssignedComponent
|
|||||||
|
|
||||||
Iris.debug("Ps: " + p.size());
|
Iris.debug("Ps: " + p.size());
|
||||||
|
|
||||||
for(Position2 i : p)
|
for (Position2 i : p) {
|
||||||
{
|
|
||||||
Iris.debug("- " + i.getX() + " " + i.getZ());
|
Iris.debug("- " + i.getX() + " " + i.getZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,8 +33,7 @@ public interface EngineComponent {
|
|||||||
|
|
||||||
String getName();
|
String getName();
|
||||||
|
|
||||||
default MultiBurst burst()
|
default MultiBurst burst() {
|
||||||
{
|
|
||||||
return getEngine().burst();
|
return getEngine().burst();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
package com.volmit.iris.engine.framework;
|
package com.volmit.iris.engine.framework;
|
||||||
|
|
||||||
import com.volmit.iris.core.IrisSettings;
|
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.engine.object.common.IrisWorld;
|
import com.volmit.iris.engine.object.common.IrisWorld;
|
||||||
import com.volmit.iris.engine.object.dimensional.IrisDimension;
|
import com.volmit.iris.engine.object.dimensional.IrisDimension;
|
||||||
|
|||||||
@@ -21,11 +21,8 @@ package com.volmit.iris.engine.jigsaw;
|
|||||||
import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap;
|
import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap;
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.core.tools.IrisToolbelt;
|
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
|
||||||
import com.volmit.iris.engine.object.basic.IrisPosition;
|
import com.volmit.iris.engine.object.basic.IrisPosition;
|
||||||
import com.volmit.iris.engine.object.common.IObjectPlacer;
|
import com.volmit.iris.engine.object.common.IObjectPlacer;
|
||||||
import com.volmit.iris.engine.object.entity.IrisEntity;
|
|
||||||
import com.volmit.iris.engine.object.feature.IrisFeature;
|
import com.volmit.iris.engine.object.feature.IrisFeature;
|
||||||
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
|
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
|
||||||
import com.volmit.iris.engine.object.jigsaw.IrisJigsawPiece;
|
import com.volmit.iris.engine.object.jigsaw.IrisJigsawPiece;
|
||||||
@@ -38,9 +35,7 @@ import com.volmit.iris.util.mantle.Mantle;
|
|||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.bukkit.Axis;
|
import org.bukkit.Axis;
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Entity;
|
|
||||||
|
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
@@ -116,20 +111,13 @@ public class PlannedStructure {
|
|||||||
int offset = i.getPosition().getY() - startHeight;
|
int offset = i.getPosition().getY() - startHeight;
|
||||||
int height = 0;
|
int height = 0;
|
||||||
|
|
||||||
if(i.getStructure().getStructure().getLockY() == -1)
|
if (i.getStructure().getStructure().getLockY() == -1) {
|
||||||
{
|
if (i.getStructure().getStructure().getOverrideYRange() != null) {
|
||||||
if(i.getStructure().getStructure().getOverrideYRange() != null)
|
|
||||||
{
|
|
||||||
height = (int) i.getStructure().getStructure().getOverrideYRange().get(rng, xx, zz, getData());
|
height = (int) i.getStructure().getStructure().getOverrideYRange().get(rng, xx, zz, getData());
|
||||||
}
|
} else {
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
height = placer.getHighest(xx, zz, getData());
|
height = placer.getHighest(xx, zz, getData());
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
|
|
||||||
else{
|
|
||||||
height = i.getStructure().getStructure().getLockY();
|
height = i.getStructure().getStructure().getLockY();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -244,8 +232,7 @@ public class PlannedStructure {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean generateRotatedPiece(PlannedPiece piece, IrisJigsawPieceConnector pieceConnector, IrisJigsawPiece idea, IrisObjectRotation rotation) {
|
private boolean generateRotatedPiece(PlannedPiece piece, IrisJigsawPieceConnector pieceConnector, IrisJigsawPiece idea, IrisObjectRotation rotation) {
|
||||||
if (!idea.getPlacementOptions().getRotation().isEnabled())
|
if (!idea.getPlacementOptions().getRotation().isEnabled()) {
|
||||||
{
|
|
||||||
rotation = piece.getRotation();
|
rotation = piece.getRotation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,17 +33,13 @@ import com.volmit.iris.util.documentation.BlockCoordinates;
|
|||||||
import com.volmit.iris.util.documentation.ChunkCoordinates;
|
import com.volmit.iris.util.documentation.ChunkCoordinates;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.util.mantle.Mantle;
|
import com.volmit.iris.util.mantle.Mantle;
|
||||||
import com.volmit.iris.util.mantle.MantleFlag;
|
|
||||||
import com.volmit.iris.util.noise.CNG;
|
|
||||||
import com.volmit.iris.util.parallel.BurstExecutor;
|
import com.volmit.iris.util.parallel.BurstExecutor;
|
||||||
import com.volmit.iris.util.parallel.MultiBurst;
|
import com.volmit.iris.util.parallel.MultiBurst;
|
||||||
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
|
||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
import org.bukkit.block.TileState;
|
import org.bukkit.block.TileState;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.*;
|
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
// TODO: MOVE PLACER OUT OF MATTER INTO ITS OWN THING
|
// TODO: MOVE PLACER OUT OF MATTER INTO ITS OWN THING
|
||||||
@@ -181,8 +177,7 @@ public interface EngineMantle extends IObjectPlacer {
|
|||||||
|
|
||||||
KList<Runnable> post = new KList<>();
|
KList<Runnable> post = new KList<>();
|
||||||
Consumer<Runnable> c = (i) -> {
|
Consumer<Runnable> c = (i) -> {
|
||||||
synchronized (post)
|
synchronized (post) {
|
||||||
{
|
|
||||||
post.add(i);
|
post.add(i);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -201,8 +196,7 @@ public interface EngineMantle extends IObjectPlacer {
|
|||||||
|
|
||||||
burst.complete();
|
burst.complete();
|
||||||
|
|
||||||
while(!post.isEmpty())
|
while (!post.isEmpty()) {
|
||||||
{
|
|
||||||
KList<Runnable> px = post.copy();
|
KList<Runnable> px = post.copy();
|
||||||
post.clear();
|
post.clear();
|
||||||
burst().burst(multicore, px);
|
burst().burst(multicore, px);
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ package com.volmit.iris.engine.mantle;
|
|||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.engine.IrisEngineMantle;
|
|
||||||
import com.volmit.iris.engine.data.cache.Cache;
|
import com.volmit.iris.engine.data.cache.Cache;
|
||||||
import com.volmit.iris.engine.object.common.IObjectPlacer;
|
import com.volmit.iris.engine.object.common.IObjectPlacer;
|
||||||
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
|
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
|
||||||
@@ -34,8 +33,7 @@ import org.bukkit.block.TileState;
|
|||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class MantleWriter implements IObjectPlacer
|
public class MantleWriter implements IObjectPlacer {
|
||||||
{
|
|
||||||
private final EngineMantle engineMantle;
|
private final EngineMantle engineMantle;
|
||||||
private final Mantle mantle;
|
private final Mantle mantle;
|
||||||
private final KMap<Long, MantleChunk> cachedChunks;
|
private final KMap<Long, MantleChunk> cachedChunks;
|
||||||
@@ -43,8 +41,7 @@ public class MantleWriter implements IObjectPlacer
|
|||||||
private final int x;
|
private final int x;
|
||||||
private final int z;
|
private final int z;
|
||||||
|
|
||||||
public MantleWriter(EngineMantle engineMantle, Mantle mantle, int x, int z, int radius)
|
public MantleWriter(EngineMantle engineMantle, Mantle mantle, int x, int z, int radius) {
|
||||||
{
|
|
||||||
this.engineMantle = engineMantle;
|
this.engineMantle = engineMantle;
|
||||||
this.mantle = mantle;
|
this.mantle = mantle;
|
||||||
this.cachedChunks = new KMap<>();
|
this.cachedChunks = new KMap<>();
|
||||||
@@ -59,8 +56,7 @@ public class MantleWriter implements IObjectPlacer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T> void setData(int x, int y, int z, T t)
|
public <T> void setData(int x, int y, int z, T t) {
|
||||||
{
|
|
||||||
int cx = x >> 4;
|
int cx = x >> 4;
|
||||||
int cz = z >> 4;
|
int cz = z >> 4;
|
||||||
|
|
||||||
@@ -69,30 +65,21 @@ public class MantleWriter implements IObjectPlacer
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (cx >= this.x - radius && cx <= this.x + radius
|
if (cx >= this.x - radius && cx <= this.x + radius
|
||||||
&& cz >= this.z - radius && cz <= this.z + radius)
|
&& cz >= this.z - radius && cz <= this.z + radius) {
|
||||||
{
|
|
||||||
MantleChunk chunk = cachedChunks.get(Cache.key(cx, cz));
|
MantleChunk chunk = cachedChunks.get(Cache.key(cx, cz));
|
||||||
|
|
||||||
if(chunk == null)
|
if (chunk == null) {
|
||||||
{
|
|
||||||
Iris.error("Mantle Writer Accessed " + cx + "," + cz + " and came up null (and yet within bounds!)");
|
Iris.error("Mantle Writer Accessed " + cx + "," + cz + " and came up null (and yet within bounds!)");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(t instanceof IrisFeaturePositional)
|
if (t instanceof IrisFeaturePositional) {
|
||||||
{
|
|
||||||
chunk.addFeature((IrisFeaturePositional) t);
|
chunk.addFeature((IrisFeaturePositional) t);
|
||||||
}
|
} else {
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Matter matter = chunk.getOrCreate(y >> 4);
|
Matter matter = chunk.getOrCreate(y >> 4);
|
||||||
matter.slice(matter.getClass(t)).set(x & 15, y & 15, z & 15, t);
|
matter.slice(matter.getClass(t)).set(x & 15, y & 15, z & 15, t);
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Iris.error("Mantle Writer[" + this.x + "," + this.z + ",R" + this.radius + "] Tried to access " + x + "," + y + "," + z + " (Chunk " + cx + "," + cz + ") which is OUT OF BOUNDS!");
|
Iris.error("Mantle Writer[" + this.x + "," + this.z + ",R" + this.radius + "] Tried to access " + x + "," + y + "," + z + " (Chunk " + cx + "," + cz + ") which is OUT OF BOUNDS!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
package com.volmit.iris.engine.modifier;
|
package com.volmit.iris.engine.modifier;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.framework.EngineAssignedModifier;
|
import com.volmit.iris.engine.framework.EngineAssignedModifier;
|
||||||
import com.volmit.iris.engine.object.biome.IrisBiome;
|
import com.volmit.iris.engine.object.biome.IrisBiome;
|
||||||
@@ -26,11 +25,9 @@ import com.volmit.iris.engine.object.deposits.IrisDepositGenerator;
|
|||||||
import com.volmit.iris.engine.object.objects.IrisObject;
|
import com.volmit.iris.engine.object.objects.IrisObject;
|
||||||
import com.volmit.iris.engine.object.regional.IrisRegion;
|
import com.volmit.iris.engine.object.regional.IrisRegion;
|
||||||
import com.volmit.iris.util.data.HeightMap;
|
import com.volmit.iris.util.data.HeightMap;
|
||||||
import com.volmit.iris.util.format.Form;
|
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import com.volmit.iris.util.parallel.BurstExecutor;
|
import com.volmit.iris.util.parallel.BurstExecutor;
|
||||||
import com.volmit.iris.util.parallel.MultiBurst;
|
|
||||||
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.util.BlockVector;
|
import org.bukkit.util.BlockVector;
|
||||||
|
|||||||
@@ -19,26 +19,14 @@
|
|||||||
package com.volmit.iris.engine.modifier;
|
package com.volmit.iris.engine.modifier;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.engine.data.cache.AtomicCache;
|
|
||||||
import com.volmit.iris.engine.data.cache.Cache;
|
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.framework.EngineAssignedModifier;
|
import com.volmit.iris.engine.framework.EngineAssignedModifier;
|
||||||
import com.volmit.iris.engine.object.biome.IrisBiome;
|
import com.volmit.iris.engine.object.biome.IrisBiome;
|
||||||
import com.volmit.iris.engine.object.common.CaveResult;
|
import com.volmit.iris.engine.object.common.CaveResult;
|
||||||
import com.volmit.iris.util.collection.KList;
|
|
||||||
import com.volmit.iris.util.collection.KMap;
|
|
||||||
import com.volmit.iris.util.data.B;
|
import com.volmit.iris.util.data.B;
|
||||||
import com.volmit.iris.util.format.Form;
|
|
||||||
import com.volmit.iris.util.function.*;
|
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.util.hunk.storage.ArrayHunk;
|
|
||||||
import com.volmit.iris.util.math.Average;
|
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import com.volmit.iris.util.math.RollingSequence;
|
|
||||||
import com.volmit.iris.util.parallel.BurstExecutor;
|
|
||||||
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
||||||
import com.volmit.iris.util.stream.ProceduralStream;
|
|
||||||
import com.volmit.iris.util.stream.interpolation.Interpolated;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.block.data.Levelled;
|
import org.bukkit.block.data.Levelled;
|
||||||
@@ -46,8 +34,6 @@ import org.bukkit.block.data.Waterlogged;
|
|||||||
import org.bukkit.block.data.type.Slab;
|
import org.bukkit.block.data.type.Slab;
|
||||||
|
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.function.Consumer;
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
public class IrisPostModifier extends EngineAssignedModifier<BlockData> {
|
public class IrisPostModifier extends EngineAssignedModifier<BlockData> {
|
||||||
private static final BlockData AIR = B.get("AIR");
|
private static final BlockData AIR = B.get("AIR");
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ public class IrisPosition {
|
|||||||
public IrisPosition(Vector v) {
|
public IrisPosition(Vector v) {
|
||||||
this(v.getBlockX(), v.getBlockY(), v.getBlockZ());
|
this(v.getBlockX(), v.getBlockY(), v.getBlockZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
public IrisPosition(double x, double y, double z) {
|
public IrisPosition(double x, double y, double z) {
|
||||||
this((int) x, (int) y, (int) z);
|
this((int) x, (int) y, (int) z);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructurePlacement;
|
|||||||
import com.volmit.iris.engine.object.loot.IrisLootReference;
|
import com.volmit.iris.engine.object.loot.IrisLootReference;
|
||||||
import com.volmit.iris.engine.object.meta.IrisEffect;
|
import com.volmit.iris.engine.object.meta.IrisEffect;
|
||||||
import com.volmit.iris.engine.object.noise.IrisGeneratorStyle;
|
import com.volmit.iris.engine.object.noise.IrisGeneratorStyle;
|
||||||
import com.volmit.iris.engine.object.noise.IrisShapedGeneratorStyle;
|
|
||||||
import com.volmit.iris.engine.object.noise.IrisSlopeClip;
|
import com.volmit.iris.engine.object.noise.IrisSlopeClip;
|
||||||
import com.volmit.iris.engine.object.noise.NoiseStyle;
|
import com.volmit.iris.engine.object.noise.NoiseStyle;
|
||||||
import com.volmit.iris.engine.object.objects.IrisObject;
|
import com.volmit.iris.engine.object.objects.IrisObject;
|
||||||
|
|||||||
@@ -18,26 +18,16 @@
|
|||||||
|
|
||||||
package com.volmit.iris.engine.object.cave;
|
package com.volmit.iris.engine.object.cave;
|
||||||
|
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
|
||||||
import com.volmit.iris.core.project.loader.IrisRegistrant;
|
import com.volmit.iris.core.project.loader.IrisRegistrant;
|
||||||
import com.volmit.iris.engine.object.annotations.Desc;
|
import com.volmit.iris.engine.object.annotations.Desc;
|
||||||
import com.volmit.iris.engine.object.noise.IrisWorm;
|
import com.volmit.iris.engine.object.noise.IrisWorm;
|
||||||
import com.volmit.iris.util.collection.KList;
|
|
||||||
import com.volmit.iris.util.data.B;
|
|
||||||
import com.volmit.iris.util.json.JSONObject;
|
import com.volmit.iris.util.json.JSONObject;
|
||||||
import com.volmit.iris.util.mantle.Mantle;
|
|
||||||
import com.volmit.iris.util.math.RNG;
|
|
||||||
import com.volmit.iris.util.noise.Worm;
|
|
||||||
import com.volmit.iris.util.noise.Worm3;
|
|
||||||
import com.volmit.iris.util.noise.WormIterator3;
|
|
||||||
import com.volmit.iris.util.plugin.VolmitSender;
|
import com.volmit.iris.util.plugin.VolmitSender;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
import org.bukkit.block.data.BlockData;
|
|
||||||
import org.bukkit.util.Vector;
|
|
||||||
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
|
|||||||
@@ -33,13 +33,11 @@ import com.volmit.iris.util.mantle.Mantle;
|
|||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import com.volmit.iris.util.noise.Worm3;
|
import com.volmit.iris.util.noise.Worm3;
|
||||||
import com.volmit.iris.util.noise.WormIterator3;
|
import com.volmit.iris.util.noise.WormIterator3;
|
||||||
import com.volmit.iris.util.plugin.VolmitSender;
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.util.BlockVector;
|
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
@@ -66,22 +64,18 @@ public class IrisCavePlacer implements IRare {
|
|||||||
private transient final AtomicCache<IrisCave> caveCache = new AtomicCache<>();
|
private transient final AtomicCache<IrisCave> caveCache = new AtomicCache<>();
|
||||||
private transient final AtomicBoolean fail = new AtomicBoolean(false);
|
private transient final AtomicBoolean fail = new AtomicBoolean(false);
|
||||||
|
|
||||||
public IrisCave getRealCave(IrisData data)
|
public IrisCave getRealCave(IrisData data) {
|
||||||
{
|
|
||||||
return caveCache.aquire(() -> data.getCaveLoader().load(getCave()));
|
return caveCache.aquire(() -> data.getCaveLoader().load(getCave()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void generateCave(Mantle mantle, RNG rng, IrisData data, int x, int y, int z)
|
public void generateCave(Mantle mantle, RNG rng, IrisData data, int x, int y, int z) {
|
||||||
{
|
if (fail.get()) {
|
||||||
if(fail.get())
|
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
IrisCave cave = getRealCave(data);
|
IrisCave cave = getRealCave(data);
|
||||||
|
|
||||||
if(cave == null)
|
if (cave == null) {
|
||||||
{
|
|
||||||
Iris.warn("Unable to locate cave for generation!");
|
Iris.warn("Unable to locate cave for generation!");
|
||||||
fail.set(true);
|
fail.set(true);
|
||||||
return;
|
return;
|
||||||
@@ -90,8 +84,7 @@ public class IrisCavePlacer implements IRare {
|
|||||||
WormIterator3 w = cave.getWorm().iterate3D(rng, data, x, y, z);
|
WormIterator3 w = cave.getWorm().iterate3D(rng, data, x, y, z);
|
||||||
KList<Vector> points = new KList<>();
|
KList<Vector> points = new KList<>();
|
||||||
int itr = 0;
|
int itr = 0;
|
||||||
while(w.hasNext())
|
while (w.hasNext()) {
|
||||||
{
|
|
||||||
itr++;
|
itr++;
|
||||||
Worm3 wx = w.next();
|
Worm3 wx = w.next();
|
||||||
points.add(new Vector(wx.getX().getPosition(), wx.getY().getPosition(), wx.getZ().getPosition()));
|
points.add(new Vector(wx.getX().getPosition(), wx.getY().getPosition(), wx.getZ().getPosition()));
|
||||||
|
|||||||
@@ -70,16 +70,13 @@ public class HeadlessWorld {
|
|||||||
public HeadlessGenerator generate() {
|
public HeadlessGenerator generate() {
|
||||||
Engine e = null;
|
Engine e = null;
|
||||||
|
|
||||||
if(getWorld().tryGetRealWorld())
|
if (getWorld().tryGetRealWorld()) {
|
||||||
{
|
if (IrisToolbelt.isIrisWorld(getWorld().realWorld())) {
|
||||||
if(IrisToolbelt.isIrisWorld(getWorld().realWorld()))
|
|
||||||
{
|
|
||||||
e = IrisToolbelt.access(getWorld().realWorld()).getEngine();
|
e = IrisToolbelt.access(getWorld().realWorld()).getEngine();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(e != null)
|
if (e != null) {
|
||||||
{
|
|
||||||
Iris.info("Using Existing Engine " + getWorld().name() + " for Headless Pregeneration.");
|
Iris.info("Using Existing Engine " + getWorld().name() + " for Headless Pregeneration.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -62,17 +62,14 @@ public class IrisWorld {
|
|||||||
.environment(world.getEnvironment());
|
.environment(world.getEnvironment());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean tryGetRealWorld()
|
public boolean tryGetRealWorld() {
|
||||||
{
|
if (hasRealWorld()) {
|
||||||
if(hasRealWorld())
|
|
||||||
{
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
World w = Bukkit.getWorld(name);
|
World w = Bukkit.getWorld(name);
|
||||||
|
|
||||||
if(w != null)
|
if (w != null) {
|
||||||
{
|
|
||||||
realWorld = w;
|
realWorld = w;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import com.volmit.iris.core.project.loader.IrisData;
|
|||||||
import com.volmit.iris.engine.data.cache.AtomicCache;
|
import com.volmit.iris.engine.data.cache.AtomicCache;
|
||||||
import com.volmit.iris.engine.object.annotations.*;
|
import com.volmit.iris.engine.object.annotations.*;
|
||||||
import com.volmit.iris.engine.object.block.IrisBlockData;
|
import com.volmit.iris.engine.object.block.IrisBlockData;
|
||||||
import com.volmit.iris.engine.object.noise.IrisGenerator;
|
|
||||||
import com.volmit.iris.engine.object.objects.IrisObject;
|
import com.volmit.iris.engine.object.objects.IrisObject;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructure;
|
|||||||
import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructurePlacement;
|
import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructurePlacement;
|
||||||
import com.volmit.iris.engine.object.loot.IrisLootReference;
|
import com.volmit.iris.engine.object.loot.IrisLootReference;
|
||||||
import com.volmit.iris.engine.object.noise.IrisGeneratorStyle;
|
import com.volmit.iris.engine.object.noise.IrisGeneratorStyle;
|
||||||
import com.volmit.iris.engine.object.noise.IrisInterpolator;
|
|
||||||
import com.volmit.iris.engine.object.noise.IrisShapedGeneratorStyle;
|
import com.volmit.iris.engine.object.noise.IrisShapedGeneratorStyle;
|
||||||
import com.volmit.iris.engine.object.noise.NoiseStyle;
|
import com.volmit.iris.engine.object.noise.NoiseStyle;
|
||||||
import com.volmit.iris.engine.object.objects.IrisObjectPlacement;
|
import com.volmit.iris.engine.object.objects.IrisObjectPlacement;
|
||||||
|
|||||||
@@ -105,21 +105,14 @@ public class IrisEntitySpawn implements IRare {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (l != null) {
|
if (l != null) {
|
||||||
if(referenceSpawner.getAllowedLightLevels().getMin() > 0 || referenceSpawner.getAllowedLightLevels().getMax() < 15)
|
if (referenceSpawner.getAllowedLightLevels().getMin() > 0 || referenceSpawner.getAllowedLightLevels().getMax() < 15) {
|
||||||
{
|
if (referenceSpawner.getAllowedLightLevels().contains(l.getBlock().getLightLevel())) {
|
||||||
if(referenceSpawner.getAllowedLightLevels().contains(l.getBlock().getLightLevel()))
|
if (spawn100(gen, l) != null) {
|
||||||
{
|
|
||||||
if (spawn100(gen, l) != null)
|
|
||||||
{
|
|
||||||
s++;
|
s++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
|
if (spawn100(gen, l) != null) {
|
||||||
else
|
|
||||||
{
|
|
||||||
if (spawn100(gen, l) != null)
|
|
||||||
{
|
|
||||||
s++;
|
s++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,13 +65,9 @@ public class IrisFeaturePositional {
|
|||||||
|
|
||||||
public static IrisFeaturePositional read(DataInputStream s) throws IOException {
|
public static IrisFeaturePositional read(DataInputStream s) throws IOException {
|
||||||
String sx = s.readUTF();
|
String sx = s.readUTF();
|
||||||
try
|
try {
|
||||||
{
|
|
||||||
return new Gson().fromJson(sx, IrisFeaturePositional.class);
|
return new Gson().fromJson(sx, IrisFeaturePositional.class);
|
||||||
}
|
} catch (Throwable e) {
|
||||||
|
|
||||||
catch(Throwable e)
|
|
||||||
{
|
|
||||||
Iris.error(sx);
|
Iris.error(sx);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
throw new IOException(e);
|
throw new IOException(e);
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import com.volmit.iris.engine.data.cache.AtomicCache;
|
|||||||
import com.volmit.iris.engine.object.annotations.*;
|
import com.volmit.iris.engine.object.annotations.*;
|
||||||
import com.volmit.iris.engine.object.common.IRare;
|
import com.volmit.iris.engine.object.common.IRare;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.context.IrisContext;
|
|
||||||
import com.volmit.iris.util.interpolation.IrisInterpolation;
|
import com.volmit.iris.util.interpolation.IrisInterpolation;
|
||||||
import com.volmit.iris.util.json.JSONObject;
|
import com.volmit.iris.util.json.JSONObject;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
package com.volmit.iris.engine.object.noise;
|
package com.volmit.iris.engine.object.noise;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
|
||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.engine.data.cache.AtomicCache;
|
import com.volmit.iris.engine.data.cache.AtomicCache;
|
||||||
import com.volmit.iris.engine.object.annotations.Desc;
|
import com.volmit.iris.engine.object.annotations.Desc;
|
||||||
|
|||||||
@@ -21,17 +21,8 @@ package com.volmit.iris.engine.object.noise;
|
|||||||
import com.volmit.iris.core.project.loader.IrisData;
|
import com.volmit.iris.core.project.loader.IrisData;
|
||||||
import com.volmit.iris.engine.data.cache.AtomicCache;
|
import com.volmit.iris.engine.data.cache.AtomicCache;
|
||||||
import com.volmit.iris.engine.object.annotations.Desc;
|
import com.volmit.iris.engine.object.annotations.Desc;
|
||||||
import com.volmit.iris.engine.object.annotations.MinNumber;
|
|
||||||
import com.volmit.iris.engine.object.annotations.Required;
|
|
||||||
import com.volmit.iris.engine.object.basic.IrisRange;
|
|
||||||
import com.volmit.iris.engine.object.common.IRare;
|
|
||||||
import com.volmit.iris.engine.object.noise.IrisGeneratorStyle;
|
|
||||||
import com.volmit.iris.engine.object.noise.IrisNoiseGenerator;
|
|
||||||
import com.volmit.iris.engine.object.noise.IrisStyledRange;
|
|
||||||
import com.volmit.iris.engine.object.noise.NoiseStyle;
|
|
||||||
import com.volmit.iris.util.function.NoiseProvider;
|
import com.volmit.iris.util.function.NoiseProvider;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import com.volmit.iris.util.noise.Worm;
|
|
||||||
import com.volmit.iris.util.noise.WormIterator2;
|
import com.volmit.iris.util.noise.WormIterator2;
|
||||||
import com.volmit.iris.util.noise.WormIterator3;
|
import com.volmit.iris.util.noise.WormIterator3;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@@ -64,13 +55,11 @@ public class IrisWorm {
|
|||||||
|
|
||||||
private transient final AtomicCache<NoiseProvider> angleProviderCache = new AtomicCache<>();
|
private transient final AtomicCache<NoiseProvider> angleProviderCache = new AtomicCache<>();
|
||||||
|
|
||||||
public NoiseProvider getAngleProvider(RNG rng, IrisData data)
|
public NoiseProvider getAngleProvider(RNG rng, IrisData data) {
|
||||||
{
|
|
||||||
return angleProviderCache.aquire(() -> (xx, zz) -> angleStyle.create(rng, data).fitDouble(-0.5, 0.5, xx, zz) * segmentDistance.get(rng, xx, zz, data));
|
return angleProviderCache.aquire(() -> (xx, zz) -> angleStyle.create(rng, data).fitDouble(-0.5, 0.5, xx, zz) * segmentDistance.get(rng, xx, zz, data));
|
||||||
}
|
}
|
||||||
|
|
||||||
public WormIterator2 iterate2D(RNG rng, IrisData data, int x, int z)
|
public WormIterator2 iterate2D(RNG rng, IrisData data, int x, int z) {
|
||||||
{
|
|
||||||
return WormIterator2.builder()
|
return WormIterator2.builder()
|
||||||
.maxDistance(maxDistance)
|
.maxDistance(maxDistance)
|
||||||
.maxIterations(maxSegments == -1 ? maxDistance : maxSegments)
|
.maxIterations(maxSegments == -1 ? maxDistance : maxSegments)
|
||||||
@@ -78,8 +67,7 @@ public class IrisWorm {
|
|||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
public WormIterator3 iterate3D(RNG rng, IrisData data, int x, int y, int z)
|
public WormIterator3 iterate3D(RNG rng, IrisData data, int x, int y, int z) {
|
||||||
{
|
|
||||||
return WormIterator3.builder()
|
return WormIterator3.builder()
|
||||||
.maxDistance(maxDistance)
|
.maxDistance(maxDistance)
|
||||||
.maxIterations(maxSegments == -1 ? maxDistance : maxSegments)
|
.maxIterations(maxSegments == -1 ? maxDistance : maxSegments)
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructurePlacement;
|
|||||||
import com.volmit.iris.engine.object.loot.IrisLootReference;
|
import com.volmit.iris.engine.object.loot.IrisLootReference;
|
||||||
import com.volmit.iris.engine.object.meta.IrisEffect;
|
import com.volmit.iris.engine.object.meta.IrisEffect;
|
||||||
import com.volmit.iris.engine.object.noise.IrisGeneratorStyle;
|
import com.volmit.iris.engine.object.noise.IrisGeneratorStyle;
|
||||||
import com.volmit.iris.engine.object.noise.IrisShapedGeneratorStyle;
|
|
||||||
import com.volmit.iris.engine.object.noise.NoiseStyle;
|
import com.volmit.iris.engine.object.noise.NoiseStyle;
|
||||||
import com.volmit.iris.engine.object.objects.IrisObjectPlacement;
|
import com.volmit.iris.engine.object.objects.IrisObjectPlacement;
|
||||||
import com.volmit.iris.engine.object.spawners.IrisSpawner;
|
import com.volmit.iris.engine.object.spawners.IrisSpawner;
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ import lombok.Data;
|
|||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
|||||||
@@ -29,13 +29,11 @@ import com.volmit.iris.engine.framework.WrongEngineBroException;
|
|||||||
import com.volmit.iris.engine.object.common.IrisWorld;
|
import com.volmit.iris.engine.object.common.IrisWorld;
|
||||||
import com.volmit.iris.engine.object.dimensional.IrisDimension;
|
import com.volmit.iris.engine.object.dimensional.IrisDimension;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.format.C;
|
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.util.io.ReactiveFolder;
|
import com.volmit.iris.util.io.ReactiveFolder;
|
||||||
import com.volmit.iris.util.scheduling.ChronoLatch;
|
import com.volmit.iris.util.scheduling.ChronoLatch;
|
||||||
import com.volmit.iris.util.scheduling.J;
|
import com.volmit.iris.util.scheduling.J;
|
||||||
import com.volmit.iris.util.scheduling.Looper;
|
import com.volmit.iris.util.scheduling.Looper;
|
||||||
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@@ -47,8 +45,6 @@ import org.bukkit.generator.BlockPopulator;
|
|||||||
import org.bukkit.generator.ChunkGenerator;
|
import org.bukkit.generator.ChunkGenerator;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import javax.management.RuntimeErrorException;
|
|
||||||
import javax.swing.text.TableView;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
@@ -100,13 +96,11 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
|
|||||||
IrisData data = IrisData.get(dataLocation);
|
IrisData data = IrisData.get(dataLocation);
|
||||||
IrisDimension dimension = data.getDimensionLoader().load(dimensionKey);
|
IrisDimension dimension = data.getDimensionLoader().load(dimensionKey);
|
||||||
|
|
||||||
if(dimension == null)
|
if (dimension == null) {
|
||||||
{
|
|
||||||
Iris.error("Oh No! There's no pack in " + data.getDataFolder().getPath() + " or... there's no dimension for the key " + dimensionKey);
|
Iris.error("Oh No! There's no pack in " + data.getDataFolder().getPath() + " or... there's no dimension for the key " + dimensionKey);
|
||||||
IrisDimension test = IrisData.loadAnyDimension(dimensionKey);
|
IrisDimension test = IrisData.loadAnyDimension(dimensionKey);
|
||||||
|
|
||||||
if(test != null)
|
if (test != null) {
|
||||||
{
|
|
||||||
Iris.warn("Looks like " + dimensionKey + " exists in " + test.getLoadFile().getPath());
|
Iris.warn("Looks like " + dimensionKey + " exists in " + test.getLoadFile().getPath());
|
||||||
Iris.service(StudioSVC.class).installIntoWorld(Iris.getSender(), dimensionKey, dataLocation.getParentFile().getParentFile());
|
Iris.service(StudioSVC.class).installIntoWorld(Iris.getSender(), dimensionKey, dataLocation.getParentFile().getParentFile());
|
||||||
Iris.warn("Attempted to install into " + data.getDataFolder().getPath());
|
Iris.warn("Attempted to install into " + data.getDataFolder().getPath());
|
||||||
@@ -114,21 +108,14 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
|
|||||||
data.clearLists();
|
data.clearLists();
|
||||||
test = data.getDimensionLoader().load(dimensionKey);
|
test = data.getDimensionLoader().load(dimensionKey);
|
||||||
|
|
||||||
if(test != null)
|
if (test != null) {
|
||||||
{
|
|
||||||
Iris.success("Woo! Patched the Engine!");
|
Iris.success("Woo! Patched the Engine!");
|
||||||
dimension = test;
|
dimension = test;
|
||||||
}
|
} else {
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Iris.error("Failed to patch dimension!");
|
Iris.error("Failed to patch dimension!");
|
||||||
throw new RuntimeException("Missing Dimension: " + dimensionKey);
|
throw new RuntimeException("Missing Dimension: " + dimensionKey);
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Iris.error("Nope, you don't have an installation containing " + dimensionKey + " try downloading it?");
|
Iris.error("Nope, you don't have an installation containing " + dimensionKey + " try downloading it?");
|
||||||
throw new RuntimeException("Missing Dimension: " + dimensionKey);
|
throw new RuntimeException("Missing Dimension: " + dimensionKey);
|
||||||
}
|
}
|
||||||
@@ -161,8 +148,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
|
|||||||
withExclusiveControl(() -> getEngine().hotload());
|
withExclusiveControl(() -> getEngine().hotload());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void withExclusiveControl(Runnable r)
|
public void withExclusiveControl(Runnable r) {
|
||||||
{
|
|
||||||
J.a(() -> {
|
J.a(() -> {
|
||||||
try {
|
try {
|
||||||
loadLock.acquire(LOAD_LOCKS);
|
loadLock.acquire(LOAD_LOCKS);
|
||||||
@@ -179,8 +165,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
|
|||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if(lastSeed != world.getSeed())
|
if (lastSeed != world.getSeed()) {
|
||||||
{
|
|
||||||
Iris.warn("Seed for engine " + lastSeed + " does not match world seed if " + world.getSeed());
|
Iris.warn("Seed for engine " + lastSeed + " does not match world seed if " + world.getSeed());
|
||||||
lastSeed = world.getSeed();
|
lastSeed = world.getSeed();
|
||||||
engine.getTarget().getWorld().seed(lastSeed);
|
engine.getTarget().getWorld().seed(lastSeed);
|
||||||
@@ -198,29 +183,20 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
|
|||||||
Iris.debug("Generated " + x + " " + z);
|
Iris.debug("Generated " + x + " " + z);
|
||||||
loadLock.release();
|
loadLock.release();
|
||||||
return c;
|
return c;
|
||||||
}
|
} catch (WrongEngineBroException e) {
|
||||||
|
|
||||||
catch (WrongEngineBroException e)
|
|
||||||
{
|
|
||||||
Iris.warn("Trying to generate with a shut-down engine! Did you reload? Attempting to resolve this...");
|
Iris.warn("Trying to generate with a shut-down engine! Did you reload? Attempting to resolve this...");
|
||||||
|
|
||||||
try
|
try {
|
||||||
{
|
|
||||||
setupEngine();
|
setupEngine();
|
||||||
Iris.success("Resolved! Should generate now!");
|
Iris.success("Resolved! Should generate now!");
|
||||||
}
|
} catch (Throwable fe) {
|
||||||
|
|
||||||
catch(Throwable fe)
|
|
||||||
{
|
|
||||||
Iris.error("FATAL! Iris cannot generate in this world since it was reloaded! This will cause a crash, with missing chunks, so we're crashing right now!");
|
Iris.error("FATAL! Iris cannot generate in this world since it was reloaded! This will cause a crash, with missing chunks, so we're crashing right now!");
|
||||||
Bukkit.shutdown();
|
Bukkit.shutdown();
|
||||||
throw new RuntimeException();
|
throw new RuntimeException();
|
||||||
}
|
}
|
||||||
|
|
||||||
return generateChunkData(world, ignored, x, z, biome);
|
return generateChunkData(world, ignored, x, z, biome);
|
||||||
}
|
} catch (Throwable e) {
|
||||||
|
|
||||||
catch (Throwable e) {
|
|
||||||
loadLock.release();
|
loadLock.release();
|
||||||
Iris.error("======================================");
|
Iris.error("======================================");
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|||||||
@@ -19,20 +19,16 @@
|
|||||||
package com.volmit.iris.engine.platform;
|
package com.volmit.iris.engine.platform;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.IrisSettings;
|
|
||||||
import com.volmit.iris.core.nms.INMS;
|
import com.volmit.iris.core.nms.INMS;
|
||||||
import com.volmit.iris.core.pregenerator.PregenListener;
|
import com.volmit.iris.core.pregenerator.PregenListener;
|
||||||
import com.volmit.iris.core.pregenerator.PregenTask;
|
import com.volmit.iris.core.pregenerator.PregenTask;
|
||||||
import com.volmit.iris.engine.IrisEngine;
|
import com.volmit.iris.engine.IrisEngine;
|
||||||
import com.volmit.iris.engine.data.cache.Cache;
|
|
||||||
import com.volmit.iris.engine.data.chunk.MCATerrainChunk;
|
import com.volmit.iris.engine.data.chunk.MCATerrainChunk;
|
||||||
import com.volmit.iris.engine.data.chunk.TerrainChunk;
|
import com.volmit.iris.engine.data.chunk.TerrainChunk;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.framework.EngineTarget;
|
import com.volmit.iris.engine.framework.EngineTarget;
|
||||||
import com.volmit.iris.engine.framework.WrongEngineBroException;
|
|
||||||
import com.volmit.iris.engine.object.common.HeadlessWorld;
|
import com.volmit.iris.engine.object.common.HeadlessWorld;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.collection.KSet;
|
|
||||||
import com.volmit.iris.util.documentation.ChunkCoordinates;
|
import com.volmit.iris.util.documentation.ChunkCoordinates;
|
||||||
import com.volmit.iris.util.documentation.RegionCoordinates;
|
import com.volmit.iris.util.documentation.RegionCoordinates;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
|
|||||||
@@ -49,12 +49,10 @@ public class IrisContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void dereference() {
|
public static void dereference() {
|
||||||
synchronized (context)
|
synchronized (context) {
|
||||||
{
|
|
||||||
for (Thread i : context.k()) {
|
for (Thread i : context.k()) {
|
||||||
if (!i.isAlive() || context.get(i).engine.isClosed()) {
|
if (!i.isAlive() || context.get(i).engine.isClosed()) {
|
||||||
if(context.get(i).engine.isClosed())
|
if (context.get(i).engine.isClosed()) {
|
||||||
{
|
|
||||||
Iris.debug("Dereferenced Context<Engine> " + i.getName() + " " + i.getId());
|
Iris.debug("Dereferenced Context<Engine> " + i.getName() + " " + i.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ package com.volmit.iris.util.data;
|
|||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.IrisSettings;
|
import com.volmit.iris.core.IrisSettings;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.collection.KMap;
|
|
||||||
import com.volmit.iris.util.scheduling.ChronoLatch;
|
import com.volmit.iris.util.scheduling.ChronoLatch;
|
||||||
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
|
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
|
||||||
import it.unimi.dsi.fastutil.ints.IntSet;
|
import it.unimi.dsi.fastutil.ints.IntSet;
|
||||||
@@ -284,8 +283,7 @@ public class B {
|
|||||||
return Material.valueOf(bdx.trim().toUpperCase());
|
return Material.valueOf(bdx.trim().toUpperCase());
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
Iris.reportError(e);
|
Iris.reportError(e);
|
||||||
if(clw.flip())
|
if (clw.flip()) {
|
||||||
{
|
|
||||||
Iris.warn("Unknown Material: " + bdx);
|
Iris.warn("Unknown Material: " + bdx);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@@ -295,8 +293,7 @@ public class B {
|
|||||||
public static Material getMaterial(String bdx) {
|
public static Material getMaterial(String bdx) {
|
||||||
Material m = getMaterialOrNull(bdx);
|
Material m = getMaterialOrNull(bdx);
|
||||||
|
|
||||||
if(m == null)
|
if (m == null) {
|
||||||
{
|
|
||||||
return AIR_MATERIAL;
|
return AIR_MATERIAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -313,8 +310,7 @@ public class B {
|
|||||||
BlockData bdx = parseBlockData(bd);
|
BlockData bdx = parseBlockData(bd);
|
||||||
|
|
||||||
if (bdx == null) {
|
if (bdx == null) {
|
||||||
if(clw.flip())
|
if (clw.flip()) {
|
||||||
{
|
|
||||||
Iris.warn("Unknown Block Data '" + bd + "'");
|
Iris.warn("Unknown Block Data '" + bd + "'");
|
||||||
}
|
}
|
||||||
return AIR;
|
return AIR;
|
||||||
@@ -324,8 +320,7 @@ public class B {
|
|||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
Iris.reportError(e);
|
Iris.reportError(e);
|
||||||
|
|
||||||
if(clw.flip())
|
if (clw.flip()) {
|
||||||
{
|
|
||||||
Iris.warn("Unknown Block Data '" + bdxf + "'");
|
Iris.warn("Unknown Block Data '" + bdxf + "'");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -363,8 +358,7 @@ public class B {
|
|||||||
|
|
||||||
return bx;
|
return bx;
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
if(clw.flip())
|
if (clw.flip()) {
|
||||||
{
|
|
||||||
Iris.warn("Unknown Block Data: " + ix);
|
Iris.warn("Unknown Block Data: " + ix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,11 +20,9 @@ package com.volmit.iris.util.data;
|
|||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.service.StudioSVC;
|
import com.volmit.iris.core.service.StudioSVC;
|
||||||
import com.volmit.iris.util.collection.KList;
|
|
||||||
import com.volmit.iris.util.format.Form;
|
import com.volmit.iris.util.format.Form;
|
||||||
import com.volmit.iris.util.plugin.VolmitSender;
|
import com.volmit.iris.util.plugin.VolmitSender;
|
||||||
import com.volmit.iris.util.scheduling.jobs.DownloadJob;
|
import com.volmit.iris.util.scheduling.jobs.DownloadJob;
|
||||||
import com.volmit.iris.util.scheduling.jobs.Job;
|
|
||||||
import com.volmit.iris.util.scheduling.jobs.JobCollection;
|
import com.volmit.iris.util.scheduling.jobs.JobCollection;
|
||||||
import com.volmit.iris.util.scheduling.jobs.SingleJob;
|
import com.volmit.iris.util.scheduling.jobs.SingleJob;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
@@ -111,8 +109,7 @@ public class IrisPackRepository {
|
|||||||
public void install(VolmitSender sender) throws MalformedURLException {
|
public void install(VolmitSender sender) throws MalformedURLException {
|
||||||
File pack = Iris.instance.getDataFolder(StudioSVC.WORKSPACE_NAME, getRepo());
|
File pack = Iris.instance.getDataFolder(StudioSVC.WORKSPACE_NAME, getRepo());
|
||||||
|
|
||||||
if(!pack.exists())
|
if (!pack.exists()) {
|
||||||
{
|
|
||||||
File dl = new File(Iris.getTemp(), "dltk-" + UUID.randomUUID() + ".zip");
|
File dl = new File(Iris.getTemp(), "dltk-" + UUID.randomUUID() + ".zip");
|
||||||
File work = new File(Iris.getTemp(), "extk-" + UUID.randomUUID());
|
File work = new File(Iris.getTemp(), "extk-" + UUID.randomUUID());
|
||||||
new JobCollection(Form.capitalize(getRepo()),
|
new JobCollection(Form.capitalize(getRepo()),
|
||||||
|
|||||||
@@ -44,18 +44,13 @@ public class DecreeParameter {
|
|||||||
|
|
||||||
public DecreeParameterHandler<?> getHandler() {
|
public DecreeParameterHandler<?> getHandler() {
|
||||||
return handlerCache.aquire(() -> {
|
return handlerCache.aquire(() -> {
|
||||||
try
|
try {
|
||||||
{
|
if (param.customHandler().equals(DummyHandler.class)) {
|
||||||
if(param.customHandler().equals(DummyHandler.class))
|
|
||||||
{
|
|
||||||
return DecreeSystem.getHandler(getType());
|
return DecreeSystem.getHandler(getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
return param.customHandler().getConstructor().newInstance();
|
return param.customHandler().getConstructor().newInstance();
|
||||||
}
|
} catch (Throwable e) {
|
||||||
|
|
||||||
catch(Throwable e)
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,8 +32,7 @@ public interface DecreeParameterHandler<T> {
|
|||||||
*/
|
*/
|
||||||
KList<T> getPossibilities();
|
KList<T> getPossibilities();
|
||||||
|
|
||||||
default boolean isDummy()
|
default boolean isDummy() {
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import com.volmit.iris.util.decree.DecreeSystem;
|
|||||||
import com.volmit.iris.util.decree.exceptions.DecreeParsingException;
|
import com.volmit.iris.util.decree.exceptions.DecreeParsingException;
|
||||||
import com.volmit.iris.util.decree.exceptions.DecreeWhichException;
|
import com.volmit.iris.util.decree.exceptions.DecreeWhichException;
|
||||||
import com.volmit.iris.util.format.Form;
|
import com.volmit.iris.util.format.Form;
|
||||||
import com.volmit.iris.util.math.M;
|
|
||||||
import com.volmit.iris.util.plugin.VolmitSender;
|
import com.volmit.iris.util.plugin.VolmitSender;
|
||||||
import org.bukkit.FluidCollisionMode;
|
import org.bukkit.FluidCollisionMode;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|||||||
@@ -29,8 +29,7 @@ public class DummyHandler implements DecreeParameterHandler<Object> {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isDummy()
|
public boolean isDummy() {
|
||||||
{
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ import com.volmit.iris.util.interpolation.InterpolationMethod;
|
|||||||
import com.volmit.iris.util.interpolation.InterpolationMethod3D;
|
import com.volmit.iris.util.interpolation.InterpolationMethod3D;
|
||||||
import com.volmit.iris.util.interpolation.IrisInterpolation;
|
import com.volmit.iris.util.interpolation.IrisInterpolation;
|
||||||
import com.volmit.iris.util.math.BlockPosition;
|
import com.volmit.iris.util.math.BlockPosition;
|
||||||
import com.volmit.iris.util.nbt.tag.ByteArrayTag;
|
|
||||||
import com.volmit.iris.util.parallel.BurstExecutor;
|
import com.volmit.iris.util.parallel.BurstExecutor;
|
||||||
import com.volmit.iris.util.parallel.MultiBurst;
|
import com.volmit.iris.util.parallel.MultiBurst;
|
||||||
import com.volmit.iris.util.stream.interpolation.Interpolated;
|
import com.volmit.iris.util.stream.interpolation.Interpolated;
|
||||||
@@ -37,9 +36,7 @@ import org.bukkit.block.data.BlockData;
|
|||||||
import org.bukkit.generator.ChunkGenerator.BiomeGrid;
|
import org.bukkit.generator.ChunkGenerator.BiomeGrid;
|
||||||
import org.bukkit.generator.ChunkGenerator.ChunkData;
|
import org.bukkit.generator.ChunkGenerator.ChunkData;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
@@ -1437,8 +1434,7 @@ public interface Hunk<T> {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
default boolean contains(int x, int y, int z)
|
default boolean contains(int x, int y, int z) {
|
||||||
{
|
|
||||||
return x < getWidth() && x >= 0 && y < getHeight() && y >= 0 && z < getDepth() && z >= 0;
|
return x < getWidth() && x >= 0 && y < getHeight() && y >= 0 && z < getDepth() && z >= 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
package com.volmit.iris.util.hunk.storage;
|
package com.volmit.iris.util.hunk.storage;
|
||||||
|
|
||||||
import com.volmit.iris.util.collection.KMap;
|
|
||||||
import com.volmit.iris.util.function.Consumer4;
|
import com.volmit.iris.util.function.Consumer4;
|
||||||
import com.volmit.iris.util.function.Consumer4IO;
|
import com.volmit.iris.util.function.Consumer4IO;
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
@@ -49,8 +48,7 @@ public class MappedSyncHunk<T> extends StorageHunk<T> implements Hunk<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isEmpty() {
|
public boolean isEmpty() {
|
||||||
synchronized(data)
|
synchronized (data) {
|
||||||
{
|
|
||||||
return data.isEmpty();
|
return data.isEmpty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -73,8 +71,7 @@ public class MappedSyncHunk<T> extends StorageHunk<T> implements Hunk<T> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized Hunk<T> iterateSync(Consumer4<Integer, Integer, Integer, T> c) {
|
public synchronized Hunk<T> iterateSync(Consumer4<Integer, Integer, Integer, T> c) {
|
||||||
synchronized(data)
|
synchronized (data) {
|
||||||
{
|
|
||||||
int idx, z;
|
int idx, z;
|
||||||
|
|
||||||
for (Map.Entry<Integer, T> g : data.entrySet()) {
|
for (Map.Entry<Integer, T> g : data.entrySet()) {
|
||||||
@@ -90,8 +87,7 @@ public class MappedSyncHunk<T> extends StorageHunk<T> implements Hunk<T> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized Hunk<T> iterateSyncIO(Consumer4IO<Integer, Integer, Integer, T> c) throws IOException {
|
public synchronized Hunk<T> iterateSyncIO(Consumer4IO<Integer, Integer, Integer, T> c) throws IOException {
|
||||||
synchronized(data)
|
synchronized (data) {
|
||||||
{
|
|
||||||
int idx, z;
|
int idx, z;
|
||||||
|
|
||||||
for (Map.Entry<Integer, T> g : data.entrySet()) {
|
for (Map.Entry<Integer, T> g : data.entrySet()) {
|
||||||
@@ -107,16 +103,14 @@ public class MappedSyncHunk<T> extends StorageHunk<T> implements Hunk<T> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void empty(T b) {
|
public void empty(T b) {
|
||||||
synchronized(data)
|
synchronized (data) {
|
||||||
{
|
|
||||||
data.clear();
|
data.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public T getRaw(int x, int y, int z) {
|
public T getRaw(int x, int y, int z) {
|
||||||
synchronized(data)
|
synchronized (data) {
|
||||||
{
|
|
||||||
return data.get(index(x, y, z));
|
return data.get(index(x, y, z));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ import org.bukkit.util.Vector;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
@@ -90,6 +89,7 @@ public class Mantle {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Raise a flag if it is lowered currently, If the flag was raised, execute the runnable
|
* Raise a flag if it is lowered currently, If the flag was raised, execute the runnable
|
||||||
|
*
|
||||||
* @param x the chunk x
|
* @param x the chunk x
|
||||||
* @param z the chunk z
|
* @param z the chunk z
|
||||||
* @param flag the flag to raise
|
* @param flag the flag to raise
|
||||||
@@ -106,19 +106,20 @@ public class Mantle {
|
|||||||
/**
|
/**
|
||||||
* Obtain a cached writer which only contains cached chunks.
|
* Obtain a cached writer which only contains cached chunks.
|
||||||
* This avoids locking on regions when writing to lots of chunks
|
* This avoids locking on regions when writing to lots of chunks
|
||||||
|
*
|
||||||
* @param x the x chunk
|
* @param x the x chunk
|
||||||
* @param z the z chunk
|
* @param z the z chunk
|
||||||
* @param radius the radius chunks
|
* @param radius the radius chunks
|
||||||
* @return the writer
|
* @return the writer
|
||||||
*/
|
*/
|
||||||
@ChunkCoordinates
|
@ChunkCoordinates
|
||||||
public MantleWriter write(EngineMantle engineMantle, int x, int z, int radius)
|
public MantleWriter write(EngineMantle engineMantle, int x, int z, int radius) {
|
||||||
{
|
|
||||||
return new MantleWriter(engineMantle, this, x, z, radius);
|
return new MantleWriter(engineMantle, this, x, z, radius);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lower a flag if it is raised. If the flag was lowered (meaning it was previously raised), execute the runnable
|
* Lower a flag if it is raised. If the flag was lowered (meaning it was previously raised), execute the runnable
|
||||||
|
*
|
||||||
* @param x the chunk x
|
* @param x the chunk x
|
||||||
* @param z the chunk z
|
* @param z the chunk z
|
||||||
* @param flag the flag to lower
|
* @param flag the flag to lower
|
||||||
@@ -133,13 +134,13 @@ public class Mantle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@ChunkCoordinates
|
@ChunkCoordinates
|
||||||
public MantleChunk getChunk(int x, int z)
|
public MantleChunk getChunk(int x, int z) {
|
||||||
{
|
|
||||||
return get(x >> 5, z >> 5).getOrCreate(x & 31, z & 31);
|
return get(x >> 5, z >> 5).getOrCreate(x & 31, z & 31);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Flag or unflag a chunk
|
* Flag or unflag a chunk
|
||||||
|
*
|
||||||
* @param x the chunk x
|
* @param x the chunk x
|
||||||
* @param z the chunk z
|
* @param z the chunk z
|
||||||
* @param flag the flag
|
* @param flag the flag
|
||||||
@@ -152,19 +153,20 @@ public class Mantle {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Check very quickly if a tectonic plate exists via cached or the file system
|
* Check very quickly if a tectonic plate exists via cached or the file system
|
||||||
|
*
|
||||||
* @param x the x region coordinate
|
* @param x the x region coordinate
|
||||||
* @param z the z region coordinate
|
* @param z the z region coordinate
|
||||||
* @return true if it exists
|
* @return true if it exists
|
||||||
*/
|
*/
|
||||||
@RegionCoordinates
|
@RegionCoordinates
|
||||||
public boolean hasTectonicPlate(int x, int z)
|
public boolean hasTectonicPlate(int x, int z) {
|
||||||
{
|
|
||||||
Long k = key(x, z);
|
Long k = key(x, z);
|
||||||
return loadedRegions.containsKey(k) || fileForRegion(dataFolder, k).exists();
|
return loadedRegions.containsKey(k) || fileForRegion(dataFolder, k).exists();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Iterate data in a chunk
|
* Iterate data in a chunk
|
||||||
|
*
|
||||||
* @param x the chunk x
|
* @param x the chunk x
|
||||||
* @param z the chunk z
|
* @param z the chunk z
|
||||||
* @param type the type of data to iterate
|
* @param type the type of data to iterate
|
||||||
@@ -173,8 +175,7 @@ public class Mantle {
|
|||||||
*/
|
*/
|
||||||
@ChunkCoordinates
|
@ChunkCoordinates
|
||||||
public <T> void iterateChunk(int x, int z, Class<T> type, Consumer4<Integer, Integer, Integer, T> iterator) {
|
public <T> void iterateChunk(int x, int z, Class<T> type, Consumer4<Integer, Integer, Integer, T> iterator) {
|
||||||
if(!hasTectonicPlate(x >> 5, z >> 5))
|
if (!hasTectonicPlate(x >> 5, z >> 5)) {
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,6 +184,7 @@ public class Mantle {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Does this chunk have a flag on it?
|
* Does this chunk have a flag on it?
|
||||||
|
*
|
||||||
* @param x the x
|
* @param x the x
|
||||||
* @param z the z
|
* @param z the z
|
||||||
* @param flag the flag to test
|
* @param flag the flag to test
|
||||||
@@ -190,8 +192,7 @@ public class Mantle {
|
|||||||
*/
|
*/
|
||||||
@ChunkCoordinates
|
@ChunkCoordinates
|
||||||
public boolean hasFlag(int x, int z, MantleFlag flag) {
|
public boolean hasFlag(int x, int z, MantleFlag flag) {
|
||||||
if(!hasTectonicPlate(x >> 5, z >> 5))
|
if (!hasTectonicPlate(x >> 5, z >> 5)) {
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -222,14 +223,10 @@ public class Mantle {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(t instanceof IrisFeaturePositional)
|
if (t instanceof IrisFeaturePositional) {
|
||||||
{
|
|
||||||
get((x >> 4) >> 5, (z >> 4) >> 5)
|
get((x >> 4) >> 5, (z >> 4) >> 5)
|
||||||
.getOrCreate((x >> 4) & 31, (z >> 4) & 31).addFeature((IrisFeaturePositional) t);
|
.getOrCreate((x >> 4) & 31, (z >> 4) & 31).addFeature((IrisFeaturePositional) t);
|
||||||
}
|
} else {
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Matter matter = get((x >> 4) >> 5, (z >> 4) >> 5)
|
Matter matter = get((x >> 4) >> 5, (z >> 4) >> 5)
|
||||||
.getOrCreate((x >> 4) & 31, (z >> 4) & 31)
|
.getOrCreate((x >> 4) & 31, (z >> 4) & 31)
|
||||||
.getOrCreate(y >> 4);
|
.getOrCreate(y >> 4);
|
||||||
@@ -260,8 +257,7 @@ public class Mantle {
|
|||||||
throw new RuntimeException("The Mantle is closed");
|
throw new RuntimeException("The Mantle is closed");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!hasTectonicPlate((x >> 4) >> 5, (z >> 4) >> 5))
|
if (!hasTectonicPlate((x >> 4) >> 5, (z >> 4) >> 5)) {
|
||||||
{
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -277,10 +273,10 @@ public class Mantle {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Is this mantle closed
|
* Is this mantle closed
|
||||||
|
*
|
||||||
* @return true if it is
|
* @return true if it is
|
||||||
*/
|
*/
|
||||||
public boolean isClosed()
|
public boolean isClosed() {
|
||||||
{
|
|
||||||
return closed.get();
|
return closed.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -307,13 +303,9 @@ public class Mantle {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try {
|
||||||
{
|
|
||||||
b.complete();
|
b.complete();
|
||||||
}
|
} catch (Throwable e) {
|
||||||
|
|
||||||
catch(Throwable e)
|
|
||||||
{
|
|
||||||
Iris.reportError(e);
|
Iris.reportError(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -457,6 +449,7 @@ public class Mantle {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the file for a region
|
* Get the file for a region
|
||||||
|
*
|
||||||
* @param folder the folder
|
* @param folder the folder
|
||||||
* @param x the x coord
|
* @param x the x coord
|
||||||
* @param z the z coord
|
* @param z the z coord
|
||||||
@@ -468,14 +461,14 @@ public class Mantle {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the file for the given region
|
* Get the file for the given region
|
||||||
|
*
|
||||||
* @param folder the data folder
|
* @param folder the data folder
|
||||||
* @param key the region key
|
* @param key the region key
|
||||||
* @return the file
|
* @return the file
|
||||||
*/
|
*/
|
||||||
public static File fileForRegion(File folder, Long key) {
|
public static File fileForRegion(File folder, Long key) {
|
||||||
File f = new File(folder, "p." + key + ".ttp");
|
File f = new File(folder, "p." + key + ".ttp");
|
||||||
if(!f.getParentFile().exists())
|
if (!f.getParentFile().exists()) {
|
||||||
{
|
|
||||||
f.getParentFile().mkdirs();
|
f.getParentFile().mkdirs();
|
||||||
}
|
}
|
||||||
return f;
|
return f;
|
||||||
@@ -483,6 +476,7 @@ public class Mantle {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the long value representing a chunk or region coordinate
|
* Get the long value representing a chunk or region coordinate
|
||||||
|
*
|
||||||
* @param x the x
|
* @param x the x
|
||||||
* @param z the z
|
* @param z the z
|
||||||
* @return the value
|
* @return the value
|
||||||
@@ -497,6 +491,7 @@ public class Mantle {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a sphere into the mantle
|
* Set a sphere into the mantle
|
||||||
|
*
|
||||||
* @param cx the center x
|
* @param cx the center x
|
||||||
* @param cy the center y
|
* @param cy the center y
|
||||||
* @param cz the center z
|
* @param cz the center z
|
||||||
@@ -505,13 +500,13 @@ public class Mantle {
|
|||||||
* @param data the data to set
|
* @param data the data to set
|
||||||
* @param <T> the type of data to apply to the mantle
|
* @param <T> the type of data to apply to the mantle
|
||||||
*/
|
*/
|
||||||
public <T> void setSphere(int cx, int cy, int cz, double radius, boolean fill, T data)
|
public <T> void setSphere(int cx, int cy, int cz, double radius, boolean fill, T data) {
|
||||||
{
|
|
||||||
setElipsoid(cx, cy, cz, radius, radius, radius, fill, data);
|
setElipsoid(cx, cy, cz, radius, radius, radius, fill, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set an elipsoid into the mantle
|
* Set an elipsoid into the mantle
|
||||||
|
*
|
||||||
* @param cx the center x
|
* @param cx the center x
|
||||||
* @param cy the center y
|
* @param cy the center y
|
||||||
* @param cz the center z
|
* @param cz the center z
|
||||||
@@ -522,8 +517,7 @@ public class Mantle {
|
|||||||
* @param data the data to set
|
* @param data the data to set
|
||||||
* @param <T> the type of data to apply to the mantle
|
* @param <T> the type of data to apply to the mantle
|
||||||
*/
|
*/
|
||||||
public <T> void setElipsoid(int cx, int cy, int cz, double rx, double ry, double rz, boolean fill, T data)
|
public <T> void setElipsoid(int cx, int cy, int cz, double rx, double ry, double rz, boolean fill, T data) {
|
||||||
{
|
|
||||||
rx += 0.5;
|
rx += 0.5;
|
||||||
ry += 0.5;
|
ry += 0.5;
|
||||||
rz += 0.5;
|
rz += 0.5;
|
||||||
@@ -535,11 +529,13 @@ public class Mantle {
|
|||||||
final int ceilRadiusZ = (int) Math.ceil(rz);
|
final int ceilRadiusZ = (int) Math.ceil(rz);
|
||||||
double nextXn = 0;
|
double nextXn = 0;
|
||||||
|
|
||||||
forX: for (int x = 0; x <= ceilRadiusX; ++x) {
|
forX:
|
||||||
|
for (int x = 0; x <= ceilRadiusX; ++x) {
|
||||||
final double xn = nextXn;
|
final double xn = nextXn;
|
||||||
nextXn = (x + 1) * invRadiusX;
|
nextXn = (x + 1) * invRadiusX;
|
||||||
double nextYn = 0;
|
double nextYn = 0;
|
||||||
forY: for (int y = 0; y <= ceilRadiusY; ++y) {
|
forY:
|
||||||
|
for (int y = 0; y <= ceilRadiusY; ++y) {
|
||||||
final double yn = nextYn;
|
final double yn = nextYn;
|
||||||
nextYn = (y + 1) * invRadiusY;
|
nextYn = (y + 1) * invRadiusY;
|
||||||
double nextZn = 0;
|
double nextZn = 0;
|
||||||
@@ -580,6 +576,7 @@ public class Mantle {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a cuboid of data in the mantle
|
* Set a cuboid of data in the mantle
|
||||||
|
*
|
||||||
* @param x1 the min x
|
* @param x1 the min x
|
||||||
* @param y1 the min y
|
* @param y1 the min y
|
||||||
* @param z1 the min z
|
* @param z1 the min z
|
||||||
@@ -589,16 +586,12 @@ public class Mantle {
|
|||||||
* @param data the data to set
|
* @param data the data to set
|
||||||
* @param <T> the type of data to apply to the mantle
|
* @param <T> the type of data to apply to the mantle
|
||||||
*/
|
*/
|
||||||
public <T> void setCuboid(int x1, int y1, int z1, int x2, int y2, int z2, T data)
|
public <T> void setCuboid(int x1, int y1, int z1, int x2, int y2, int z2, T data) {
|
||||||
{
|
|
||||||
int j, k;
|
int j, k;
|
||||||
|
|
||||||
for(int i = x1; i <= x2; i++)
|
for (int i = x1; i <= x2; i++) {
|
||||||
{
|
for (j = x1; j <= x2; j++) {
|
||||||
for(j = x1; j <= x2; j++)
|
for (k = x1; k <= x2; k++) {
|
||||||
{
|
|
||||||
for(k = x1; k <= x2; k++)
|
|
||||||
{
|
|
||||||
set(i, j, k, data);
|
set(i, j, k, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -607,6 +600,7 @@ public class Mantle {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a pyramid of data in the mantle
|
* Set a pyramid of data in the mantle
|
||||||
|
*
|
||||||
* @param cx the center x
|
* @param cx the center x
|
||||||
* @param cy the base y
|
* @param cy the base y
|
||||||
* @param cz the center z
|
* @param cz the center z
|
||||||
@@ -636,6 +630,7 @@ public class Mantle {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a 3d tube spline interpolated with Kochanek Bartels
|
* Set a 3d tube spline interpolated with Kochanek Bartels
|
||||||
|
*
|
||||||
* @param nodevectors the vector points
|
* @param nodevectors the vector points
|
||||||
* @param radius the radius
|
* @param radius the radius
|
||||||
* @param filled if it should be filled or hollow
|
* @param filled if it should be filled or hollow
|
||||||
@@ -647,6 +642,7 @@ public class Mantle {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a 3d tube spline interpolated with Kochanek Bartels
|
* Set a 3d tube spline interpolated with Kochanek Bartels
|
||||||
|
*
|
||||||
* @param nodevectors the spline points
|
* @param nodevectors the spline points
|
||||||
* @param tension the tension 0
|
* @param tension the tension 0
|
||||||
* @param bias the bias 0
|
* @param bias the bias 0
|
||||||
@@ -687,6 +683,7 @@ public class Mantle {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a 3d line
|
* Set a 3d line
|
||||||
|
*
|
||||||
* @param a the first point
|
* @param a the first point
|
||||||
* @param b the second point
|
* @param b the second point
|
||||||
* @param radius the radius
|
* @param radius the radius
|
||||||
@@ -694,13 +691,13 @@ public class Mantle {
|
|||||||
* @param data the data
|
* @param data the data
|
||||||
* @param <T> the type of data to apply to the mantle
|
* @param <T> the type of data to apply to the mantle
|
||||||
*/
|
*/
|
||||||
public <T> void setLine(IrisPosition a, IrisPosition b, double radius, boolean filled, T data)
|
public <T> void setLine(IrisPosition a, IrisPosition b, double radius, boolean filled, T data) {
|
||||||
{
|
|
||||||
setLine(ImmutableList.of(a, b), radius, filled, data);
|
setLine(ImmutableList.of(a, b), radius, filled, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set lines for points
|
* Set lines for points
|
||||||
|
*
|
||||||
* @param vectors the points
|
* @param vectors the points
|
||||||
* @param radius the radius
|
* @param radius the radius
|
||||||
* @param filled hollow or filled?
|
* @param filled hollow or filled?
|
||||||
@@ -770,6 +767,7 @@ public class Mantle {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a cylinder in the mantle
|
* Set a cylinder in the mantle
|
||||||
|
*
|
||||||
* @param cx the center x
|
* @param cx the center x
|
||||||
* @param cy the base y
|
* @param cy the base y
|
||||||
* @param cz the center z
|
* @param cz the center z
|
||||||
@@ -784,6 +782,7 @@ public class Mantle {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a cylinder in the mantle
|
* Set a cylinder in the mantle
|
||||||
|
*
|
||||||
* @param cx the center x
|
* @param cx the center x
|
||||||
* @param cy the base y
|
* @param cy the base y
|
||||||
* @param cz the center z
|
* @param cz the center z
|
||||||
@@ -817,7 +816,8 @@ public class Mantle {
|
|||||||
final int ceilRadiusZ = (int) Math.ceil(radiusZ);
|
final int ceilRadiusZ = (int) Math.ceil(radiusZ);
|
||||||
double nextXn = 0;
|
double nextXn = 0;
|
||||||
|
|
||||||
forX: for (int x = 0; x <= ceilRadiusX; ++x) {
|
forX:
|
||||||
|
for (int x = 0; x <= ceilRadiusX; ++x) {
|
||||||
final double xn = nextXn;
|
final double xn = nextXn;
|
||||||
nextXn = (x + 1) * invRadiusX;
|
nextXn = (x + 1) * invRadiusX;
|
||||||
double nextZn = 0;
|
double nextZn = 0;
|
||||||
@@ -850,23 +850,18 @@ public class Mantle {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T> void set(IrisPosition pos, T data)
|
public <T> void set(IrisPosition pos, T data) {
|
||||||
{
|
|
||||||
set(pos.getX(), pos.getY(), pos.getZ(), data);
|
set(pos.getX(), pos.getY(), pos.getZ(), data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T> void set(List<IrisPosition> positions, T data)
|
public <T> void set(List<IrisPosition> positions, T data) {
|
||||||
{
|
for (IrisPosition i : positions) {
|
||||||
for(IrisPosition i : positions)
|
|
||||||
{
|
|
||||||
set(i, data);
|
set(i, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T> void set(Set<IrisPosition> positions, T data)
|
public <T> void set(Set<IrisPosition> positions, T data) {
|
||||||
{
|
for (IrisPosition i : positions) {
|
||||||
for(IrisPosition i : positions)
|
|
||||||
{
|
|
||||||
set(i, data);
|
set(i, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,15 +19,12 @@
|
|||||||
package com.volmit.iris.util.mantle;
|
package com.volmit.iris.util.mantle;
|
||||||
|
|
||||||
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
|
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
|
||||||
import com.volmit.iris.util.data.Varint;
|
|
||||||
import com.volmit.iris.util.documentation.ChunkCoordinates;
|
import com.volmit.iris.util.documentation.ChunkCoordinates;
|
||||||
import com.volmit.iris.util.function.Consumer4;
|
import com.volmit.iris.util.function.Consumer4;
|
||||||
import com.volmit.iris.util.matter.IrisMatter;
|
import com.volmit.iris.util.matter.IrisMatter;
|
||||||
import com.volmit.iris.util.matter.Matter;
|
import com.volmit.iris.util.matter.Matter;
|
||||||
import com.volmit.iris.util.matter.MatterSlice;
|
import com.volmit.iris.util.matter.MatterSlice;
|
||||||
import com.volmit.iris.util.matter.slices.ZoneMatter;
|
import com.volmit.iris.util.matter.slices.ZoneMatter;
|
||||||
import com.volmit.iris.util.parallel.BurstExecutor;
|
|
||||||
import com.volmit.iris.util.parallel.MultiBurst;
|
|
||||||
|
|
||||||
import java.io.DataInputStream;
|
import java.io.DataInputStream;
|
||||||
import java.io.DataOutputStream;
|
import java.io.DataOutputStream;
|
||||||
@@ -87,8 +84,7 @@ public class MantleChunk {
|
|||||||
|
|
||||||
short v = din.readShort();
|
short v = din.readShort();
|
||||||
|
|
||||||
for(int i = 0; i < v; i++)
|
for (int i = 0; i < v; i++) {
|
||||||
{
|
|
||||||
features.add(zm.readNode(din));
|
features.add(zm.readNode(din));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -187,8 +183,7 @@ public class MantleChunk {
|
|||||||
|
|
||||||
dos.writeShort(features.size());
|
dos.writeShort(features.size());
|
||||||
|
|
||||||
for(IrisFeaturePositional i : features)
|
for (IrisFeaturePositional i : features) {
|
||||||
{
|
|
||||||
zm.writeNode(i, dos);
|
zm.writeNode(i, dos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import com.volmit.iris.engine.data.cache.Cache;
|
|||||||
import com.volmit.iris.util.documentation.ChunkCoordinates;
|
import com.volmit.iris.util.documentation.ChunkCoordinates;
|
||||||
import com.volmit.iris.util.format.C;
|
import com.volmit.iris.util.format.C;
|
||||||
import com.volmit.iris.util.format.Form;
|
import com.volmit.iris.util.format.Form;
|
||||||
import com.volmit.iris.util.hunk.storage.ArrayHunk;
|
|
||||||
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
|||||||
@@ -18,16 +18,13 @@
|
|||||||
|
|
||||||
package com.volmit.iris.util.matter;
|
package com.volmit.iris.util.matter;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
|
||||||
import com.volmit.iris.engine.object.basic.IrisPosition;
|
import com.volmit.iris.engine.object.basic.IrisPosition;
|
||||||
import com.volmit.iris.util.collection.KSet;
|
import com.volmit.iris.util.collection.KSet;
|
||||||
import com.volmit.iris.util.data.Varint;
|
import com.volmit.iris.util.data.Varint;
|
||||||
import com.volmit.iris.util.format.C;
|
|
||||||
import com.volmit.iris.util.hunk.Hunk;
|
import com.volmit.iris.util.hunk.Hunk;
|
||||||
import com.volmit.iris.util.math.BlockPosition;
|
import com.volmit.iris.util.math.BlockPosition;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.craftbukkit.v1_17_R1.block.data.type.CraftLeaves;
|
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
@@ -190,13 +187,9 @@ public interface Matter {
|
|||||||
slice = (MatterSlice<T>) createSlice(c, this);
|
slice = (MatterSlice<T>) createSlice(c, this);
|
||||||
|
|
||||||
if (slice == null) {
|
if (slice == null) {
|
||||||
try
|
try {
|
||||||
{
|
|
||||||
throw new RuntimeException("Bad slice " + c.getCanonicalName());
|
throw new RuntimeException("Bad slice " + c.getCanonicalName());
|
||||||
}
|
} catch (Throwable e) {
|
||||||
|
|
||||||
catch(Throwable e)
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
package com.volmit.iris.util.matter.slices;
|
package com.volmit.iris.util.matter.slices;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
|
||||||
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
|
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
|
||||||
import com.volmit.iris.util.matter.Sliced;
|
import com.volmit.iris.util.matter.Sliced;
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ import org.bukkit.NamespacedKey;
|
|||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
|
||||||
import javax.management.RuntimeErrorException;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -236,8 +235,7 @@ public class NBTWorld {
|
|||||||
getChunkSection(x >> 4, y >> 4, z >> 4).setBlockStateAt(x & 15, y & 15, z & 15, getCompound(data), false);
|
getChunkSection(x >> 4, y >> 4, z >> 4).setBlockStateAt(x & 15, y & 15, z & 15, getCompound(data), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getBiomeId(Biome b)
|
public int getBiomeId(Biome b) {
|
||||||
{
|
|
||||||
return biomeIds.get(b);
|
return biomeIds.get(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -257,8 +255,7 @@ public class NBTWorld {
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Chunk getChunk(int x, int z)
|
public Chunk getChunk(int x, int z) {
|
||||||
{
|
|
||||||
return getChunk(getMCA(x >> 5, z >> 5), x, z);
|
return getChunk(getMCA(x >> 5, z >> 5), x, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -43,8 +43,7 @@ public class ListTag<T extends Tag<?>> extends Tag<List<T>> implements Iterable<
|
|||||||
super(createEmptyValue(3));
|
super(createEmptyValue(3));
|
||||||
}
|
}
|
||||||
|
|
||||||
public ListTag<T> makeAtomic()
|
public ListTag<T> makeAtomic() {
|
||||||
{
|
|
||||||
setValue(new CopyOnWriteArrayList<>(getValue()));
|
setValue(new CopyOnWriteArrayList<>(getValue()));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,19 +25,16 @@ public class Worm {
|
|||||||
private double position;
|
private double position;
|
||||||
private double velocity;
|
private double velocity;
|
||||||
|
|
||||||
public Worm(double startPosition, double startVelocity)
|
public Worm(double startPosition, double startVelocity) {
|
||||||
{
|
|
||||||
this.position = startPosition;
|
this.position = startPosition;
|
||||||
this.velocity = startVelocity;
|
this.velocity = startVelocity;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void unstep()
|
public void unstep() {
|
||||||
{
|
|
||||||
position -= velocity;
|
position -= velocity;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void step()
|
public void step() {
|
||||||
{
|
|
||||||
position += velocity;
|
position += velocity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,34 +18,28 @@
|
|||||||
|
|
||||||
package com.volmit.iris.util.noise;
|
package com.volmit.iris.util.noise;
|
||||||
|
|
||||||
import com.volmit.iris.util.math.Position2;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class Worm2
|
public class Worm2 {
|
||||||
{
|
|
||||||
private final Worm x;
|
private final Worm x;
|
||||||
private final Worm z;
|
private final Worm z;
|
||||||
|
|
||||||
public Worm2(Worm x, Worm z)
|
public Worm2(Worm x, Worm z) {
|
||||||
{
|
|
||||||
this.x = x;
|
this.x = x;
|
||||||
this.z = z;
|
this.z = z;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Worm2(int x, int z, int vx, int vz)
|
public Worm2(int x, int z, int vx, int vz) {
|
||||||
{
|
|
||||||
this(new Worm(x, vx), new Worm(z, vz));
|
this(new Worm(x, vx), new Worm(z, vz));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void step()
|
public void step() {
|
||||||
{
|
|
||||||
x.step();
|
x.step();
|
||||||
z.step();
|
z.step();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void unstep()
|
public void unstep() {
|
||||||
{
|
|
||||||
x.unstep();
|
x.unstep();
|
||||||
z.unstep();
|
z.unstep();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,33 +21,28 @@ package com.volmit.iris.util.noise;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class Worm3
|
public class Worm3 {
|
||||||
{
|
|
||||||
private final Worm x;
|
private final Worm x;
|
||||||
private final Worm y;
|
private final Worm y;
|
||||||
private final Worm z;
|
private final Worm z;
|
||||||
|
|
||||||
public Worm3(Worm x,Worm y, Worm z)
|
public Worm3(Worm x, Worm y, Worm z) {
|
||||||
{
|
|
||||||
this.x = x;
|
this.x = x;
|
||||||
this.y = y;
|
this.y = y;
|
||||||
this.z = z;
|
this.z = z;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Worm3(int x, int y, int z, int vx, int vy, int vz)
|
public Worm3(int x, int y, int z, int vx, int vy, int vz) {
|
||||||
{
|
|
||||||
this(new Worm(x, vx), new Worm(y, vy), new Worm(z, vz));
|
this(new Worm(x, vx), new Worm(y, vy), new Worm(z, vz));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void step()
|
public void step() {
|
||||||
{
|
|
||||||
x.step();
|
x.step();
|
||||||
y.step();
|
y.step();
|
||||||
z.step();
|
z.step();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void unstep()
|
public void unstep() {
|
||||||
{
|
|
||||||
x.unstep();
|
x.unstep();
|
||||||
y.unstep();
|
y.unstep();
|
||||||
z.unstep();
|
z.unstep();
|
||||||
|
|||||||
@@ -32,18 +32,15 @@ public class WormIterator2 {
|
|||||||
private int maxDistance;
|
private int maxDistance;
|
||||||
private int maxIterations;
|
private int maxIterations;
|
||||||
|
|
||||||
public boolean hasNext()
|
public boolean hasNext() {
|
||||||
{
|
|
||||||
double dist = maxDistance - (Math.max(Math.abs(worm.getX().getVelocity()), Math.abs(worm.getZ().getVelocity())) + 1);
|
double dist = maxDistance - (Math.max(Math.abs(worm.getX().getVelocity()), Math.abs(worm.getZ().getVelocity())) + 1);
|
||||||
return maxIterations > 0 &&
|
return maxIterations > 0 &&
|
||||||
((x * x) - (worm.getX().getPosition() * worm.getX().getPosition()))
|
((x * x) - (worm.getX().getPosition() * worm.getX().getPosition()))
|
||||||
+ ((z * z) - (worm.getZ().getPosition() * worm.getZ().getPosition())) < dist * dist;
|
+ ((z * z) - (worm.getZ().getPosition() * worm.getZ().getPosition())) < dist * dist;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Worm2 next()
|
public Worm2 next() {
|
||||||
{
|
if (worm == null) {
|
||||||
if(worm == null)
|
|
||||||
{
|
|
||||||
worm = new Worm2(x, z, 0, 0);
|
worm = new Worm2(x, z, 0, 0);
|
||||||
return worm;
|
return worm;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
package com.volmit.iris.util.noise;
|
package com.volmit.iris.util.noise;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
|
||||||
import com.volmit.iris.util.function.NoiseProvider;
|
import com.volmit.iris.util.function.NoiseProvider;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -34,10 +33,8 @@ public class WormIterator3 {
|
|||||||
private int maxDistance;
|
private int maxDistance;
|
||||||
private int maxIterations;
|
private int maxIterations;
|
||||||
|
|
||||||
public boolean hasNext()
|
public boolean hasNext() {
|
||||||
{
|
if (worm == null) {
|
||||||
if(worm == null)
|
|
||||||
{
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,11 +48,9 @@ public class WormIterator3 {
|
|||||||
+ ((z * z) - (worm.getZ().getPosition() * worm.getZ().getPosition())) < dist * dist;
|
+ ((z * z) - (worm.getZ().getPosition() * worm.getZ().getPosition())) < dist * dist;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Worm3 next()
|
public Worm3 next() {
|
||||||
{
|
|
||||||
maxIterations--;
|
maxIterations--;
|
||||||
if(worm == null)
|
if (worm == null) {
|
||||||
{
|
|
||||||
worm = new Worm3(x, y, z, 0, 0, 0);
|
worm = new Worm3(x, y, z, 0, 0, 0);
|
||||||
return worm;
|
return worm;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,9 @@ import com.volmit.iris.util.collection.KList;
|
|||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.*;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
@SuppressWarnings("ALL")
|
@SuppressWarnings("ALL")
|
||||||
public class BurstExecutor {
|
public class BurstExecutor {
|
||||||
@@ -48,10 +50,8 @@ public class BurstExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public BurstExecutor queue(List<Runnable> r) {
|
public BurstExecutor queue(List<Runnable> r) {
|
||||||
if(!multicore)
|
if (!multicore) {
|
||||||
{
|
for (Runnable i : new KList<>(r)) {
|
||||||
for(Runnable i : new KList<>(r))
|
|
||||||
{
|
|
||||||
i.run();
|
i.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,10 +68,8 @@ public class BurstExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public BurstExecutor queue(Runnable[] r) {
|
public BurstExecutor queue(Runnable[] r) {
|
||||||
if(!multicore)
|
if (!multicore) {
|
||||||
{
|
for (Runnable i : new KList<>(r)) {
|
||||||
for(Runnable i : new KList<>(r))
|
|
||||||
{
|
|
||||||
i.run();
|
i.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -88,8 +86,7 @@ public class BurstExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void complete() {
|
public void complete() {
|
||||||
if(!multicore)
|
if (!multicore) {
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,8 +96,7 @@ public class BurstExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
for(Future<?> i : futures)
|
for (Future<?> i : futures) {
|
||||||
{
|
|
||||||
i.get();
|
i.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,12 +23,10 @@ import com.volmit.iris.core.IrisSettings;
|
|||||||
import com.volmit.iris.core.service.PreservationSVC;
|
import com.volmit.iris.core.service.PreservationSVC;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.math.M;
|
import com.volmit.iris.util.math.M;
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.*;
|
import java.util.concurrent.*;
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
public class MultiBurst {
|
public class MultiBurst {
|
||||||
public static final MultiBurst burst = new MultiBurst();
|
public static final MultiBurst burst = new MultiBurst();
|
||||||
@@ -74,13 +72,9 @@ public class MultiBurst {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void burst(boolean multicore, Runnable... r) {
|
public void burst(boolean multicore, Runnable... r) {
|
||||||
if(multicore)
|
if (multicore) {
|
||||||
{
|
|
||||||
burst(r);
|
burst(r);
|
||||||
}
|
} else {
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sync(r);
|
sync(r);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -90,19 +84,15 @@ public class MultiBurst {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void burst(boolean multicore, List<Runnable> r) {
|
public void burst(boolean multicore, List<Runnable> r) {
|
||||||
if(multicore)
|
if (multicore) {
|
||||||
{
|
|
||||||
burst(r);
|
burst(r);
|
||||||
}
|
} else {
|
||||||
|
|
||||||
else {
|
|
||||||
sync(r);
|
sync(r);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sync(List<Runnable> r) {
|
private void sync(List<Runnable> r) {
|
||||||
for(Runnable i : new KList<>(r))
|
for (Runnable i : new KList<>(r)) {
|
||||||
{
|
|
||||||
i.run();
|
i.run();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,8 +26,7 @@ public interface IrisService extends Listener {
|
|||||||
|
|
||||||
void onDisable();
|
void onDisable();
|
||||||
|
|
||||||
default void postShutdown(Runnable r)
|
default void postShutdown(Runnable r) {
|
||||||
{
|
|
||||||
Iris.instance.postShutdown(r);
|
Iris.instance.postShutdown(r);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,8 +29,7 @@ public abstract class ParallelQueueJob<T> extends QueueJob<T> {
|
|||||||
BurstExecutor b = MultiBurst.burst.burst(queue.size());
|
BurstExecutor b = MultiBurst.burst.burst(queue.size());
|
||||||
KList<T> q = queue.copy();
|
KList<T> q = queue.copy();
|
||||||
queue.clear();
|
queue.clear();
|
||||||
for(T i : q)
|
for (T i : q) {
|
||||||
{
|
|
||||||
b.queue(() -> {
|
b.queue(() -> {
|
||||||
execute(i);
|
execute(i);
|
||||||
completeWork();
|
completeWork();
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
package com.volmit.iris.util.scheduling.jobs;
|
package com.volmit.iris.util.scheduling.jobs;
|
||||||
|
|
||||||
import com.sun.jna.platform.unix.X11;
|
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
|
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|||||||
Reference in New Issue
Block a user