9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2025-12-23 09:09:15 +00:00
This commit is contained in:
cyberpwn
2021-08-24 22:28:33 -04:00
parent 432e95e4ec
commit 8df789ae34
84 changed files with 404 additions and 786 deletions

View File

@@ -91,10 +91,10 @@ file(jar.archiveFile.get().getAsFile().getParentFile().getParentFile().getParent
processResources { processResources {
filesMatching('**/plugin.yml') { filesMatching('**/plugin.yml') {
expand( expand(
'name': name.toString(), 'name': name.toString(),
'version': version.toString(), 'version': version.toString(),
'main': main.toString(), 'main': main.toString(),
'apiversion': apiVersion.toString() 'apiversion': apiVersion.toString()
) )
} }
} }
@@ -158,17 +158,17 @@ compileJava {
} }
shadowJar shadowJar
{ {
minimize() minimize()
append("plugin.yml") append("plugin.yml")
relocate 'com.dfsek.paralithic', 'com.volmit.iris.util.paralithic' relocate 'com.dfsek.paralithic', 'com.volmit.iris.util.paralithic'
relocate 'io.papermc.lib', 'com.volmit.iris.util.paper' relocate 'io.papermc.lib', 'com.volmit.iris.util.paper'
dependencies { dependencies {
include(dependency('io.papermc:paperlib')) include(dependency('io.papermc:paperlib'))
include(dependency('com.dfsek:Paralithic')) include(dependency('com.dfsek:Paralithic'))
include(dependency('net.kyori:')) include(dependency('net.kyori:'))
} }
} }
dependencies { dependencies {
// Provided or Classpath // Provided or Classpath

View File

@@ -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();
} }
} }

View File

@@ -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);
} }

View File

@@ -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() {

View File

@@ -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;
} }

View File

@@ -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;

View File

