diff --git a/src/main/java/com/volmit/iris/Iris.java b/src/main/java/com/volmit/iris/Iris.java
index 243615f99..4bc42c9ee 100644
--- a/src/main/java/com/volmit/iris/Iris.java
+++ b/src/main/java/com/volmit/iris/Iris.java
@@ -31,7 +31,21 @@ import com.volmit.iris.engine.object.IrisCompat;
import com.volmit.iris.engine.object.IrisDimension;
import com.volmit.iris.engine.IrisWorlds;
import com.volmit.iris.engine.framework.EngineCompositeGenerator;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.format.C;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.function.NastyRunnable;
+import com.volmit.iris.util.io.FileWatcher;
+import com.volmit.iris.util.io.IO;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.util.plugin.Metrics;
+import com.volmit.iris.util.plugin.Permission;
+import com.volmit.iris.util.plugin.VolmitPlugin;
+import com.volmit.iris.util.scheduling.GroupedExecutor;
+import com.volmit.iris.util.scheduling.J;
+import com.volmit.iris.util.scheduling.Queue;
+import com.volmit.iris.util.scheduling.ShurikenQueue;
import io.papermc.lib.PaperLib;
import org.bukkit.Bukkit;
import org.bukkit.World;
@@ -71,7 +85,7 @@ public class Iris extends VolmitPlugin implements Listener {
@Permission
public static PermissionIris perm;
- @com.volmit.iris.util.Command
+ @com.volmit.iris.util.plugin.Command
public CommandIris commandIris;
public Iris() {
diff --git a/src/main/java/com/volmit/iris/core/ConversionManager.java b/src/main/java/com/volmit/iris/core/ConversionManager.java
index b32952db2..3f8b92dc1 100644
--- a/src/main/java/com/volmit/iris/core/ConversionManager.java
+++ b/src/main/java/com/volmit/iris/core/ConversionManager.java
@@ -27,7 +27,16 @@ import com.volmit.iris.engine.data.nbt.io.NamedTag;
import com.volmit.iris.engine.data.nbt.tag.CompoundTag;
import com.volmit.iris.engine.data.nbt.tag.IntTag;
import com.volmit.iris.engine.data.nbt.tag.ListTag;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.function.Consumer2;
+import com.volmit.iris.util.io.Converter;
+import com.volmit.iris.util.io.IO;
+import com.volmit.iris.util.io.SKConversion;
+import com.volmit.iris.util.json.JSONObject;
+import com.volmit.iris.util.plugin.MortarSender;
+import com.volmit.iris.util.scheduling.J;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
diff --git a/src/main/java/com/volmit/iris/core/EditManager.java b/src/main/java/com/volmit/iris/core/EditManager.java
index c536f36fa..bae619a54 100644
--- a/src/main/java/com/volmit/iris/core/EditManager.java
+++ b/src/main/java/com/volmit/iris/core/EditManager.java
@@ -22,8 +22,8 @@ import com.volmit.iris.Iris;
import com.volmit.iris.core.edit.BlockEditor;
import com.volmit.iris.core.edit.BukkitBlockEditor;
import com.volmit.iris.core.edit.WEBlockEditor;
-import com.volmit.iris.util.KMap;
-import com.volmit.iris.util.M;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.math.M;
import io.papermc.lib.PaperLib;
import org.bukkit.Bukkit;
import org.bukkit.World;
diff --git a/src/main/java/com/volmit/iris/core/IrisBoardManager.java b/src/main/java/com/volmit/iris/core/IrisBoardManager.java
index d2cacb2c7..84f70fec0 100644
--- a/src/main/java/com/volmit/iris/core/IrisBoardManager.java
+++ b/src/main/java/com/volmit/iris/core/IrisBoardManager.java
@@ -22,7 +22,16 @@ import com.volmit.iris.Iris;
import com.volmit.iris.engine.IrisWorlds;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.IrisAccess;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.board.BoardManager;
+import com.volmit.iris.util.board.BoardProvider;
+import com.volmit.iris.util.board.BoardSettings;
+import com.volmit.iris.util.board.ScoreDirection;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.format.C;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.math.RollingSequence;
+import com.volmit.iris.util.scheduling.ChronoLatch;
+import com.volmit.iris.util.scheduling.J;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
diff --git a/src/main/java/com/volmit/iris/core/IrisDataManager.java b/src/main/java/com/volmit/iris/core/IrisDataManager.java
index b0f15949a..9b3a8db85 100644
--- a/src/main/java/com/volmit/iris/core/IrisDataManager.java
+++ b/src/main/java/com/volmit/iris/core/IrisDataManager.java
@@ -20,9 +20,9 @@ package com.volmit.iris.core;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.object.*;
-import com.volmit.iris.util.ObjectResourceLoader;
-import com.volmit.iris.util.RNG;
-import com.volmit.iris.util.ResourceLoader;
+import com.volmit.iris.engine.data.loader.ObjectResourceLoader;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.engine.data.loader.ResourceLoader;
import lombok.Data;
import java.io.File;
diff --git a/src/main/java/com/volmit/iris/core/IrisProject.java b/src/main/java/com/volmit/iris/core/IrisProject.java
index 450ee2194..c2c116aee 100644
--- a/src/main/java/com/volmit/iris/core/IrisProject.java
+++ b/src/main/java/com/volmit/iris/core/IrisProject.java
@@ -27,7 +27,20 @@ import com.volmit.iris.engine.object.*;
import com.volmit.iris.engine.IrisWorldCreator;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.IrisAccess;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.collection.KSet;
+import com.volmit.iris.util.format.C;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.io.IO;
+import com.volmit.iris.util.json.JSONArray;
+import com.volmit.iris.util.json.JSONObject;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.util.plugin.MortarSender;
+import com.volmit.iris.util.scheduling.ChronoLatch;
+import com.volmit.iris.util.scheduling.J;
+import com.volmit.iris.util.scheduling.O;
+import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import lombok.Data;
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.TextComponent;
diff --git a/src/main/java/com/volmit/iris/core/IrisSettings.java b/src/main/java/com/volmit/iris/core/IrisSettings.java
index 50a299045..40d625e93 100644
--- a/src/main/java/com/volmit/iris/core/IrisSettings.java
+++ b/src/main/java/com/volmit/iris/core/IrisSettings.java
@@ -20,7 +20,11 @@ package com.volmit.iris.core;
import com.google.gson.Gson;
import com.volmit.iris.Iris;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KSet;
+import com.volmit.iris.util.io.IO;
+import com.volmit.iris.util.json.JSONException;
+import com.volmit.iris.util.json.JSONObject;
+import com.volmit.iris.util.scheduling.J;
import lombok.Data;
import java.io.File;
diff --git a/src/main/java/com/volmit/iris/core/ProjectManager.java b/src/main/java/com/volmit/iris/core/ProjectManager.java
index 38d6cb80e..a4464ab01 100644
--- a/src/main/java/com/volmit/iris/core/ProjectManager.java
+++ b/src/main/java/com/volmit/iris/core/ProjectManager.java
@@ -23,7 +23,13 @@ import com.google.gson.JsonSyntaxException;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.object.IrisDimension;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.io.IO;
+import com.volmit.iris.util.json.JSONException;
+import com.volmit.iris.util.json.JSONObject;
+import com.volmit.iris.util.plugin.MortarSender;
+import com.volmit.iris.util.scheduling.J;
import lombok.Data;
import org.zeroturnaround.zip.ZipUtil;
import org.zeroturnaround.zip.commons.FileUtils;
diff --git a/src/main/java/com/volmit/iris/core/SchemaBuilder.java b/src/main/java/com/volmit/iris/core/SchemaBuilder.java
index 2d1e269d7..be0630679 100644
--- a/src/main/java/com/volmit/iris/core/SchemaBuilder.java
+++ b/src/main/java/com/volmit/iris/core/SchemaBuilder.java
@@ -19,7 +19,12 @@
package com.volmit.iris.core;
import com.volmit.iris.Iris;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.data.B;
+import com.volmit.iris.engine.object.annotations.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.json.JSONArray;
+import com.volmit.iris.util.json.JSONObject;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.potion.PotionEffectType;
diff --git a/src/main/java/com/volmit/iris/core/WandManager.java b/src/main/java/com/volmit/iris/core/WandManager.java
index 4afe29fd0..f891a5d5f 100644
--- a/src/main/java/com/volmit/iris/core/WandManager.java
+++ b/src/main/java/com/volmit/iris/core/WandManager.java
@@ -21,7 +21,11 @@ package com.volmit.iris.core;
import com.volmit.iris.Iris;
import com.volmit.iris.core.edit.DustRevealer;
import com.volmit.iris.engine.object.IrisObject;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.data.Cuboid;
+import com.volmit.iris.util.format.C;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.*;
import org.bukkit.block.Block;
import org.bukkit.enchantments.Enchantment;
diff --git a/src/main/java/com/volmit/iris/core/command/CommandIris.java b/src/main/java/com/volmit/iris/core/command/CommandIris.java
index 822b22986..debb22a59 100644
--- a/src/main/java/com/volmit/iris/core/command/CommandIris.java
+++ b/src/main/java/com/volmit/iris/core/command/CommandIris.java
@@ -24,10 +24,10 @@ import com.volmit.iris.core.command.object.CommandIrisObject;
import com.volmit.iris.core.command.studio.CommandIrisStudio;
import com.volmit.iris.core.command.what.CommandIrisWhat;
import com.volmit.iris.core.command.world.*;
-import com.volmit.iris.util.Command;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.plugin.Command;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
public class CommandIris extends MortarCommand {
@Command
diff --git a/src/main/java/com/volmit/iris/core/command/CommandIrisDownload.java b/src/main/java/com/volmit/iris/core/command/CommandIrisDownload.java
index cfa27342e..745812cac 100644
--- a/src/main/java/com/volmit/iris/core/command/CommandIrisDownload.java
+++ b/src/main/java/com/volmit/iris/core/command/CommandIrisDownload.java
@@ -19,7 +19,11 @@
package com.volmit.iris.core.command;
import com.volmit.iris.Iris;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.format.C;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
+import com.volmit.iris.util.scheduling.J;
public class CommandIrisDownload extends MortarCommand {
public CommandIrisDownload() {
diff --git a/src/main/java/com/volmit/iris/core/command/CommandIrisMetrics.java b/src/main/java/com/volmit/iris/core/command/CommandIrisMetrics.java
index 272d0b9ed..bc28d5930 100644
--- a/src/main/java/com/volmit/iris/core/command/CommandIrisMetrics.java
+++ b/src/main/java/com/volmit/iris/core/command/CommandIrisMetrics.java
@@ -21,9 +21,9 @@ package com.volmit.iris.core.command;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.IrisWorlds;
import com.volmit.iris.engine.framework.IrisAccess;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.World;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/volmit/iris/core/command/CommandIrisReload.java b/src/main/java/com/volmit/iris/core/command/CommandIrisReload.java
index dee09bc79..2f5f52c16 100644
--- a/src/main/java/com/volmit/iris/core/command/CommandIrisReload.java
+++ b/src/main/java/com/volmit/iris/core/command/CommandIrisReload.java
@@ -20,9 +20,9 @@ package com.volmit.iris.core.command;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
public class CommandIrisReload extends MortarCommand {
public CommandIrisReload() {
diff --git a/src/main/java/com/volmit/iris/core/command/CommandIrisUpdateProject.java b/src/main/java/com/volmit/iris/core/command/CommandIrisUpdateProject.java
index 62c5632fa..bf5260312 100644
--- a/src/main/java/com/volmit/iris/core/command/CommandIrisUpdateProject.java
+++ b/src/main/java/com/volmit/iris/core/command/CommandIrisUpdateProject.java
@@ -19,7 +19,11 @@
package com.volmit.iris.core.command;
import com.volmit.iris.Iris;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.format.C;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
+import com.volmit.iris.util.scheduling.J;
public class CommandIrisUpdateProject extends MortarCommand {
public CommandIrisUpdateProject() {
diff --git a/src/main/java/com/volmit/iris/core/command/PermissionIris.java b/src/main/java/com/volmit/iris/core/command/PermissionIris.java
index 37f4b454b..eed9f8966 100644
--- a/src/main/java/com/volmit/iris/core/command/PermissionIris.java
+++ b/src/main/java/com/volmit/iris/core/command/PermissionIris.java
@@ -18,8 +18,8 @@
package com.volmit.iris.core.command;
-import com.volmit.iris.util.MortarPermission;
-import com.volmit.iris.util.Permission;
+import com.volmit.iris.util.plugin.MortarPermission;
+import com.volmit.iris.util.plugin.Permission;
public class PermissionIris extends MortarPermission {
@Permission
diff --git a/src/main/java/com/volmit/iris/core/command/PermissionIrisStudio.java b/src/main/java/com/volmit/iris/core/command/PermissionIrisStudio.java
index 5aa51298a..a04a5b651 100644
--- a/src/main/java/com/volmit/iris/core/command/PermissionIrisStudio.java
+++ b/src/main/java/com/volmit/iris/core/command/PermissionIrisStudio.java
@@ -18,7 +18,7 @@
package com.volmit.iris.core.command;
-import com.volmit.iris.util.MortarPermission;
+import com.volmit.iris.util.plugin.MortarPermission;
public class PermissionIrisStudio extends MortarPermission {
public PermissionIrisStudio() {
diff --git a/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsaw.java b/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsaw.java
index e2415189c..d4f9350ee 100644
--- a/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsaw.java
+++ b/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsaw.java
@@ -20,10 +20,10 @@ package com.volmit.iris.core.command.jigsaw;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
-import com.volmit.iris.util.Command;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.plugin.Command;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
public class CommandIrisJigsaw extends MortarCommand {
@Command
diff --git a/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsawEdit.java b/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsawEdit.java
index 6565b9d32..939fc5165 100644
--- a/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsawEdit.java
+++ b/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsawEdit.java
@@ -23,9 +23,9 @@ import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.edit.JigsawEditor;
import com.volmit.iris.engine.object.IrisJigsawPiece;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import java.io.File;
diff --git a/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsawExit.java b/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsawExit.java
index ba1dbbe33..6b3c18c9c 100644
--- a/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsawExit.java
+++ b/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsawExit.java
@@ -21,9 +21,9 @@ package com.volmit.iris.core.command.jigsaw;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.edit.JigsawEditor;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
public class CommandIrisJigsawExit extends MortarCommand {
public CommandIrisJigsawExit() {
diff --git a/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsawNew.java b/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsawNew.java
index e0dce2cdd..4327791ee 100644
--- a/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsawNew.java
+++ b/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsawNew.java
@@ -23,9 +23,9 @@ import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.edit.JigsawEditor;
import com.volmit.iris.engine.object.IrisObject;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import java.io.File;
diff --git a/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsawPlace.java b/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsawPlace.java
index 0c0ca97ff..e6fce4281 100644
--- a/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsawPlace.java
+++ b/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsawPlace.java
@@ -24,7 +24,12 @@ import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.engine.object.IrisJigsawStructure;
import com.volmit.iris.engine.object.IrisPosition;
import com.volmit.iris.engine.jigsaw.PlannedStructure;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
+import com.volmit.iris.util.scheduling.PrecisionStopwatch;
public class CommandIrisJigsawPlace extends MortarCommand {
public CommandIrisJigsawPlace() {
diff --git a/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsawSave.java b/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsawSave.java
index 7af59995f..052c64441 100644
--- a/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsawSave.java
+++ b/src/main/java/com/volmit/iris/core/command/jigsaw/CommandIrisJigsawSave.java
@@ -21,9 +21,9 @@ package com.volmit.iris.core.command.jigsaw;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.edit.JigsawEditor;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
public class CommandIrisJigsawSave extends MortarCommand {
public CommandIrisJigsawSave() {
diff --git a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObject.java b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObject.java
index 0ef6242c6..f9f266e2a 100644
--- a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObject.java
+++ b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObject.java
@@ -20,10 +20,10 @@ package com.volmit.iris.core.command.object;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
-import com.volmit.iris.util.Command;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.plugin.Command;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
public class CommandIrisObject extends MortarCommand {
@Command
diff --git a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectContract.java b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectContract.java
index 9a73ac12e..dd4925021 100644
--- a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectContract.java
+++ b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectContract.java
@@ -21,7 +21,11 @@ package com.volmit.iris.core.command.object;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.WandManager;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.data.Cuboid;
+import com.volmit.iris.util.math.Direction;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.Location;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectDust.java b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectDust.java
index c35862d9b..ea58a5025 100644
--- a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectDust.java
+++ b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectDust.java
@@ -21,9 +21,9 @@ package com.volmit.iris.core.command.object;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.WandManager;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.Sound;
public class CommandIrisObjectDust extends MortarCommand {
diff --git a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectExpand.java b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectExpand.java
index f3bc3a57d..a0e3947c2 100644
--- a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectExpand.java
+++ b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectExpand.java
@@ -21,7 +21,11 @@ package com.volmit.iris.core.command.object;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.WandManager;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.data.Cuboid;
+import com.volmit.iris.util.math.Direction;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.Location;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectP1.java b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectP1.java
index c922d48c5..a19c4d494 100644
--- a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectP1.java
+++ b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectP1.java
@@ -21,9 +21,9 @@ package com.volmit.iris.core.command.object;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.WandManager;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
diff --git a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectP2.java b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectP2.java
index b38172182..a7611df55 100644
--- a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectP2.java
+++ b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectP2.java
@@ -21,9 +21,9 @@ package com.volmit.iris.core.command.object;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.WandManager;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
diff --git a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectPaste.java b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectPaste.java
index 6cb51c524..cfc245f12 100644
--- a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectPaste.java
+++ b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectPaste.java
@@ -24,9 +24,9 @@ import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.ProjectManager;
import com.volmit.iris.core.WandManager;
import com.volmit.iris.engine.object.IrisObject;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.Location;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectSave.java b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectSave.java
index 0b1740870..62ac57899 100644
--- a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectSave.java
+++ b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectSave.java
@@ -22,9 +22,9 @@ import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.WandManager;
import com.volmit.iris.engine.object.IrisObject;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
diff --git a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectShift.java b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectShift.java
index 09623d352..3efa746cd 100644
--- a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectShift.java
+++ b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectShift.java
@@ -21,7 +21,11 @@ package com.volmit.iris.core.command.object;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.WandManager;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.data.Cuboid;
+import com.volmit.iris.util.math.Direction;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.Location;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectWand.java b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectWand.java
index 3e4c00773..af500ab7c 100644
--- a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectWand.java
+++ b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectWand.java
@@ -21,9 +21,9 @@ package com.volmit.iris.core.command.object;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.WandManager;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.Sound;
public class CommandIrisObjectWand extends MortarCommand {
diff --git a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectXAY.java b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectXAY.java
index 28151e58f..c38b87ca6 100644
--- a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectXAY.java
+++ b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectXAY.java
@@ -21,11 +21,11 @@ package com.volmit.iris.core.command.object;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.WandManager;
-import com.volmit.iris.util.Cuboid;
-import com.volmit.iris.util.Cuboid.CuboidDirection;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.data.Cuboid;
+import com.volmit.iris.util.data.Cuboid.CuboidDirection;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
diff --git a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectXPY.java b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectXPY.java
index 9c87e9c11..12d5cf4f0 100644
--- a/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectXPY.java
+++ b/src/main/java/com/volmit/iris/core/command/object/CommandIrisObjectXPY.java
@@ -21,11 +21,11 @@ package com.volmit.iris.core.command.object;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.WandManager;
-import com.volmit.iris.util.Cuboid;
-import com.volmit.iris.util.Cuboid.CuboidDirection;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.data.Cuboid;
+import com.volmit.iris.util.data.Cuboid.CuboidDirection;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
diff --git a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudio.java b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudio.java
index 58ac3c8cf..828b8c215 100644
--- a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudio.java
+++ b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudio.java
@@ -20,10 +20,10 @@ package com.volmit.iris.core.command.studio;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
-import com.volmit.iris.util.Command;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.plugin.Command;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
public class CommandIrisStudio extends MortarCommand {
@Command
diff --git a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioBeautify.java b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioBeautify.java
index 4b6f5a0d4..dafa7fd51 100644
--- a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioBeautify.java
+++ b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioBeautify.java
@@ -20,7 +20,12 @@ package com.volmit.iris.core.command.studio;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.io.IO;
+import com.volmit.iris.util.json.JSONObject;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import java.io.File;
diff --git a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioClose.java b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioClose.java
index ef55e2fe8..f1e817e2e 100644
--- a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioClose.java
+++ b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioClose.java
@@ -20,9 +20,9 @@ package com.volmit.iris.core.command.studio;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioConvert.java b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioConvert.java
index 5f2277081..af566661c 100644
--- a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioConvert.java
+++ b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioConvert.java
@@ -20,9 +20,9 @@ package com.volmit.iris.core.command.studio;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
public class CommandIrisStudioConvert extends MortarCommand {
public CommandIrisStudioConvert() {
diff --git a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioCreate.java b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioCreate.java
index c438cd204..f3c581757 100644
--- a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioCreate.java
+++ b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioCreate.java
@@ -20,10 +20,10 @@ package com.volmit.iris.core.command.studio;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
-import com.volmit.iris.util.C;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.format.C;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
public class CommandIrisStudioCreate extends MortarCommand {
public CommandIrisStudioCreate() {
diff --git a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioEditBiome.java b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioEditBiome.java
index 949eac15c..019c47989 100644
--- a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioEditBiome.java
+++ b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioEditBiome.java
@@ -20,9 +20,9 @@ package com.volmit.iris.core.command.studio;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.entity.Player;
import java.awt.*;
diff --git a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioExplorer.java b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioExplorer.java
index 5c2debe59..08ec48e6a 100644
--- a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioExplorer.java
+++ b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioExplorer.java
@@ -21,10 +21,10 @@ package com.volmit.iris.core.command.studio;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.gui.NoiseExplorer;
-import com.volmit.iris.util.Command;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.plugin.Command;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
public class CommandIrisStudioExplorer extends MortarCommand {
@Command
diff --git a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioExplorerGenerator.java b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioExplorerGenerator.java
index 5e78012a1..e972cd60a 100644
--- a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioExplorerGenerator.java
+++ b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioExplorerGenerator.java
@@ -23,10 +23,10 @@ import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.gui.NoiseExplorer;
import com.volmit.iris.engine.object.IrisGenerator;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
+import com.volmit.iris.util.math.RNG;
public class CommandIrisStudioExplorerGenerator extends MortarCommand {
public CommandIrisStudioExplorerGenerator() {
diff --git a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioGoto.java b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioGoto.java
index deb1fc7c6..e2fe41b1b 100644
--- a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioGoto.java
+++ b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioGoto.java
@@ -24,7 +24,12 @@ import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.engine.object.IrisRegion;
import com.volmit.iris.engine.IrisWorlds;
import com.volmit.iris.engine.framework.IrisAccess;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.format.C;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
+import com.volmit.iris.util.scheduling.J;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioHotload.java b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioHotload.java
index 341c9bca9..d4756b700 100644
--- a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioHotload.java
+++ b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioHotload.java
@@ -21,9 +21,9 @@ package com.volmit.iris.core.command.studio;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.engine.IrisWorlds;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.World;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioLoot.java b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioLoot.java
index b01107387..5e0e870c3 100644
--- a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioLoot.java
+++ b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioLoot.java
@@ -24,7 +24,11 @@ import com.volmit.iris.engine.object.InventorySlotType;
import com.volmit.iris.engine.object.IrisLootTable;
import com.volmit.iris.engine.IrisWorlds;
import com.volmit.iris.engine.framework.IrisAccess;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
+import com.volmit.iris.util.scheduling.O;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryType;
diff --git a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioMap.java b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioMap.java
index 2036dce4f..1cbc80996 100644
--- a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioMap.java
+++ b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioMap.java
@@ -24,9 +24,9 @@ import com.volmit.iris.core.gui.IrisVision;
import com.volmit.iris.engine.IrisWorlds;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.IrisAccess;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
public class CommandIrisStudioMap extends MortarCommand
{
diff --git a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioOpen.java b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioOpen.java
index 416ab0f36..cbbbf705d 100644
--- a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioOpen.java
+++ b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioOpen.java
@@ -20,9 +20,9 @@ package com.volmit.iris.core.command.studio;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
public class CommandIrisStudioOpen extends MortarCommand {
public CommandIrisStudioOpen() {
diff --git a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioPackage.java b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioPackage.java
index 0e9e7de63..1b2b3801f 100644
--- a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioPackage.java
+++ b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioPackage.java
@@ -20,10 +20,10 @@ package com.volmit.iris.core.command.studio;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
-import com.volmit.iris.util.J;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.scheduling.J;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
public class CommandIrisStudioPackage extends MortarCommand {
public CommandIrisStudioPackage() {
diff --git a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioProfile.java b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioProfile.java
index f18cadaba..ef2bdc5f1 100644
--- a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioProfile.java
+++ b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioProfile.java
@@ -24,7 +24,16 @@ import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.IrisProject;
import com.volmit.iris.engine.object.*;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.function.NoiseProvider;
+import com.volmit.iris.util.io.IO;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
+import com.volmit.iris.util.scheduling.J;
+import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import java.io.File;
import java.io.IOException;
diff --git a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioSummon.java b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioSummon.java
index 3ecbb26dd..fb104de9b 100644
--- a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioSummon.java
+++ b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioSummon.java
@@ -24,9 +24,9 @@ import com.volmit.iris.engine.object.IrisEntity;
import com.volmit.iris.engine.IrisWorlds;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.IrisAccess;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioTPStudio.java b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioTPStudio.java
index fd0ea429f..5536709b5 100644
--- a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioTPStudio.java
+++ b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioTPStudio.java
@@ -20,9 +20,9 @@ package com.volmit.iris.core.command.studio;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.GameMode;
public class CommandIrisStudioTPStudio extends MortarCommand {
diff --git a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioUpdate.java b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioUpdate.java
index f58810941..acd6dab7e 100644
--- a/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioUpdate.java
+++ b/src/main/java/com/volmit/iris/core/command/studio/CommandIrisStudioUpdate.java
@@ -21,9 +21,9 @@ package com.volmit.iris.core.command.studio;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.IrisProject;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
public class CommandIrisStudioUpdate extends MortarCommand {
public CommandIrisStudioUpdate() {
diff --git a/src/main/java/com/volmit/iris/core/command/what/CommandIrisWhat.java b/src/main/java/com/volmit/iris/core/command/what/CommandIrisWhat.java
index 6842e9280..ac86dd12a 100644
--- a/src/main/java/com/volmit/iris/core/command/what/CommandIrisWhat.java
+++ b/src/main/java/com/volmit/iris/core/command/what/CommandIrisWhat.java
@@ -19,10 +19,10 @@
package com.volmit.iris.core.command.what;
import com.volmit.iris.Iris;
-import com.volmit.iris.util.Command;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.plugin.Command;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
public class CommandIrisWhat extends MortarCommand {
@Command
diff --git a/src/main/java/com/volmit/iris/core/command/what/CommandIrisWhatBiome.java b/src/main/java/com/volmit/iris/core/command/what/CommandIrisWhatBiome.java
index 66f42f895..a8ba56ed1 100644
--- a/src/main/java/com/volmit/iris/core/command/what/CommandIrisWhatBiome.java
+++ b/src/main/java/com/volmit/iris/core/command/what/CommandIrisWhatBiome.java
@@ -23,9 +23,9 @@ import com.volmit.iris.core.nms.INMS;
import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.engine.IrisWorlds;
import com.volmit.iris.engine.framework.IrisAccess;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/volmit/iris/core/command/what/CommandIrisWhatBlock.java b/src/main/java/com/volmit/iris/core/command/what/CommandIrisWhatBlock.java
index ea56f35da..6446cbc48 100644
--- a/src/main/java/com/volmit/iris/core/command/what/CommandIrisWhatBlock.java
+++ b/src/main/java/com/volmit/iris/core/command/what/CommandIrisWhatBlock.java
@@ -19,7 +19,11 @@
package com.volmit.iris.core.command.what;
import com.volmit.iris.Iris;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.data.B;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.format.C;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.FluidCollisionMode;
import org.bukkit.block.data.BlockData;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/volmit/iris/core/command/what/CommandIrisWhatHand.java b/src/main/java/com/volmit/iris/core/command/what/CommandIrisWhatHand.java
index 4040584bd..c06e6327e 100644
--- a/src/main/java/com/volmit/iris/core/command/what/CommandIrisWhatHand.java
+++ b/src/main/java/com/volmit/iris/core/command/what/CommandIrisWhatHand.java
@@ -19,10 +19,10 @@
package com.volmit.iris.core.command.what;
import com.volmit.iris.Iris;
-import com.volmit.iris.util.C;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.format.C;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/volmit/iris/core/command/what/CommandIrisWhatObjects.java b/src/main/java/com/volmit/iris/core/command/what/CommandIrisWhatObjects.java
index 3992b1c16..39bd7cb54 100644
--- a/src/main/java/com/volmit/iris/core/command/what/CommandIrisWhatObjects.java
+++ b/src/main/java/com/volmit/iris/core/command/what/CommandIrisWhatObjects.java
@@ -24,7 +24,14 @@ import com.volmit.iris.engine.object.IrisObject;
import com.volmit.iris.engine.object.IrisObjectPlacement;
import com.volmit.iris.engine.IrisWorlds;
import com.volmit.iris.engine.framework.IrisAccess;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.collection.KSet;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.util.math.Spiraler;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import io.papermc.lib.PaperLib;
import org.bukkit.*;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/volmit/iris/core/command/world/CommandIrisCreate.java b/src/main/java/com/volmit/iris/core/command/world/CommandIrisCreate.java
index 467a4fdf3..e6711a8a8 100644
--- a/src/main/java/com/volmit/iris/core/command/world/CommandIrisCreate.java
+++ b/src/main/java/com/volmit/iris/core/command/world/CommandIrisCreate.java
@@ -27,7 +27,12 @@ import com.volmit.iris.engine.object.IrisDimension;
import com.volmit.iris.core.gui.Pregenerator;
import com.volmit.iris.engine.IrisWorldCreator;
import com.volmit.iris.engine.framework.IrisAccess;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
+import com.volmit.iris.util.scheduling.J;
+import com.volmit.iris.util.scheduling.O;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.WorldCreator;
diff --git a/src/main/java/com/volmit/iris/core/command/world/CommandIrisFix.java b/src/main/java/com/volmit/iris/core/command/world/CommandIrisFix.java
index 664871ae3..73c78d1f7 100644
--- a/src/main/java/com/volmit/iris/core/command/world/CommandIrisFix.java
+++ b/src/main/java/com/volmit/iris/core/command/world/CommandIrisFix.java
@@ -21,7 +21,12 @@ package com.volmit.iris.core.command.world;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.IrisWorlds;
import com.volmit.iris.engine.framework.IrisAccess;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.math.Spiraler;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
+import com.volmit.iris.util.scheduling.J;
import java.util.concurrent.atomic.AtomicInteger;
diff --git a/src/main/java/com/volmit/iris/core/command/world/CommandIrisPregen.java b/src/main/java/com/volmit/iris/core/command/world/CommandIrisPregen.java
index fc30e7167..43d7d8232 100644
--- a/src/main/java/com/volmit/iris/core/command/world/CommandIrisPregen.java
+++ b/src/main/java/com/volmit/iris/core/command/world/CommandIrisPregen.java
@@ -20,9 +20,9 @@ package com.volmit.iris.core.command.world;
import com.volmit.iris.Iris;
import com.volmit.iris.core.gui.Pregenerator;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/volmit/iris/core/command/world/CommandIrisRegen.java b/src/main/java/com/volmit/iris/core/command/world/CommandIrisRegen.java
index ccdff08e4..737d44730 100644
--- a/src/main/java/com/volmit/iris/core/command/world/CommandIrisRegen.java
+++ b/src/main/java/com/volmit/iris/core/command/world/CommandIrisRegen.java
@@ -19,9 +19,9 @@
package com.volmit.iris.core.command.world;
import com.volmit.iris.Iris;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
public class CommandIrisRegen extends MortarCommand {
public CommandIrisRegen() {
diff --git a/src/main/java/com/volmit/iris/core/command/world/CommandIrisUpdateWorld.java b/src/main/java/com/volmit/iris/core/command/world/CommandIrisUpdateWorld.java
index 9229053bd..0ee1be8e7 100644
--- a/src/main/java/com/volmit/iris/core/command/world/CommandIrisUpdateWorld.java
+++ b/src/main/java/com/volmit/iris/core/command/world/CommandIrisUpdateWorld.java
@@ -19,7 +19,11 @@
package com.volmit.iris.core.command.world;
import com.volmit.iris.Iris;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.format.C;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
+import com.volmit.iris.util.scheduling.J;
import java.io.File;
diff --git a/src/main/java/com/volmit/iris/core/command/world/CommandLocate.java b/src/main/java/com/volmit/iris/core/command/world/CommandLocate.java
index 218762c60..20a84e074 100644
--- a/src/main/java/com/volmit/iris/core/command/world/CommandLocate.java
+++ b/src/main/java/com/volmit/iris/core/command/world/CommandLocate.java
@@ -20,9 +20,9 @@ package com.volmit.iris.core.command.world;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.IrisWorlds;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.MortarCommand;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.plugin.MortarCommand;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
diff --git a/src/main/java/com/volmit/iris/core/edit/BlockSignal.java b/src/main/java/com/volmit/iris/core/edit/BlockSignal.java
index 64ce87d9e..aabd80cc7 100644
--- a/src/main/java/com/volmit/iris/core/edit/BlockSignal.java
+++ b/src/main/java/com/volmit/iris/core/edit/BlockSignal.java
@@ -19,8 +19,8 @@
package com.volmit.iris.core.edit;
import com.volmit.iris.engine.parallel.MultiBurst;
-import com.volmit.iris.util.J;
-import com.volmit.iris.util.SR;
+import com.volmit.iris.util.scheduling.J;
+import com.volmit.iris.util.scheduling.SR;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.block.data.BlockData;
diff --git a/src/main/java/com/volmit/iris/core/edit/BukkitBlockEditor.java b/src/main/java/com/volmit/iris/core/edit/BukkitBlockEditor.java
index 61b2fa7fd..3ffa7510d 100644
--- a/src/main/java/com/volmit/iris/core/edit/BukkitBlockEditor.java
+++ b/src/main/java/com/volmit/iris/core/edit/BukkitBlockEditor.java
@@ -18,7 +18,7 @@
package com.volmit.iris.core.edit;
-import com.volmit.iris.util.M;
+import com.volmit.iris.util.math.M;
import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
diff --git a/src/main/java/com/volmit/iris/core/edit/DustRevealer.java b/src/main/java/com/volmit/iris/core/edit/DustRevealer.java
index caf1ab291..c22c91f39 100644
--- a/src/main/java/com/volmit/iris/core/edit/DustRevealer.java
+++ b/src/main/java/com/volmit/iris/core/edit/DustRevealer.java
@@ -22,7 +22,11 @@ import com.volmit.iris.Iris;
import com.volmit.iris.engine.IrisWorlds;
import com.volmit.iris.engine.framework.IrisAccess;
import com.volmit.iris.engine.parallax.ParallaxAccess;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.math.BlockPosition;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.util.plugin.MortarSender;
+import com.volmit.iris.util.scheduling.J;
import lombok.Data;
import org.bukkit.World;
import org.bukkit.block.Block;
diff --git a/src/main/java/com/volmit/iris/core/edit/JigsawEditor.java b/src/main/java/com/volmit/iris/core/edit/JigsawEditor.java
index b1d2d4222..1a81cac14 100644
--- a/src/main/java/com/volmit/iris/core/edit/JigsawEditor.java
+++ b/src/main/java/com/volmit/iris/core/edit/JigsawEditor.java
@@ -21,7 +21,13 @@ package com.volmit.iris.core.edit;
import com.google.gson.Gson;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.object.*;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.data.Cuboid;
+import com.volmit.iris.util.io.IO;
+import com.volmit.iris.util.json.JSONObject;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.util.scheduling.ChronoLatch;
+import com.volmit.iris.util.scheduling.J;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Particle;
diff --git a/src/main/java/com/volmit/iris/core/edit/WEBlockEditor.java b/src/main/java/com/volmit/iris/core/edit/WEBlockEditor.java
index 1269042af..7fbbb7c10 100644
--- a/src/main/java/com/volmit/iris/core/edit/WEBlockEditor.java
+++ b/src/main/java/com/volmit/iris/core/edit/WEBlockEditor.java
@@ -24,7 +24,7 @@ import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.world.biome.BiomeTypes;
-import com.volmit.iris.util.M;
+import com.volmit.iris.util.math.M;
import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
diff --git a/src/main/java/com/volmit/iris/core/gui/IrisRenderer.java b/src/main/java/com/volmit/iris/core/gui/IrisRenderer.java
index 7fa9304f2..40ca25978 100644
--- a/src/main/java/com/volmit/iris/core/gui/IrisRenderer.java
+++ b/src/main/java/com/volmit/iris/core/gui/IrisRenderer.java
@@ -19,7 +19,7 @@
package com.volmit.iris.core.gui;
import com.volmit.iris.engine.framework.Engine;
-import com.volmit.iris.util.IrisInterpolation;
+import com.volmit.iris.engine.interpolation.IrisInterpolation;
import org.bukkit.Material;
import java.awt.*;
diff --git a/src/main/java/com/volmit/iris/core/gui/IrisVision.java b/src/main/java/com/volmit/iris/core/gui/IrisVision.java
index c2ecdf0c7..fa111ea18 100644
--- a/src/main/java/com/volmit/iris/core/gui/IrisVision.java
+++ b/src/main/java/com/volmit/iris/core/gui/IrisVision.java
@@ -24,7 +24,17 @@ import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.engine.object.IrisRegion;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.IrisAccess;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.collection.KSet;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.math.BlockPosition;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.util.math.RollingSequence;
+import com.volmit.iris.util.scheduling.ChronoLatch;
+import com.volmit.iris.util.scheduling.J;
+import com.volmit.iris.util.scheduling.O;
+import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.attribute.Attribute;
diff --git a/src/main/java/com/volmit/iris/core/gui/NoiseExplorer.java b/src/main/java/com/volmit/iris/core/gui/NoiseExplorer.java
index d669eda1e..9c100ef0c 100644
--- a/src/main/java/com/volmit/iris/core/gui/NoiseExplorer.java
+++ b/src/main/java/com/volmit/iris/core/gui/NoiseExplorer.java
@@ -21,7 +21,14 @@ package com.volmit.iris.core.gui;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.engine.object.NoiseStyle;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.function.Function2;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.util.math.RollingSequence;
+import com.volmit.iris.util.scheduling.GroupedExecutor;
+import com.volmit.iris.util.scheduling.J;
+import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import javax.imageio.ImageIO;
import javax.swing.*;
diff --git a/src/main/java/com/volmit/iris/core/gui/Pregenerator.java b/src/main/java/com/volmit/iris/core/gui/Pregenerator.java
index 5ccc0b5c6..a53a24596 100644
--- a/src/main/java/com/volmit/iris/core/gui/Pregenerator.java
+++ b/src/main/java/com/volmit/iris/core/gui/Pregenerator.java
@@ -25,7 +25,19 @@ import com.volmit.iris.engine.data.DirectWorldWriter;
import com.volmit.iris.engine.framework.IrisAccess;
import com.volmit.iris.engine.parallel.BurstExecutor;
import com.volmit.iris.engine.parallel.MultiBurst;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.function.Consumer2;
+import com.volmit.iris.util.function.Consumer3;
+import com.volmit.iris.util.io.IO;
+import com.volmit.iris.util.math.ChunkPosition;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.util.math.RollingSequence;
+import com.volmit.iris.util.math.Spiraler;
+import com.volmit.iris.util.scheduling.ChronoLatch;
+import com.volmit.iris.util.scheduling.J;
+import com.volmit.iris.util.scheduling.PrecisionStopwatch;
+import com.volmit.iris.util.scheduling.SR;
import io.papermc.lib.PaperLib;
import lombok.Data;
import org.bukkit.Bukkit;
diff --git a/src/main/java/com/volmit/iris/core/link/MultiverseCoreLink.java b/src/main/java/com/volmit/iris/core/link/MultiverseCoreLink.java
index c4875a3d3..e3ac9601c 100644
--- a/src/main/java/com/volmit/iris/core/link/MultiverseCoreLink.java
+++ b/src/main/java/com/volmit/iris/core/link/MultiverseCoreLink.java
@@ -20,7 +20,7 @@ package com.volmit.iris.core.link;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.object.IrisDimension;
-import com.volmit.iris.util.KMap;
+import com.volmit.iris.util.collection.KMap;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.WorldType;
diff --git a/src/main/java/com/volmit/iris/core/link/MythicMobsLink.java b/src/main/java/com/volmit/iris/core/link/MythicMobsLink.java
index 5badd20fc..92f58c3a3 100644
--- a/src/main/java/com/volmit/iris/core/link/MythicMobsLink.java
+++ b/src/main/java/com/volmit/iris/core/link/MythicMobsLink.java
@@ -18,7 +18,7 @@
package com.volmit.iris.core.link;
-import com.volmit.iris.util.KList;
+import com.volmit.iris.util.collection.KList;
import io.lumine.xikage.mythicmobs.MythicMobs;
import io.lumine.xikage.mythicmobs.mobs.MythicMob;
import org.bukkit.Bukkit;
diff --git a/src/main/java/com/volmit/iris/core/nms/INMS.java b/src/main/java/com/volmit/iris/core/nms/INMS.java
index 13f290c6b..1a4971963 100644
--- a/src/main/java/com/volmit/iris/core/nms/INMS.java
+++ b/src/main/java/com/volmit/iris/core/nms/INMS.java
@@ -22,7 +22,7 @@ import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.nms.v17_1.NMSBinding17_1;
import com.volmit.iris.core.nms.v1X.NMSBinding1X;
-import com.volmit.iris.util.KMap;
+import com.volmit.iris.util.collection.KMap;
import org.bukkit.Bukkit;
public class INMS {
diff --git a/src/main/java/com/volmit/iris/util/NMSVersion.java b/src/main/java/com/volmit/iris/core/nms/NMSVersion.java
similarity index 98%
rename from src/main/java/com/volmit/iris/util/NMSVersion.java
rename to src/main/java/com/volmit/iris/core/nms/NMSVersion.java
index ef9775c16..e8a161932 100644
--- a/src/main/java/com/volmit/iris/util/NMSVersion.java
+++ b/src/main/java/com/volmit/iris/core/nms/NMSVersion.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.core.nms;
import com.volmit.iris.Iris;
diff --git a/src/main/java/com/volmit/iris/core/nms/v17_1/NMSBinding17_1.java b/src/main/java/com/volmit/iris/core/nms/v17_1/NMSBinding17_1.java
index 429a16fe1..f62459afa 100644
--- a/src/main/java/com/volmit/iris/core/nms/v17_1/NMSBinding17_1.java
+++ b/src/main/java/com/volmit/iris/core/nms/v17_1/NMSBinding17_1.java
@@ -20,7 +20,7 @@ package com.volmit.iris.core.nms.v17_1;
import com.volmit.iris.Iris;
import com.volmit.iris.core.nms.INMSBinding;
-import com.volmit.iris.util.KMap;
+import com.volmit.iris.util.collection.KMap;
import net.minecraft.core.IRegistry;
import net.minecraft.core.IRegistryWritable;
import net.minecraft.resources.MinecraftKey;
diff --git a/src/main/java/com/volmit/iris/engine/IrisComplex.java b/src/main/java/com/volmit/iris/engine/IrisComplex.java
index 6cc981db8..dd530c6f7 100644
--- a/src/main/java/com/volmit/iris/engine/IrisComplex.java
+++ b/src/main/java/com/volmit/iris/engine/IrisComplex.java
@@ -30,10 +30,10 @@ import com.volmit.iris.engine.data.DataProvider;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.stream.ProceduralStream;
import com.volmit.iris.engine.stream.interpolation.Interpolated;
-import com.volmit.iris.util.CaveResult;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.M;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.engine.object.common.CaveResult;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.util.math.RNG;
import lombok.Data;
import org.bukkit.Material;
import org.bukkit.block.Biome;
diff --git a/src/main/java/com/volmit/iris/engine/IrisEngine.java b/src/main/java/com/volmit/iris/engine/IrisEngine.java
index 0296a77b8..13d8085e3 100644
--- a/src/main/java/com/volmit/iris/engine/IrisEngine.java
+++ b/src/main/java/com/volmit/iris/engine/IrisEngine.java
@@ -22,9 +22,9 @@ import com.volmit.iris.Iris;
import com.volmit.iris.engine.object.*;
import com.volmit.iris.engine.framework.*;
import com.volmit.iris.engine.hunk.Hunk;
-import com.volmit.iris.util.J;
-import com.volmit.iris.util.PrecisionStopwatch;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.scheduling.J;
+import com.volmit.iris.util.scheduling.PrecisionStopwatch;
+import com.volmit.iris.util.math.RNG;
import lombok.Getter;
import lombok.Setter;
import org.bukkit.Chunk;
diff --git a/src/main/java/com/volmit/iris/engine/IrisEngineCompound.java b/src/main/java/com/volmit/iris/engine/IrisEngineCompound.java
index faf41a06b..b3aa1196d 100644
--- a/src/main/java/com/volmit/iris/engine/IrisEngineCompound.java
+++ b/src/main/java/com/volmit/iris/engine/IrisEngineCompound.java
@@ -29,7 +29,12 @@ import com.volmit.iris.engine.framework.EngineData;
import com.volmit.iris.engine.framework.EngineTarget;
import com.volmit.iris.engine.hunk.Hunk;
import com.volmit.iris.engine.parallel.MultiBurst;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.atomics.AtomicRollingSequence;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.format.C;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import lombok.Getter;
import lombok.Setter;
import org.bukkit.World;
diff --git a/src/main/java/com/volmit/iris/engine/IrisEngineEffects.java b/src/main/java/com/volmit/iris/engine/IrisEngineEffects.java
index fbe253ffe..837180ebc 100644
--- a/src/main/java/com/volmit/iris/engine/IrisEngineEffects.java
+++ b/src/main/java/com/volmit/iris/engine/IrisEngineEffects.java
@@ -22,9 +22,9 @@ import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.EngineAssignedComponent;
import com.volmit.iris.engine.framework.EngineEffects;
import com.volmit.iris.engine.framework.EnginePlayer;
-import com.volmit.iris.util.KMap;
-import com.volmit.iris.util.M;
-import com.volmit.iris.util.PrecisionStopwatch;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import org.bukkit.Location;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/volmit/iris/engine/IrisEngineFramework.java b/src/main/java/com/volmit/iris/engine/IrisEngineFramework.java
index 9cef9d56e..b0892f2ae 100644
--- a/src/main/java/com/volmit/iris/engine/IrisEngineFramework.java
+++ b/src/main/java/com/volmit/iris/engine/IrisEngineFramework.java
@@ -28,7 +28,7 @@ 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.framework.*;
-import com.volmit.iris.util.ChronoLatch;
+import com.volmit.iris.util.scheduling.ChronoLatch;
import lombok.Getter;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
diff --git a/src/main/java/com/volmit/iris/engine/IrisWorldCreator.java b/src/main/java/com/volmit/iris/engine/IrisWorldCreator.java
index 33ea84304..3f4ddd739 100644
--- a/src/main/java/com/volmit/iris/engine/IrisWorldCreator.java
+++ b/src/main/java/com/volmit/iris/engine/IrisWorldCreator.java
@@ -21,7 +21,7 @@ package com.volmit.iris.engine;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.engine.object.IrisDimension;
import com.volmit.iris.engine.framework.EngineCompositeGenerator;
-import com.volmit.iris.util.FakeWorld;
+import com.volmit.iris.util.fakenews.FakeWorld;
import org.bukkit.World;
import org.bukkit.WorldCreator;
diff --git a/src/main/java/com/volmit/iris/engine/IrisWorldManager.java b/src/main/java/com/volmit/iris/engine/IrisWorldManager.java
index e6ee2f9c1..55ec3f60d 100644
--- a/src/main/java/com/volmit/iris/engine/IrisWorldManager.java
+++ b/src/main/java/com/volmit/iris/engine/IrisWorldManager.java
@@ -24,9 +24,9 @@ import com.volmit.iris.engine.object.*;
import com.volmit.iris.engine.cache.Cache;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.EngineAssignedWorldManager;
-import com.volmit.iris.util.J;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.scheduling.J;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.math.RNG;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.event.block.BlockBreakEvent;
diff --git a/src/main/java/com/volmit/iris/engine/IrisWorlds.java b/src/main/java/com/volmit/iris/engine/IrisWorlds.java
index 92a619fd1..ab4f962b1 100644
--- a/src/main/java/com/volmit/iris/engine/IrisWorlds.java
+++ b/src/main/java/com/volmit/iris/engine/IrisWorlds.java
@@ -21,8 +21,8 @@ package com.volmit.iris.engine;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.framework.IrisAccess;
import com.volmit.iris.engine.framework.IrisAccessProvider;
-import com.volmit.iris.util.KMap;
-import com.volmit.iris.util.MortarSender;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.plugin.MortarSender;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/volmit/iris/engine/actuator/IrisBiomeActuator.java b/src/main/java/com/volmit/iris/engine/actuator/IrisBiomeActuator.java
index 4c1fafbc1..469a025f4 100644
--- a/src/main/java/com/volmit/iris/engine/actuator/IrisBiomeActuator.java
+++ b/src/main/java/com/volmit/iris/engine/actuator/IrisBiomeActuator.java
@@ -26,9 +26,9 @@ import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.EngineAssignedActuator;
import com.volmit.iris.engine.hunk.Hunk;
import com.volmit.iris.engine.hunk.view.BiomeGridHunkView;
-import com.volmit.iris.util.PrecisionStopwatch;
-import com.volmit.iris.util.RNG;
-import com.volmit.iris.util.TerrainChunk;
+import com.volmit.iris.util.scheduling.PrecisionStopwatch;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.engine.data.chunk.TerrainChunk;
import org.bukkit.block.Biome;
import org.bukkit.generator.ChunkGenerator;
diff --git a/src/main/java/com/volmit/iris/engine/actuator/IrisDecorantActuator.java b/src/main/java/com/volmit/iris/engine/actuator/IrisDecorantActuator.java
index 653a3d9b6..aa7c455c1 100644
--- a/src/main/java/com/volmit/iris/engine/actuator/IrisDecorantActuator.java
+++ b/src/main/java/com/volmit/iris/engine/actuator/IrisDecorantActuator.java
@@ -24,8 +24,8 @@ import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.EngineAssignedActuator;
import com.volmit.iris.engine.framework.EngineDecorator;
import com.volmit.iris.engine.hunk.Hunk;
-import com.volmit.iris.util.PrecisionStopwatch;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.scheduling.PrecisionStopwatch;
+import com.volmit.iris.util.math.RNG;
import lombok.Getter;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
diff --git a/src/main/java/com/volmit/iris/engine/actuator/IrisTerrainActuator.java b/src/main/java/com/volmit/iris/engine/actuator/IrisTerrainActuator.java
index d3a27c821..b044d0810 100644
--- a/src/main/java/com/volmit/iris/engine/actuator/IrisTerrainActuator.java
+++ b/src/main/java/com/volmit/iris/engine/actuator/IrisTerrainActuator.java
@@ -22,9 +22,9 @@ import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.EngineAssignedActuator;
import com.volmit.iris.engine.hunk.Hunk;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.PrecisionStopwatch;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.scheduling.PrecisionStopwatch;
+import com.volmit.iris.util.math.RNG;
import lombok.Getter;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
diff --git a/src/main/java/com/volmit/iris/engine/cache/AtomicCache.java b/src/main/java/com/volmit/iris/engine/cache/AtomicCache.java
index 452b96276..f1b820ec4 100644
--- a/src/main/java/com/volmit/iris/engine/cache/AtomicCache.java
+++ b/src/main/java/com/volmit/iris/engine/cache/AtomicCache.java
@@ -18,8 +18,8 @@
package com.volmit.iris.engine.cache;
-import com.volmit.iris.util.IrisLock;
-import com.volmit.iris.util.M;
+import com.volmit.iris.util.scheduling.IrisLock;
+import com.volmit.iris.util.math.M;
import java.util.function.Supplier;
diff --git a/src/main/java/com/volmit/iris/util/B.java b/src/main/java/com/volmit/iris/engine/data/B.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/B.java
rename to src/main/java/com/volmit/iris/engine/data/B.java
index e4016cda5..acf0a838f 100644
--- a/src/main/java/com/volmit/iris/util/B.java
+++ b/src/main/java/com/volmit/iris/engine/data/B.java
@@ -16,9 +16,12 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.data;
import com.volmit.iris.Iris;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.collection.KSet;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
diff --git a/src/main/java/com/volmit/iris/engine/data/DataPalette.java b/src/main/java/com/volmit/iris/engine/data/DataPalette.java
index 88126e472..3fa8d1b5d 100644
--- a/src/main/java/com/volmit/iris/engine/data/DataPalette.java
+++ b/src/main/java/com/volmit/iris/engine/data/DataPalette.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.data;
-import com.volmit.iris.util.KList;
+import com.volmit.iris.util.collection.KList;
import java.io.DataInputStream;
import java.io.DataOutputStream;
diff --git a/src/main/java/com/volmit/iris/engine/data/DirectWorldWriter.java b/src/main/java/com/volmit/iris/engine/data/DirectWorldWriter.java
index d098f34e8..8c1f22829 100644
--- a/src/main/java/com/volmit/iris/engine/data/DirectWorldWriter.java
+++ b/src/main/java/com/volmit/iris/engine/data/DirectWorldWriter.java
@@ -29,9 +29,8 @@ import com.volmit.iris.engine.data.nbt.tag.CompoundTag;
import com.volmit.iris.engine.data.nbt.tag.StringTag;
import com.volmit.iris.engine.parallel.BurstExecutor;
import com.volmit.iris.engine.parallel.MultiBurst;
-import com.volmit.iris.util.B;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.KMap;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
import org.bukkit.NamespacedKey;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
diff --git a/src/main/java/com/volmit/iris/util/LinkedTerrainChunk.java b/src/main/java/com/volmit/iris/engine/data/chunk/LinkedTerrainChunk.java
similarity index 97%
rename from src/main/java/com/volmit/iris/util/LinkedTerrainChunk.java
rename to src/main/java/com/volmit/iris/engine/data/chunk/LinkedTerrainChunk.java
index 4444db824..792c3fb4b 100644
--- a/src/main/java/com/volmit/iris/util/LinkedTerrainChunk.java
+++ b/src/main/java/com/volmit/iris/engine/data/chunk/LinkedTerrainChunk.java
@@ -16,11 +16,13 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.data.chunk;
import com.volmit.iris.Iris;
import com.volmit.iris.core.nms.BiomeBaseInjector;
import com.volmit.iris.core.nms.INMS;
+import com.volmit.iris.util.data.IrisBiomeStorage;
+import com.volmit.iris.util.fakenews.HeightedFakeWorld;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Biome;
diff --git a/src/main/java/com/volmit/iris/util/TerrainChunk.java b/src/main/java/com/volmit/iris/engine/data/chunk/TerrainChunk.java
similarity index 98%
rename from src/main/java/com/volmit/iris/util/TerrainChunk.java
rename to src/main/java/com/volmit/iris/engine/data/chunk/TerrainChunk.java
index ad29f792e..785962413 100644
--- a/src/main/java/com/volmit/iris/util/TerrainChunk.java
+++ b/src/main/java/com/volmit/iris/engine/data/chunk/TerrainChunk.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.data.chunk;
import com.volmit.iris.core.nms.BiomeBaseInjector;
import org.bukkit.World;
diff --git a/src/main/java/com/volmit/iris/util/ObjectResourceLoader.java b/src/main/java/com/volmit/iris/engine/data/loader/ObjectResourceLoader.java
similarity index 94%
rename from src/main/java/com/volmit/iris/util/ObjectResourceLoader.java
rename to src/main/java/com/volmit/iris/engine/data/loader/ObjectResourceLoader.java
index e7ed86e31..1b9a4d81e 100644
--- a/src/main/java/com/volmit/iris/util/ObjectResourceLoader.java
+++ b/src/main/java/com/volmit/iris/engine/data/loader/ObjectResourceLoader.java
@@ -16,11 +16,19 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.data.loader;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.engine.object.IrisObject;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.collection.KSet;
+import com.volmit.iris.util.format.C;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.util.scheduling.ChronoLatch;
+import com.volmit.iris.util.scheduling.J;
import java.io.File;
import java.util.concurrent.atomic.AtomicInteger;
diff --git a/src/main/java/com/volmit/iris/util/ResourceLoader.java b/src/main/java/com/volmit/iris/engine/data/loader/ResourceLoader.java
similarity index 94%
rename from src/main/java/com/volmit/iris/util/ResourceLoader.java
rename to src/main/java/com/volmit/iris/engine/data/loader/ResourceLoader.java
index 8b2ba48e6..760224812 100644
--- a/src/main/java/com/volmit/iris/util/ResourceLoader.java
+++ b/src/main/java/com/volmit/iris/engine/data/loader/ResourceLoader.java
@@ -16,12 +16,21 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.data.loader;
import com.google.gson.Gson;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.engine.object.IrisRegistrant;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.collection.KSet;
+import com.volmit.iris.util.format.C;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.io.IO;
+import com.volmit.iris.util.scheduling.ChronoLatch;
+import com.volmit.iris.util.scheduling.IrisLock;
+import com.volmit.iris.util.scheduling.J;
import lombok.Data;
import java.io.File;
diff --git a/src/main/java/com/volmit/iris/engine/data/mca/Section.java b/src/main/java/com/volmit/iris/engine/data/mca/Section.java
index 44349b853..16ab5ea79 100644
--- a/src/main/java/com/volmit/iris/engine/data/mca/Section.java
+++ b/src/main/java/com/volmit/iris/engine/data/mca/Section.java
@@ -23,7 +23,7 @@ import com.volmit.iris.engine.data.nbt.tag.ByteArrayTag;
import com.volmit.iris.engine.data.nbt.tag.CompoundTag;
import com.volmit.iris.engine.data.nbt.tag.ListTag;
import com.volmit.iris.engine.data.nbt.tag.LongArrayTag;
-import com.volmit.iris.util.KMap;
+import com.volmit.iris.util.collection.KMap;
import java.util.ArrayList;
import java.util.HashMap;
diff --git a/src/main/java/com/volmit/iris/engine/data/nbt/tag/CompoundTag.java b/src/main/java/com/volmit/iris/engine/data/nbt/tag/CompoundTag.java
index 004c72ceb..76e09ad01 100644
--- a/src/main/java/com/volmit/iris/engine/data/nbt/tag/CompoundTag.java
+++ b/src/main/java/com/volmit/iris/engine/data/nbt/tag/CompoundTag.java
@@ -19,7 +19,7 @@
package com.volmit.iris.engine.data.nbt.tag;
import com.volmit.iris.engine.data.io.MaxDepthIO;
-import com.volmit.iris.util.KMap;
+import com.volmit.iris.util.collection.KMap;
import java.util.*;
import java.util.function.BiConsumer;
diff --git a/src/main/java/com/volmit/iris/engine/data/nbt/tag/ListTag.java b/src/main/java/com/volmit/iris/engine/data/nbt/tag/ListTag.java
index 40566c61d..550ef5cf8 100644
--- a/src/main/java/com/volmit/iris/engine/data/nbt/tag/ListTag.java
+++ b/src/main/java/com/volmit/iris/engine/data/nbt/tag/ListTag.java
@@ -19,7 +19,7 @@
package com.volmit.iris.engine.data.nbt.tag;
import com.volmit.iris.engine.data.io.MaxDepthIO;
-import com.volmit.iris.util.KList;
+import com.volmit.iris.util.collection.KList;
import java.util.*;
import java.util.function.Consumer;
diff --git a/src/main/java/com/volmit/iris/engine/decorator/IrisEngineDecorator.java b/src/main/java/com/volmit/iris/engine/decorator/IrisEngineDecorator.java
index 47975afd7..7d65026cd 100644
--- a/src/main/java/com/volmit/iris/engine/decorator/IrisEngineDecorator.java
+++ b/src/main/java/com/volmit/iris/engine/decorator/IrisEngineDecorator.java
@@ -26,8 +26,8 @@ import com.volmit.iris.engine.cache.Cache;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.EngineAssignedComponent;
import com.volmit.iris.engine.framework.EngineDecorator;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.math.RNG;
import lombok.Getter;
public abstract class IrisEngineDecorator extends EngineAssignedComponent implements EngineDecorator {
diff --git a/src/main/java/com/volmit/iris/engine/framework/BlockUpdater.java b/src/main/java/com/volmit/iris/engine/framework/BlockUpdater.java
index 58e21f90a..5acfb5c51 100644
--- a/src/main/java/com/volmit/iris/engine/framework/BlockUpdater.java
+++ b/src/main/java/com/volmit/iris/engine/framework/BlockUpdater.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.framework;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.math.RNG;
import org.bukkit.Chunk;
import org.bukkit.block.data.BlockData;
diff --git a/src/main/java/com/volmit/iris/engine/framework/Engine.java b/src/main/java/com/volmit/iris/engine/framework/Engine.java
index 50d6fba2f..0bebe3d0e 100644
--- a/src/main/java/com/volmit/iris/engine/framework/Engine.java
+++ b/src/main/java/com/volmit/iris/engine/framework/Engine.java
@@ -22,13 +22,18 @@ import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.gui.Renderer;
import com.volmit.iris.core.gui.RenderType;
+import com.volmit.iris.engine.data.B;
import com.volmit.iris.engine.object.*;
import com.volmit.iris.engine.cache.Cache;
import com.volmit.iris.engine.data.DataProvider;
import com.volmit.iris.engine.hunk.Hunk;
import com.volmit.iris.engine.parallax.ParallaxAccess;
import com.volmit.iris.engine.parallel.MultiBurst;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.math.BlockPosition;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.Material;
diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineAssignedComponent.java b/src/main/java/com/volmit/iris/engine/framework/EngineAssignedComponent.java
index cec22c71e..f00cdaca1 100644
--- a/src/main/java/com/volmit/iris/engine/framework/EngineAssignedComponent.java
+++ b/src/main/java/com/volmit/iris/engine/framework/EngineAssignedComponent.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.framework;
-import com.volmit.iris.util.RollingSequence;
+import com.volmit.iris.util.math.RollingSequence;
import lombok.Data;
@Data
diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineComponent.java b/src/main/java/com/volmit/iris/engine/framework/EngineComponent.java
index 901332ffb..d615fe4b9 100644
--- a/src/main/java/com/volmit/iris/engine/framework/EngineComponent.java
+++ b/src/main/java/com/volmit/iris/engine/framework/EngineComponent.java
@@ -23,7 +23,7 @@ import com.volmit.iris.engine.IrisComplex;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.engine.object.IrisDimension;
import com.volmit.iris.engine.parallax.ParallaxAccess;
-import com.volmit.iris.util.RollingSequence;
+import com.volmit.iris.util.math.RollingSequence;
import org.bukkit.event.Listener;
public interface EngineComponent {
diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineCompositeGenerator.java b/src/main/java/com/volmit/iris/engine/framework/EngineCompositeGenerator.java
index 38d8d9da2..350447235 100644
--- a/src/main/java/com/volmit/iris/engine/framework/EngineCompositeGenerator.java
+++ b/src/main/java/com/volmit/iris/engine/framework/EngineCompositeGenerator.java
@@ -24,6 +24,8 @@ import com.volmit.iris.engine.IrisEngineCompound;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.nms.BiomeBaseInjector;
import com.volmit.iris.core.nms.INMS;
+import com.volmit.iris.engine.data.B;
+import com.volmit.iris.engine.data.chunk.TerrainChunk;
import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.engine.object.IrisDimension;
import com.volmit.iris.engine.object.IrisPosition;
@@ -33,7 +35,15 @@ import com.volmit.iris.engine.cache.Cache;
import com.volmit.iris.engine.hunk.Hunk;
import com.volmit.iris.engine.parallel.BurstExecutor;
import com.volmit.iris.engine.parallel.MultiBurst;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.fakenews.FakeWorld;
+import com.volmit.iris.util.io.ReactiveFolder;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.util.plugin.MortarSender;
+import com.volmit.iris.util.reflect.V;
+import com.volmit.iris.util.scheduling.ChronoLatch;
+import com.volmit.iris.util.scheduling.J;
import io.netty.util.internal.ConcurrentSet;
import io.papermc.lib.PaperLib;
import lombok.Getter;
diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineCompound.java b/src/main/java/com/volmit/iris/engine/framework/EngineCompound.java
index db719a9fc..c96f78cbe 100644
--- a/src/main/java/com/volmit/iris/engine/framework/EngineCompound.java
+++ b/src/main/java/com/volmit/iris/engine/framework/EngineCompound.java
@@ -27,8 +27,8 @@ import com.volmit.iris.engine.object.IrisPosition;
import com.volmit.iris.engine.data.DataProvider;
import com.volmit.iris.engine.hunk.Hunk;
import com.volmit.iris.engine.parallel.MultiBurst;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.KMap;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineData.java b/src/main/java/com/volmit/iris/engine/framework/EngineData.java
index b5a8d5b97..6869d7194 100644
--- a/src/main/java/com/volmit/iris/engine/framework/EngineData.java
+++ b/src/main/java/com/volmit/iris/engine/framework/EngineData.java
@@ -21,7 +21,7 @@ package com.volmit.iris.engine.framework;
import com.google.gson.Gson;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.object.IrisPosition;
-import com.volmit.iris.util.IO;
+import com.volmit.iris.util.io.IO;
import lombok.Data;
import java.io.File;
diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineDecorator.java b/src/main/java/com/volmit/iris/engine/framework/EngineDecorator.java
index 262623b0b..556069871 100644
--- a/src/main/java/com/volmit/iris/engine/framework/EngineDecorator.java
+++ b/src/main/java/com/volmit/iris/engine/framework/EngineDecorator.java
@@ -20,7 +20,7 @@ package com.volmit.iris.engine.framework;
import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.engine.hunk.Hunk;
-import com.volmit.iris.util.B;
+import com.volmit.iris.engine.data.B;
import org.bukkit.block.data.BlockData;
public interface EngineDecorator extends EngineComponent {
diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineMetrics.java b/src/main/java/com/volmit/iris/engine/framework/EngineMetrics.java
index 4bad43181..87570ca6d 100644
--- a/src/main/java/com/volmit/iris/engine/framework/EngineMetrics.java
+++ b/src/main/java/com/volmit/iris/engine/framework/EngineMetrics.java
@@ -18,8 +18,8 @@
package com.volmit.iris.engine.framework;
-import com.volmit.iris.util.AtomicRollingSequence;
-import com.volmit.iris.util.KMap;
+import com.volmit.iris.util.atomics.AtomicRollingSequence;
+import com.volmit.iris.util.collection.KMap;
import lombok.Data;
@Data
diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineParallaxManager.java b/src/main/java/com/volmit/iris/engine/framework/EngineParallaxManager.java
index 4a47f6668..2bcef219a 100644
--- a/src/main/java/com/volmit/iris/engine/framework/EngineParallaxManager.java
+++ b/src/main/java/com/volmit/iris/engine/framework/EngineParallaxManager.java
@@ -21,7 +21,9 @@ package com.volmit.iris.engine.framework;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.IrisComplex;
import com.volmit.iris.core.IrisDataManager;
+import com.volmit.iris.engine.data.B;
import com.volmit.iris.engine.object.*;
+import com.volmit.iris.engine.object.common.IObjectPlacer;
import com.volmit.iris.engine.object.tile.TileData;
import com.volmit.iris.engine.cache.Cache;
import com.volmit.iris.engine.data.DataProvider;
@@ -31,7 +33,14 @@ import com.volmit.iris.engine.parallax.ParallaxAccess;
import com.volmit.iris.engine.parallax.ParallaxChunkMeta;
import com.volmit.iris.engine.parallel.BurstExecutor;
import com.volmit.iris.engine.parallel.MultiBurst;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.collection.KSet;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.function.Consumer4;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.util.scheduling.J;
+import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import org.bukkit.Chunk;
import org.bukkit.ChunkSnapshot;
import org.bukkit.block.TileState;
diff --git a/src/main/java/com/volmit/iris/engine/framework/EnginePlayer.java b/src/main/java/com/volmit/iris/engine/framework/EnginePlayer.java
index 55aded197..51fcaf6a4 100644
--- a/src/main/java/com/volmit/iris/engine/framework/EnginePlayer.java
+++ b/src/main/java/com/volmit/iris/engine/framework/EnginePlayer.java
@@ -22,8 +22,8 @@ import com.volmit.iris.Iris;
import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.engine.object.IrisEffect;
import com.volmit.iris.engine.object.IrisRegion;
-import com.volmit.iris.util.J;
-import com.volmit.iris.util.M;
+import com.volmit.iris.util.scheduling.J;
+import com.volmit.iris.util.math.M;
import lombok.Data;
import org.bukkit.Location;
import org.bukkit.entity.Player;
diff --git a/src/main/java/com/volmit/iris/engine/framework/IrisAccess.java b/src/main/java/com/volmit/iris/engine/framework/IrisAccess.java
index f205076fe..b6f0e8b7a 100644
--- a/src/main/java/com/volmit/iris/engine/framework/IrisAccess.java
+++ b/src/main/java/com/volmit/iris/engine/framework/IrisAccess.java
@@ -25,7 +25,11 @@ import com.volmit.iris.engine.object.IrisRegion;
import com.volmit.iris.engine.data.DirectWorldWriter;
import com.volmit.iris.engine.data.DataProvider;
import com.volmit.iris.engine.parallel.MultiBurst;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.util.scheduling.ChronoLatch;
+import com.volmit.iris.util.scheduling.J;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.World;
diff --git a/src/main/java/com/volmit/iris/engine/framework/LootProvider.java b/src/main/java/com/volmit/iris/engine/framework/LootProvider.java
index 94d0f841a..a3c4c2391 100644
--- a/src/main/java/com/volmit/iris/engine/framework/LootProvider.java
+++ b/src/main/java/com/volmit/iris/engine/framework/LootProvider.java
@@ -21,8 +21,8 @@ package com.volmit.iris.engine.framework;
import com.volmit.iris.engine.object.InventorySlotType;
import com.volmit.iris.engine.object.IrisLootReference;
import com.volmit.iris.engine.object.IrisLootTable;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.math.RNG;
import org.bukkit.block.Block;
import org.bukkit.inventory.Inventory;
diff --git a/src/main/java/com/volmit/iris/engine/framework/PregeneratedData.java b/src/main/java/com/volmit/iris/engine/framework/PregeneratedData.java
index 859de3aaa..5cbc95f53 100644
--- a/src/main/java/com/volmit/iris/engine/framework/PregeneratedData.java
+++ b/src/main/java/com/volmit/iris/engine/framework/PregeneratedData.java
@@ -19,8 +19,8 @@
package com.volmit.iris.engine.framework;
import com.volmit.iris.engine.hunk.Hunk;
-import com.volmit.iris.util.B;
-import com.volmit.iris.util.TerrainChunk;
+import com.volmit.iris.engine.data.B;
+import com.volmit.iris.engine.data.chunk.TerrainChunk;
import lombok.Data;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
diff --git a/src/main/java/com/volmit/iris/engine/hunk/Hunk.java b/src/main/java/com/volmit/iris/engine/hunk/Hunk.java
index f2460efb5..75798328e 100644
--- a/src/main/java/com/volmit/iris/engine/hunk/Hunk.java
+++ b/src/main/java/com/volmit/iris/engine/hunk/Hunk.java
@@ -23,7 +23,9 @@ import com.volmit.iris.engine.hunk.storage.*;
import com.volmit.iris.engine.hunk.view.*;
import com.volmit.iris.engine.parallel.BurstExecutor;
import com.volmit.iris.engine.parallel.MultiBurst;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.function.*;
+import com.volmit.iris.util.oldnbt.ByteArrayTag;
import org.bukkit.Chunk;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
diff --git a/src/main/java/com/volmit/iris/engine/hunk/io/BasicHunkIOAdapter.java b/src/main/java/com/volmit/iris/engine/hunk/io/BasicHunkIOAdapter.java
index 1b914526f..6451fa679 100644
--- a/src/main/java/com/volmit/iris/engine/hunk/io/BasicHunkIOAdapter.java
+++ b/src/main/java/com/volmit/iris/engine/hunk/io/BasicHunkIOAdapter.java
@@ -20,7 +20,7 @@ package com.volmit.iris.engine.hunk.io;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.hunk.Hunk;
-import com.volmit.iris.util.Function3;
+import com.volmit.iris.util.function.Function3;
import java.io.*;
import java.util.concurrent.atomic.AtomicBoolean;
diff --git a/src/main/java/com/volmit/iris/engine/hunk/io/BlockDataHunkIOAdapter.java b/src/main/java/com/volmit/iris/engine/hunk/io/BlockDataHunkIOAdapter.java
index 8dc2e5ac0..d00c0f915 100644
--- a/src/main/java/com/volmit/iris/engine/hunk/io/BlockDataHunkIOAdapter.java
+++ b/src/main/java/com/volmit/iris/engine/hunk/io/BlockDataHunkIOAdapter.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.hunk.io;
-import com.volmit.iris.util.B;
+import com.volmit.iris.engine.data.B;
import org.bukkit.block.data.BlockData;
import java.io.DataInputStream;
diff --git a/src/main/java/com/volmit/iris/engine/hunk/io/HunkIOAdapter.java b/src/main/java/com/volmit/iris/engine/hunk/io/HunkIOAdapter.java
index b34673bc2..f870928f5 100644
--- a/src/main/java/com/volmit/iris/engine/hunk/io/HunkIOAdapter.java
+++ b/src/main/java/com/volmit/iris/engine/hunk/io/HunkIOAdapter.java
@@ -20,9 +20,9 @@ package com.volmit.iris.engine.hunk.io;
import com.volmit.iris.engine.data.IOAdapter;
import com.volmit.iris.engine.hunk.Hunk;
-import com.volmit.iris.util.ByteArrayTag;
-import com.volmit.iris.util.CustomOutputStream;
-import com.volmit.iris.util.Function3;
+import com.volmit.iris.util.oldnbt.ByteArrayTag;
+import com.volmit.iris.util.io.CustomOutputStream;
+import com.volmit.iris.util.function.Function3;
import java.io.*;
import java.util.zip.GZIPInputStream;
diff --git a/src/main/java/com/volmit/iris/engine/hunk/io/HunkRegion.java b/src/main/java/com/volmit/iris/engine/hunk/io/HunkRegion.java
index dfc34025a..bf5dd3a51 100644
--- a/src/main/java/com/volmit/iris/engine/hunk/io/HunkRegion.java
+++ b/src/main/java/com/volmit/iris/engine/hunk/io/HunkRegion.java
@@ -19,7 +19,11 @@
package com.volmit.iris.engine.hunk.io;
import com.volmit.iris.Iris;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.oldnbt.CompoundTag;
+import com.volmit.iris.util.oldnbt.NBTInputStream;
+import com.volmit.iris.util.oldnbt.NBTOutputStream;
+import com.volmit.iris.util.oldnbt.Tag;
import java.io.File;
import java.io.FileInputStream;
diff --git a/src/main/java/com/volmit/iris/engine/hunk/io/HunkRegionSlice.java b/src/main/java/com/volmit/iris/engine/hunk/io/HunkRegionSlice.java
index 1185915a8..bda25045e 100644
--- a/src/main/java/com/volmit/iris/engine/hunk/io/HunkRegionSlice.java
+++ b/src/main/java/com/volmit/iris/engine/hunk/io/HunkRegionSlice.java
@@ -24,7 +24,16 @@ import com.volmit.iris.engine.hunk.Hunk;
import com.volmit.iris.engine.parallel.BurstExecutor;
import com.volmit.iris.engine.parallel.GridLock;
import com.volmit.iris.engine.parallel.MultiBurst;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.collection.KSet;
+import com.volmit.iris.util.function.Function2;
+import com.volmit.iris.util.function.Function3;
+import com.volmit.iris.util.math.ChunkPosition;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.util.oldnbt.ByteArrayTag;
+import com.volmit.iris.util.oldnbt.CompoundTag;
+import com.volmit.iris.util.oldnbt.Tag;
import org.bukkit.block.TileState;
import org.bukkit.block.data.BlockData;
diff --git a/src/main/java/com/volmit/iris/engine/hunk/io/PaletteHunkIOAdapter.java b/src/main/java/com/volmit/iris/engine/hunk/io/PaletteHunkIOAdapter.java
index b55d1f933..987dc26b5 100644
--- a/src/main/java/com/volmit/iris/engine/hunk/io/PaletteHunkIOAdapter.java
+++ b/src/main/java/com/volmit/iris/engine/hunk/io/PaletteHunkIOAdapter.java
@@ -21,7 +21,7 @@ package com.volmit.iris.engine.hunk.io;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.data.DataPalette;
import com.volmit.iris.engine.hunk.Hunk;
-import com.volmit.iris.util.Function3;
+import com.volmit.iris.util.function.Function3;
import java.io.*;
import java.util.concurrent.atomic.AtomicBoolean;
diff --git a/src/main/java/com/volmit/iris/engine/hunk/storage/MappedHunk.java b/src/main/java/com/volmit/iris/engine/hunk/storage/MappedHunk.java
index 81faef19f..69521a006 100644
--- a/src/main/java/com/volmit/iris/engine/hunk/storage/MappedHunk.java
+++ b/src/main/java/com/volmit/iris/engine/hunk/storage/MappedHunk.java
@@ -19,8 +19,8 @@
package com.volmit.iris.engine.hunk.storage;
import com.volmit.iris.engine.hunk.Hunk;
-import com.volmit.iris.util.Consumer4;
-import com.volmit.iris.util.KMap;
+import com.volmit.iris.util.function.Consumer4;
+import com.volmit.iris.util.collection.KMap;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/com/volmit/iris/engine/hunk/view/BiomeGridHunkView.java b/src/main/java/com/volmit/iris/engine/hunk/view/BiomeGridHunkView.java
index 43ac995be..d66cc5a8e 100644
--- a/src/main/java/com/volmit/iris/engine/hunk/view/BiomeGridHunkView.java
+++ b/src/main/java/com/volmit/iris/engine/hunk/view/BiomeGridHunkView.java
@@ -20,7 +20,7 @@ package com.volmit.iris.engine.hunk.view;
import com.volmit.iris.core.nms.INMS;
import com.volmit.iris.engine.hunk.Hunk;
-import com.volmit.iris.util.LinkedTerrainChunk;
+import com.volmit.iris.engine.data.chunk.LinkedTerrainChunk;
import lombok.Getter;
import org.bukkit.block.Biome;
import org.bukkit.generator.ChunkGenerator.BiomeGrid;
diff --git a/src/main/java/com/volmit/iris/engine/hunk/view/ListeningHunk.java b/src/main/java/com/volmit/iris/engine/hunk/view/ListeningHunk.java
index 00d29350b..0b8fcb15d 100644
--- a/src/main/java/com/volmit/iris/engine/hunk/view/ListeningHunk.java
+++ b/src/main/java/com/volmit/iris/engine/hunk/view/ListeningHunk.java
@@ -19,7 +19,7 @@
package com.volmit.iris.engine.hunk.view;
import com.volmit.iris.engine.hunk.Hunk;
-import com.volmit.iris.util.Consumer4;
+import com.volmit.iris.util.function.Consumer4;
@SuppressWarnings("ClassCanBeRecord")
public class ListeningHunk implements Hunk {
diff --git a/src/main/java/com/volmit/iris/util/InterpolationType.java b/src/main/java/com/volmit/iris/engine/interpolation/InterpolationType.java
similarity index 94%
rename from src/main/java/com/volmit/iris/util/InterpolationType.java
rename to src/main/java/com/volmit/iris/engine/interpolation/InterpolationType.java
index 5564d5ddd..6e6aa7604 100644
--- a/src/main/java/com/volmit/iris/util/InterpolationType.java
+++ b/src/main/java/com/volmit/iris/engine/interpolation/InterpolationType.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.interpolation;
public enum InterpolationType {
LINEAR,
diff --git a/src/main/java/com/volmit/iris/util/IrisInterpolation.java b/src/main/java/com/volmit/iris/engine/interpolation/IrisInterpolation.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/IrisInterpolation.java
rename to src/main/java/com/volmit/iris/engine/interpolation/IrisInterpolation.java
index 63d40e07a..1cd54f6d0 100644
--- a/src/main/java/com/volmit/iris/util/IrisInterpolation.java
+++ b/src/main/java/com/volmit/iris/engine/interpolation/IrisInterpolation.java
@@ -16,12 +16,15 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.interpolation;
import com.google.common.util.concurrent.AtomicDouble;
import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.engine.object.InterpolationMethod;
import com.volmit.iris.engine.object.NoiseStyle;
+import com.volmit.iris.util.function.NoiseProvider;
+import com.volmit.iris.util.function.NoiseProvider3;
+import com.volmit.iris.util.math.RNG;
public class IrisInterpolation {
public static double bezier(double t) {
diff --git a/src/main/java/com/volmit/iris/engine/jigsaw/PlannedPiece.java b/src/main/java/com/volmit/iris/engine/jigsaw/PlannedPiece.java
index 89c065336..0b652d5e7 100644
--- a/src/main/java/com/volmit/iris/engine/jigsaw/PlannedPiece.java
+++ b/src/main/java/com/volmit/iris/engine/jigsaw/PlannedPiece.java
@@ -20,11 +20,15 @@ package com.volmit.iris.engine.jigsaw;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.engine.object.*;
+import com.volmit.iris.engine.object.common.IObjectPlacer;
import com.volmit.iris.engine.object.tile.TileData;
import com.volmit.iris.engine.IrisWorlds;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.IrisAccess;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.math.AxisAlignedBB;
+import com.volmit.iris.util.math.BlockPosition;
+import com.volmit.iris.util.math.RNG;
import lombok.Data;
import org.bukkit.Material;
import org.bukkit.World;
diff --git a/src/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java b/src/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java
index 9cfdb289f..564fcbde8 100644
--- a/src/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java
+++ b/src/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java
@@ -25,10 +25,10 @@ import com.volmit.iris.engine.IrisWorlds;
import com.volmit.iris.engine.framework.EngineParallaxManager;
import com.volmit.iris.engine.framework.IrisAccess;
import com.volmit.iris.engine.parallax.ParallaxChunkMeta;
-import com.volmit.iris.util.IObjectPlacer;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.KMap;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.engine.object.common.IObjectPlacer;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.math.RNG;
import lombok.Data;
import org.bukkit.Axis;
import org.bukkit.Location;
diff --git a/src/main/java/com/volmit/iris/engine/modifier/IrisCaveModifier.java b/src/main/java/com/volmit/iris/engine/modifier/IrisCaveModifier.java
index ecce2f1e4..f799dccab 100644
--- a/src/main/java/com/volmit/iris/engine/modifier/IrisCaveModifier.java
+++ b/src/main/java/com/volmit/iris/engine/modifier/IrisCaveModifier.java
@@ -18,13 +18,17 @@
package com.volmit.iris.engine.modifier;
+import com.volmit.iris.engine.data.B;
import com.volmit.iris.engine.noise.FastNoiseDouble;
import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.engine.object.IrisCaveLayer;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.EngineAssignedModifier;
import com.volmit.iris.engine.hunk.Hunk;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.common.CaveResult;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
diff --git a/src/main/java/com/volmit/iris/engine/modifier/IrisDepositModifier.java b/src/main/java/com/volmit/iris/engine/modifier/IrisDepositModifier.java
index e156570c5..6fa281cb9 100644
--- a/src/main/java/com/volmit/iris/engine/modifier/IrisDepositModifier.java
+++ b/src/main/java/com/volmit/iris/engine/modifier/IrisDepositModifier.java
@@ -25,9 +25,9 @@ import com.volmit.iris.engine.object.IrisRegion;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.EngineAssignedModifier;
import com.volmit.iris.engine.hunk.Hunk;
-import com.volmit.iris.util.HeightMap;
-import com.volmit.iris.util.PrecisionStopwatch;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.data.HeightMap;
+import com.volmit.iris.util.scheduling.PrecisionStopwatch;
+import com.volmit.iris.util.math.RNG;
import org.bukkit.block.data.BlockData;
import org.bukkit.util.BlockVector;
diff --git a/src/main/java/com/volmit/iris/engine/modifier/IrisPostModifier.java b/src/main/java/com/volmit/iris/engine/modifier/IrisPostModifier.java
index 5d0402ee1..bcf037ad5 100644
--- a/src/main/java/com/volmit/iris/engine/modifier/IrisPostModifier.java
+++ b/src/main/java/com/volmit/iris/engine/modifier/IrisPostModifier.java
@@ -25,10 +25,10 @@ import com.volmit.iris.engine.framework.EngineAssignedModifier;
import com.volmit.iris.engine.hunk.Hunk;
import com.volmit.iris.engine.parallel.BurstExecutor;
import com.volmit.iris.engine.parallel.MultiBurst;
-import com.volmit.iris.util.B;
-import com.volmit.iris.util.CaveResult;
-import com.volmit.iris.util.PrecisionStopwatch;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.engine.data.B;
+import com.volmit.iris.engine.object.common.CaveResult;
+import com.volmit.iris.util.scheduling.PrecisionStopwatch;
+import com.volmit.iris.util.math.RNG;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
import org.bukkit.block.data.Levelled;
diff --git a/src/main/java/com/volmit/iris/engine/modifier/IrisRavineModifier.java b/src/main/java/com/volmit/iris/engine/modifier/IrisRavineModifier.java
index 7d64f063d..a323f9d2d 100644
--- a/src/main/java/com/volmit/iris/engine/modifier/IrisRavineModifier.java
+++ b/src/main/java/com/volmit/iris/engine/modifier/IrisRavineModifier.java
@@ -18,12 +18,17 @@
package com.volmit.iris.engine.modifier;
+import com.volmit.iris.engine.data.B;
import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.engine.object.NoiseStyle;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.EngineAssignedModifier;
import com.volmit.iris.engine.hunk.Hunk;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.math.BlockPosition;
+import com.volmit.iris.util.math.ChunkPosition;
+import com.volmit.iris.util.math.MathHelper;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
diff --git a/src/main/java/com/volmit/iris/engine/noise/CNG.java b/src/main/java/com/volmit/iris/engine/noise/CNG.java
index 04994a603..d0178cca1 100644
--- a/src/main/java/com/volmit/iris/engine/noise/CNG.java
+++ b/src/main/java/com/volmit/iris/engine/noise/CNG.java
@@ -19,10 +19,14 @@
package com.volmit.iris.engine.noise;
import com.volmit.iris.Iris;
+import com.volmit.iris.engine.object.common.IRare;
import com.volmit.iris.engine.stream.ProceduralStream;
import com.volmit.iris.engine.stream.arithmetic.FittedStream;
import com.volmit.iris.engine.stream.sources.CNGStream;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.function.NoiseInjector;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.engine.interpolation.IrisInterpolation;
import lombok.Data;
import java.util.List;
diff --git a/src/main/java/com/volmit/iris/engine/noise/CNGFactory.java b/src/main/java/com/volmit/iris/engine/noise/CNGFactory.java
index 299dcd45d..7d0f09bb9 100644
--- a/src/main/java/com/volmit/iris/engine/noise/CNGFactory.java
+++ b/src/main/java/com/volmit/iris/engine/noise/CNGFactory.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.noise;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.math.RNG;
@FunctionalInterface
public interface CNGFactory {
diff --git a/src/main/java/com/volmit/iris/engine/noise/CellGenerator.java b/src/main/java/com/volmit/iris/engine/noise/CellGenerator.java
index ee4c71d70..7fb04b3cc 100644
--- a/src/main/java/com/volmit/iris/engine/noise/CellGenerator.java
+++ b/src/main/java/com/volmit/iris/engine/noise/CellGenerator.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.noise;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.math.RNG;
import lombok.Getter;
import lombok.Setter;
diff --git a/src/main/java/com/volmit/iris/engine/noise/CellHeightNoise.java b/src/main/java/com/volmit/iris/engine/noise/CellHeightNoise.java
index 48748b186..e59d1d1c8 100644
--- a/src/main/java/com/volmit/iris/engine/noise/CellHeightNoise.java
+++ b/src/main/java/com/volmit/iris/engine/noise/CellHeightNoise.java
@@ -18,8 +18,8 @@
package com.volmit.iris.engine.noise;
-import com.volmit.iris.util.M;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.util.math.RNG;
public class CellHeightNoise implements NoiseGenerator {
private final FastNoiseDouble n;
diff --git a/src/main/java/com/volmit/iris/engine/noise/CellularNoise.java b/src/main/java/com/volmit/iris/engine/noise/CellularNoise.java
index dc707ba24..7c1f7a52b 100644
--- a/src/main/java/com/volmit/iris/engine/noise/CellularNoise.java
+++ b/src/main/java/com/volmit/iris/engine/noise/CellularNoise.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.noise;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.math.RNG;
public class CellularNoise implements NoiseGenerator {
private final FastNoise n;
diff --git a/src/main/java/com/volmit/iris/engine/noise/CubicNoise.java b/src/main/java/com/volmit/iris/engine/noise/CubicNoise.java
index b7591121b..b18a286ae 100644
--- a/src/main/java/com/volmit/iris/engine/noise/CubicNoise.java
+++ b/src/main/java/com/volmit/iris/engine/noise/CubicNoise.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.noise;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.math.RNG;
public class CubicNoise implements NoiseGenerator {
private final FastNoiseDouble n;
diff --git a/src/main/java/com/volmit/iris/engine/noise/FastNoise.java b/src/main/java/com/volmit/iris/engine/noise/FastNoise.java
index cdd91f7b3..79efb6d5d 100644
--- a/src/main/java/com/volmit/iris/engine/noise/FastNoise.java
+++ b/src/main/java/com/volmit/iris/engine/noise/FastNoise.java
@@ -18,8 +18,8 @@
package com.volmit.iris.engine.noise;
-import com.volmit.iris.util.Vector2f;
-import com.volmit.iris.util.Vector3f;
+import com.volmit.iris.util.math.Vector2f;
+import com.volmit.iris.util.math.Vector3f;
public class FastNoise {
public enum NoiseType {
diff --git a/src/main/java/com/volmit/iris/engine/noise/FastNoiseDouble.java b/src/main/java/com/volmit/iris/engine/noise/FastNoiseDouble.java
index 5a6f23dae..cc6812ffc 100644
--- a/src/main/java/com/volmit/iris/engine/noise/FastNoiseDouble.java
+++ b/src/main/java/com/volmit/iris/engine/noise/FastNoiseDouble.java
@@ -17,8 +17,8 @@
*/
package com.volmit.iris.engine.noise;
-import com.volmit.iris.util.Vector2f;
-import com.volmit.iris.util.Vector3f;
+import com.volmit.iris.util.math.Vector2f;
+import com.volmit.iris.util.math.Vector3f;
public class FastNoiseDouble {
public enum NoiseType {
diff --git a/src/main/java/com/volmit/iris/engine/noise/FractalBillowPerlinNoise.java b/src/main/java/com/volmit/iris/engine/noise/FractalBillowPerlinNoise.java
index 4fc526411..69fa458d4 100644
--- a/src/main/java/com/volmit/iris/engine/noise/FractalBillowPerlinNoise.java
+++ b/src/main/java/com/volmit/iris/engine/noise/FractalBillowPerlinNoise.java
@@ -19,7 +19,7 @@
package com.volmit.iris.engine.noise;
import com.volmit.iris.engine.noise.FastNoiseDouble.FractalType;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.math.RNG;
public class FractalBillowPerlinNoise implements NoiseGenerator, OctaveNoise {
private final FastNoiseDouble n;
diff --git a/src/main/java/com/volmit/iris/engine/noise/FractalBillowSimplexNoise.java b/src/main/java/com/volmit/iris/engine/noise/FractalBillowSimplexNoise.java
index a92626b79..163bc19c2 100644
--- a/src/main/java/com/volmit/iris/engine/noise/FractalBillowSimplexNoise.java
+++ b/src/main/java/com/volmit/iris/engine/noise/FractalBillowSimplexNoise.java
@@ -19,7 +19,7 @@
package com.volmit.iris.engine.noise;
import com.volmit.iris.engine.noise.FastNoiseDouble.FractalType;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.math.RNG;
public class FractalBillowSimplexNoise implements NoiseGenerator, OctaveNoise {
private final FastNoiseDouble n;
diff --git a/src/main/java/com/volmit/iris/engine/noise/FractalCubicNoise.java b/src/main/java/com/volmit/iris/engine/noise/FractalCubicNoise.java
index 31381f818..5699c5ab1 100644
--- a/src/main/java/com/volmit/iris/engine/noise/FractalCubicNoise.java
+++ b/src/main/java/com/volmit/iris/engine/noise/FractalCubicNoise.java
@@ -19,7 +19,7 @@
package com.volmit.iris.engine.noise;
import com.volmit.iris.engine.noise.FastNoiseDouble.FractalType;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.math.RNG;
public class FractalCubicNoise implements NoiseGenerator {
private final FastNoiseDouble n;
diff --git a/src/main/java/com/volmit/iris/engine/noise/FractalFBMSimplexNoise.java b/src/main/java/com/volmit/iris/engine/noise/FractalFBMSimplexNoise.java
index b04ed19d7..50bb9807a 100644
--- a/src/main/java/com/volmit/iris/engine/noise/FractalFBMSimplexNoise.java
+++ b/src/main/java/com/volmit/iris/engine/noise/FractalFBMSimplexNoise.java
@@ -19,7 +19,7 @@
package com.volmit.iris.engine.noise;
import com.volmit.iris.engine.noise.FastNoiseDouble.FractalType;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.math.RNG;
public class FractalFBMSimplexNoise implements NoiseGenerator, OctaveNoise {
private final FastNoiseDouble n;
diff --git a/src/main/java/com/volmit/iris/engine/noise/FractalRigidMultiSimplexNoise.java b/src/main/java/com/volmit/iris/engine/noise/FractalRigidMultiSimplexNoise.java
index 1bc190da5..daf1ebb60 100644
--- a/src/main/java/com/volmit/iris/engine/noise/FractalRigidMultiSimplexNoise.java
+++ b/src/main/java/com/volmit/iris/engine/noise/FractalRigidMultiSimplexNoise.java
@@ -19,7 +19,7 @@
package com.volmit.iris.engine.noise;
import com.volmit.iris.engine.noise.FastNoiseDouble.FractalType;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.math.RNG;
public class FractalRigidMultiSimplexNoise implements NoiseGenerator, OctaveNoise {
private final FastNoiseDouble n;
diff --git a/src/main/java/com/volmit/iris/engine/noise/GlobNoise.java b/src/main/java/com/volmit/iris/engine/noise/GlobNoise.java
index a4aa476f2..a0d890e21 100644
--- a/src/main/java/com/volmit/iris/engine/noise/GlobNoise.java
+++ b/src/main/java/com/volmit/iris/engine/noise/GlobNoise.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.noise;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.math.RNG;
public class GlobNoise implements NoiseGenerator {
private final FastNoiseDouble n;
diff --git a/src/main/java/com/volmit/iris/engine/noise/PerlinNoise.java b/src/main/java/com/volmit/iris/engine/noise/PerlinNoise.java
index 5c239c705..a216624f4 100644
--- a/src/main/java/com/volmit/iris/engine/noise/PerlinNoise.java
+++ b/src/main/java/com/volmit/iris/engine/noise/PerlinNoise.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.noise;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.math.RNG;
public class PerlinNoise implements NoiseGenerator, OctaveNoise {
private final FastNoiseDouble n;
diff --git a/src/main/java/com/volmit/iris/engine/noise/RarityCellGenerator.java b/src/main/java/com/volmit/iris/engine/noise/RarityCellGenerator.java
index 99c94b5a1..1133ca030 100644
--- a/src/main/java/com/volmit/iris/engine/noise/RarityCellGenerator.java
+++ b/src/main/java/com/volmit/iris/engine/noise/RarityCellGenerator.java
@@ -18,9 +18,9 @@
package com.volmit.iris.engine.noise;
-import com.volmit.iris.util.IRare;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.engine.object.common.IRare;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.math.RNG;
public class RarityCellGenerator extends CellGenerator {
public RarityCellGenerator(RNG rng) {
diff --git a/src/main/java/com/volmit/iris/engine/noise/SimplexNoise.java b/src/main/java/com/volmit/iris/engine/noise/SimplexNoise.java
index 74eacbc11..06a30942d 100644
--- a/src/main/java/com/volmit/iris/engine/noise/SimplexNoise.java
+++ b/src/main/java/com/volmit/iris/engine/noise/SimplexNoise.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.noise;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.math.RNG;
public class SimplexNoise implements NoiseGenerator, OctaveNoise {
private final FastNoiseDouble n;
diff --git a/src/main/java/com/volmit/iris/engine/noise/VascularNoise.java b/src/main/java/com/volmit/iris/engine/noise/VascularNoise.java
index 54ecf56e5..b9c2a7304 100644
--- a/src/main/java/com/volmit/iris/engine/noise/VascularNoise.java
+++ b/src/main/java/com/volmit/iris/engine/noise/VascularNoise.java
@@ -18,8 +18,8 @@
package com.volmit.iris.engine.noise;
-import com.volmit.iris.util.M;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.util.math.RNG;
public class VascularNoise implements NoiseGenerator {
private final FastNoiseDouble n;
diff --git a/src/main/java/com/volmit/iris/engine/noise/WhiteNoise.java b/src/main/java/com/volmit/iris/engine/noise/WhiteNoise.java
index 005ee76b6..0c1c7230c 100644
--- a/src/main/java/com/volmit/iris/engine/noise/WhiteNoise.java
+++ b/src/main/java/com/volmit/iris/engine/noise/WhiteNoise.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.noise;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.util.math.RNG;
public class WhiteNoise implements NoiseGenerator {
private final FastNoise n;
diff --git a/src/main/java/com/volmit/iris/engine/object/CarvingMode.java b/src/main/java/com/volmit/iris/engine/object/CarvingMode.java
index 1da9b79b0..02c335e91 100644
--- a/src/main/java/com/volmit/iris/engine/object/CarvingMode.java
+++ b/src/main/java/com/volmit/iris/engine/object/CarvingMode.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
+import com.volmit.iris.engine.object.annotations.Desc;
@Desc("Defines if an object is allowed to place in carvings, surfaces or both.")
public enum CarvingMode {
diff --git a/src/main/java/com/volmit/iris/engine/object/DecorationPart.java b/src/main/java/com/volmit/iris/engine/object/DecorationPart.java
index e0df89cb3..14ff152fd 100644
--- a/src/main/java/com/volmit/iris/engine/object/DecorationPart.java
+++ b/src/main/java/com/volmit/iris/engine/object/DecorationPart.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
+import com.volmit.iris.engine.object.annotations.Desc;
@Desc("Represents a location where decorations should go")
public enum DecorationPart {
diff --git a/src/main/java/com/volmit/iris/engine/object/FontStyle.java b/src/main/java/com/volmit/iris/engine/object/FontStyle.java
index eef5ef5ce..2537fc39f 100644
--- a/src/main/java/com/volmit/iris/engine/object/FontStyle.java
+++ b/src/main/java/com/volmit/iris/engine/object/FontStyle.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
+import com.volmit.iris.engine.object.annotations.Desc;
@Desc("Represents a basic font style to apply to a font family")
public enum FontStyle {
diff --git a/src/main/java/com/volmit/iris/engine/object/InferredType.java b/src/main/java/com/volmit/iris/engine/object/InferredType.java
index 2346e3393..4c4cff0bc 100644
--- a/src/main/java/com/volmit/iris/engine/object/InferredType.java
+++ b/src/main/java/com/volmit/iris/engine/object/InferredType.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
+import com.volmit.iris.engine.object.annotations.Desc;
@Desc("Represents a biome type")
public enum InferredType {
diff --git a/src/main/java/com/volmit/iris/engine/object/InterpolationMethod.java b/src/main/java/com/volmit/iris/engine/object/InterpolationMethod.java
index 8e791e3a1..307e53454 100644
--- a/src/main/java/com/volmit/iris/engine/object/InterpolationMethod.java
+++ b/src/main/java/com/volmit/iris/engine/object/InterpolationMethod.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
+import com.volmit.iris.engine.object.annotations.Desc;
@Desc("An interpolation method (or function) is simply a method of smoothing a position based on surrounding points on a grid. Bicubic for example is smoother, but has 4 times the checks than Bilinear for example. Try using BILINEAR_STARCAST_9 for beautiful results.")
public enum InterpolationMethod {
diff --git a/src/main/java/com/volmit/iris/engine/object/InventorySlotType.java b/src/main/java/com/volmit/iris/engine/object/InventorySlotType.java
index 2ec30c676..3853c70ed 100644
--- a/src/main/java/com/volmit/iris/engine/object/InventorySlotType.java
+++ b/src/main/java/com/volmit/iris/engine/object/InventorySlotType.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
+import com.volmit.iris.engine.object.annotations.Desc;
@Desc("An inventory slot type is used to represent a type of slot for items to fit into in any given inventory.")
public enum InventorySlotType {
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisAttributeModifier.java b/src/main/java/com/volmit/iris/engine/object/IrisAttributeModifier.java
index 1b1ac7619..84f800496 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisAttributeModifier.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisAttributeModifier.java
@@ -18,7 +18,11 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MaxNumber;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.engine.object.annotations.Required;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisAxisRotationClamp.java b/src/main/java/com/volmit/iris/engine/object/IrisAxisRotationClamp.java
index 33aad0409..deb7c9062 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisAxisRotationClamp.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisAxisRotationClamp.java
@@ -18,7 +18,8 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.*;
+import com.volmit.iris.util.math.M;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBiome.java b/src/main/java/com/volmit/iris/engine/object/IrisBiome.java
index cbce828f8..40c329e1d 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisBiome.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisBiome.java
@@ -20,6 +20,7 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.IrisComplex;
+import com.volmit.iris.engine.data.B;
import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.gui.RenderType;
@@ -27,7 +28,14 @@ import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.data.DataProvider;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.IrisAccess;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.*;
+import com.volmit.iris.engine.object.common.IRare;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.collection.KSet;
+import com.volmit.iris.util.data.VanillaBiomeMap;
+import com.volmit.iris.util.inventorygui.RandomColor;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustom.java b/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustom.java
index 36186adf4..f233049cf 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustom.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustom.java
@@ -19,7 +19,11 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.json.JSONArray;
+import com.volmit.iris.util.json.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomCategory.java b/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomCategory.java
index 15b80d413..63a2582ec 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomCategory.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomCategory.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
+import com.volmit.iris.engine.object.annotations.Desc;
@Desc("The custom biome category. Vanilla asks for this, basically what represents your biome closest?")
public enum IrisBiomeCustomCategory {
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomParticle.java b/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomParticle.java
index 9d30bc0e2..ead12db8b 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomParticle.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomParticle.java
@@ -18,7 +18,10 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MaxNumber;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.engine.object.annotations.Required;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomPrecipType.java b/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomPrecipType.java
index f10717bf1..de004136b 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomPrecipType.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomPrecipType.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
+import com.volmit.iris.engine.object.annotations.Desc;
@Desc("Snow, rain, or nothing")
public enum IrisBiomeCustomPrecipType {
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomSpawn.java b/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomSpawn.java
index 1632dc090..f98c73f05 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomSpawn.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomSpawn.java
@@ -18,10 +18,10 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
-import com.volmit.iris.util.MaxNumber;
-import com.volmit.iris.util.MinNumber;
-import com.volmit.iris.util.Required;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MaxNumber;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.engine.object.annotations.Required;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomSpawnType.java b/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomSpawnType.java
index e1a8a0d6a..243f1a602 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomSpawnType.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisBiomeCustomSpawnType.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
+import com.volmit.iris.engine.object.annotations.Desc;
@Desc("The mob spawn group")
public enum IrisBiomeCustomSpawnType {
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBiomeGeneratorLink.java b/src/main/java/com/volmit/iris/engine/object/IrisBiomeGeneratorLink.java
index 7fa037a1b..b80b4992f 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisBiomeGeneratorLink.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisBiomeGeneratorLink.java
@@ -20,7 +20,8 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.data.DataProvider;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.*;
+import com.volmit.iris.engine.interpolation.IrisInterpolation;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBiomeMutation.java b/src/main/java/com/volmit/iris/engine/object/IrisBiomeMutation.java
index 2c480d187..0b5599b37 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisBiomeMutation.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisBiomeMutation.java
@@ -20,7 +20,9 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.data.DataProvider;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KSet;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBiomePaletteLayer.java b/src/main/java/com/volmit/iris/engine/object/IrisBiomePaletteLayer.java
index 15be39f5d..e49fc2760 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisBiomePaletteLayer.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisBiomePaletteLayer.java
@@ -21,7 +21,9 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBlockData.java b/src/main/java/com/volmit/iris/engine/object/IrisBlockData.java
index 8e4cd3c5f..e2af27814 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisBlockData.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisBlockData.java
@@ -21,7 +21,10 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.data.B;
+import com.volmit.iris.engine.object.annotations.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBlockDrops.java b/src/main/java/com/volmit/iris/engine/object/IrisBlockDrops.java
index 296ef3897..ae26bb322 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisBlockDrops.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisBlockDrops.java
@@ -20,7 +20,11 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.ArrayType;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.Required;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisCarveLayer.java b/src/main/java/com/volmit/iris/engine/object/IrisCarveLayer.java
index bb072aa03..c4740973e 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisCarveLayer.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisCarveLayer.java
@@ -20,7 +20,13 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MaxNumber;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.engine.object.annotations.Required;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.engine.interpolation.IrisInterpolation;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisCaveFluid.java b/src/main/java/com/volmit/iris/engine/object/IrisCaveFluid.java
index 89f2ef141..ac781064f 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisCaveFluid.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisCaveFluid.java
@@ -20,7 +20,11 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.data.B;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MaxNumber;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.engine.object.annotations.Required;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisCaveLayer.java b/src/main/java/com/volmit/iris/engine/object/IrisCaveLayer.java
index ea1c19fb3..f3d95aefd 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisCaveLayer.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisCaveLayer.java
@@ -18,9 +18,9 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
-import com.volmit.iris.util.MinNumber;
-import com.volmit.iris.util.Required;
+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 lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisColor.java b/src/main/java/com/volmit/iris/engine/object/IrisColor.java
index 0a3259f32..ef137c5d4 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisColor.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisColor.java
@@ -20,9 +20,9 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.Desc;
-import com.volmit.iris.util.MaxNumber;
-import com.volmit.iris.util.MinNumber;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MaxNumber;
+import com.volmit.iris.engine.object.annotations.MinNumber;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisCompat.java b/src/main/java/com/volmit/iris/engine/object/IrisCompat.java
index 31992beb7..8f9a7dfde 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisCompat.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisCompat.java
@@ -21,7 +21,11 @@ package com.volmit.iris.engine.object;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.volmit.iris.Iris;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.data.B;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.io.IO;
+import com.volmit.iris.util.json.JSONObject;
+import com.volmit.iris.util.scheduling.J;
import lombok.Data;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisCompatabilityBlockFilter.java b/src/main/java/com/volmit/iris/engine/object/IrisCompatabilityBlockFilter.java
index 12274840b..32caf83c6 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisCompatabilityBlockFilter.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisCompatabilityBlockFilter.java
@@ -20,9 +20,9 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.B;
-import com.volmit.iris.util.Desc;
-import com.volmit.iris.util.Required;
+import com.volmit.iris.engine.data.B;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.Required;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisCompatabilityItemFilter.java b/src/main/java/com/volmit/iris/engine/object/IrisCompatabilityItemFilter.java
index 5c47f274e..7c6b706b3 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisCompatabilityItemFilter.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisCompatabilityItemFilter.java
@@ -20,9 +20,9 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.B;
-import com.volmit.iris.util.Desc;
-import com.volmit.iris.util.Required;
+import com.volmit.iris.engine.data.B;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.Required;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisDecorator.java b/src/main/java/com/volmit/iris/engine/object/IrisDecorator.java
index 2d8760271..d2c10e6c6 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisDecorator.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisDecorator.java
@@ -22,7 +22,9 @@ import com.volmit.iris.Iris;
import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisDepositGenerator.java b/src/main/java/com/volmit/iris/engine/object/IrisDepositGenerator.java
index 0b4692c91..29ef5a82e 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisDepositGenerator.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisDepositGenerator.java
@@ -20,7 +20,9 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisDimension.java b/src/main/java/com/volmit/iris/engine/object/IrisDimension.java
index cefff2d21..9e455a7c9 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisDimension.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisDimension.java
@@ -23,7 +23,11 @@ import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.data.DataProvider;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.io.IO;
+import com.volmit.iris.util.math.ChunkPosition;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisDimensionIndex.java b/src/main/java/com/volmit/iris/engine/object/IrisDimensionIndex.java
index dc4e70a2d..8f43d8cfe 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisDimensionIndex.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisDimensionIndex.java
@@ -18,10 +18,10 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
-import com.volmit.iris.util.MinNumber;
-import com.volmit.iris.util.RegistryListDimension;
-import com.volmit.iris.util.Required;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.engine.object.annotations.RegistryListDimension;
+import com.volmit.iris.engine.object.annotations.Required;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisDirection.java b/src/main/java/com/volmit/iris/engine/object/IrisDirection.java
index 4269d315f..b812c0a0d 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisDirection.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisDirection.java
@@ -18,8 +18,13 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Cuboid.CuboidDirection;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.util.collection.GBiset;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.data.Cuboid.CuboidDirection;
+import com.volmit.iris.util.math.DOP;
+import com.volmit.iris.util.math.VectorMath;
import org.bukkit.Axis;
import org.bukkit.block.BlockFace;
import org.bukkit.block.data.type.Jigsaw;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisEffect.java b/src/main/java/com/volmit/iris/engine/object/IrisEffect.java
index a4e4ff35a..7d55ac6e6 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisEffect.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisEffect.java
@@ -21,7 +21,10 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.framework.GeneratorAccess;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.*;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.util.scheduling.ChronoLatch;
+import com.volmit.iris.util.scheduling.J;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisEnchantment.java b/src/main/java/com/volmit/iris/engine/object/IrisEnchantment.java
index e87c70efb..fb16319fb 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisEnchantment.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisEnchantment.java
@@ -19,7 +19,11 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MaxNumber;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.engine.object.annotations.Required;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisEntity.java b/src/main/java/com/volmit/iris/engine/object/IrisEntity.java
index 2d3a4630f..f2256a2a6 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisEntity.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisEntity.java
@@ -20,7 +20,15 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.framework.Engine;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.ArrayType;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.RegistryListMythical;
+import com.volmit.iris.engine.object.annotations.Required;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.format.C;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.util.scheduling.J;
+import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisEntityInitialSpawn.java b/src/main/java/com/volmit/iris/engine/object/IrisEntityInitialSpawn.java
index ee98770da..8feff8a42 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisEntityInitialSpawn.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisEntityInitialSpawn.java
@@ -20,7 +20,11 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.framework.Engine;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.engine.object.annotations.RegistryListEntity;
+import com.volmit.iris.engine.object.annotations.Required;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisEntitySpawnOverride.java b/src/main/java/com/volmit/iris/engine/object/IrisEntitySpawnOverride.java
index e53626900..488cb519a 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisEntitySpawnOverride.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisEntitySpawnOverride.java
@@ -20,7 +20,11 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.framework.Engine;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.engine.object.annotations.RegistryListEntity;
+import com.volmit.iris.engine.object.annotations.Required;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisFeature.java b/src/main/java/com/volmit/iris/engine/object/IrisFeature.java
index 3bd8f6977..3dc2a209e 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisFeature.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisFeature.java
@@ -20,7 +20,11 @@ package com.volmit.iris.engine.object;
import com.google.gson.Gson;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MaxNumber;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.engine.object.annotations.Required;
+import com.volmit.iris.engine.interpolation.IrisInterpolation;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisFeaturePositional.java b/src/main/java/com/volmit/iris/engine/object/IrisFeaturePositional.java
index 78ed396c4..0a7d92c49 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisFeaturePositional.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisFeaturePositional.java
@@ -20,7 +20,11 @@ package com.volmit.iris.engine.object;
import com.google.gson.Gson;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.Required;
+import com.volmit.iris.util.function.NoiseProvider;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.engine.interpolation.IrisInterpolation;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisFeaturePotential.java b/src/main/java/com/volmit/iris/engine/object/IrisFeaturePotential.java
index 552900560..71b255a83 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisFeaturePotential.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisFeaturePotential.java
@@ -18,10 +18,10 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
-import com.volmit.iris.util.MinNumber;
-import com.volmit.iris.util.RNG;
-import com.volmit.iris.util.Required;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.engine.object.annotations.Required;
import lombok.Data;
@Data
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisGenerator.java b/src/main/java/com/volmit/iris/engine/object/IrisGenerator.java
index 925958ace..51322f573 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisGenerator.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisGenerator.java
@@ -21,7 +21,11 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.noise.CellGenerator;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.*;
+import com.volmit.iris.engine.object.common.IRare;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.engine.interpolation.IrisInterpolation;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisGeneratorStyle.java b/src/main/java/com/volmit/iris/engine/object/IrisGeneratorStyle.java
index c735a1656..b1fa5ef25 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisGeneratorStyle.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisGeneratorStyle.java
@@ -20,7 +20,11 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MaxNumber;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.engine.object.annotations.Required;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisInterpolator.java b/src/main/java/com/volmit/iris/engine/object/IrisInterpolator.java
index 22bc50cb4..b3f1e9db3 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisInterpolator.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisInterpolator.java
@@ -18,7 +18,12 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MaxNumber;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.engine.object.annotations.Required;
+import com.volmit.iris.util.function.NoiseProvider;
+import com.volmit.iris.engine.interpolation.IrisInterpolation;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisJigsawPiece.java b/src/main/java/com/volmit/iris/engine/object/IrisJigsawPiece.java
index ae211b4d2..0b990e057 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisJigsawPiece.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisJigsawPiece.java
@@ -20,7 +20,11 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.ArrayType;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.RegistryListObject;
+import com.volmit.iris.engine.object.annotations.Required;
+import com.volmit.iris.util.collection.KList;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisJigsawPieceConnector.java b/src/main/java/com/volmit/iris/engine/object/IrisJigsawPieceConnector.java
index 35f3a6de7..4903b0152 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisJigsawPieceConnector.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisJigsawPieceConnector.java
@@ -18,7 +18,8 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.*;
+import com.volmit.iris.util.collection.KList;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisJigsawPlacement.java b/src/main/java/com/volmit/iris/engine/object/IrisJigsawPlacement.java
index 305bab2db..22aad349d 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisJigsawPlacement.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisJigsawPlacement.java
@@ -18,10 +18,10 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
-import com.volmit.iris.util.MinNumber;
-import com.volmit.iris.util.RegistryListJigsaw;
-import com.volmit.iris.util.Required;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.engine.object.annotations.RegistryListJigsaw;
+import com.volmit.iris.engine.object.annotations.Required;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisJigsawPool.java b/src/main/java/com/volmit/iris/engine/object/IrisJigsawPool.java
index 7ba8c1f1d..3b9d53a6f 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisJigsawPool.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisJigsawPool.java
@@ -18,7 +18,11 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.ArrayType;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.RegistryListJigsawPiece;
+import com.volmit.iris.engine.object.annotations.Required;
+import com.volmit.iris.util.collection.KList;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructure.java b/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructure.java
index 18f71eec3..9df8e9a07 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructure.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructure.java
@@ -20,7 +20,8 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.*;
+import com.volmit.iris.util.collection.KList;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructurePlacement.java b/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructurePlacement.java
index 8709a30c0..c55349beb 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructurePlacement.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisJigsawStructurePlacement.java
@@ -18,9 +18,9 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
-import com.volmit.iris.util.RegistryListJigsaw;
-import com.volmit.iris.util.Required;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.RegistryListJigsaw;
+import com.volmit.iris.engine.object.annotations.Required;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisLoot.java b/src/main/java/com/volmit/iris/engine/object/IrisLoot.java
index 4ad9c121c..ac880b188 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisLoot.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisLoot.java
@@ -19,9 +19,14 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
+import com.volmit.iris.engine.data.B;
import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.format.C;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisLootReference.java b/src/main/java/com/volmit/iris/engine/object/IrisLootReference.java
index f2414b2e3..a471888a4 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisLootReference.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisLootReference.java
@@ -20,7 +20,11 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.data.DataProvider;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.ArrayType;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.engine.object.annotations.RegistryListLoot;
+import com.volmit.iris.util.collection.KList;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisLootTable.java b/src/main/java/com/volmit/iris/engine/object/IrisLootTable.java
index 0bfdaefb5..089927f80 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisLootTable.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisLootTable.java
@@ -18,7 +18,12 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.ArrayType;
+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.util.collection.KList;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisMaterialPalette.java b/src/main/java/com/volmit/iris/engine/object/IrisMaterialPalette.java
index 04224b1a0..3b36d93fb 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisMaterialPalette.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisMaterialPalette.java
@@ -21,7 +21,12 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.ArrayType;
+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.util.collection.KList;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisNoiseGenerator.java b/src/main/java/com/volmit/iris/engine/object/IrisNoiseGenerator.java
index 59ac3656b..754c33ac8 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisNoiseGenerator.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisNoiseGenerator.java
@@ -20,7 +20,13 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.ArrayType;
+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.util.collection.KList;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.engine.interpolation.IrisInterpolation;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObject.java b/src/main/java/com/volmit/iris/engine/object/IrisObject.java
index ded1dd271..a40726e07 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisObject.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisObject.java
@@ -20,9 +20,19 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
+import com.volmit.iris.engine.data.B;
+import com.volmit.iris.engine.object.common.CarveResult;
+import com.volmit.iris.engine.object.common.IObjectPlacer;
import com.volmit.iris.engine.object.tile.TileData;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.math.AxisAlignedBB;
+import com.volmit.iris.util.math.BlockPosition;
+import com.volmit.iris.util.math.ChunkPosition;
+import com.volmit.iris.util.math.RNG;
+import com.volmit.iris.engine.interpolation.IrisInterpolation;
+import com.volmit.iris.util.scheduling.IrisLock;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObjectLimit.java b/src/main/java/com/volmit/iris/engine/object/IrisObjectLimit.java
index 3d8059b0f..516323a08 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisObjectLimit.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisObjectLimit.java
@@ -18,9 +18,9 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
-import com.volmit.iris.util.MaxNumber;
-import com.volmit.iris.util.MinNumber;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MaxNumber;
+import com.volmit.iris.engine.object.annotations.MinNumber;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObjectLoot.java b/src/main/java/com/volmit/iris/engine/object/IrisObjectLoot.java
index 793263763..303d717ec 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisObjectLoot.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisObjectLoot.java
@@ -20,7 +20,11 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.ArrayType;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.RegistryListLoot;
+import com.volmit.iris.engine.object.annotations.Required;
+import com.volmit.iris.util.collection.KList;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacement.java b/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacement.java
index fa8d6a73b..e89f5b8a4 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacement.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacement.java
@@ -19,11 +19,16 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
+import com.volmit.iris.engine.data.B;
import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.data.DataProvider;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.data.WeightedRandom;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacementScaleInterpolator.java b/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacementScaleInterpolator.java
index 08cc7384f..e25242b47 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacementScaleInterpolator.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacementScaleInterpolator.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
+import com.volmit.iris.engine.object.annotations.Desc;
@Desc("Use 3D Interpolation on scaled objects if they are larger than the origin.")
public enum IrisObjectPlacementScaleInterpolator {
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObjectReplace.java b/src/main/java/com/volmit/iris/engine/object/IrisObjectReplace.java
index d50d7e78a..a72e2053e 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisObjectReplace.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisObjectReplace.java
@@ -21,7 +21,9 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObjectRotation.java b/src/main/java/com/volmit/iris/engine/object/IrisObjectRotation.java
index 808dd4ca4..8dfe7b381 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisObjectRotation.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisObjectRotation.java
@@ -19,8 +19,8 @@
package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
-import com.volmit.iris.util.Desc;
-import com.volmit.iris.util.KList;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.util.collection.KList;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObjectScale.java b/src/main/java/com/volmit/iris/engine/object/IrisObjectScale.java
index f504053d1..5f366478d 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisObjectScale.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisObjectScale.java
@@ -19,7 +19,11 @@
package com.volmit.iris.engine.object;
import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MaxNumber;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObjectTranslate.java b/src/main/java/com/volmit/iris/engine/object/IrisObjectTranslate.java
index 12eb9c85d..d2ab83395 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisObjectTranslate.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisObjectTranslate.java
@@ -18,10 +18,10 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
-import com.volmit.iris.util.MaxNumber;
-import com.volmit.iris.util.MinNumber;
-import com.volmit.iris.util.Required;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MaxNumber;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.engine.object.annotations.Required;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisPosition.java b/src/main/java/com/volmit/iris/engine/object/IrisPosition.java
index cb48a4176..ac6be37bf 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisPosition.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisPosition.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
+import com.volmit.iris.engine.object.annotations.Desc;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisPosition2D.java b/src/main/java/com/volmit/iris/engine/object/IrisPosition2D.java
index cb217ea30..a08e1021a 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisPosition2D.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisPosition2D.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
+import com.volmit.iris.engine.object.annotations.Desc;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisPotionEffect.java b/src/main/java/com/volmit/iris/engine/object/IrisPotionEffect.java
index 9ca90b5cf..79891f826 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisPotionEffect.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisPotionEffect.java
@@ -20,10 +20,10 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.Desc;
-import com.volmit.iris.util.MaxNumber;
-import com.volmit.iris.util.MinNumber;
-import com.volmit.iris.util.Required;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MaxNumber;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.engine.object.annotations.Required;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisRange.java b/src/main/java/com/volmit/iris/engine/object/IrisRange.java
index a26bd3317..5b35b3dcc 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisRange.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisRange.java
@@ -18,8 +18,8 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisRareObject.java b/src/main/java/com/volmit/iris/engine/object/IrisRareObject.java
index 6064a99dc..d2bdc0983 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisRareObject.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisRareObject.java
@@ -18,10 +18,10 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
-import com.volmit.iris.util.MinNumber;
-import com.volmit.iris.util.RegistryListObject;
-import com.volmit.iris.util.Required;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.engine.object.annotations.RegistryListObject;
+import com.volmit.iris.engine.object.annotations.Required;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisRegion.java b/src/main/java/com/volmit/iris/engine/object/IrisRegion.java
index 5531b8a33..ffc3df4db 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisRegion.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisRegion.java
@@ -24,7 +24,14 @@ import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.core.gui.RenderType;
import com.volmit.iris.engine.cache.AtomicCache;
import com.volmit.iris.engine.data.DataProvider;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.*;
+import com.volmit.iris.engine.object.common.IRare;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.collection.KSet;
+import com.volmit.iris.util.data.VanillaBiomeMap;
+import com.volmit.iris.util.inventorygui.RandomColor;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisRegionRidge.java b/src/main/java/com/volmit/iris/engine/object/IrisRegionRidge.java
index d3c190f29..e0af1a8ab 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisRegionRidge.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisRegionRidge.java
@@ -20,7 +20,8 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.noise.CellGenerator;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.*;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisRegionSpot.java b/src/main/java/com/volmit/iris/engine/object/IrisRegionSpot.java
index 42eb82a80..97f26f132 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisRegionSpot.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisRegionSpot.java
@@ -20,7 +20,11 @@ package com.volmit.iris.engine.object;
import com.volmit.iris.engine.noise.CellGenerator;
import com.volmit.iris.engine.cache.AtomicCache;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.engine.object.annotations.RegistryListBiome;
+import com.volmit.iris.engine.object.annotations.Required;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisShapedGeneratorStyle.java b/src/main/java/com/volmit/iris/engine/object/IrisShapedGeneratorStyle.java
index a253778e4..f07e44351 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisShapedGeneratorStyle.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisShapedGeneratorStyle.java
@@ -18,7 +18,11 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.*;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MaxNumber;
+import com.volmit.iris.engine.object.annotations.MinNumber;
+import com.volmit.iris.engine.object.annotations.Required;
+import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/IrisSlopeClip.java b/src/main/java/com/volmit/iris/engine/object/IrisSlopeClip.java
index 4112a0971..23851f586 100644
--- a/src/main/java/com/volmit/iris/engine/object/IrisSlopeClip.java
+++ b/src/main/java/com/volmit/iris/engine/object/IrisSlopeClip.java
@@ -18,9 +18,9 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
-import com.volmit.iris.util.MaxNumber;
-import com.volmit.iris.util.MinNumber;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.engine.object.annotations.MaxNumber;
+import com.volmit.iris.engine.object.annotations.MinNumber;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/volmit/iris/engine/object/LootMode.java b/src/main/java/com/volmit/iris/engine/object/LootMode.java
index c6a273454..fa4f205c4 100644
--- a/src/main/java/com/volmit/iris/engine/object/LootMode.java
+++ b/src/main/java/com/volmit/iris/engine/object/LootMode.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
+import com.volmit.iris.engine.object.annotations.Desc;
@Desc("A loot mode is used to descrive what to do with the existing loot layers before adding this loot. Using ADD will simply add this table to the building list of tables (i.e. add dimension tables, region tables then biome tables). By using clear or replace, you remove the parent tables before and add just your tables.")
public enum LootMode {
diff --git a/src/main/java/com/volmit/iris/engine/object/NoiseStyle.java b/src/main/java/com/volmit/iris/engine/object/NoiseStyle.java
index 8c459f69c..dfe0e4e62 100644
--- a/src/main/java/com/volmit/iris/engine/object/NoiseStyle.java
+++ b/src/main/java/com/volmit/iris/engine/object/NoiseStyle.java
@@ -22,8 +22,8 @@ import com.volmit.iris.engine.noise.CNG;
import com.volmit.iris.engine.noise.CNGFactory;
import com.volmit.iris.engine.noise.NoiseType;
import com.volmit.iris.engine.stream.ProceduralStream;
-import com.volmit.iris.util.Desc;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.engine.object.annotations.Desc;
+import com.volmit.iris.util.math.RNG;
@Desc("Styles of noise")
diff --git a/src/main/java/com/volmit/iris/engine/object/ObjectPlaceMode.java b/src/main/java/com/volmit/iris/engine/object/ObjectPlaceMode.java
index b0dc3a83f..caf2f278e 100644
--- a/src/main/java/com/volmit/iris/engine/object/ObjectPlaceMode.java
+++ b/src/main/java/com/volmit/iris/engine/object/ObjectPlaceMode.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.object;
-import com.volmit.iris.util.Desc;
+import com.volmit.iris.engine.object.annotations.Desc;
@Desc("Object Place modes are useful for positioning objects just right. The default value is CENTER_HEIGHT.")
public enum ObjectPlaceMode {
diff --git a/src/main/java/com/volmit/iris/util/ArrayType.java b/src/main/java/com/volmit/iris/engine/object/annotations/ArrayType.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/ArrayType.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/ArrayType.java
index 9b78b79ed..6c13cf148 100644
--- a/src/main/java/com/volmit/iris/util/ArrayType.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/ArrayType.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/DependsOn.java b/src/main/java/com/volmit/iris/engine/object/annotations/DependsOn.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/DependsOn.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/DependsOn.java
index 3bb4933c0..4b41ec05a 100644
--- a/src/main/java/com/volmit/iris/util/DependsOn.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/DependsOn.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/Desc.java b/src/main/java/com/volmit/iris/engine/object/annotations/Desc.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/Desc.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/Desc.java
index 2fb6f9b62..58cb8bf9f 100644
--- a/src/main/java/com/volmit/iris/util/Desc.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/Desc.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/MaxNumber.java b/src/main/java/com/volmit/iris/engine/object/annotations/MaxNumber.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/MaxNumber.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/MaxNumber.java
index 34c4e5fd2..891f5e0fc 100644
--- a/src/main/java/com/volmit/iris/util/MaxNumber.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/MaxNumber.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/MinNumber.java b/src/main/java/com/volmit/iris/engine/object/annotations/MinNumber.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/MinNumber.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/MinNumber.java
index 4729cc0ed..371389dd0 100644
--- a/src/main/java/com/volmit/iris/util/MinNumber.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/MinNumber.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/RegistryListBiome.java b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListBiome.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/RegistryListBiome.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/RegistryListBiome.java
index 80d595112..9c24e32e1 100644
--- a/src/main/java/com/volmit/iris/util/RegistryListBiome.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListBiome.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/RegistryListBiomeDownfallType.java b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListBiomeDownfallType.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/RegistryListBiomeDownfallType.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/RegistryListBiomeDownfallType.java
index 31e782bd7..fe33ff346 100644
--- a/src/main/java/com/volmit/iris/util/RegistryListBiomeDownfallType.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListBiomeDownfallType.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/RegistryListBlockType.java b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListBlockType.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/RegistryListBlockType.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/RegistryListBlockType.java
index dd4888779..e61aae5cb 100644
--- a/src/main/java/com/volmit/iris/util/RegistryListBlockType.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListBlockType.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/RegistryListDimension.java b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListDimension.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/RegistryListDimension.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/RegistryListDimension.java
index 1cfb6d571..efe38f9cd 100644
--- a/src/main/java/com/volmit/iris/util/RegistryListDimension.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListDimension.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/RegistryListEntity.java b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListEntity.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/RegistryListEntity.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/RegistryListEntity.java
index cf44ee2d7..140c55353 100644
--- a/src/main/java/com/volmit/iris/util/RegistryListEntity.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListEntity.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/RegistryListFont.java b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListFont.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/RegistryListFont.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/RegistryListFont.java
index c579fddd4..5460e5c06 100644
--- a/src/main/java/com/volmit/iris/util/RegistryListFont.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListFont.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/RegistryListGenerator.java b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListGenerator.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/RegistryListGenerator.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/RegistryListGenerator.java
index 5d10c403d..8d3cf4281 100644
--- a/src/main/java/com/volmit/iris/util/RegistryListGenerator.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListGenerator.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/RegistryListItemType.java b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListItemType.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/RegistryListItemType.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/RegistryListItemType.java
index 4cc80e615..6a1739a23 100644
--- a/src/main/java/com/volmit/iris/util/RegistryListItemType.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListItemType.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/RegistryListJigsaw.java b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListJigsaw.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/RegistryListJigsaw.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/RegistryListJigsaw.java
index 8e724d6cb..eecf38f99 100644
--- a/src/main/java/com/volmit/iris/util/RegistryListJigsaw.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListJigsaw.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/RegistryListJigsawPiece.java b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListJigsawPiece.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/RegistryListJigsawPiece.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/RegistryListJigsawPiece.java
index b66678c7e..acd228cdf 100644
--- a/src/main/java/com/volmit/iris/util/RegistryListJigsawPiece.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListJigsawPiece.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/RegistryListJigsawPool.java b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListJigsawPool.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/RegistryListJigsawPool.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/RegistryListJigsawPool.java
index 810ab9c19..2744beb73 100644
--- a/src/main/java/com/volmit/iris/util/RegistryListJigsawPool.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListJigsawPool.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/RegistryListLoot.java b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListLoot.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/RegistryListLoot.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/RegistryListLoot.java
index 6719778ac..0c7ea6080 100644
--- a/src/main/java/com/volmit/iris/util/RegistryListLoot.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListLoot.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/RegistryListMythical.java b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListMythical.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/RegistryListMythical.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/RegistryListMythical.java
index 600313c52..15a0d3538 100644
--- a/src/main/java/com/volmit/iris/util/RegistryListMythical.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListMythical.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/RegistryListObject.java b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListObject.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/RegistryListObject.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/RegistryListObject.java
index d2c2e3ba7..c580af236 100644
--- a/src/main/java/com/volmit/iris/util/RegistryListObject.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListObject.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/RegistryListRegion.java b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListRegion.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/RegistryListRegion.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/RegistryListRegion.java
index 8e0398a49..af83362bc 100644
--- a/src/main/java/com/volmit/iris/util/RegistryListRegion.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/RegistryListRegion.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/Required.java b/src/main/java/com/volmit/iris/engine/object/annotations/Required.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/Required.java
rename to src/main/java/com/volmit/iris/engine/object/annotations/Required.java
index 98b107e30..703d70ce6 100644
--- a/src/main/java/com/volmit/iris/util/Required.java
+++ b/src/main/java/com/volmit/iris/engine/object/annotations/Required.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/com/volmit/iris/util/CarveResult.java b/src/main/java/com/volmit/iris/engine/object/common/CarveResult.java
similarity index 96%
rename from src/main/java/com/volmit/iris/util/CarveResult.java
rename to src/main/java/com/volmit/iris/engine/object/common/CarveResult.java
index bcadddeef..742a75483 100644
--- a/src/main/java/com/volmit/iris/util/CarveResult.java
+++ b/src/main/java/com/volmit/iris/engine/object/common/CarveResult.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.common;
import lombok.Value;
diff --git a/src/main/java/com/volmit/iris/util/CaveResult.java b/src/main/java/com/volmit/iris/engine/object/common/CaveResult.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/CaveResult.java
rename to src/main/java/com/volmit/iris/engine/object/common/CaveResult.java
index 89075aee0..3b0796d4c 100644
--- a/src/main/java/com/volmit/iris/util/CaveResult.java
+++ b/src/main/java/com/volmit/iris/engine/object/common/CaveResult.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.common;
import lombok.Data;
diff --git a/src/main/java/com/volmit/iris/util/IObjectPlacer.java b/src/main/java/com/volmit/iris/engine/object/common/IObjectPlacer.java
similarity index 96%
rename from src/main/java/com/volmit/iris/util/IObjectPlacer.java
rename to src/main/java/com/volmit/iris/engine/object/common/IObjectPlacer.java
index 1972a8683..be37ac534 100644
--- a/src/main/java/com/volmit/iris/util/IObjectPlacer.java
+++ b/src/main/java/com/volmit/iris/engine/object/common/IObjectPlacer.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.common;
import com.volmit.iris.engine.object.tile.TileData;
import org.bukkit.block.TileState;
diff --git a/src/main/java/com/volmit/iris/util/IPostBlockAccess.java b/src/main/java/com/volmit/iris/engine/object/common/IPostBlockAccess.java
similarity index 89%
rename from src/main/java/com/volmit/iris/util/IPostBlockAccess.java
rename to src/main/java/com/volmit/iris/engine/object/common/IPostBlockAccess.java
index 1448cf034..846d7e074 100644
--- a/src/main/java/com/volmit/iris/util/IPostBlockAccess.java
+++ b/src/main/java/com/volmit/iris/engine/object/common/IPostBlockAccess.java
@@ -16,8 +16,10 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.common;
+import com.volmit.iris.engine.object.common.CaveResult;
+import com.volmit.iris.util.collection.KList;
import org.bukkit.block.data.BlockData;
import org.bukkit.generator.ChunkGenerator.ChunkData;
diff --git a/src/main/java/com/volmit/iris/util/IRare.java b/src/main/java/com/volmit/iris/engine/object/common/IRare.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/IRare.java
rename to src/main/java/com/volmit/iris/engine/object/common/IRare.java
index 5a90168c2..52e6546fb 100644
--- a/src/main/java/com/volmit/iris/util/IRare.java
+++ b/src/main/java/com/volmit/iris/engine/object/common/IRare.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.engine.object.common;
public interface IRare {
int getRarity();
diff --git a/src/main/java/com/volmit/iris/engine/object/tile/TileData.java b/src/main/java/com/volmit/iris/engine/object/tile/TileData.java
index 2d88920e4..25ae453d8 100644
--- a/src/main/java/com/volmit/iris/engine/object/tile/TileData.java
+++ b/src/main/java/com/volmit/iris/engine/object/tile/TileData.java
@@ -20,7 +20,7 @@ package com.volmit.iris.engine.object.tile;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.data.nbt.tag.CompoundTag;
-import com.volmit.iris.util.KList;
+import com.volmit.iris.util.collection.KList;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.block.TileState;
diff --git a/src/main/java/com/volmit/iris/engine/parallax/ParallaxChunkMeta.java b/src/main/java/com/volmit/iris/engine/parallax/ParallaxChunkMeta.java
index 01900df85..a88c7d655 100644
--- a/src/main/java/com/volmit/iris/engine/parallax/ParallaxChunkMeta.java
+++ b/src/main/java/com/volmit/iris/engine/parallax/ParallaxChunkMeta.java
@@ -22,7 +22,7 @@ import com.google.gson.Gson;
import com.volmit.iris.engine.object.IrisFeaturePositional;
import com.volmit.iris.engine.hunk.io.HunkIOAdapter;
import com.volmit.iris.engine.hunk.io.PaletteHunkIOAdapter;
-import com.volmit.iris.util.CompoundTag;
+import com.volmit.iris.util.oldnbt.CompoundTag;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/src/main/java/com/volmit/iris/engine/parallax/ParallaxRegion.java b/src/main/java/com/volmit/iris/engine/parallax/ParallaxRegion.java
index 017ebb9ed..180413f66 100644
--- a/src/main/java/com/volmit/iris/engine/parallax/ParallaxRegion.java
+++ b/src/main/java/com/volmit/iris/engine/parallax/ParallaxRegion.java
@@ -25,10 +25,10 @@ import com.volmit.iris.engine.hunk.io.HunkIOAdapter;
import com.volmit.iris.engine.hunk.io.HunkRegion;
import com.volmit.iris.engine.hunk.io.HunkRegionSlice;
import com.volmit.iris.engine.parallel.GridLock;
-import com.volmit.iris.util.ByteArrayTag;
-import com.volmit.iris.util.CompoundTag;
-import com.volmit.iris.util.M;
-import com.volmit.iris.util.Tag;
+import com.volmit.iris.util.oldnbt.ByteArrayTag;
+import com.volmit.iris.util.oldnbt.CompoundTag;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.util.oldnbt.Tag;
import org.bukkit.block.TileState;
import org.bukkit.block.data.BlockData;
diff --git a/src/main/java/com/volmit/iris/engine/parallax/ParallaxWorld.java b/src/main/java/com/volmit/iris/engine/parallax/ParallaxWorld.java
index 5b391bf89..58bc28faf 100644
--- a/src/main/java/com/volmit/iris/engine/parallax/ParallaxWorld.java
+++ b/src/main/java/com/volmit/iris/engine/parallax/ParallaxWorld.java
@@ -22,9 +22,9 @@ import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.engine.object.tile.TileData;
import com.volmit.iris.engine.hunk.Hunk;
-import com.volmit.iris.util.J;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.KMap;
+import com.volmit.iris.util.scheduling.J;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.collection.KMap;
import org.bukkit.block.TileState;
import org.bukkit.block.data.BlockData;
diff --git a/src/main/java/com/volmit/iris/engine/parallel/BurstExecutor.java b/src/main/java/com/volmit/iris/engine/parallel/BurstExecutor.java
index ce9c139cf..7f00ba293 100644
--- a/src/main/java/com/volmit/iris/engine/parallel/BurstExecutor.java
+++ b/src/main/java/com/volmit/iris/engine/parallel/BurstExecutor.java
@@ -19,7 +19,7 @@
package com.volmit.iris.engine.parallel;
import com.volmit.iris.Iris;
-import com.volmit.iris.util.KList;
+import com.volmit.iris.util.collection.KList;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
diff --git a/src/main/java/com/volmit/iris/engine/parallel/GridLock.java b/src/main/java/com/volmit/iris/engine/parallel/GridLock.java
index 70b3595d4..6a8885329 100644
--- a/src/main/java/com/volmit/iris/engine/parallel/GridLock.java
+++ b/src/main/java/com/volmit/iris/engine/parallel/GridLock.java
@@ -20,8 +20,8 @@ package com.volmit.iris.engine.parallel;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.hunk.Hunk;
-import com.volmit.iris.util.IORunnable;
-import com.volmit.iris.util.NastyRunnable;
+import com.volmit.iris.util.io.IORunnable;
+import com.volmit.iris.util.function.NastyRunnable;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
diff --git a/src/main/java/com/volmit/iris/engine/parallel/MultiBurst.java b/src/main/java/com/volmit/iris/engine/parallel/MultiBurst.java
index 8afbd70e6..5c1569679 100644
--- a/src/main/java/com/volmit/iris/engine/parallel/MultiBurst.java
+++ b/src/main/java/com/volmit/iris/engine/parallel/MultiBurst.java
@@ -19,7 +19,7 @@
package com.volmit.iris.engine.parallel;
import com.volmit.iris.Iris;
-import com.volmit.iris.util.KList;
+import com.volmit.iris.util.collection.KList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
diff --git a/src/main/java/com/volmit/iris/engine/stream/ArraySignificance.java b/src/main/java/com/volmit/iris/engine/stream/ArraySignificance.java
index d625a6909..698402082 100644
--- a/src/main/java/com/volmit/iris/engine/stream/ArraySignificance.java
+++ b/src/main/java/com/volmit/iris/engine/stream/ArraySignificance.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.stream;
-import com.volmit.iris.util.KList;
+import com.volmit.iris.util.collection.KList;
public class ArraySignificance implements Significance {
private final KList types;
diff --git a/src/main/java/com/volmit/iris/engine/stream/ProceduralStream.java b/src/main/java/com/volmit/iris/engine/stream/ProceduralStream.java
index 029f6c5a6..f4b2a1400 100644
--- a/src/main/java/com/volmit/iris/engine/stream/ProceduralStream.java
+++ b/src/main/java/com/volmit/iris/engine/stream/ProceduralStream.java
@@ -20,12 +20,16 @@ package com.volmit.iris.engine.stream;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.hunk.Hunk;
+import com.volmit.iris.engine.object.common.IRare;
import com.volmit.iris.engine.stream.arithmetic.*;
import com.volmit.iris.engine.stream.convert.*;
import com.volmit.iris.engine.stream.interpolation.Interpolated;
import com.volmit.iris.engine.stream.sources.FunctionStream;
import com.volmit.iris.engine.stream.utility.*;
-import com.volmit.iris.util.*;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.function.Function2;
+import com.volmit.iris.util.function.Function3;
+import com.volmit.iris.util.function.Function4;
import java.util.List;
import java.util.function.Function;
diff --git a/src/main/java/com/volmit/iris/engine/stream/Significance.java b/src/main/java/com/volmit/iris/engine/stream/Significance.java
index d681c857e..995fec947 100644
--- a/src/main/java/com/volmit/iris/engine/stream/Significance.java
+++ b/src/main/java/com/volmit/iris/engine/stream/Significance.java
@@ -18,7 +18,7 @@
package com.volmit.iris.engine.stream;
-import com.volmit.iris.util.KList;
+import com.volmit.iris.util.collection.KList;
public interface Significance {
KList getFactorTypes();
diff --git a/src/main/java/com/volmit/iris/engine/stream/arithmetic/AddingStream.java b/src/main/java/com/volmit/iris/engine/stream/arithmetic/AddingStream.java
index e67baf965..5c6a0e935 100644
--- a/src/main/java/com/volmit/iris/engine/stream/arithmetic/AddingStream.java
+++ b/src/main/java/com/volmit/iris/engine/stream/arithmetic/AddingStream.java
@@ -20,8 +20,8 @@ package com.volmit.iris.engine.stream.arithmetic;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
-import com.volmit.iris.util.Function2;
-import com.volmit.iris.util.Function3;
+import com.volmit.iris.util.function.Function2;
+import com.volmit.iris.util.function.Function3;
public class AddingStream extends BasicStream {
private final Function3 add;
diff --git a/src/main/java/com/volmit/iris/engine/stream/arithmetic/DividingStream.java b/src/main/java/com/volmit/iris/engine/stream/arithmetic/DividingStream.java
index c78de4147..6e3a6dc93 100644
--- a/src/main/java/com/volmit/iris/engine/stream/arithmetic/DividingStream.java
+++ b/src/main/java/com/volmit/iris/engine/stream/arithmetic/DividingStream.java
@@ -20,8 +20,8 @@ package com.volmit.iris.engine.stream.arithmetic;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
-import com.volmit.iris.util.Function2;
-import com.volmit.iris.util.Function3;
+import com.volmit.iris.util.function.Function2;
+import com.volmit.iris.util.function.Function3;
public class DividingStream extends BasicStream implements ProceduralStream {
private final Function3 add;
diff --git a/src/main/java/com/volmit/iris/engine/stream/arithmetic/MaxingStream.java b/src/main/java/com/volmit/iris/engine/stream/arithmetic/MaxingStream.java
index e9eda3462..f1e3d383b 100644
--- a/src/main/java/com/volmit/iris/engine/stream/arithmetic/MaxingStream.java
+++ b/src/main/java/com/volmit/iris/engine/stream/arithmetic/MaxingStream.java
@@ -20,8 +20,8 @@ package com.volmit.iris.engine.stream.arithmetic;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
-import com.volmit.iris.util.Function2;
-import com.volmit.iris.util.Function3;
+import com.volmit.iris.util.function.Function2;
+import com.volmit.iris.util.function.Function3;
public class MaxingStream extends BasicStream {
private final Function3 add;
diff --git a/src/main/java/com/volmit/iris/engine/stream/arithmetic/MinningStream.java b/src/main/java/com/volmit/iris/engine/stream/arithmetic/MinningStream.java
index 71574fe98..c5e153b57 100644
--- a/src/main/java/com/volmit/iris/engine/stream/arithmetic/MinningStream.java
+++ b/src/main/java/com/volmit/iris/engine/stream/arithmetic/MinningStream.java
@@ -20,8 +20,8 @@ package com.volmit.iris.engine.stream.arithmetic;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
-import com.volmit.iris.util.Function2;
-import com.volmit.iris.util.Function3;
+import com.volmit.iris.util.function.Function2;
+import com.volmit.iris.util.function.Function3;
public class MinningStream extends BasicStream {
private final Function3 add;
diff --git a/src/main/java/com/volmit/iris/engine/stream/arithmetic/ModuloStream.java b/src/main/java/com/volmit/iris/engine/stream/arithmetic/ModuloStream.java
index 5803168aa..f3f188e01 100644
--- a/src/main/java/com/volmit/iris/engine/stream/arithmetic/ModuloStream.java
+++ b/src/main/java/com/volmit/iris/engine/stream/arithmetic/ModuloStream.java
@@ -20,8 +20,8 @@ package com.volmit.iris.engine.stream.arithmetic;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
-import com.volmit.iris.util.Function2;
-import com.volmit.iris.util.Function3;
+import com.volmit.iris.util.function.Function2;
+import com.volmit.iris.util.function.Function3;
public class ModuloStream extends BasicStream {
private final Function3 add;
diff --git a/src/main/java/com/volmit/iris/engine/stream/arithmetic/MultiplyingStream.java b/src/main/java/com/volmit/iris/engine/stream/arithmetic/MultiplyingStream.java
index 63076921a..693abd710 100644
--- a/src/main/java/com/volmit/iris/engine/stream/arithmetic/MultiplyingStream.java
+++ b/src/main/java/com/volmit/iris/engine/stream/arithmetic/MultiplyingStream.java
@@ -20,8 +20,8 @@ package com.volmit.iris.engine.stream.arithmetic;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
-import com.volmit.iris.util.Function2;
-import com.volmit.iris.util.Function3;
+import com.volmit.iris.util.function.Function2;
+import com.volmit.iris.util.function.Function3;
public class MultiplyingStream extends BasicStream {
private final Function3 add;
diff --git a/src/main/java/com/volmit/iris/engine/stream/arithmetic/SubtractingStream.java b/src/main/java/com/volmit/iris/engine/stream/arithmetic/SubtractingStream.java
index 043f3d44f..23e7c3d0c 100644
--- a/src/main/java/com/volmit/iris/engine/stream/arithmetic/SubtractingStream.java
+++ b/src/main/java/com/volmit/iris/engine/stream/arithmetic/SubtractingStream.java
@@ -20,8 +20,8 @@ package com.volmit.iris.engine.stream.arithmetic;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
-import com.volmit.iris.util.Function2;
-import com.volmit.iris.util.Function3;
+import com.volmit.iris.util.function.Function2;
+import com.volmit.iris.util.function.Function3;
public class SubtractingStream extends BasicStream {
private final Function3 add;
diff --git a/src/main/java/com/volmit/iris/engine/stream/convert/AwareConversionStream2D.java b/src/main/java/com/volmit/iris/engine/stream/convert/AwareConversionStream2D.java
index 87affe69e..365a0d197 100644
--- a/src/main/java/com/volmit/iris/engine/stream/convert/AwareConversionStream2D.java
+++ b/src/main/java/com/volmit/iris/engine/stream/convert/AwareConversionStream2D.java
@@ -20,7 +20,7 @@ package com.volmit.iris.engine.stream.convert;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
-import com.volmit.iris.util.Function3;
+import com.volmit.iris.util.function.Function3;
public class AwareConversionStream2D extends BasicStream {
private final ProceduralStream stream;
diff --git a/src/main/java/com/volmit/iris/engine/stream/convert/AwareConversionStream3D.java b/src/main/java/com/volmit/iris/engine/stream/convert/AwareConversionStream3D.java
index 6de047dc4..0ebcec405 100644
--- a/src/main/java/com/volmit/iris/engine/stream/convert/AwareConversionStream3D.java
+++ b/src/main/java/com/volmit/iris/engine/stream/convert/AwareConversionStream3D.java
@@ -20,7 +20,7 @@ package com.volmit.iris.engine.stream.convert;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
-import com.volmit.iris.util.Function4;
+import com.volmit.iris.util.function.Function4;
public class AwareConversionStream3D extends BasicStream {
private final ProceduralStream stream;
diff --git a/src/main/java/com/volmit/iris/engine/stream/convert/CachedConversionStream.java b/src/main/java/com/volmit/iris/engine/stream/convert/CachedConversionStream.java
index 1ab4e302c..1f362e4f7 100644
--- a/src/main/java/com/volmit/iris/engine/stream/convert/CachedConversionStream.java
+++ b/src/main/java/com/volmit/iris/engine/stream/convert/CachedConversionStream.java
@@ -20,7 +20,7 @@ package com.volmit.iris.engine.stream.convert;
import com.volmit.iris.engine.stream.BasicLayer;
import com.volmit.iris.engine.stream.ProceduralStream;
-import com.volmit.iris.util.KMap;
+import com.volmit.iris.util.collection.KMap;
import java.util.function.Function;
diff --git a/src/main/java/com/volmit/iris/engine/stream/convert/SignificanceStream.java b/src/main/java/com/volmit/iris/engine/stream/convert/SignificanceStream.java
index c2d06fbc9..07dcc7ed8 100644
--- a/src/main/java/com/volmit/iris/engine/stream/convert/SignificanceStream.java
+++ b/src/main/java/com/volmit/iris/engine/stream/convert/SignificanceStream.java
@@ -22,7 +22,7 @@ import com.volmit.iris.engine.stream.ArraySignificance;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
import com.volmit.iris.engine.stream.Significance;
-import com.volmit.iris.util.KList;
+import com.volmit.iris.util.collection.KList;
public class SignificanceStream, T> extends BasicStream {
private final ProceduralStream stream;
diff --git a/src/main/java/com/volmit/iris/engine/stream/interpolation/BiHermiteStream.java b/src/main/java/com/volmit/iris/engine/stream/interpolation/BiHermiteStream.java
index b6db7094a..6bc5feba4 100644
--- a/src/main/java/com/volmit/iris/engine/stream/interpolation/BiHermiteStream.java
+++ b/src/main/java/com/volmit/iris/engine/stream/interpolation/BiHermiteStream.java
@@ -20,7 +20,7 @@ package com.volmit.iris.engine.stream.interpolation;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
-import com.volmit.iris.util.IrisInterpolation;
+import com.volmit.iris.engine.interpolation.IrisInterpolation;
public class BiHermiteStream extends BasicStream implements Interpolator {
private final int rx;
diff --git a/src/main/java/com/volmit/iris/engine/stream/interpolation/BicubicStream.java b/src/main/java/com/volmit/iris/engine/stream/interpolation/BicubicStream.java
index bdabea1e5..a74c244bd 100644
--- a/src/main/java/com/volmit/iris/engine/stream/interpolation/BicubicStream.java
+++ b/src/main/java/com/volmit/iris/engine/stream/interpolation/BicubicStream.java
@@ -20,7 +20,7 @@ package com.volmit.iris.engine.stream.interpolation;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
-import com.volmit.iris.util.IrisInterpolation;
+import com.volmit.iris.engine.interpolation.IrisInterpolation;
public class BicubicStream extends BasicStream implements Interpolator {
private final int rx;
diff --git a/src/main/java/com/volmit/iris/engine/stream/interpolation/BilinearStream.java b/src/main/java/com/volmit/iris/engine/stream/interpolation/BilinearStream.java
index 88aa97de7..74c59f86c 100644
--- a/src/main/java/com/volmit/iris/engine/stream/interpolation/BilinearStream.java
+++ b/src/main/java/com/volmit/iris/engine/stream/interpolation/BilinearStream.java
@@ -20,7 +20,7 @@ package com.volmit.iris.engine.stream.interpolation;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
-import com.volmit.iris.util.IrisInterpolation;
+import com.volmit.iris.engine.interpolation.IrisInterpolation;
public class BilinearStream extends BasicStream implements Interpolator {
private final int rx;
diff --git a/src/main/java/com/volmit/iris/engine/stream/interpolation/Interpolated.java b/src/main/java/com/volmit/iris/engine/stream/interpolation/Interpolated.java
index 016941e09..fcf706e8b 100644
--- a/src/main/java/com/volmit/iris/engine/stream/interpolation/Interpolated.java
+++ b/src/main/java/com/volmit/iris/engine/stream/interpolation/Interpolated.java
@@ -19,9 +19,9 @@
package com.volmit.iris.engine.stream.interpolation;
import com.volmit.iris.engine.stream.ProceduralStream;
-import com.volmit.iris.util.CaveResult;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.RNG;
+import com.volmit.iris.engine.object.common.CaveResult;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.math.RNG;
import org.bukkit.block.data.BlockData;
import java.util.function.Function;
diff --git a/src/main/java/com/volmit/iris/engine/stream/interpolation/InterpolatingStream.java b/src/main/java/com/volmit/iris/engine/stream/interpolation/InterpolatingStream.java
index 0611408a3..7deeabc6a 100644
--- a/src/main/java/com/volmit/iris/engine/stream/interpolation/InterpolatingStream.java
+++ b/src/main/java/com/volmit/iris/engine/stream/interpolation/InterpolatingStream.java
@@ -21,8 +21,8 @@ package com.volmit.iris.engine.stream.interpolation;
import com.volmit.iris.engine.object.InterpolationMethod;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
-import com.volmit.iris.util.IrisInterpolation;
-import com.volmit.iris.util.NoiseProvider;
+import com.volmit.iris.engine.interpolation.IrisInterpolation;
+import com.volmit.iris.util.function.NoiseProvider;
public class InterpolatingStream extends BasicStream implements Interpolator {
private final InterpolationMethod type;
diff --git a/src/main/java/com/volmit/iris/engine/stream/interpolation/TriHermiteStream.java b/src/main/java/com/volmit/iris/engine/stream/interpolation/TriHermiteStream.java
index 4adc411e3..b57c67449 100644
--- a/src/main/java/com/volmit/iris/engine/stream/interpolation/TriHermiteStream.java
+++ b/src/main/java/com/volmit/iris/engine/stream/interpolation/TriHermiteStream.java
@@ -20,7 +20,7 @@ package com.volmit.iris.engine.stream.interpolation;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
-import com.volmit.iris.util.IrisInterpolation;
+import com.volmit.iris.engine.interpolation.IrisInterpolation;
public class TriHermiteStream extends BasicStream implements Interpolator {
private final int rx;
diff --git a/src/main/java/com/volmit/iris/engine/stream/interpolation/TricubicStream.java b/src/main/java/com/volmit/iris/engine/stream/interpolation/TricubicStream.java
index 2ec514920..731c723f0 100644
--- a/src/main/java/com/volmit/iris/engine/stream/interpolation/TricubicStream.java
+++ b/src/main/java/com/volmit/iris/engine/stream/interpolation/TricubicStream.java
@@ -20,7 +20,7 @@ package com.volmit.iris.engine.stream.interpolation;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
-import com.volmit.iris.util.IrisInterpolation;
+import com.volmit.iris.engine.interpolation.IrisInterpolation;
public class TricubicStream extends BasicStream implements Interpolator {
private final int rx;
diff --git a/src/main/java/com/volmit/iris/engine/stream/interpolation/TrilinearStream.java b/src/main/java/com/volmit/iris/engine/stream/interpolation/TrilinearStream.java
index 71ee3e10a..caeacf672 100644
--- a/src/main/java/com/volmit/iris/engine/stream/interpolation/TrilinearStream.java
+++ b/src/main/java/com/volmit/iris/engine/stream/interpolation/TrilinearStream.java
@@ -20,7 +20,7 @@ package com.volmit.iris.engine.stream.interpolation;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
-import com.volmit.iris.util.IrisInterpolation;
+import com.volmit.iris.engine.interpolation.IrisInterpolation;
public class TrilinearStream extends BasicStream implements Interpolator {
private final int rx;
diff --git a/src/main/java/com/volmit/iris/engine/stream/sources/FunctionStream.java b/src/main/java/com/volmit/iris/engine/stream/sources/FunctionStream.java
index 974160fdf..70dcb60c1 100644
--- a/src/main/java/com/volmit/iris/engine/stream/sources/FunctionStream.java
+++ b/src/main/java/com/volmit/iris/engine/stream/sources/FunctionStream.java
@@ -20,8 +20,8 @@ package com.volmit.iris.engine.stream.sources;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.interpolation.Interpolated;
-import com.volmit.iris.util.Function2;
-import com.volmit.iris.util.Function3;
+import com.volmit.iris.util.function.Function2;
+import com.volmit.iris.util.function.Function3;
public class FunctionStream extends BasicStream {
private final Function2 f2;
diff --git a/src/main/java/com/volmit/iris/engine/stream/utility/ProfiledStream.java b/src/main/java/com/volmit/iris/engine/stream/utility/ProfiledStream.java
index ac4a980b6..03cb9a699 100644
--- a/src/main/java/com/volmit/iris/engine/stream/utility/ProfiledStream.java
+++ b/src/main/java/com/volmit/iris/engine/stream/utility/ProfiledStream.java
@@ -21,10 +21,10 @@ package com.volmit.iris.engine.stream.utility;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
-import com.volmit.iris.util.Form;
-import com.volmit.iris.util.KList;
-import com.volmit.iris.util.PrecisionStopwatch;
-import com.volmit.iris.util.RollingSequence;
+import com.volmit.iris.util.format.Form;
+import com.volmit.iris.util.collection.KList;
+import com.volmit.iris.util.scheduling.PrecisionStopwatch;
+import com.volmit.iris.util.math.RollingSequence;
import lombok.Data;
import java.util.concurrent.atomic.AtomicInteger;
diff --git a/src/main/java/com/volmit/iris/util/Denv.java b/src/main/java/com/volmit/iris/util/Denv.java
deleted file mode 100644
index fb09dd475..000000000
--- a/src/main/java/com/volmit/iris/util/Denv.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Iris is a World Generator for Minecraft Bukkit Servers
- * Copyright (c) 2021 Arcane Arts (Volmit Software)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-package com.volmit.iris.util;
-
-public class Denv {
-
-}
diff --git a/src/main/java/com/volmit/iris/util/ING.java b/src/main/java/com/volmit/iris/util/ING.java
deleted file mode 100644
index c937e25cd..000000000
--- a/src/main/java/com/volmit/iris/util/ING.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Iris is a World Generator for Minecraft Bukkit Servers
- * Copyright (c) 2021 Arcane Arts (Volmit Software)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-package com.volmit.iris.util;
-
-public class ING {
- public ING(RNG rng) {
-
- }
-}
diff --git a/src/main/java/com/volmit/iris/util/Info.java b/src/main/java/com/volmit/iris/util/Info.java
deleted file mode 100644
index c7ef99d7d..000000000
--- a/src/main/java/com/volmit/iris/util/Info.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Iris is a World Generator for Minecraft Bukkit Servers
- * Copyright (c) 2021 Arcane Arts (Volmit Software)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-package com.volmit.iris.util;
-
-import org.bukkit.Bukkit;
-
-public class Info {
- public static String getPortIP() {
- return Bukkit.getPort() + Bukkit.getIp();
- }
-}
diff --git a/src/main/java/com/volmit/iris/util/AtomicAverage.java b/src/main/java/com/volmit/iris/util/atomics/AtomicAverage.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/AtomicAverage.java
rename to src/main/java/com/volmit/iris/util/atomics/AtomicAverage.java
diff --git a/src/main/java/com/volmit/iris/util/AtomicRollingSequence.java b/src/main/java/com/volmit/iris/util/atomics/AtomicRollingSequence.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/AtomicRollingSequence.java
rename to src/main/java/com/volmit/iris/util/atomics/AtomicRollingSequence.java
diff --git a/src/main/java/com/volmit/iris/util/Board.java b/src/main/java/com/volmit/iris/util/board/Board.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Board.java
rename to src/main/java/com/volmit/iris/util/board/Board.java
diff --git a/src/main/java/com/volmit/iris/util/BoardEntry.java b/src/main/java/com/volmit/iris/util/board/BoardEntry.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/BoardEntry.java
rename to src/main/java/com/volmit/iris/util/board/BoardEntry.java
diff --git a/src/main/java/com/volmit/iris/util/BoardManager.java b/src/main/java/com/volmit/iris/util/board/BoardManager.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/BoardManager.java
rename to src/main/java/com/volmit/iris/util/board/BoardManager.java
diff --git a/src/main/java/com/volmit/iris/util/BoardProvider.java b/src/main/java/com/volmit/iris/util/board/BoardProvider.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/BoardProvider.java
rename to src/main/java/com/volmit/iris/util/board/BoardProvider.java
diff --git a/src/main/java/com/volmit/iris/util/BoardSettings.java b/src/main/java/com/volmit/iris/util/board/BoardSettings.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/BoardSettings.java
rename to src/main/java/com/volmit/iris/util/board/BoardSettings.java
diff --git a/src/main/java/com/volmit/iris/util/BoardUpdateTask.java b/src/main/java/com/volmit/iris/util/board/BoardUpdateTask.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/BoardUpdateTask.java
rename to src/main/java/com/volmit/iris/util/board/BoardUpdateTask.java
diff --git a/src/main/java/com/volmit/iris/util/ScoreDirection.java b/src/main/java/com/volmit/iris/util/board/ScoreDirection.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/ScoreDirection.java
rename to src/main/java/com/volmit/iris/util/board/ScoreDirection.java
diff --git a/src/main/java/com/volmit/iris/util/GBiset.java b/src/main/java/com/volmit/iris/util/collection/GBiset.java
similarity index 97%
rename from src/main/java/com/volmit/iris/util/GBiset.java
rename to src/main/java/com/volmit/iris/util/collection/GBiset.java
index ff97046d5..904e66b53 100644
--- a/src/main/java/com/volmit/iris/util/GBiset.java
+++ b/src/main/java/com/volmit/iris/util/collection/GBiset.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.collection;
import java.io.Serializable;
diff --git a/src/main/java/com/volmit/iris/util/GListAdapter.java b/src/main/java/com/volmit/iris/util/collection/GListAdapter.java
similarity index 97%
rename from src/main/java/com/volmit/iris/util/GListAdapter.java
rename to src/main/java/com/volmit/iris/util/collection/GListAdapter.java
index 636cfe51d..db83e725c 100644
--- a/src/main/java/com/volmit/iris/util/GListAdapter.java
+++ b/src/main/java/com/volmit/iris/util/collection/GListAdapter.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.collection;
import java.util.List;
diff --git a/src/main/java/com/volmit/iris/util/KList.java b/src/main/java/com/volmit/iris/util/collection/KList.java
similarity index 98%
rename from src/main/java/com/volmit/iris/util/KList.java
rename to src/main/java/com/volmit/iris/util/collection/KList.java
index bbda280e3..e6d97839b 100644
--- a/src/main/java/com/volmit/iris/util/KList.java
+++ b/src/main/java/com/volmit/iris/util/collection/KList.java
@@ -16,9 +16,12 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.collection;
import com.google.common.util.concurrent.AtomicDoubleArray;
+import com.volmit.iris.util.json.JSONArray;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.util.math.RNG;
import java.util.*;
import java.util.function.Function;
diff --git a/src/main/java/com/volmit/iris/util/KMap.java b/src/main/java/com/volmit/iris/util/collection/KMap.java
similarity index 97%
rename from src/main/java/com/volmit/iris/util/KMap.java
rename to src/main/java/com/volmit/iris/util/collection/KMap.java
index 30124c423..e835f4fcd 100644
--- a/src/main/java/com/volmit/iris/util/KMap.java
+++ b/src/main/java/com/volmit/iris/util/collection/KMap.java
@@ -16,9 +16,12 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.collection;
import com.volmit.iris.Iris;
+import com.volmit.iris.util.function.Consumer2;
+import com.volmit.iris.util.function.Consumer3;
+import com.volmit.iris.util.scheduling.Queue;
import java.util.Collections;
import java.util.Comparator;
diff --git a/src/main/java/com/volmit/iris/util/KSet.java b/src/main/java/com/volmit/iris/util/collection/KSet.java
similarity index 96%
rename from src/main/java/com/volmit/iris/util/KSet.java
rename to src/main/java/com/volmit/iris/util/collection/KSet.java
index c3dd63d07..4923a0c40 100644
--- a/src/main/java/com/volmit/iris/util/KSet.java
+++ b/src/main/java/com/volmit/iris/util/collection/KSet.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.collection;
import java.util.Collection;
import java.util.HashSet;
diff --git a/src/main/java/com/volmit/iris/util/KeyPair.java b/src/main/java/com/volmit/iris/util/collection/KeyPair.java
similarity index 97%
rename from src/main/java/com/volmit/iris/util/KeyPair.java
rename to src/main/java/com/volmit/iris/util/collection/KeyPair.java
index 115517a17..a7113652f 100644
--- a/src/main/java/com/volmit/iris/util/KeyPair.java
+++ b/src/main/java/com/volmit/iris/util/collection/KeyPair.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.collection;
/**
* Represents a keypair
diff --git a/src/main/java/com/volmit/iris/util/BiomeMap.java b/src/main/java/com/volmit/iris/util/data/BiomeMap.java
similarity index 96%
rename from src/main/java/com/volmit/iris/util/BiomeMap.java
rename to src/main/java/com/volmit/iris/util/data/BiomeMap.java
index 694d1b9ac..1e1b51d50 100644
--- a/src/main/java/com/volmit/iris/util/BiomeMap.java
+++ b/src/main/java/com/volmit/iris/util/data/BiomeMap.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.data;
import com.volmit.iris.engine.object.IrisBiome;
diff --git a/src/main/java/com/volmit/iris/util/Cuboid.java b/src/main/java/com/volmit/iris/util/data/Cuboid.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/Cuboid.java
rename to src/main/java/com/volmit/iris/util/data/Cuboid.java
index fa9c1131e..32ae1c93a 100644
--- a/src/main/java/com/volmit/iris/util/Cuboid.java
+++ b/src/main/java/com/volmit/iris/util/data/Cuboid.java
@@ -16,8 +16,11 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.data;
+import com.volmit.iris.util.Dimension;
+import com.volmit.iris.util.KList;
+import com.volmit.iris.util.math.Direction;
import org.bukkit.*;
import org.bukkit.block.Block;
import org.bukkit.configuration.serialization.ConfigurationSerializable;
diff --git a/src/main/java/com/volmit/iris/util/CuboidException.java b/src/main/java/com/volmit/iris/util/data/CuboidException.java
similarity index 96%
rename from src/main/java/com/volmit/iris/util/CuboidException.java
rename to src/main/java/com/volmit/iris/util/data/CuboidException.java
index c950d00dd..82650b943 100644
--- a/src/main/java/com/volmit/iris/util/CuboidException.java
+++ b/src/main/java/com/volmit/iris/util/data/CuboidException.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.data;
/**
* Represents a cuboid exception
diff --git a/src/main/java/com/volmit/iris/util/DataPalette.java b/src/main/java/com/volmit/iris/util/data/DataPalette.java
similarity index 98%
rename from src/main/java/com/volmit/iris/util/DataPalette.java
rename to src/main/java/com/volmit/iris/util/data/DataPalette.java
index b14262904..19599faee 100644
--- a/src/main/java/com/volmit/iris/util/DataPalette.java
+++ b/src/main/java/com/volmit/iris/util/data/DataPalette.java
@@ -16,7 +16,9 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.data;
+
+import com.volmit.iris.util.KList;
import java.io.DataInputStream;
import java.io.DataOutputStream;
diff --git a/src/main/java/com/volmit/iris/util/Dimension.java b/src/main/java/com/volmit/iris/util/data/Dimension.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Dimension.java
rename to src/main/java/com/volmit/iris/util/data/Dimension.java
diff --git a/src/main/java/com/volmit/iris/util/DimensionFace.java b/src/main/java/com/volmit/iris/util/data/DimensionFace.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/DimensionFace.java
rename to src/main/java/com/volmit/iris/util/data/DimensionFace.java
diff --git a/src/main/java/com/volmit/iris/util/DoubleArrayUtils.java b/src/main/java/com/volmit/iris/util/data/DoubleArrayUtils.java
similarity index 97%
rename from src/main/java/com/volmit/iris/util/DoubleArrayUtils.java
rename to src/main/java/com/volmit/iris/util/data/DoubleArrayUtils.java
index d89e9d8d3..410f12232 100644
--- a/src/main/java/com/volmit/iris/util/DoubleArrayUtils.java
+++ b/src/main/java/com/volmit/iris/util/data/DoubleArrayUtils.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.data;
import com.google.common.util.concurrent.AtomicDoubleArray;
diff --git a/src/main/java/com/volmit/iris/util/HeightMap.java b/src/main/java/com/volmit/iris/util/data/HeightMap.java
similarity index 97%
rename from src/main/java/com/volmit/iris/util/HeightMap.java
rename to src/main/java/com/volmit/iris/util/data/HeightMap.java
index fe47ed6c0..0d19aa0d9 100644
--- a/src/main/java/com/volmit/iris/util/HeightMap.java
+++ b/src/main/java/com/volmit/iris/util/data/HeightMap.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.data;
import java.util.Arrays;
diff --git a/src/main/java/com/volmit/iris/util/InvertedBiomeGrid.java b/src/main/java/com/volmit/iris/util/data/InvertedBiomeGrid.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/InvertedBiomeGrid.java
rename to src/main/java/com/volmit/iris/util/data/InvertedBiomeGrid.java
diff --git a/src/main/java/com/volmit/iris/util/IrisBiomeStorage.java b/src/main/java/com/volmit/iris/util/data/IrisBiomeStorage.java
similarity index 97%
rename from src/main/java/com/volmit/iris/util/IrisBiomeStorage.java
rename to src/main/java/com/volmit/iris/util/data/IrisBiomeStorage.java
index 38f9a1eb1..ca2c31009 100644
--- a/src/main/java/com/volmit/iris/util/IrisBiomeStorage.java
+++ b/src/main/java/com/volmit/iris/util/data/IrisBiomeStorage.java
@@ -16,8 +16,9 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.data;
+import com.volmit.iris.util.IrisMathHelper;
import org.bukkit.block.Biome;
import org.bukkit.generator.ChunkGenerator.BiomeGrid;
diff --git a/src/main/java/com/volmit/iris/util/MaterialBlock.java b/src/main/java/com/volmit/iris/util/data/MaterialBlock.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/MaterialBlock.java
rename to src/main/java/com/volmit/iris/util/data/MaterialBlock.java
diff --git a/src/main/java/com/volmit/iris/util/NibbleArray.java b/src/main/java/com/volmit/iris/util/data/NibbleArray.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/NibbleArray.java
rename to src/main/java/com/volmit/iris/util/data/NibbleArray.java
index 153179e04..a33f80f1a 100644
--- a/src/main/java/com/volmit/iris/util/NibbleArray.java
+++ b/src/main/java/com/volmit/iris/util/data/NibbleArray.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.data;
import java.io.DataInputStream;
import java.io.DataOutputStream;
diff --git a/src/main/java/com/volmit/iris/util/Shrinkwrap.java b/src/main/java/com/volmit/iris/util/data/Shrinkwrap.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Shrinkwrap.java
rename to src/main/java/com/volmit/iris/util/data/Shrinkwrap.java
diff --git a/src/main/java/com/volmit/iris/util/VanillaBiomeMap.java b/src/main/java/com/volmit/iris/util/data/VanillaBiomeMap.java
similarity index 98%
rename from src/main/java/com/volmit/iris/util/VanillaBiomeMap.java
rename to src/main/java/com/volmit/iris/util/data/VanillaBiomeMap.java
index ddb6fe099..d4f8af683 100644
--- a/src/main/java/com/volmit/iris/util/VanillaBiomeMap.java
+++ b/src/main/java/com/volmit/iris/util/data/VanillaBiomeMap.java
@@ -1,9 +1,7 @@
package com.volmit.iris.util;
-import org.apache.commons.lang3.tuple.ImmutableTriple;
-import org.apache.commons.lang3.tuple.Triple;
import org.bukkit.block.Biome;
-import com.volmit.iris.util.RandomColor.*;
+import com.volmit.iris.util.inventorygui.RandomColor.*;
public class VanillaBiomeMap {
diff --git a/src/main/java/com/volmit/iris/util/WeightMap.java b/src/main/java/com/volmit/iris/util/data/WeightMap.java
similarity index 93%
rename from src/main/java/com/volmit/iris/util/WeightMap.java
rename to src/main/java/com/volmit/iris/util/data/WeightMap.java
index 1dda57598..7479e1354 100644
--- a/src/main/java/com/volmit/iris/util/WeightMap.java
+++ b/src/main/java/com/volmit/iris/util/data/WeightMap.java
@@ -16,7 +16,10 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.data;
+
+import com.volmit.iris.util.KMap;
+import com.volmit.iris.util.Shrinkwrap;
public class WeightMap extends KMap {
private static final long serialVersionUID = 87558033900969389L;
diff --git a/src/main/java/com/volmit/iris/util/WeightedRandom.java b/src/main/java/com/volmit/iris/util/data/WeightedRandom.java
similarity index 93%
rename from src/main/java/com/volmit/iris/util/WeightedRandom.java
rename to src/main/java/com/volmit/iris/util/data/WeightedRandom.java
index 6c271f657..a621293b3 100644
--- a/src/main/java/com/volmit/iris/util/WeightedRandom.java
+++ b/src/main/java/com/volmit/iris/util/data/WeightedRandom.java
@@ -16,7 +16,10 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.data;
+
+import com.volmit.iris.util.KList;
+import com.volmit.iris.util.KeyPair;
import java.util.Random;
diff --git a/src/main/java/com/volmit/iris/util/Writable.java b/src/main/java/com/volmit/iris/util/data/Writable.java
similarity index 96%
rename from src/main/java/com/volmit/iris/util/Writable.java
rename to src/main/java/com/volmit/iris/util/data/Writable.java
index 7d8075594..16bc8e3b2 100644
--- a/src/main/java/com/volmit/iris/util/Writable.java
+++ b/src/main/java/com/volmit/iris/util/data/Writable.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.data;
import java.io.DataInputStream;
import java.io.DataOutputStream;
diff --git a/src/main/java/com/volmit/iris/util/FakeEngine.java b/src/main/java/com/volmit/iris/util/fakenews/FakeEngine.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/FakeEngine.java
rename to src/main/java/com/volmit/iris/util/fakenews/FakeEngine.java
diff --git a/src/main/java/com/volmit/iris/util/FakeWorld.java b/src/main/java/com/volmit/iris/util/fakenews/FakeWorld.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/FakeWorld.java
rename to src/main/java/com/volmit/iris/util/fakenews/FakeWorld.java
diff --git a/src/main/java/com/volmit/iris/util/HeightedFakeWorld.java b/src/main/java/com/volmit/iris/util/fakenews/HeightedFakeWorld.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/HeightedFakeWorld.java
rename to src/main/java/com/volmit/iris/util/fakenews/HeightedFakeWorld.java
diff --git a/src/main/java/com/volmit/iris/util/C.java b/src/main/java/com/volmit/iris/util/format/C.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/C.java
rename to src/main/java/com/volmit/iris/util/format/C.java
diff --git a/src/main/java/com/volmit/iris/util/Form.java b/src/main/java/com/volmit/iris/util/format/Form.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/Form.java
rename to src/main/java/com/volmit/iris/util/format/Form.java
index 6ec1aef10..2f83a084f 100644
--- a/src/main/java/com/volmit/iris/util/Form.java
+++ b/src/main/java/com/volmit/iris/util/format/Form.java
@@ -18,6 +18,9 @@
package com.volmit.iris.util;
+import com.volmit.iris.util.math.M;
+import com.volmit.iris.util.math.RollingSequence;
+
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.text.NumberFormat;
diff --git a/src/main/java/com/volmit/iris/util/Consumer2.java b/src/main/java/com/volmit/iris/util/function/Consumer2.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Consumer2.java
rename to src/main/java/com/volmit/iris/util/function/Consumer2.java
diff --git a/src/main/java/com/volmit/iris/util/Consumer3.java b/src/main/java/com/volmit/iris/util/function/Consumer3.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Consumer3.java
rename to src/main/java/com/volmit/iris/util/function/Consumer3.java
diff --git a/src/main/java/com/volmit/iris/util/Consumer4.java b/src/main/java/com/volmit/iris/util/function/Consumer4.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Consumer4.java
rename to src/main/java/com/volmit/iris/util/function/Consumer4.java
diff --git a/src/main/java/com/volmit/iris/util/Consumer5.java b/src/main/java/com/volmit/iris/util/function/Consumer5.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Consumer5.java
rename to src/main/java/com/volmit/iris/util/function/Consumer5.java
diff --git a/src/main/java/com/volmit/iris/util/Consumer6.java b/src/main/java/com/volmit/iris/util/function/Consumer6.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Consumer6.java
rename to src/main/java/com/volmit/iris/util/function/Consumer6.java
diff --git a/src/main/java/com/volmit/iris/util/Consumer7.java b/src/main/java/com/volmit/iris/util/function/Consumer7.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Consumer7.java
rename to src/main/java/com/volmit/iris/util/function/Consumer7.java
diff --git a/src/main/java/com/volmit/iris/util/Consumer8.java b/src/main/java/com/volmit/iris/util/function/Consumer8.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Consumer8.java
rename to src/main/java/com/volmit/iris/util/function/Consumer8.java
diff --git a/src/main/java/com/volmit/iris/util/Function2.java b/src/main/java/com/volmit/iris/util/function/Function2.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Function2.java
rename to src/main/java/com/volmit/iris/util/function/Function2.java
diff --git a/src/main/java/com/volmit/iris/util/Function3.java b/src/main/java/com/volmit/iris/util/function/Function3.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Function3.java
rename to src/main/java/com/volmit/iris/util/function/Function3.java
diff --git a/src/main/java/com/volmit/iris/util/Function4.java b/src/main/java/com/volmit/iris/util/function/Function4.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Function4.java
rename to src/main/java/com/volmit/iris/util/function/Function4.java
diff --git a/src/main/java/com/volmit/iris/util/NastyFunction.java b/src/main/java/com/volmit/iris/util/function/NastyFunction.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/NastyFunction.java
rename to src/main/java/com/volmit/iris/util/function/NastyFunction.java
diff --git a/src/main/java/com/volmit/iris/util/NastyFuture.java b/src/main/java/com/volmit/iris/util/function/NastyFuture.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/NastyFuture.java
rename to src/main/java/com/volmit/iris/util/function/NastyFuture.java
diff --git a/src/main/java/com/volmit/iris/util/NastyRunnable.java b/src/main/java/com/volmit/iris/util/function/NastyRunnable.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/NastyRunnable.java
rename to src/main/java/com/volmit/iris/util/function/NastyRunnable.java
diff --git a/src/main/java/com/volmit/iris/util/NoiseInjector.java b/src/main/java/com/volmit/iris/util/function/NoiseInjector.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/NoiseInjector.java
rename to src/main/java/com/volmit/iris/util/function/NoiseInjector.java
diff --git a/src/main/java/com/volmit/iris/util/NoiseProvider.java b/src/main/java/com/volmit/iris/util/function/NoiseProvider.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/NoiseProvider.java
rename to src/main/java/com/volmit/iris/util/function/NoiseProvider.java
diff --git a/src/main/java/com/volmit/iris/util/NoiseProvider3.java b/src/main/java/com/volmit/iris/util/function/NoiseProvider3.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/NoiseProvider3.java
rename to src/main/java/com/volmit/iris/util/function/NoiseProvider3.java
diff --git a/src/main/java/com/volmit/iris/util/Supplier2.java b/src/main/java/com/volmit/iris/util/function/Supplier2.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Supplier2.java
rename to src/main/java/com/volmit/iris/util/function/Supplier2.java
diff --git a/src/main/java/com/volmit/iris/util/Supplier3.java b/src/main/java/com/volmit/iris/util/function/Supplier3.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Supplier3.java
rename to src/main/java/com/volmit/iris/util/function/Supplier3.java
diff --git a/src/main/java/com/volmit/iris/util/Element.java b/src/main/java/com/volmit/iris/util/inventorygui/Element.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Element.java
rename to src/main/java/com/volmit/iris/util/inventorygui/Element.java
diff --git a/src/main/java/com/volmit/iris/util/ElementEvent.java b/src/main/java/com/volmit/iris/util/inventorygui/ElementEvent.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/ElementEvent.java
rename to src/main/java/com/volmit/iris/util/inventorygui/ElementEvent.java
diff --git a/src/main/java/com/volmit/iris/util/RandomColor.java b/src/main/java/com/volmit/iris/util/inventorygui/RandomColor.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/RandomColor.java
rename to src/main/java/com/volmit/iris/util/inventorygui/RandomColor.java
diff --git a/src/main/java/com/volmit/iris/util/UIElement.java b/src/main/java/com/volmit/iris/util/inventorygui/UIElement.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/UIElement.java
rename to src/main/java/com/volmit/iris/util/inventorygui/UIElement.java
diff --git a/src/main/java/com/volmit/iris/util/UIStaticDecorator.java b/src/main/java/com/volmit/iris/util/inventorygui/UIStaticDecorator.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/UIStaticDecorator.java
rename to src/main/java/com/volmit/iris/util/inventorygui/UIStaticDecorator.java
diff --git a/src/main/java/com/volmit/iris/util/UIVoidDecorator.java b/src/main/java/com/volmit/iris/util/inventorygui/UIVoidDecorator.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/UIVoidDecorator.java
rename to src/main/java/com/volmit/iris/util/inventorygui/UIVoidDecorator.java
diff --git a/src/main/java/com/volmit/iris/util/UIWindow.java b/src/main/java/com/volmit/iris/util/inventorygui/UIWindow.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/UIWindow.java
rename to src/main/java/com/volmit/iris/util/inventorygui/UIWindow.java
diff --git a/src/main/java/com/volmit/iris/util/Window.java b/src/main/java/com/volmit/iris/util/inventorygui/Window.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Window.java
rename to src/main/java/com/volmit/iris/util/inventorygui/Window.java
diff --git a/src/main/java/com/volmit/iris/util/WindowDecorator.java b/src/main/java/com/volmit/iris/util/inventorygui/WindowDecorator.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/WindowDecorator.java
rename to src/main/java/com/volmit/iris/util/inventorygui/WindowDecorator.java
diff --git a/src/main/java/com/volmit/iris/util/WindowResolution.java b/src/main/java/com/volmit/iris/util/inventorygui/WindowResolution.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/WindowResolution.java
rename to src/main/java/com/volmit/iris/util/inventorygui/WindowResolution.java
diff --git a/src/main/java/com/volmit/iris/util/Converter.java b/src/main/java/com/volmit/iris/util/io/Converter.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Converter.java
rename to src/main/java/com/volmit/iris/util/io/Converter.java
diff --git a/src/main/java/com/volmit/iris/util/CustomOutputStream.java b/src/main/java/com/volmit/iris/util/io/CustomOutputStream.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/CustomOutputStream.java
rename to src/main/java/com/volmit/iris/util/io/CustomOutputStream.java
diff --git a/src/main/java/com/volmit/iris/util/FileWatcher.java b/src/main/java/com/volmit/iris/util/io/FileWatcher.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/FileWatcher.java
rename to src/main/java/com/volmit/iris/util/io/FileWatcher.java
diff --git a/src/main/java/com/volmit/iris/util/FolderWatcher.java b/src/main/java/com/volmit/iris/util/io/FolderWatcher.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/FolderWatcher.java
rename to src/main/java/com/volmit/iris/util/io/FolderWatcher.java
diff --git a/src/main/java/com/volmit/iris/util/IO.java b/src/main/java/com/volmit/iris/util/io/IO.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/IO.java
rename to src/main/java/com/volmit/iris/util/io/IO.java
diff --git a/src/main/java/com/volmit/iris/util/IORunnable.java b/src/main/java/com/volmit/iris/util/io/IORunnable.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/IORunnable.java
rename to src/main/java/com/volmit/iris/util/io/IORunnable.java
diff --git a/src/main/java/com/volmit/iris/util/JarScanner.java b/src/main/java/com/volmit/iris/util/io/JarScanner.java
similarity index 98%
rename from src/main/java/com/volmit/iris/util/JarScanner.java
rename to src/main/java/com/volmit/iris/util/io/JarScanner.java
index c5cf2a3a1..dccd7934f 100644
--- a/src/main/java/com/volmit/iris/util/JarScanner.java
+++ b/src/main/java/com/volmit/iris/util/io/JarScanner.java
@@ -19,6 +19,7 @@
package com.volmit.iris.util;
import com.volmit.iris.Iris;
+import com.volmit.iris.util.collection.KSet;
import java.io.File;
import java.io.FileInputStream;
diff --git a/src/main/java/com/volmit/iris/util/ReactiveFolder.java b/src/main/java/com/volmit/iris/util/io/ReactiveFolder.java
similarity index 96%
rename from src/main/java/com/volmit/iris/util/ReactiveFolder.java
rename to src/main/java/com/volmit/iris/util/io/ReactiveFolder.java
index 244843757..16c376a98 100644
--- a/src/main/java/com/volmit/iris/util/ReactiveFolder.java
+++ b/src/main/java/com/volmit/iris/util/io/ReactiveFolder.java
@@ -18,6 +18,9 @@
package com.volmit.iris.util;
+import com.volmit.iris.util.function.Consumer3;
+import com.volmit.iris.util.io.FolderWatcher;
+
import java.io.File;
public class ReactiveFolder {
diff --git a/src/main/java/com/volmit/iris/util/SKConversion.java b/src/main/java/com/volmit/iris/util/io/SKConversion.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/SKConversion.java
rename to src/main/java/com/volmit/iris/util/io/SKConversion.java
diff --git a/src/main/java/com/volmit/iris/util/VoidOutputStream.java b/src/main/java/com/volmit/iris/util/io/VoidOutputStream.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/VoidOutputStream.java
rename to src/main/java/com/volmit/iris/util/io/VoidOutputStream.java
diff --git a/src/main/java/com/volmit/iris/util/HTTP.java b/src/main/java/com/volmit/iris/util/json/HTTP.java
similarity index 98%
rename from src/main/java/com/volmit/iris/util/HTTP.java
rename to src/main/java/com/volmit/iris/util/json/HTTP.java
index 21faf68cf..65ccd72c3 100644
--- a/src/main/java/com/volmit/iris/util/HTTP.java
+++ b/src/main/java/com/volmit/iris/util/json/HTTP.java
@@ -19,6 +19,9 @@
package com.volmit.iris.util;
+import com.volmit.iris.util.json.JSONException;
+import com.volmit.iris.util.json.JSONObject;
+
import java.util.Iterator;
/**
diff --git a/src/main/java/com/volmit/iris/util/HTTPTokener.java b/src/main/java/com/volmit/iris/util/json/HTTPTokener.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/HTTPTokener.java
rename to src/main/java/com/volmit/iris/util/json/HTTPTokener.java
index 19164cc82..dc706dde0 100644
--- a/src/main/java/com/volmit/iris/util/HTTPTokener.java
+++ b/src/main/java/com/volmit/iris/util/json/HTTPTokener.java
@@ -19,6 +19,9 @@
package com.volmit.iris.util;
+import com.volmit.iris.util.json.JSONException;
+import com.volmit.iris.util.json.JSONTokener;
+
/**
* The HTTPTokener extends the JSONTokener to provide additional methods for the
* parsing of HTTP headers.
diff --git a/src/main/java/com/volmit/iris/util/JSONArray.java b/src/main/java/com/volmit/iris/util/json/JSONArray.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/JSONArray.java
rename to src/main/java/com/volmit/iris/util/json/JSONArray.java
diff --git a/src/main/java/com/volmit/iris/util/JSONException.java b/src/main/java/com/volmit/iris/util/json/JSONException.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/JSONException.java
rename to src/main/java/com/volmit/iris/util/json/JSONException.java
diff --git a/src/main/java/com/volmit/iris/util/JSONML.java b/src/main/java/com/volmit/iris/util/json/JSONML.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/JSONML.java
rename to src/main/java/com/volmit/iris/util/json/JSONML.java
diff --git a/src/main/java/com/volmit/iris/util/JSONObject.java b/src/main/java/com/volmit/iris/util/json/JSONObject.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/JSONObject.java
rename to src/main/java/com/volmit/iris/util/json/JSONObject.java
diff --git a/src/main/java/com/volmit/iris/util/JSONString.java b/src/main/java/com/volmit/iris/util/json/JSONString.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/JSONString.java
rename to src/main/java/com/volmit/iris/util/json/JSONString.java
diff --git a/src/main/java/com/volmit/iris/util/JSONStringer.java b/src/main/java/com/volmit/iris/util/json/JSONStringer.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/JSONStringer.java
rename to src/main/java/com/volmit/iris/util/json/JSONStringer.java
diff --git a/src/main/java/com/volmit/iris/util/JSONTokener.java b/src/main/java/com/volmit/iris/util/json/JSONTokener.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/JSONTokener.java
rename to src/main/java/com/volmit/iris/util/json/JSONTokener.java
diff --git a/src/main/java/com/volmit/iris/util/JSONWriter.java b/src/main/java/com/volmit/iris/util/json/JSONWriter.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/JSONWriter.java
rename to src/main/java/com/volmit/iris/util/json/JSONWriter.java
diff --git a/src/main/java/com/volmit/iris/util/XML.java b/src/main/java/com/volmit/iris/util/json/XML.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/XML.java
rename to src/main/java/com/volmit/iris/util/json/XML.java
diff --git a/src/main/java/com/volmit/iris/util/XMLTokener.java b/src/main/java/com/volmit/iris/util/json/XMLTokener.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/XMLTokener.java
rename to src/main/java/com/volmit/iris/util/json/XMLTokener.java
diff --git a/src/main/java/com/volmit/iris/util/AlignedPoint.java b/src/main/java/com/volmit/iris/util/math/AlignedPoint.java
similarity index 97%
rename from src/main/java/com/volmit/iris/util/AlignedPoint.java
rename to src/main/java/com/volmit/iris/util/math/AlignedPoint.java
index 177d18367..3862e1aba 100644
--- a/src/main/java/com/volmit/iris/util/AlignedPoint.java
+++ b/src/main/java/com/volmit/iris/util/math/AlignedPoint.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
public class AlignedPoint {
private double x;
diff --git a/src/main/java/com/volmit/iris/util/Average.java b/src/main/java/com/volmit/iris/util/math/Average.java
similarity index 96%
rename from src/main/java/com/volmit/iris/util/Average.java
rename to src/main/java/com/volmit/iris/util/math/Average.java
index e0ccd95b9..10ea8c991 100644
--- a/src/main/java/com/volmit/iris/util/Average.java
+++ b/src/main/java/com/volmit/iris/util/math/Average.java
@@ -16,7 +16,9 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
+
+import com.volmit.iris.util.DoubleArrayUtils;
/**
* Provides an incredibly fast averaging object. It swaps values from a sum
diff --git a/src/main/java/com/volmit/iris/util/AxisAlignedBB.java b/src/main/java/com/volmit/iris/util/math/AxisAlignedBB.java
similarity index 97%
rename from src/main/java/com/volmit/iris/util/AxisAlignedBB.java
rename to src/main/java/com/volmit/iris/util/math/AxisAlignedBB.java
index de7fcec32..7d12e5a74 100644
--- a/src/main/java/com/volmit/iris/util/AxisAlignedBB.java
+++ b/src/main/java/com/volmit/iris/util/math/AxisAlignedBB.java
@@ -16,9 +16,10 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
import com.volmit.iris.engine.object.IrisPosition;
+import com.volmit.iris.util.Cuboid;
import org.bukkit.World;
import org.bukkit.util.BlockVector;
diff --git a/src/main/java/com/volmit/iris/util/BlockPosition.java b/src/main/java/com/volmit/iris/util/math/BlockPosition.java
similarity index 98%
rename from src/main/java/com/volmit/iris/util/BlockPosition.java
rename to src/main/java/com/volmit/iris/util/math/BlockPosition.java
index 1a29c8b0d..2729714e5 100644
--- a/src/main/java/com/volmit/iris/util/BlockPosition.java
+++ b/src/main/java/com/volmit/iris/util/math/BlockPosition.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
import lombok.Data;
diff --git a/src/main/java/com/volmit/iris/util/CDou.java b/src/main/java/com/volmit/iris/util/math/CDou.java
similarity index 97%
rename from src/main/java/com/volmit/iris/util/CDou.java
rename to src/main/java/com/volmit/iris/util/math/CDou.java
index 53ca67f80..76323fb71 100644
--- a/src/main/java/com/volmit/iris/util/CDou.java
+++ b/src/main/java/com/volmit/iris/util/math/CDou.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
@SuppressWarnings("ALL")
public class CDou {
diff --git a/src/main/java/com/volmit/iris/util/ChunkPosition.java b/src/main/java/com/volmit/iris/util/math/ChunkPosition.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/ChunkPosition.java
rename to src/main/java/com/volmit/iris/util/math/ChunkPosition.java
diff --git a/src/main/java/com/volmit/iris/util/DOP.java b/src/main/java/com/volmit/iris/util/math/DOP.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/DOP.java
rename to src/main/java/com/volmit/iris/util/math/DOP.java
diff --git a/src/main/java/com/volmit/iris/util/Direction.java b/src/main/java/com/volmit/iris/util/math/Direction.java
similarity index 98%
rename from src/main/java/com/volmit/iris/util/Direction.java
rename to src/main/java/com/volmit/iris/util/math/Direction.java
index 507fc3650..dbd73a61a 100644
--- a/src/main/java/com/volmit/iris/util/Direction.java
+++ b/src/main/java/com/volmit/iris/util/math/Direction.java
@@ -16,9 +16,13 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
import com.volmit.iris.util.Cuboid.CuboidDirection;
+import com.volmit.iris.util.DOP;
+import com.volmit.iris.util.GBiset;
+import com.volmit.iris.util.KList;
+import com.volmit.iris.util.KMap;
import org.bukkit.Axis;
import org.bukkit.block.BlockFace;
import org.bukkit.util.Vector;
diff --git a/src/main/java/com/volmit/iris/util/FinalInteger.java b/src/main/java/com/volmit/iris/util/math/FinalInteger.java
similarity index 96%
rename from src/main/java/com/volmit/iris/util/FinalInteger.java
rename to src/main/java/com/volmit/iris/util/math/FinalInteger.java
index c4a92b939..689eb80a3 100644
--- a/src/main/java/com/volmit/iris/util/FinalInteger.java
+++ b/src/main/java/com/volmit/iris/util/math/FinalInteger.java
@@ -18,6 +18,8 @@
package com.volmit.iris.util;
+import com.volmit.iris.util.scheduling.Wrapper;
+
/**
* Represents a number that can be finalized and be changed
*
diff --git a/src/main/java/com/volmit/iris/util/IrisMathHelper.java b/src/main/java/com/volmit/iris/util/math/IrisMathHelper.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/IrisMathHelper.java
rename to src/main/java/com/volmit/iris/util/math/IrisMathHelper.java
diff --git a/src/main/java/com/volmit/iris/util/M.java b/src/main/java/com/volmit/iris/util/math/M.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/M.java
rename to src/main/java/com/volmit/iris/util/math/M.java
index 8074d683d..5b2add262 100644
--- a/src/main/java/com/volmit/iris/util/M.java
+++ b/src/main/java/com/volmit/iris/util/math/M.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
diff --git a/src/main/java/com/volmit/iris/util/MathHelper.java b/src/main/java/com/volmit/iris/util/math/MathHelper.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/MathHelper.java
rename to src/main/java/com/volmit/iris/util/math/MathHelper.java
index d6bd8ebdd..0b4b9082d 100644
--- a/src/main/java/com/volmit/iris/util/MathHelper.java
+++ b/src/main/java/com/volmit/iris/util/math/MathHelper.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
import java.util.Random;
import java.util.UUID;
diff --git a/src/main/java/com/volmit/iris/util/Point3d.java b/src/main/java/com/volmit/iris/util/math/Point3d.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/Point3d.java
rename to src/main/java/com/volmit/iris/util/math/Point3d.java
index e6f02402b..af158a7cb 100644
--- a/src/main/java/com/volmit/iris/util/Point3d.java
+++ b/src/main/java/com/volmit/iris/util/math/Point3d.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
/**
* A 3 element point that is represented by double precision floating point
diff --git a/src/main/java/com/volmit/iris/util/Point3f.java b/src/main/java/com/volmit/iris/util/math/Point3f.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/Point3f.java
rename to src/main/java/com/volmit/iris/util/math/Point3f.java
index 4fd5cb491..898479e5f 100644
--- a/src/main/java/com/volmit/iris/util/Point3f.java
+++ b/src/main/java/com/volmit/iris/util/math/Point3f.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
/**
* A 3 element point that is represented by single precision floating point
diff --git a/src/main/java/com/volmit/iris/util/Point4d.java b/src/main/java/com/volmit/iris/util/math/Point4d.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/Point4d.java
rename to src/main/java/com/volmit/iris/util/math/Point4d.java
index 0733cf481..165d1049e 100644
--- a/src/main/java/com/volmit/iris/util/Point4d.java
+++ b/src/main/java/com/volmit/iris/util/math/Point4d.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
/**
* A 4 element vector represented by double precision floating point
diff --git a/src/main/java/com/volmit/iris/util/Point4f.java b/src/main/java/com/volmit/iris/util/math/Point4f.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/Point4f.java
rename to src/main/java/com/volmit/iris/util/math/Point4f.java
index 1da7af3f4..2da6546c5 100644
--- a/src/main/java/com/volmit/iris/util/Point4f.java
+++ b/src/main/java/com/volmit/iris/util/math/Point4f.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
/**
* A 4 element point represented by single precision floating point x,y,z,w
diff --git a/src/main/java/com/volmit/iris/util/RNG.java b/src/main/java/com/volmit/iris/util/math/RNG.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/RNG.java
rename to src/main/java/com/volmit/iris/util/math/RNG.java
index 2616fdfc7..ad669778e 100644
--- a/src/main/java/com/volmit/iris/util/RNG.java
+++ b/src/main/java/com/volmit/iris/util/math/RNG.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
import java.nio.charset.StandardCharsets;
import java.util.List;
diff --git a/src/main/java/com/volmit/iris/util/RollingSequence.java b/src/main/java/com/volmit/iris/util/math/RollingSequence.java
similarity index 96%
rename from src/main/java/com/volmit/iris/util/RollingSequence.java
rename to src/main/java/com/volmit/iris/util/math/RollingSequence.java
index 4a75ed470..624cd7358 100644
--- a/src/main/java/com/volmit/iris/util/RollingSequence.java
+++ b/src/main/java/com/volmit/iris/util/math/RollingSequence.java
@@ -18,6 +18,9 @@
package com.volmit.iris.util;
+import com.volmit.iris.util.math.Average;
+import com.volmit.iris.util.math.M;
+
public class RollingSequence extends Average {
private double median;
private double max;
diff --git a/src/main/java/com/volmit/iris/util/Spiraled.java b/src/main/java/com/volmit/iris/util/math/Spiraled.java
similarity index 96%
rename from src/main/java/com/volmit/iris/util/Spiraled.java
rename to src/main/java/com/volmit/iris/util/math/Spiraled.java
index 01848d042..02f0cb6c2 100644
--- a/src/main/java/com/volmit/iris/util/Spiraled.java
+++ b/src/main/java/com/volmit/iris/util/math/Spiraled.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
@FunctionalInterface
public interface Spiraled {
diff --git a/src/main/java/com/volmit/iris/util/Spiraler.java b/src/main/java/com/volmit/iris/util/math/Spiraler.java
similarity index 98%
rename from src/main/java/com/volmit/iris/util/Spiraler.java
rename to src/main/java/com/volmit/iris/util/math/Spiraler.java
index 58036d898..a10ea3950 100644
--- a/src/main/java/com/volmit/iris/util/Spiraler.java
+++ b/src/main/java/com/volmit/iris/util/math/Spiraler.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
@SuppressWarnings("EmptyMethod")
public class Spiraler {
diff --git a/src/main/java/com/volmit/iris/util/Tuple2d.java b/src/main/java/com/volmit/iris/util/math/Tuple2d.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/Tuple2d.java
rename to src/main/java/com/volmit/iris/util/math/Tuple2d.java
index 1f131715e..0bd95a412 100644
--- a/src/main/java/com/volmit/iris/util/Tuple2d.java
+++ b/src/main/java/com/volmit/iris/util/math/Tuple2d.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
import com.volmit.iris.Iris;
diff --git a/src/main/java/com/volmit/iris/util/Tuple2f.java b/src/main/java/com/volmit/iris/util/math/Tuple2f.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/Tuple2f.java
rename to src/main/java/com/volmit/iris/util/math/Tuple2f.java
index 11fe2d816..564ac33af 100644
--- a/src/main/java/com/volmit/iris/util/Tuple2f.java
+++ b/src/main/java/com/volmit/iris/util/math/Tuple2f.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
import com.volmit.iris.Iris;
diff --git a/src/main/java/com/volmit/iris/util/Tuple3d.java b/src/main/java/com/volmit/iris/util/math/Tuple3d.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/Tuple3d.java
rename to src/main/java/com/volmit/iris/util/math/Tuple3d.java
index 8fb85c854..e3c4456fa 100644
--- a/src/main/java/com/volmit/iris/util/Tuple3d.java
+++ b/src/main/java/com/volmit/iris/util/math/Tuple3d.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
import com.volmit.iris.Iris;
diff --git a/src/main/java/com/volmit/iris/util/Tuple3f.java b/src/main/java/com/volmit/iris/util/math/Tuple3f.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/Tuple3f.java
rename to src/main/java/com/volmit/iris/util/math/Tuple3f.java
index a517de53c..0a784bc59 100644
--- a/src/main/java/com/volmit/iris/util/Tuple3f.java
+++ b/src/main/java/com/volmit/iris/util/math/Tuple3f.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
import com.volmit.iris.Iris;
diff --git a/src/main/java/com/volmit/iris/util/Tuple4d.java b/src/main/java/com/volmit/iris/util/math/Tuple4d.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/Tuple4d.java
rename to src/main/java/com/volmit/iris/util/math/Tuple4d.java
index 56800e3c4..75b4509f6 100644
--- a/src/main/java/com/volmit/iris/util/Tuple4d.java
+++ b/src/main/java/com/volmit/iris/util/math/Tuple4d.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
import com.volmit.iris.Iris;
diff --git a/src/main/java/com/volmit/iris/util/Tuple4f.java b/src/main/java/com/volmit/iris/util/math/Tuple4f.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/Tuple4f.java
rename to src/main/java/com/volmit/iris/util/math/Tuple4f.java
index cc09ade50..b89f5d560 100644
--- a/src/main/java/com/volmit/iris/util/Tuple4f.java
+++ b/src/main/java/com/volmit/iris/util/math/Tuple4f.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
import com.volmit.iris.Iris;
diff --git a/src/main/java/com/volmit/iris/util/VecMathUtil.java b/src/main/java/com/volmit/iris/util/math/VecMathUtil.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/VecMathUtil.java
rename to src/main/java/com/volmit/iris/util/math/VecMathUtil.java
index 13b94d9bc..8dd50ccc7 100644
--- a/src/main/java/com/volmit/iris/util/VecMathUtil.java
+++ b/src/main/java/com/volmit/iris/util/math/VecMathUtil.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
/**
* Utility vecmath class used when computing the hash code for vecmath
diff --git a/src/main/java/com/volmit/iris/util/Vector2d.java b/src/main/java/com/volmit/iris/util/math/Vector2d.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/Vector2d.java
rename to src/main/java/com/volmit/iris/util/math/Vector2d.java
index 9caa0210f..6d1122774 100644
--- a/src/main/java/com/volmit/iris/util/Vector2d.java
+++ b/src/main/java/com/volmit/iris/util/math/Vector2d.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
/**
* A 2-element vector that is represented by double-precision floating
diff --git a/src/main/java/com/volmit/iris/util/Vector2f.java b/src/main/java/com/volmit/iris/util/math/Vector2f.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/Vector2f.java
rename to src/main/java/com/volmit/iris/util/math/Vector2f.java
index 8756d2823..76d55d76a 100644
--- a/src/main/java/com/volmit/iris/util/Vector2f.java
+++ b/src/main/java/com/volmit/iris/util/math/Vector2f.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
/**
* A 2-element vector that is represented by single-precision floating
diff --git a/src/main/java/com/volmit/iris/util/Vector3d.java b/src/main/java/com/volmit/iris/util/math/Vector3d.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/Vector3d.java
rename to src/main/java/com/volmit/iris/util/math/Vector3d.java
index 41119561e..f0f748983 100644
--- a/src/main/java/com/volmit/iris/util/Vector3d.java
+++ b/src/main/java/com/volmit/iris/util/math/Vector3d.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
/**
* A 3-element vector that is represented by double-precision floating point
diff --git a/src/main/java/com/volmit/iris/util/Vector3f.java b/src/main/java/com/volmit/iris/util/math/Vector3f.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/Vector3f.java
rename to src/main/java/com/volmit/iris/util/math/Vector3f.java
index e43299aad..bc961a8e2 100644
--- a/src/main/java/com/volmit/iris/util/Vector3f.java
+++ b/src/main/java/com/volmit/iris/util/math/Vector3f.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
/**
* A 3-element vector that is represented by single-precision floating point
diff --git a/src/main/java/com/volmit/iris/util/VectorMath.java b/src/main/java/com/volmit/iris/util/math/VectorMath.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/VectorMath.java
rename to src/main/java/com/volmit/iris/util/math/VectorMath.java
index 068944b07..ca3f58a50 100644
--- a/src/main/java/com/volmit/iris/util/VectorMath.java
+++ b/src/main/java/com/volmit/iris/util/math/VectorMath.java
@@ -16,8 +16,11 @@
* along with this program. If not, see .
*/
-package com.volmit.iris.util;
+package com.volmit.iris.util.math;
+import com.volmit.iris.util.Form;
+import com.volmit.iris.util.GListAdapter;
+import com.volmit.iris.util.KList;
import org.bukkit.Axis;
import org.bukkit.Bukkit;
import org.bukkit.Location;
diff --git a/src/main/java/com/volmit/iris/util/ByteArrayTag.java b/src/main/java/com/volmit/iris/util/oldnbt/ByteArrayTag.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/ByteArrayTag.java
rename to src/main/java/com/volmit/iris/util/oldnbt/ByteArrayTag.java
diff --git a/src/main/java/com/volmit/iris/util/ByteTag.java b/src/main/java/com/volmit/iris/util/oldnbt/ByteTag.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/ByteTag.java
rename to src/main/java/com/volmit/iris/util/oldnbt/ByteTag.java
diff --git a/src/main/java/com/volmit/iris/util/CompoundTag.java b/src/main/java/com/volmit/iris/util/oldnbt/CompoundTag.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/CompoundTag.java
rename to src/main/java/com/volmit/iris/util/oldnbt/CompoundTag.java
diff --git a/src/main/java/com/volmit/iris/util/DoubleTag.java b/src/main/java/com/volmit/iris/util/oldnbt/DoubleTag.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/DoubleTag.java
rename to src/main/java/com/volmit/iris/util/oldnbt/DoubleTag.java
diff --git a/src/main/java/com/volmit/iris/util/EndTag.java b/src/main/java/com/volmit/iris/util/oldnbt/EndTag.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/EndTag.java
rename to src/main/java/com/volmit/iris/util/oldnbt/EndTag.java
diff --git a/src/main/java/com/volmit/iris/util/FloatTag.java b/src/main/java/com/volmit/iris/util/oldnbt/FloatTag.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/FloatTag.java
rename to src/main/java/com/volmit/iris/util/oldnbt/FloatTag.java
diff --git a/src/main/java/com/volmit/iris/util/IntArrayTag.java b/src/main/java/com/volmit/iris/util/oldnbt/IntArrayTag.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/IntArrayTag.java
rename to src/main/java/com/volmit/iris/util/oldnbt/IntArrayTag.java
diff --git a/src/main/java/com/volmit/iris/util/IntTag.java b/src/main/java/com/volmit/iris/util/oldnbt/IntTag.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/IntTag.java
rename to src/main/java/com/volmit/iris/util/oldnbt/IntTag.java
diff --git a/src/main/java/com/volmit/iris/util/ListTag.java b/src/main/java/com/volmit/iris/util/oldnbt/ListTag.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/ListTag.java
rename to src/main/java/com/volmit/iris/util/oldnbt/ListTag.java
diff --git a/src/main/java/com/volmit/iris/util/LongTag.java b/src/main/java/com/volmit/iris/util/oldnbt/LongTag.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/LongTag.java
rename to src/main/java/com/volmit/iris/util/oldnbt/LongTag.java
diff --git a/src/main/java/com/volmit/iris/util/NBTConstants.java b/src/main/java/com/volmit/iris/util/oldnbt/NBTConstants.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/NBTConstants.java
rename to src/main/java/com/volmit/iris/util/oldnbt/NBTConstants.java
diff --git a/src/main/java/com/volmit/iris/util/NBTInputStream.java b/src/main/java/com/volmit/iris/util/oldnbt/NBTInputStream.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/NBTInputStream.java
rename to src/main/java/com/volmit/iris/util/oldnbt/NBTInputStream.java
diff --git a/src/main/java/com/volmit/iris/util/NBTOutputStream.java b/src/main/java/com/volmit/iris/util/oldnbt/NBTOutputStream.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/NBTOutputStream.java
rename to src/main/java/com/volmit/iris/util/oldnbt/NBTOutputStream.java
diff --git a/src/main/java/com/volmit/iris/util/NBTUtils.java b/src/main/java/com/volmit/iris/util/oldnbt/NBTUtils.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/NBTUtils.java
rename to src/main/java/com/volmit/iris/util/oldnbt/NBTUtils.java
diff --git a/src/main/java/com/volmit/iris/util/ShortTag.java b/src/main/java/com/volmit/iris/util/oldnbt/ShortTag.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/ShortTag.java
rename to src/main/java/com/volmit/iris/util/oldnbt/ShortTag.java
diff --git a/src/main/java/com/volmit/iris/util/StringTag.java b/src/main/java/com/volmit/iris/util/oldnbt/StringTag.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/StringTag.java
rename to src/main/java/com/volmit/iris/util/oldnbt/StringTag.java
diff --git a/src/main/java/com/volmit/iris/util/Tag.java b/src/main/java/com/volmit/iris/util/oldnbt/Tag.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Tag.java
rename to src/main/java/com/volmit/iris/util/oldnbt/Tag.java
diff --git a/src/main/java/com/volmit/iris/util/FastParticle.java b/src/main/java/com/volmit/iris/util/particle/FastParticle.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/FastParticle.java
rename to src/main/java/com/volmit/iris/util/particle/FastParticle.java
diff --git a/src/main/java/com/volmit/iris/util/FastReflection.java b/src/main/java/com/volmit/iris/util/particle/FastReflection.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/FastReflection.java
rename to src/main/java/com/volmit/iris/util/particle/FastReflection.java
diff --git a/src/main/java/com/volmit/iris/util/ParticleSender.java b/src/main/java/com/volmit/iris/util/particle/ParticleSender.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/ParticleSender.java
rename to src/main/java/com/volmit/iris/util/particle/ParticleSender.java
diff --git a/src/main/java/com/volmit/iris/util/ParticleSenderLegacy.java b/src/main/java/com/volmit/iris/util/particle/ParticleSenderLegacy.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/ParticleSenderLegacy.java
rename to src/main/java/com/volmit/iris/util/particle/ParticleSenderLegacy.java
diff --git a/src/main/java/com/volmit/iris/util/ParticleType.java b/src/main/java/com/volmit/iris/util/particle/ParticleType.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/ParticleType.java
rename to src/main/java/com/volmit/iris/util/particle/ParticleType.java
diff --git a/src/main/java/com/volmit/iris/util/CancellableTask.java b/src/main/java/com/volmit/iris/util/plugin/CancellableTask.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/CancellableTask.java
rename to src/main/java/com/volmit/iris/util/plugin/CancellableTask.java
diff --git a/src/main/java/com/volmit/iris/util/Command.java b/src/main/java/com/volmit/iris/util/plugin/Command.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Command.java
rename to src/main/java/com/volmit/iris/util/plugin/Command.java
diff --git a/src/main/java/com/volmit/iris/util/Control.java b/src/main/java/com/volmit/iris/util/plugin/Control.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Control.java
rename to src/main/java/com/volmit/iris/util/plugin/Control.java
diff --git a/src/main/java/com/volmit/iris/util/Controller.java b/src/main/java/com/volmit/iris/util/plugin/Controller.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Controller.java
rename to src/main/java/com/volmit/iris/util/plugin/Controller.java
diff --git a/src/main/java/com/volmit/iris/util/IActivator.java b/src/main/java/com/volmit/iris/util/plugin/IActivator.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/IActivator.java
rename to src/main/java/com/volmit/iris/util/plugin/IActivator.java
diff --git a/src/main/java/com/volmit/iris/util/ICommand.java b/src/main/java/com/volmit/iris/util/plugin/ICommand.java
similarity index 97%
rename from src/main/java/com/volmit/iris/util/ICommand.java
rename to src/main/java/com/volmit/iris/util/plugin/ICommand.java
index b91ec8e86..15e237af7 100644
--- a/src/main/java/com/volmit/iris/util/ICommand.java
+++ b/src/main/java/com/volmit/iris/util/plugin/ICommand.java
@@ -18,6 +18,8 @@
package com.volmit.iris.util;
+import com.volmit.iris.util.plugin.MortarSender;
+
/**
* Represents a pawn command
*
diff --git a/src/main/java/com/volmit/iris/util/IController.java b/src/main/java/com/volmit/iris/util/plugin/IController.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/IController.java
rename to src/main/java/com/volmit/iris/util/plugin/IController.java
diff --git a/src/main/java/com/volmit/iris/util/Instance.java b/src/main/java/com/volmit/iris/util/plugin/Instance.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Instance.java
rename to src/main/java/com/volmit/iris/util/plugin/Instance.java
diff --git a/src/main/java/com/volmit/iris/util/Metrics.java b/src/main/java/com/volmit/iris/util/plugin/Metrics.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Metrics.java
rename to src/main/java/com/volmit/iris/util/plugin/Metrics.java
diff --git a/src/main/java/com/volmit/iris/util/MetricsLite.java b/src/main/java/com/volmit/iris/util/plugin/MetricsLite.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/MetricsLite.java
rename to src/main/java/com/volmit/iris/util/plugin/MetricsLite.java
diff --git a/src/main/java/com/volmit/iris/util/MortarCommand.java b/src/main/java/com/volmit/iris/util/plugin/MortarCommand.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/MortarCommand.java
rename to src/main/java/com/volmit/iris/util/plugin/MortarCommand.java
diff --git a/src/main/java/com/volmit/iris/util/MortarPermission.java b/src/main/java/com/volmit/iris/util/plugin/MortarPermission.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/MortarPermission.java
rename to src/main/java/com/volmit/iris/util/plugin/MortarPermission.java
diff --git a/src/main/java/com/volmit/iris/util/MortarSender.java b/src/main/java/com/volmit/iris/util/plugin/MortarSender.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/MortarSender.java
rename to src/main/java/com/volmit/iris/util/plugin/MortarSender.java
diff --git a/src/main/java/com/volmit/iris/util/Permission.java b/src/main/java/com/volmit/iris/util/plugin/Permission.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Permission.java
rename to src/main/java/com/volmit/iris/util/plugin/Permission.java
diff --git a/src/main/java/com/volmit/iris/util/RouterCommand.java b/src/main/java/com/volmit/iris/util/plugin/RouterCommand.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/RouterCommand.java
rename to src/main/java/com/volmit/iris/util/plugin/RouterCommand.java
diff --git a/src/main/java/com/volmit/iris/util/VirtualCommand.java b/src/main/java/com/volmit/iris/util/plugin/VirtualCommand.java
similarity index 98%
rename from src/main/java/com/volmit/iris/util/VirtualCommand.java
rename to src/main/java/com/volmit/iris/util/plugin/VirtualCommand.java
index 8abcb62e9..e3c437891 100644
--- a/src/main/java/com/volmit/iris/util/VirtualCommand.java
+++ b/src/main/java/com/volmit/iris/util/plugin/VirtualCommand.java
@@ -20,6 +20,8 @@ package com.volmit.iris.util;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
+import com.volmit.iris.util.plugin.MortarSender;
+import com.volmit.iris.util.reflect.V;
import org.bukkit.Bukkit;
import org.bukkit.Sound;
import org.bukkit.command.CommandSender;
diff --git a/src/main/java/com/volmit/iris/util/VolmitPlugin.java b/src/main/java/com/volmit/iris/util/plugin/VolmitPlugin.java
similarity index 99%
rename from src/main/java/com/volmit/iris/util/VolmitPlugin.java
rename to src/main/java/com/volmit/iris/util/plugin/VolmitPlugin.java
index 14c2ef730..181e02181 100644
--- a/src/main/java/com/volmit/iris/util/VolmitPlugin.java
+++ b/src/main/java/com/volmit/iris/util/plugin/VolmitPlugin.java
@@ -19,6 +19,7 @@
package com.volmit.iris.util;
import com.volmit.iris.Iris;
+import com.volmit.iris.util.math.M;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.*;
diff --git a/src/main/java/com/volmit/iris/util/V.java b/src/main/java/com/volmit/iris/util/reflect/V.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/V.java
rename to src/main/java/com/volmit/iris/util/reflect/V.java
diff --git a/src/main/java/com/volmit/iris/util/Violator.java b/src/main/java/com/volmit/iris/util/reflect/Violator.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Violator.java
rename to src/main/java/com/volmit/iris/util/reflect/Violator.java
diff --git a/src/main/java/com/volmit/iris/util/AR.java b/src/main/java/com/volmit/iris/util/scheduling/AR.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/AR.java
rename to src/main/java/com/volmit/iris/util/scheduling/AR.java
index 574721304..94ecc4d97 100644
--- a/src/main/java/com/volmit/iris/util/AR.java
+++ b/src/main/java/com/volmit/iris/util/scheduling/AR.java
@@ -18,6 +18,8 @@
package com.volmit.iris.util;
+import com.volmit.iris.util.plugin.CancellableTask;
+
public abstract class AR implements Runnable, CancellableTask {
private int id = 0;
diff --git a/src/main/java/com/volmit/iris/util/Callback.java b/src/main/java/com/volmit/iris/util/scheduling/Callback.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Callback.java
rename to src/main/java/com/volmit/iris/util/scheduling/Callback.java
diff --git a/src/main/java/com/volmit/iris/util/CallbackCV.java b/src/main/java/com/volmit/iris/util/scheduling/CallbackCV.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/CallbackCV.java
rename to src/main/java/com/volmit/iris/util/scheduling/CallbackCV.java
diff --git a/src/main/java/com/volmit/iris/util/ChronoLatch.java b/src/main/java/com/volmit/iris/util/scheduling/ChronoLatch.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/ChronoLatch.java
rename to src/main/java/com/volmit/iris/util/scheduling/ChronoLatch.java
diff --git a/src/main/java/com/volmit/iris/util/Chunker.java b/src/main/java/com/volmit/iris/util/scheduling/Chunker.java
similarity index 93%
rename from src/main/java/com/volmit/iris/util/Chunker.java
rename to src/main/java/com/volmit/iris/util/scheduling/Chunker.java
index e2007fde5..b821d730d 100644
--- a/src/main/java/com/volmit/iris/util/Chunker.java
+++ b/src/main/java/com/volmit/iris/util/scheduling/Chunker.java
@@ -18,6 +18,10 @@
package com.volmit.iris.util;
+import com.volmit.iris.util.scheduling.Callback;
+import com.volmit.iris.util.scheduling.ChronoLatch;
+import com.volmit.iris.util.scheduling.Contained;
+
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
diff --git a/src/main/java/com/volmit/iris/util/Contained.java b/src/main/java/com/volmit/iris/util/scheduling/Contained.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Contained.java
rename to src/main/java/com/volmit/iris/util/scheduling/Contained.java
diff --git a/src/main/java/com/volmit/iris/util/GroupedExecutor.java b/src/main/java/com/volmit/iris/util/scheduling/GroupedExecutor.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/GroupedExecutor.java
rename to src/main/java/com/volmit/iris/util/scheduling/GroupedExecutor.java
index 458d93e45..d2e124dbf 100644
--- a/src/main/java/com/volmit/iris/util/GroupedExecutor.java
+++ b/src/main/java/com/volmit/iris/util/scheduling/GroupedExecutor.java
@@ -19,6 +19,9 @@
package com.volmit.iris.util;
import com.volmit.iris.Iris;
+import com.volmit.iris.util.collection.KMap;
+import com.volmit.iris.util.function.NastyRunnable;
+import com.volmit.iris.util.scheduling.J;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
diff --git a/src/main/java/com/volmit/iris/util/IrisLock.java b/src/main/java/com/volmit/iris/util/scheduling/IrisLock.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/IrisLock.java
rename to src/main/java/com/volmit/iris/util/scheduling/IrisLock.java
diff --git a/src/main/java/com/volmit/iris/util/J.java b/src/main/java/com/volmit/iris/util/scheduling/J.java
similarity index 97%
rename from src/main/java/com/volmit/iris/util/J.java
rename to src/main/java/com/volmit/iris/util/scheduling/J.java
index 6230d5a98..b2ff8dabd 100644
--- a/src/main/java/com/volmit/iris/util/J.java
+++ b/src/main/java/com/volmit/iris/util/scheduling/J.java
@@ -19,6 +19,11 @@
package com.volmit.iris.util;
import com.volmit.iris.Iris;
+import com.volmit.iris.util.function.NastyFunction;
+import com.volmit.iris.util.function.NastyFuture;
+import com.volmit.iris.util.function.NastyRunnable;
+import com.volmit.iris.util.scheduling.AR;
+import com.volmit.iris.util.scheduling.SR;
import org.bukkit.Bukkit;
import java.util.concurrent.*;
diff --git a/src/main/java/com/volmit/iris/util/Looper.java b/src/main/java/com/volmit/iris/util/scheduling/Looper.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Looper.java
rename to src/main/java/com/volmit/iris/util/scheduling/Looper.java
diff --git a/src/main/java/com/volmit/iris/util/O.java b/src/main/java/com/volmit/iris/util/scheduling/O.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/O.java
rename to src/main/java/com/volmit/iris/util/scheduling/O.java
diff --git a/src/main/java/com/volmit/iris/util/Observable.java b/src/main/java/com/volmit/iris/util/scheduling/Observable.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Observable.java
rename to src/main/java/com/volmit/iris/util/scheduling/Observable.java
diff --git a/src/main/java/com/volmit/iris/util/Observer.java b/src/main/java/com/volmit/iris/util/scheduling/Observer.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Observer.java
rename to src/main/java/com/volmit/iris/util/scheduling/Observer.java
diff --git a/src/main/java/com/volmit/iris/util/PrecisionStopwatch.java b/src/main/java/com/volmit/iris/util/scheduling/PrecisionStopwatch.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/PrecisionStopwatch.java
rename to src/main/java/com/volmit/iris/util/scheduling/PrecisionStopwatch.java
diff --git a/src/main/java/com/volmit/iris/util/Queue.java b/src/main/java/com/volmit/iris/util/scheduling/Queue.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Queue.java
rename to src/main/java/com/volmit/iris/util/scheduling/Queue.java
diff --git a/src/main/java/com/volmit/iris/util/QueueExecutor.java b/src/main/java/com/volmit/iris/util/scheduling/QueueExecutor.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/QueueExecutor.java
rename to src/main/java/com/volmit/iris/util/scheduling/QueueExecutor.java
diff --git a/src/main/java/com/volmit/iris/util/S.java b/src/main/java/com/volmit/iris/util/scheduling/S.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/S.java
rename to src/main/java/com/volmit/iris/util/scheduling/S.java
diff --git a/src/main/java/com/volmit/iris/util/SR.java b/src/main/java/com/volmit/iris/util/scheduling/SR.java
similarity index 95%
rename from src/main/java/com/volmit/iris/util/SR.java
rename to src/main/java/com/volmit/iris/util/scheduling/SR.java
index b15d32b1e..666ea91d8 100644
--- a/src/main/java/com/volmit/iris/util/SR.java
+++ b/src/main/java/com/volmit/iris/util/scheduling/SR.java
@@ -18,6 +18,8 @@
package com.volmit.iris.util;
+import com.volmit.iris.util.plugin.CancellableTask;
+
public abstract class SR implements Runnable, CancellableTask {
private int id = 0;
diff --git a/src/main/java/com/volmit/iris/util/ShurikenQueue.java b/src/main/java/com/volmit/iris/util/scheduling/ShurikenQueue.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/ShurikenQueue.java
rename to src/main/java/com/volmit/iris/util/scheduling/ShurikenQueue.java
diff --git a/src/main/java/com/volmit/iris/util/Switch.java b/src/main/java/com/volmit/iris/util/scheduling/Switch.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Switch.java
rename to src/main/java/com/volmit/iris/util/scheduling/Switch.java
diff --git a/src/main/java/com/volmit/iris/util/TaskExecutor.java b/src/main/java/com/volmit/iris/util/scheduling/TaskExecutor.java
similarity index 98%
rename from src/main/java/com/volmit/iris/util/TaskExecutor.java
rename to src/main/java/com/volmit/iris/util/scheduling/TaskExecutor.java
index aac1015c1..58e676829 100644
--- a/src/main/java/com/volmit/iris/util/TaskExecutor.java
+++ b/src/main/java/com/volmit/iris/util/scheduling/TaskExecutor.java
@@ -19,6 +19,8 @@
package com.volmit.iris.util;
import com.volmit.iris.Iris;
+import com.volmit.iris.util.function.NastyRunnable;
+import com.volmit.iris.util.math.M;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
diff --git a/src/main/java/com/volmit/iris/util/ThreadMonitor.java b/src/main/java/com/volmit/iris/util/scheduling/ThreadMonitor.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/ThreadMonitor.java
rename to src/main/java/com/volmit/iris/util/scheduling/ThreadMonitor.java
diff --git a/src/main/java/com/volmit/iris/util/Wrapper.java b/src/main/java/com/volmit/iris/util/scheduling/Wrapper.java
similarity index 100%
rename from src/main/java/com/volmit/iris/util/Wrapper.java
rename to src/main/java/com/volmit/iris/util/scheduling/Wrapper.java