@@ -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;
@@ -36,7 +35,7 @@ public class DecObject implements DecreeExecutor {
@Decree(description = "Check the composition of an object") @Decree(description = "Check the composition of an object")
public void analyze( public void analyze(
@Param(description = "The object to analyze") @Param(description = "The object to analyze")
IrisObject object IrisObject object
) { ) {
sender().sendMessage("Object Size: " + object.getW() + " * " + object.getH() + " * " + object.getD() + ""); sender().sendMessage("Object Size: " + object.getW() + " * " + object.getH() + " * " + object.getD() + "");
sender().sendMessage("Blocks Used: " + NumberFormat.getIntegerInstance().format(object.getBlocks().size())); sender().sendMessage("Blocks Used: " + NumberFormat.getIntegerInstance().format(object.getBlocks().size()));
@@ -109,8 +108,8 @@ public class DecObject implements DecreeExecutor {
@Decree(description = "Contract a selection based on your looking direction", aliases = "-") @Decree(description = "Contract a selection based on your looking direction", aliases = "-")
public void contract( public void contract(
@Param(description = "The amount to inset by", defaultValue = "1") @Param(description = "The amount to inset by", defaultValue = "1")
int amount int amount
){ ) {
if (!WandSVC.isHoldingWand(player())) { if (!WandSVC.isHoldingWand(player())) {
sender().sendMessage("Hold your wand."); sender().sendMessage("Hold your wand.");
return; return;
@@ -134,8 +133,8 @@ public class DecObject implements DecreeExecutor {
@Decree(description = "Set point 1 to look", aliases = "p1") @Decree(description = "Set point 1 to look", aliases = "p1")
public void position1( public void position1(
@Param(description = "Whether to use your current position, or where you look", defaultValue = "true") @Param(description = "Whether to use your current position, or where you look", defaultValue = "true")
boolean here boolean here
){ ) {
if (!WandSVC.isHoldingWand(player())) { if (!WandSVC.isHoldingWand(player())) {
sender().sendMessage("Ready your Wand."); sender().sendMessage("Ready your Wand.");
return; return;
@@ -160,7 +159,7 @@ public class DecObject implements DecreeExecutor {
public void position2( public void position2(
@Param(description = "Whether to use your current position, or where you look", defaultValue = "true") @Param(description = "Whether to use your current position, or where you look", defaultValue = "true")
boolean here boolean here
){ ) {
if (!WandSVC.isHoldingWand(player())) { if (!WandSVC.isHoldingWand(player())) {
sender().sendMessage("Ready your Wand."); sender().sendMessage("Ready your Wand.");
return; return;
@@ -180,23 +179,25 @@ 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")
IrisObject object, IrisObject object,
@Param(description = "Whether or not to edit the object (need to hold wand)", defaultValue = "false") @Param(description = "Whether or not to edit the object (need to hold wand)", defaultValue = "false")
boolean edit, boolean edit,
@Param(description = "The amount of degrees to rotate by", defaultValue = "0") @Param(description = "The amount of degrees to rotate by", defaultValue = "0")
int rotate, int rotate,
@Param(description = "The factor by which to scale the object placement", defaultValue = "1") @Param(description = "The factor by which to scale the object placement", defaultValue = "1")
double scale, double scale,
@Param(description = "The scale interpolator to use", defaultValue = "none") @Param(description = "The scale interpolator to use", defaultValue = "none")
IrisObjectPlacementScaleInterpolator interpolator IrisObjectPlacementScaleInterpolator interpolator
){ ) {
double maxScale = Double.max(10 - object.getBlocks().size() / 10000d, 1); double maxScale = Double.max(10 - object.getBlocks().size() / 10000d, 1);
if (scale < maxScale){ if (scale < maxScale) {
sender().sendMessage(C.YELLOW + "Indicated scale exceeds maximum. Downscaled to maximum: " + maxScale); sender().sendMessage(C.YELLOW + "Indicated scale exceeds maximum. Downscaled to maximum: " + maxScale);
scale = maxScale; scale = maxScale;
} }

View File

@@ -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;

View File

@@ -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 {

View File

@@ -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();
} }

View File

@@ -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;
@@ -519,18 +516,16 @@ public class IrisProject {
@Override @Override
public void execute(File f) { public void execute(File f) {
try { try {
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!");
@@ -558,7 +553,7 @@ public class IrisProject {
} catch (Throwable e) { } catch (Throwable e) {
sender.sendMessageRaw("<hover:show_text:'Error:\n" + sender.sendMessageRaw("<hover:show_text:'Error:\n" +
"<yellow>" + f.getPath() + "<yellow>" + f.getPath() +
"\n<red>" +e.getMessage() + "\n<red>" + e.getMessage() +
"'><red>- JSON Error " + f.getName()); "'><red>- JSON Error " + f.getName());
} }
} }
@@ -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)
{
} }
} }

View File

@@ -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;

View File

@@ -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,9 +71,8 @@ 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);
} }
private IrisData(File dataFolder) { private IrisData(File dataFolder) {
@@ -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,11 +110,9 @@ 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() + ")");
} }

View File

@@ -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;

View File

@@ -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);
} }
} }

View File

@@ -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);
} }

View File

@@ -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;

View File

@@ -30,7 +30,10 @@ import com.volmit.iris.engine.actuator.IrisTerrainNormalActuator;
import com.volmit.iris.engine.data.cache.AtomicCache; import com.volmit.iris.engine.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;
@@ -136,13 +132,12 @@ public class IrisEngine implements Engine {
} }
private void tickRandomPlayer() { private void tickRandomPlayer() {
if(effects != null) { if (effects != null) {
effects.tickRandomPlayer(); effects.tickRandomPlayer();
} }
} }
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();

View File

@@ -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;

View File

@@ -39,7 +39,6 @@ import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.scheduling.ChronoLatch; import com.volmit.iris.util.scheduling.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));

View File

@@ -26,12 +26,10 @@ import com.volmit.iris.engine.framework.EngineAssignedActuator;
import com.volmit.iris.engine.object.biome.IrisBiome; import com.volmit.iris.engine.object.biome.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;

View File

@@ -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;
@@ -99,7 +96,7 @@ public class IrisDecorantActuator extends EngineAssignedActuator<BlockData> {
int realX = (int) Math.round(modX(x + finalI)); int realX = (int) Math.round(modX(x + finalI));
int realZ; int realZ;
IrisBiome biome, cave; IrisBiome biome, cave;
for (int j=0; j < output.getDepth(); j++) { for (int j = 0; j < output.getDepth(); j++) {
boolean solid, liquid; boolean solid, liquid;
int emptyFor = 0; int emptyFor = 0;
int liquidFor = 0; int liquidFor = 0;
@@ -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)),

View File

@@ -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);
} }
@@ -97,7 +94,7 @@ public class IrisTerrainNormalActuator extends EngineAssignedActuator<BlockData>
KList<BlockData> blocks = null; KList<BlockData> blocks = null;
KList<BlockData> fblocks = null; KList<BlockData> fblocks = null;
int depth,fdepth; int depth, fdepth;
for (int i = hf; i >= 0; i--) { for (int i = hf; i >= 0; i--) {
if (i >= h.getHeight()) { if (i >= h.getHeight()) {

View File

@@ -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();
} }

View File

@@ -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");
} }

View File

@@ -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;

View File

@@ -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 {

View File

@@ -45,10 +45,8 @@ import com.volmit.iris.util.data.B;
import com.volmit.iris.util.data.DataProvider; import com.volmit.iris.util.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);
} }

View File

@@ -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;

View File

@@ -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;

View File

@@ -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());
} }

View File

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

View File

@@ -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;

View File

@@ -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());
{ } else {
height = (int)i.getStructure().getStructure().getOverrideYRange().get(rng, xx, zz, getData());
}
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();
} }

View File

@@ -33,17 +33,13 @@ import com.volmit.iris.util.documentation.BlockCoordinates;
import com.volmit.iris.util.documentation.ChunkCoordinates; import com.volmit.iris.util.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);

View File

@@ -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;
@@ -68,31 +64,22 @@ public class MantleWriter implements IObjectPlacer
return; return;
} }
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!");
} }
} }
@@ -144,6 +131,6 @@ public class MantleWriter implements IObjectPlacer
@Override @Override
public void setTile(int xx, int yy, int zz, TileData<? extends TileState> tile) { public void setTile(int xx, int yy, int zz, TileData<? extends TileState> tile) {
getEngineMantle().setTile(xx,yy,zz,tile); getEngineMantle().setTile(xx, yy, zz, tile);
} }
} }

View File

@@ -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;

View File

@@ -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");

View File

@@ -54,8 +54,9 @@ 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);
} }

View File

@@ -35,7 +35,6 @@ import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructurePlacement;
import com.volmit.iris.engine.object.loot.IrisLootReference; import com.volmit.iris.engine.object.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;

View File

@@ -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)

View File

@@ -33,13 +33,11 @@ import com.volmit.iris.util.mantle.Mantle;
import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.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()));

View File

@@ -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.");
} }

View File

@@ -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;
} }

View File

@@ -22,7 +22,6 @@ import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.data.cache.AtomicCache; import com.volmit.iris.engine.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;

View File

@@ -39,7 +39,6 @@ import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructure;
import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructurePlacement; import com.volmit.iris.engine.object.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;

View File

@@ -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++;
} }
} }

View File

@@ -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);

View File

@@ -24,7 +24,6 @@ import com.volmit.iris.engine.data.cache.AtomicCache;
import com.volmit.iris.engine.object.annotations.*; import com.volmit.iris.engine.object.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;

View File

@@ -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;

View File

@@ -21,17 +21,8 @@ package com.volmit.iris.engine.object.noise;
import com.volmit.iris.core.project.loader.IrisData; import com.volmit.iris.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)

View File

@@ -34,7 +34,6 @@ import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructurePlacement;
import com.volmit.iris.engine.object.loot.IrisLootReference; import com.volmit.iris.engine.object.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;

View File

@@ -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)

View File

@@ -29,13 +29,11 @@ import com.volmit.iris.engine.framework.WrongEngineBroException;
import com.volmit.iris.engine.object.common.IrisWorld; import com.volmit.iris.engine.object.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();

View File

@@ -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;

View File

@@ -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());
} }

View File

@@ -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);
} }

View File

@@ -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()),

View File

@@ -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();
} }

View File

@@ -32,8 +32,7 @@ public interface DecreeParameterHandler<T> {
*/ */
KList<T> getPossibilities(); KList<T> getPossibilities();
default boolean isDummy() default boolean isDummy() {
{
return false; return false;
} }

View File

@@ -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;

View File

@@ -29,8 +29,7 @@ public class DummyHandler implements DecreeParameterHandler<Object> {
return null; return null;
} }
public boolean isDummy() public boolean isDummy() {
{
return true; return true;
} }

View File

@@ -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;
} }
} }

View File

@@ -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,15 +48,14 @@ 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();
} }
} }
@Override @Override
public void setRaw(int x, int y, int z, T t) { public void setRaw(int x, int y, int z, T t) {
synchronized(data) { synchronized (data) {
if (t == null) { if (t == null) {
data.remove(index(x, y, z)); data.remove(index(x, y, z));
return; return;
@@ -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));
} }
} }

View File

@@ -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,10 +89,11 @@ 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 z the chunk z * @param x the chunk x
* @param z the chunk z
* @param flag the flag to raise * @param flag the flag to raise
* @param r the runnable to fire if the flag is now raised (and was previously lowered) * @param r the runnable to fire if the flag is now raised (and was previously lowered)
*/ */
@ChunkCoordinates @ChunkCoordinates
public void raiseFlag(int x, int z, MantleFlag flag, Runnable r) { public void raiseFlag(int x, int z, MantleFlag flag, Runnable r) {
@@ -106,23 +106,24 @@ 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 z the z chunk * @param x the x 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 z the chunk z * @param x the chunk x
* @param z the chunk z
* @param flag the flag to lower * @param flag the flag to lower
* @param r the runnable that is fired if the flag was raised but is now lowered * @param r the runnable that is fired if the flag was raised but is now lowered
*/ */
@ChunkCoordinates @ChunkCoordinates
public void lowerFlag(int x, int z, MantleFlag flag, Runnable r) { public void lowerFlag(int x, int z, MantleFlag flag, Runnable r) {
@@ -133,16 +134,16 @@ 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 z the chunk z * @param x the chunk x
* @param flag the flag * @param z the chunk z
* @param flag the flag
* @param flagged should it be set to flagged or not * @param flagged should it be set to flagged or not
*/ */
@ChunkCoordinates @ChunkCoordinates
@@ -152,29 +153,29 @@ 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 z the chunk z * @param x the chunk x
* @param type the type of data to iterate * @param z the chunk z
* @param type the type of data to iterate
* @param iterator the iterator (x,y,z,data) -> do stuff * @param iterator the iterator (x,y,z,data) -> do stuff
* @param <T> the type of data to iterate * @param <T> the type of data to iterate
*/ */
@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,15 +184,15 @@ public class Mantle {
/** /**
* Does this chunk have a flag on it? * Does this chunk have a flag on it?
* @param x the x *
* @param z the z * @param x the x
* @param z the z
* @param flag the flag to test * @param flag the flag to test
* @return true if it's flagged * @return true if it's flagged
*/ */
@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,9 +449,10 @@ 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
* @return the file * @return the file
*/ */
public static File fileForRegion(File folder, int x, int z) { public static File fileForRegion(File folder, int x, int z) {
@@ -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,33 +491,33 @@ public class Mantle {
/** /**
* Set a sphere into the mantle * Set a sphere into the mantle
* @param cx the center x *
* @param cy the center y * @param cx the center x
* @param cz the center z * @param cy the center y
* @param cz the center z
* @param radius the radius of this sphere * @param radius the radius of this sphere
* @param fill should it be filled? or just the outer shell? * @param fill should it be filled? or just the outer shell?
* @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 cy the center y * @param cx the center x
* @param cz the center z * @param cy the center y
* @param rx the x radius * @param cz the center z
* @param ry the y radius * @param rx the x radius
* @param rz the z radius * @param ry the y radius
* @param rz the z radius
* @param fill should it be filled or just the outer shell? * @param fill should it be filled or just the outer shell?
* @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;
@@ -564,15 +560,15 @@ public class Mantle {
} }
} }
set(x + cx,y + cy,z + cz, data); set(x + cx, y + cy, z + cz, data);
set(-x + cx,y + cy,z + cz, data); set(-x + cx, y + cy, z + cz, data);
set(x + cx,-y + cy,z + cz, data); set(x + cx, -y + cy, z + cz, data);
set(x + cx,y + cy,-z + cz, data); set(x + cx, y + cy, -z + cz, data);
set(-x + cx,y + cy,-z + cz, data); set(-x + cx, y + cy, -z + cz, data);
set(-x + cx,-y + cy,z + cz, data); set(-x + cx, -y + cy, z + cz, data);
set(x + cx,-y + cy,-z + cz, data); set(x + cx, -y + cy, -z + cz, data);
set(-x + cx,y + cy,-z + cz, data); set(-x + cx, y + cy, -z + cz, data);
set(-x + cx,-y + cy,-z + cz, data); set(-x + cx, -y + cy, -z + cz, data);
} }
} }
} }
@@ -580,26 +576,23 @@ 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 y1 the min y * @param x1 the min x
* @param z1 the min z * @param y1 the min y
* @param x2 the max x * @param z1 the min z
* @param y2 the max y * @param x2 the max x
* @param z2 the max z * @param y2 the max y
* @param z2 the max z
* @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++) {
{ set(i, j, k, data);
for(k = x1; k <= x2; k++)
{
set(i,j,k,data);
} }
} }
} }
@@ -607,13 +600,14 @@ 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 cy the base y * @param cx the center x
* @param cz the center z * @param cy the base y
* @param data the data to set * @param cz the center z
* @param size the size of the pyramid (width of base & height) * @param data the data to set
* @param size the size of the pyramid (width of base & height)
* @param filled should it be filled or hollow * @param filled should it be filled or hollow
* @param <T> the type of data to apply to the mantle * @param <T> the type of data to apply to the mantle
*/ */
@SuppressWarnings("ConstantConditions") @SuppressWarnings("ConstantConditions")
public <T> void setPyramid(int cx, int cy, int cz, T data, int size, boolean filled) { public <T> void setPyramid(int cx, int cy, int cz, T data, int size, boolean filled) {
@@ -636,10 +630,11 @@ 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
* @param data the data to set * @param data the data to set
*/ */
public <T> void setSpline(List<Vector> nodevectors, double radius, boolean filled, T data) { public <T> void setSpline(List<Vector> nodevectors, double radius, boolean filled, T data) {
setSpline(nodevectors, 0, 0, 0, 10, radius, filled, data); setSpline(nodevectors, 0, 0, 0, 10, radius, filled, data);
@@ -647,15 +642,16 @@ 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
* @param continuity the continuity 0 * @param continuity the continuity 0
* @param quality the quality 10 * @param quality the quality 10
* @param radius the radius * @param radius the radius
* @param filled filled or hollow * @param filled filled or hollow
* @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 setSpline(List<Vector> nodevectors, double tension, double bias, double continuity, double quality, double radius, boolean filled, T data) { public <T> void setSpline(List<Vector> nodevectors, double tension, double bias, double continuity, double quality, double radius, boolean filled, T data) {
Set<IrisPosition> vset = new KSet<>(); Set<IrisPosition> vset = new KSet<>();
@@ -687,25 +683,26 @@ public class Mantle {
/** /**
* Set a 3d line * Set a 3d line
* @param a the first point *
* @param b the second point * @param a the first point
* @param b the second point
* @param radius the radius * @param radius the radius
* @param filled hollow or filled? * @param filled hollow or filled?
* @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?
* @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 setLine(List<IrisPosition> vectors, double radius, boolean filled, T data) { public <T> void setLine(List<IrisPosition> vectors, double radius, boolean filled, T data) {
Set<IrisPosition> vset = new KSet<>(); Set<IrisPosition> vset = new KSet<>();
@@ -770,28 +767,30 @@ public class Mantle {
/** /**
* Set a cylinder in the mantle * Set a cylinder in the mantle
* @param cx the center x *
* @param cy the base y * @param cx the center x
* @param cz the center z * @param cy the base y
* @param data the data to set * @param cz the center z
* @param data the data to set
* @param radius the radius * @param radius the radius
* @param height the height of the cyl * @param height the height of the cyl
* @param filled filled or not * @param filled filled or not
*/ */
public <T> void setCylinder(int cx, int cy, int cz, T data, double radius, int height, boolean filled){ public <T> void setCylinder(int cx, int cy, int cz, T data, double radius, int height, boolean filled) {
setCylinder(cx, cy, cz, data, radius, radius, height, filled); setCylinder(cx, cy, cz, data, radius, radius, height, filled);
} }
/** /**
* Set a cylinder in the mantle * Set a cylinder in the mantle
* @param cx the center x *
* @param cy the base y * @param cx the center x
* @param cz the center z * @param cy the base y
* @param data the data to set * @param cz the center z
* @param data the data to set
* @param radiusX the x radius * @param radiusX the x radius
* @param radiusZ the z radius * @param radiusZ the z radius
* @param height the height of this cyl * @param height the height of this cyl
* @param filled filled or hollow? * @param filled filled or hollow?
*/ */
public <T> void setCylinder(int cx, int cy, int cz, T data, double radiusX, double radiusZ, int height, boolean filled) { public <T> void setCylinder(int cx, int cy, int cz, T data, double radiusX, double radiusZ, int height, boolean filled) {
int affected = 0; int affected = 0;
@@ -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);
} }
} }

View File

@@ -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);
} }
} }

View File

@@ -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.*;

View File

@@ -30,7 +30,7 @@ public class INode {
private double continuity; private double continuity;
public INode() { public INode() {
this(new Vector(0,0,0)); this(new Vector(0, 0, 0));
} }
public INode(INode other) { public INode(INode other) {

View File

@@ -89,15 +89,15 @@ public class KochanekBartelsInterpolation implements PathInterpolation {
* Returns the linear combination of the given coefficients with the nodes adjacent to baseIndex. * Returns the linear combination of the given coefficients with the nodes adjacent to baseIndex.
* *
* @param baseIndex node index * @param baseIndex node index
* @param f1 coefficient for baseIndex-1 * @param f1 coefficient for baseIndex-1
* @param f2 coefficient for baseIndex * @param f2 coefficient for baseIndex
* @param f3 coefficient for baseIndex+1 * @param f3 coefficient for baseIndex+1
* @param f4 coefficient for baseIndex+2 * @param f4 coefficient for baseIndex+2
* @return linear combination of nodes[n-1..n+2] with f1..4 * @return linear combination of nodes[n-1..n+2] with f1..4
*/ */
private Vector linearCombination(int baseIndex, double f1, double f2, double f3, double f4) { private Vector linearCombination(int baseIndex, double f1, double f2, double f3, double f4) {
final Vector r1 = retrieve(baseIndex - 1).multiply(f1); final Vector r1 = retrieve(baseIndex - 1).multiply(f1);
final Vector r2 = retrieve(baseIndex ).multiply(f2); final Vector r2 = retrieve(baseIndex).multiply(f2);
final Vector r3 = retrieve(baseIndex + 1).multiply(f3); final Vector r3 = retrieve(baseIndex + 1).multiply(f3);
final Vector r4 = retrieve(baseIndex + 2).multiply(f4); final Vector r4 = retrieve(baseIndex + 2).multiply(f4);
@@ -108,7 +108,7 @@ public class KochanekBartelsInterpolation implements PathInterpolation {
* Retrieves a node. Indexes are clamped to the valid range. * Retrieves a node. Indexes are clamped to the valid range.
* *
* @param index node index to retrieve * @param index node index to retrieve
* @return nodes[clamp(0, nodes.length-1)] * @return nodes[clamp(0, nodes.length - 1)]
*/ */
private Vector retrieve(int index) { private Vector retrieve(int index) {
if (index < 0) { if (index < 0) {
@@ -204,11 +204,11 @@ public class KochanekBartelsInterpolation implements PathInterpolation {
case 1: case 1:
// This case is merely a speed-up for a very common case // This case is merely a speed-up for a very common case
return arcLengthRecursive(indexLeft, remainderLeft, 1.0) return arcLengthRecursive(indexLeft, remainderLeft, 1.0)
+ arcLengthRecursive(indexRight, 0.0, remainderRight); + arcLengthRecursive(indexRight, 0.0, remainderRight);
default: default:
return arcLengthRecursive(indexLeft, remainderLeft, indexRight - 1, 1.0) return arcLengthRecursive(indexLeft, remainderLeft, indexRight - 1, 1.0)
+ arcLengthRecursive(indexRight, 0.0, remainderRight); + arcLengthRecursive(indexRight, 0.0, remainderRight);
} }
} }

View File

@@ -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();
} }

View File

@@ -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;

View File

@@ -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);
} }
@@ -281,10 +278,10 @@ public class NBTWorld {
} }
public long getIdleDuration(int x, int z) { public long getIdleDuration(int x, int z) {
return hyperLock.withResult(x, z, () -> { return hyperLock.withResult(x, z, () -> {
Long l = lastUse.get(Cache.key(x, z)); Long l = lastUse.get(Cache.key(x, z));
return l == null ? 0 : (M.ms() - l); return l == null ? 0 : (M.ms() - l);
}); });
} }
public MCAFile getMCA(int x, int z) { public MCAFile getMCA(int x, int z) {

View File

@@ -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;
} }

View File

@@ -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;
} }
} }

View File

@@ -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();
} }

View File

@@ -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();

View File

@@ -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;
} }

View File

@@ -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,28 +33,24 @@ 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;
} }
double dist = maxDistance - (Math.max(Math.max(Math.abs(worm.getX().getVelocity()), double dist = maxDistance - (Math.max(Math.max(Math.abs(worm.getX().getVelocity()),
Math.abs(worm.getZ().getVelocity())), Math.abs(worm.getZ().getVelocity())),
Math.abs(worm.getY().getVelocity())) + 1); Math.abs(worm.getY().getVelocity())) + 1);
return maxIterations > 0 && return maxIterations > 0 &&
((x * x) - (worm.getX().getPosition() * worm.getX().getPosition())) ((x * x) - (worm.getX().getPosition() * worm.getX().getPosition()))
+ ((y * y) - (worm.getY().getPosition() * worm.getY().getPosition())) + ((y * y) - (worm.getY().getPosition() * worm.getY().getPosition()))
+ ((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;
} }

View File

@@ -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();
} }

View File

@@ -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();
} }
} }

View File

@@ -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);
} }
} }

View File

@@ -424,11 +424,11 @@ public class VolmitSender implements CommandSender {
} }
} }
public void sendDecreeHelpNode(VirtualDecreeCommand i){ public void sendDecreeHelpNode(VirtualDecreeCommand i) {
if (isPlayer()) { if (isPlayer()) {
//@builder //@builder
String s = ( String s = (
"<hover:show_text:'"+ "<hover:show_text:'" +
i.getNames().copy().reverse().convert((f) -> "<#42ecf5>" + f).toString(", ") + "\n" i.getNames().copy().reverse().convert((f) -> "<#42ecf5>" + f).toString(", ") + "\n"
+ "<#3fe05a>✎ <#6ad97d><font:minecraft:uniform>" + i.getDescription() + "<reset>\n" + "<#3fe05a>✎ <#6ad97d><font:minecraft:uniform>" + i.getDescription() + "<reset>\n"
+ "<#bbe03f>✒ <#a8e0a2>" + (i.isNode() + "<#bbe03f>✒ <#a8e0a2>" + (i.isNode()
@@ -458,7 +458,7 @@ public class VolmitSender implements CommandSender {
+ (f.isRequired() + (f.isRequired()
? "<#db4321>⚠ <#faa796><font:minecraft:uniform>This parameter is required." ? "<#db4321>⚠ <#faa796><font:minecraft:uniform>This parameter is required."
: (f.hasDefault() : (f.hasDefault()
? "<#2181db>✔ <#78dcf0><font:minecraft:uniform>Defaults to \""+f.getParam().defaultValue()+"\" if undefined." ? "<#2181db>✔ <#78dcf0><font:minecraft:uniform>Defaults to \"" + f.getParam().defaultValue() + "\" if undefined."
: "<#a73abd>✔ <#78dcf0><font:minecraft:uniform>This parameter is optional.")) + "<reset>\n" : "<#a73abd>✔ <#78dcf0><font:minecraft:uniform>This parameter is optional.")) + "<reset>\n"
+ (f.isContextual() ? "<#ff9900>➱ <#ffcc00><font:minecraft:uniform>The value may be derived from environment context <reset>\n" : "") + (f.isContextual() ? "<#ff9900>➱ <#ffcc00><font:minecraft:uniform>The value may be derived from environment context <reset>\n" : "")
+ "<#cc00ff>✢ <#ff33cc><font:minecraft:uniform>This parameter is of type " + f.getType().getSimpleName() + "<#cc00ff>✢ <#ff33cc><font:minecraft:uniform>This parameter is of type " + f.getType().getSimpleName()

View File

@@ -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();

View File

@@ -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;