diff --git a/common/src/main/java/com/dfsek/terra/addons/loading/AddonClassLoader.java b/common/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java
similarity index 93%
rename from common/src/main/java/com/dfsek/terra/addons/loading/AddonClassLoader.java
rename to common/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java
index 58093e6cf..cb749a3ef 100644
--- a/common/src/main/java/com/dfsek/terra/addons/loading/AddonClassLoader.java
+++ b/common/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java
@@ -1,7 +1,7 @@
-package com.dfsek.terra.addons.loading;
+package com.dfsek.terra.addon;
-import com.dfsek.terra.addons.addon.TerraAddon;
-import com.dfsek.terra.addons.annotations.Addon;
+import com.dfsek.terra.api.addons.TerraAddon;
+import com.dfsek.terra.api.addons.annotations.Addon;
import java.io.File;
import java.io.IOException;
diff --git a/common/src/main/java/com/dfsek/terra/addons/loading/pre/AddonPool.java b/common/src/main/java/com/dfsek/terra/addon/AddonPool.java
similarity index 88%
rename from common/src/main/java/com/dfsek/terra/addons/loading/pre/AddonPool.java
rename to common/src/main/java/com/dfsek/terra/addon/AddonPool.java
index 2264b49d6..1fe0844dd 100644
--- a/common/src/main/java/com/dfsek/terra/addons/loading/pre/AddonPool.java
+++ b/common/src/main/java/com/dfsek/terra/addon/AddonPool.java
@@ -1,6 +1,6 @@
-package com.dfsek.terra.addons.loading.pre;
+package com.dfsek.terra.addon;
-import com.dfsek.terra.addons.loading.AddonLoadException;
+import com.dfsek.terra.addon.exception.AddonLoadException;
import java.util.HashMap;
import java.util.HashSet;
diff --git a/common/src/main/java/com/dfsek/terra/addons/loading/pre/PreLoadAddon.java b/common/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java
similarity index 79%
rename from common/src/main/java/com/dfsek/terra/addons/loading/pre/PreLoadAddon.java
rename to common/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java
index 5b14b43ad..4f54ebf10 100644
--- a/common/src/main/java/com/dfsek/terra/addons/loading/pre/PreLoadAddon.java
+++ b/common/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java
@@ -1,11 +1,11 @@
-package com.dfsek.terra.addons.loading.pre;
+package com.dfsek.terra.addon;
-import com.dfsek.terra.addons.addon.TerraAddon;
-import com.dfsek.terra.addons.annotations.Addon;
-import com.dfsek.terra.addons.annotations.Depends;
-import com.dfsek.terra.addons.loading.AddonLoadException;
-import com.dfsek.terra.addons.loading.pre.exception.CircularDependencyException;
-import com.dfsek.terra.addons.loading.pre.exception.DependencyMissingException;
+import com.dfsek.terra.addon.exception.AddonLoadException;
+import com.dfsek.terra.addon.exception.CircularDependencyException;
+import com.dfsek.terra.addon.exception.DependencyMissingException;
+import com.dfsek.terra.api.addons.TerraAddon;
+import com.dfsek.terra.api.addons.annotations.Addon;
+import com.dfsek.terra.api.addons.annotations.Depends;
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/common/src/main/java/com/dfsek/terra/addons/loading/AddonLoadException.java b/common/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java
similarity index 88%
rename from common/src/main/java/com/dfsek/terra/addons/loading/AddonLoadException.java
rename to common/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java
index 867987ec2..e0ff046d5 100644
--- a/common/src/main/java/com/dfsek/terra/addons/loading/AddonLoadException.java
+++ b/common/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java
@@ -1,4 +1,4 @@
-package com.dfsek.terra.addons.loading;
+package com.dfsek.terra.addon.exception;
public class AddonLoadException extends Exception {
private static final long serialVersionUID = -4949084729296580176L;
diff --git a/common/src/main/java/com/dfsek/terra/addons/loading/pre/exception/CircularDependencyException.java b/common/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java
similarity index 75%
rename from common/src/main/java/com/dfsek/terra/addons/loading/pre/exception/CircularDependencyException.java
rename to common/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java
index 221e66520..88513f6b1 100644
--- a/common/src/main/java/com/dfsek/terra/addons/loading/pre/exception/CircularDependencyException.java
+++ b/common/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java
@@ -1,6 +1,4 @@
-package com.dfsek.terra.addons.loading.pre.exception;
-
-import com.dfsek.terra.addons.loading.AddonLoadException;
+package com.dfsek.terra.addon.exception;
public class CircularDependencyException extends AddonLoadException {
private static final long serialVersionUID = 7398510879124125121L;
diff --git a/common/src/main/java/com/dfsek/terra/addons/loading/pre/exception/DependencyMissingException.java b/common/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java
similarity index 75%
rename from common/src/main/java/com/dfsek/terra/addons/loading/pre/exception/DependencyMissingException.java
rename to common/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java
index b6a81d837..fec11d10f 100644
--- a/common/src/main/java/com/dfsek/terra/addons/loading/pre/exception/DependencyMissingException.java
+++ b/common/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java
@@ -1,6 +1,4 @@
-package com.dfsek.terra.addons.loading.pre.exception;
-
-import com.dfsek.terra.addons.loading.AddonLoadException;
+package com.dfsek.terra.addon.exception;
public class DependencyMissingException extends AddonLoadException {
private static final long serialVersionUID = -8419489102208521583L;
diff --git a/common/src/main/java/com/dfsek/terra/api/core/TerraPlugin.java b/common/src/main/java/com/dfsek/terra/api/TerraPlugin.java
similarity index 75%
rename from common/src/main/java/com/dfsek/terra/api/core/TerraPlugin.java
rename to common/src/main/java/com/dfsek/terra/api/TerraPlugin.java
index e5dea5f9a..707038f3f 100644
--- a/common/src/main/java/com/dfsek/terra/api/core/TerraPlugin.java
+++ b/common/src/main/java/com/dfsek/terra/api/TerraPlugin.java
@@ -1,22 +1,24 @@
-package com.dfsek.terra.api.core;
+package com.dfsek.terra.api;
-import com.dfsek.terra.addons.addon.TerraAddon;
-import com.dfsek.terra.api.LoaderRegistrar;
-import com.dfsek.terra.api.core.event.EventManager;
+import com.dfsek.terra.api.addons.TerraAddon;
+import com.dfsek.terra.api.event.EventManager;
import com.dfsek.terra.api.platform.handle.ItemHandle;
import com.dfsek.terra.api.platform.handle.WorldHandle;
import com.dfsek.terra.api.platform.world.World;
+import com.dfsek.terra.api.registry.CheckedRegistry;
+import com.dfsek.terra.api.registry.LockedRegistry;
+import com.dfsek.terra.api.util.DebugLogger;
import com.dfsek.terra.config.PluginConfig;
import com.dfsek.terra.config.lang.Language;
import com.dfsek.terra.config.pack.ConfigPack;
-import com.dfsek.terra.debug.DebugLogger;
-import com.dfsek.terra.registry.CheckedRegistry;
-import com.dfsek.terra.registry.LockedRegistry;
import com.dfsek.terra.world.TerraWorld;
import java.io.File;
import java.util.logging.Logger;
+/**
+ * Represents a Terra mod/plugin instance.
+ */
public interface TerraPlugin extends LoaderRegistrar {
WorldHandle getWorldHandle();
diff --git a/common/src/main/java/com/dfsek/terra/addons/addon/TerraAddon.java b/common/src/main/java/com/dfsek/terra/api/addons/TerraAddon.java
similarity index 81%
rename from common/src/main/java/com/dfsek/terra/addons/addon/TerraAddon.java
rename to common/src/main/java/com/dfsek/terra/api/addons/TerraAddon.java
index 15a503b77..6fd5e6f82 100644
--- a/common/src/main/java/com/dfsek/terra/addons/addon/TerraAddon.java
+++ b/common/src/main/java/com/dfsek/terra/api/addons/TerraAddon.java
@@ -1,9 +1,9 @@
-package com.dfsek.terra.addons.addon;
+package com.dfsek.terra.api.addons;
-import com.dfsek.terra.addons.annotations.Addon;
-import com.dfsek.terra.addons.annotations.Author;
-import com.dfsek.terra.addons.annotations.Version;
+import com.dfsek.terra.api.addons.annotations.Addon;
+import com.dfsek.terra.api.addons.annotations.Author;
+import com.dfsek.terra.api.addons.annotations.Version;
import org.jetbrains.annotations.NotNull;
public abstract class TerraAddon {
diff --git a/common/src/main/java/com/dfsek/terra/addons/annotations/Addon.java b/common/src/main/java/com/dfsek/terra/api/addons/annotations/Addon.java
similarity index 90%
rename from common/src/main/java/com/dfsek/terra/addons/annotations/Addon.java
rename to common/src/main/java/com/dfsek/terra/api/addons/annotations/Addon.java
index fc3fd8f23..cf36cf6cf 100644
--- a/common/src/main/java/com/dfsek/terra/addons/annotations/Addon.java
+++ b/common/src/main/java/com/dfsek/terra/api/addons/annotations/Addon.java
@@ -1,4 +1,4 @@
-package com.dfsek.terra.addons.annotations;
+package com.dfsek.terra.api.addons.annotations;
import org.jetbrains.annotations.NotNull;
diff --git a/common/src/main/java/com/dfsek/terra/addons/annotations/Author.java b/common/src/main/java/com/dfsek/terra/api/addons/annotations/Author.java
similarity index 90%
rename from common/src/main/java/com/dfsek/terra/addons/annotations/Author.java
rename to common/src/main/java/com/dfsek/terra/api/addons/annotations/Author.java
index 5df87c2e8..7a7c70873 100644
--- a/common/src/main/java/com/dfsek/terra/addons/annotations/Author.java
+++ b/common/src/main/java/com/dfsek/terra/api/addons/annotations/Author.java
@@ -1,4 +1,4 @@
-package com.dfsek.terra.addons.annotations;
+package com.dfsek.terra.api.addons.annotations;
import org.jetbrains.annotations.NotNull;
diff --git a/common/src/main/java/com/dfsek/terra/addons/annotations/Depends.java b/common/src/main/java/com/dfsek/terra/api/addons/annotations/Depends.java
similarity index 90%
rename from common/src/main/java/com/dfsek/terra/addons/annotations/Depends.java
rename to common/src/main/java/com/dfsek/terra/api/addons/annotations/Depends.java
index cf0b05b5a..8634335be 100644
--- a/common/src/main/java/com/dfsek/terra/addons/annotations/Depends.java
+++ b/common/src/main/java/com/dfsek/terra/api/addons/annotations/Depends.java
@@ -1,4 +1,4 @@
-package com.dfsek.terra.addons.annotations;
+package com.dfsek.terra.api.addons.annotations;
import org.jetbrains.annotations.NotNull;
diff --git a/common/src/main/java/com/dfsek/terra/addons/annotations/Version.java b/common/src/main/java/com/dfsek/terra/api/addons/annotations/Version.java
similarity index 90%
rename from common/src/main/java/com/dfsek/terra/addons/annotations/Version.java
rename to common/src/main/java/com/dfsek/terra/api/addons/annotations/Version.java
index 48f5f44c2..a2f8c2743 100644
--- a/common/src/main/java/com/dfsek/terra/addons/annotations/Version.java
+++ b/common/src/main/java/com/dfsek/terra/api/addons/annotations/Version.java
@@ -1,4 +1,4 @@
-package com.dfsek.terra.addons.annotations;
+package com.dfsek.terra.api.addons.annotations;
import org.jetbrains.annotations.NotNull;
diff --git a/common/src/main/java/com/dfsek/terra/api/core/event/EventListener.java b/common/src/main/java/com/dfsek/terra/api/core/event/EventListener.java
deleted file mode 100644
index 276097e7d..000000000
--- a/common/src/main/java/com/dfsek/terra/api/core/event/EventListener.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package com.dfsek.terra.api.core.event;
-
-public interface EventListener {
-}
diff --git a/common/src/main/java/com/dfsek/terra/api/core/event/events/Event.java b/common/src/main/java/com/dfsek/terra/api/core/event/events/Event.java
deleted file mode 100644
index 62a6e07f2..000000000
--- a/common/src/main/java/com/dfsek/terra/api/core/event/events/Event.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package com.dfsek.terra.api.core.event.events;
-
-public interface Event {
-}
diff --git a/common/src/main/java/com/dfsek/terra/api/event/EventListener.java b/common/src/main/java/com/dfsek/terra/api/event/EventListener.java
new file mode 100644
index 000000000..f5d3dcf60
--- /dev/null
+++ b/common/src/main/java/com/dfsek/terra/api/event/EventListener.java
@@ -0,0 +1,4 @@
+package com.dfsek.terra.api.event;
+
+public interface EventListener {
+}
diff --git a/common/src/main/java/com/dfsek/terra/api/core/event/EventManager.java b/common/src/main/java/com/dfsek/terra/api/event/EventManager.java
similarity index 72%
rename from common/src/main/java/com/dfsek/terra/api/core/event/EventManager.java
rename to common/src/main/java/com/dfsek/terra/api/event/EventManager.java
index f61f27d06..96378ede4 100644
--- a/common/src/main/java/com/dfsek/terra/api/core/event/EventManager.java
+++ b/common/src/main/java/com/dfsek/terra/api/event/EventManager.java
@@ -1,7 +1,7 @@
-package com.dfsek.terra.api.core.event;
+package com.dfsek.terra.api.event;
-import com.dfsek.terra.addons.addon.TerraAddon;
-import com.dfsek.terra.api.core.event.events.Event;
+import com.dfsek.terra.api.addons.TerraAddon;
+import com.dfsek.terra.api.event.events.Event;
public interface EventManager {
/**
diff --git a/common/src/main/java/com/dfsek/terra/api/core/event/TerraEventManager.java b/common/src/main/java/com/dfsek/terra/api/event/TerraEventManager.java
similarity index 91%
rename from common/src/main/java/com/dfsek/terra/api/core/event/TerraEventManager.java
rename to common/src/main/java/com/dfsek/terra/api/event/TerraEventManager.java
index 1bc3e6aa7..c25b5c1ee 100644
--- a/common/src/main/java/com/dfsek/terra/api/core/event/TerraEventManager.java
+++ b/common/src/main/java/com/dfsek/terra/api/event/TerraEventManager.java
@@ -1,12 +1,12 @@
-package com.dfsek.terra.api.core.event;
+package com.dfsek.terra.api.event;
-import com.dfsek.terra.addons.addon.TerraAddon;
-import com.dfsek.terra.api.core.TerraPlugin;
-import com.dfsek.terra.api.core.event.annotations.Global;
-import com.dfsek.terra.api.core.event.annotations.Priority;
-import com.dfsek.terra.api.core.event.events.Cancellable;
-import com.dfsek.terra.api.core.event.events.Event;
-import com.dfsek.terra.api.core.event.events.PackEvent;
+import com.dfsek.terra.api.TerraPlugin;
+import com.dfsek.terra.api.addons.TerraAddon;
+import com.dfsek.terra.api.event.annotations.Global;
+import com.dfsek.terra.api.event.annotations.Priority;
+import com.dfsek.terra.api.event.events.Cancellable;
+import com.dfsek.terra.api.event.events.Event;
+import com.dfsek.terra.api.event.events.PackEvent;
import com.dfsek.terra.api.util.ReflectionUtil;
import java.io.PrintWriter;
diff --git a/common/src/main/java/com/dfsek/terra/api/core/event/annotations/Global.java b/common/src/main/java/com/dfsek/terra/api/event/annotations/Global.java
similarity index 86%
rename from common/src/main/java/com/dfsek/terra/api/core/event/annotations/Global.java
rename to common/src/main/java/com/dfsek/terra/api/event/annotations/Global.java
index 345033e46..5084f527a 100644
--- a/common/src/main/java/com/dfsek/terra/api/core/event/annotations/Global.java
+++ b/common/src/main/java/com/dfsek/terra/api/event/annotations/Global.java
@@ -1,4 +1,4 @@
-package com.dfsek.terra.api.core.event.annotations;
+package com.dfsek.terra.api.event.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
diff --git a/common/src/main/java/com/dfsek/terra/api/core/event/annotations/Priority.java b/common/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java
similarity index 94%
rename from common/src/main/java/com/dfsek/terra/api/core/event/annotations/Priority.java
rename to common/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java
index 0bcce141a..2d5b7c11f 100644
--- a/common/src/main/java/com/dfsek/terra/api/core/event/annotations/Priority.java
+++ b/common/src/main/java/com/dfsek/terra/api/event/annotations/Priority.java
@@ -1,4 +1,4 @@
-package com.dfsek.terra.api.core.event.annotations;
+package com.dfsek.terra.api.event.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
diff --git a/common/src/main/java/com/dfsek/terra/api/core/event/events/Cancellable.java b/common/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java
similarity index 84%
rename from common/src/main/java/com/dfsek/terra/api/core/event/events/Cancellable.java
rename to common/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java
index 0d8a548c0..bfac9adb2 100644
--- a/common/src/main/java/com/dfsek/terra/api/core/event/events/Cancellable.java
+++ b/common/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java
@@ -1,4 +1,4 @@
-package com.dfsek.terra.api.core.event.events;
+package com.dfsek.terra.api.event.events;
/**
* Events that implement this interface may be cancelled.
diff --git a/common/src/main/java/com/dfsek/terra/api/event/events/Event.java b/common/src/main/java/com/dfsek/terra/api/event/events/Event.java
new file mode 100644
index 000000000..2a65f4116
--- /dev/null
+++ b/common/src/main/java/com/dfsek/terra/api/event/events/Event.java
@@ -0,0 +1,4 @@
+package com.dfsek.terra.api.event.events;
+
+public interface Event {
+}
diff --git a/common/src/main/java/com/dfsek/terra/api/core/event/events/PackEvent.java b/common/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java
similarity index 78%
rename from common/src/main/java/com/dfsek/terra/api/core/event/events/PackEvent.java
rename to common/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java
index ede861206..adddf8b19 100644
--- a/common/src/main/java/com/dfsek/terra/api/core/event/events/PackEvent.java
+++ b/common/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java
@@ -1,4 +1,4 @@
-package com.dfsek.terra.api.core.event.events;
+package com.dfsek.terra.api.event.events;
import com.dfsek.terra.config.pack.ConfigPack;
diff --git a/common/src/main/java/com/dfsek/terra/api/core/event/events/config/ConfigPackLoadEvent.java b/common/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackLoadEvent.java
similarity index 73%
rename from common/src/main/java/com/dfsek/terra/api/core/event/events/config/ConfigPackLoadEvent.java
rename to common/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackLoadEvent.java
index b1a301ed3..a6a4c5c12 100644
--- a/common/src/main/java/com/dfsek/terra/api/core/event/events/config/ConfigPackLoadEvent.java
+++ b/common/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackLoadEvent.java
@@ -1,6 +1,6 @@
-package com.dfsek.terra.api.core.event.events.config;
+package com.dfsek.terra.api.event.events.config;
-import com.dfsek.terra.api.core.event.events.PackEvent;
+import com.dfsek.terra.api.event.events.PackEvent;
import com.dfsek.terra.config.pack.ConfigPack;
public abstract class ConfigPackLoadEvent implements PackEvent {
diff --git a/common/src/main/java/com/dfsek/terra/api/core/event/events/config/ConfigPackPostLoadEvent.java b/common/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPostLoadEvent.java
similarity index 82%
rename from common/src/main/java/com/dfsek/terra/api/core/event/events/config/ConfigPackPostLoadEvent.java
rename to common/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPostLoadEvent.java
index 838f0e22a..138de647c 100644
--- a/common/src/main/java/com/dfsek/terra/api/core/event/events/config/ConfigPackPostLoadEvent.java
+++ b/common/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPostLoadEvent.java
@@ -1,4 +1,4 @@
-package com.dfsek.terra.api.core.event.events.config;
+package com.dfsek.terra.api.event.events.config;
import com.dfsek.terra.config.pack.ConfigPack;
diff --git a/common/src/main/java/com/dfsek/terra/api/core/event/events/config/ConfigPackPreLoadEvent.java b/common/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPreLoadEvent.java
similarity index 86%
rename from common/src/main/java/com/dfsek/terra/api/core/event/events/config/ConfigPackPreLoadEvent.java
rename to common/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPreLoadEvent.java
index e2d72d17d..317603c9e 100644
--- a/common/src/main/java/com/dfsek/terra/api/core/event/events/config/ConfigPackPreLoadEvent.java
+++ b/common/src/main/java/com/dfsek/terra/api/event/events/config/ConfigPackPreLoadEvent.java
@@ -1,4 +1,4 @@
-package com.dfsek.terra.api.core.event.events.config;
+package com.dfsek.terra.api.event.events.config;
import com.dfsek.terra.config.pack.ConfigPack;
diff --git a/common/src/main/java/com/dfsek/terra/api/core/event/events/world/TerraWorldLoadEvent.java b/common/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java
similarity index 81%
rename from common/src/main/java/com/dfsek/terra/api/core/event/events/world/TerraWorldLoadEvent.java
rename to common/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java
index ec8501316..483f2deef 100644
--- a/common/src/main/java/com/dfsek/terra/api/core/event/events/world/TerraWorldLoadEvent.java
+++ b/common/src/main/java/com/dfsek/terra/api/event/events/world/TerraWorldLoadEvent.java
@@ -1,6 +1,6 @@
-package com.dfsek.terra.api.core.event.events.world;
+package com.dfsek.terra.api.event.events.world;
-import com.dfsek.terra.api.core.event.events.PackEvent;
+import com.dfsek.terra.api.event.events.PackEvent;
import com.dfsek.terra.config.pack.ConfigPack;
import com.dfsek.terra.world.TerraWorld;
diff --git a/common/src/main/java/com/dfsek/terra/addons/injection/Injector.java b/common/src/main/java/com/dfsek/terra/api/injection/Injector.java
similarity index 91%
rename from common/src/main/java/com/dfsek/terra/addons/injection/Injector.java
rename to common/src/main/java/com/dfsek/terra/api/injection/Injector.java
index 0ba685a4f..d3df1d554 100644
--- a/common/src/main/java/com/dfsek/terra/addons/injection/Injector.java
+++ b/common/src/main/java/com/dfsek/terra/api/injection/Injector.java
@@ -1,5 +1,7 @@
-package com.dfsek.terra.addons.injection;
+package com.dfsek.terra.api.injection;
+import com.dfsek.terra.api.injection.annotations.Inject;
+import com.dfsek.terra.api.injection.exception.InjectionException;
import com.dfsek.terra.api.util.ReflectionUtil;
import java.lang.reflect.Field;
diff --git a/common/src/main/java/com/dfsek/terra/addons/injection/Inject.java b/common/src/main/java/com/dfsek/terra/api/injection/annotations/Inject.java
similarity index 86%
rename from common/src/main/java/com/dfsek/terra/addons/injection/Inject.java
rename to common/src/main/java/com/dfsek/terra/api/injection/annotations/Inject.java
index 2094b14cc..b73f05d42 100644
--- a/common/src/main/java/com/dfsek/terra/addons/injection/Inject.java
+++ b/common/src/main/java/com/dfsek/terra/api/injection/annotations/Inject.java
@@ -1,4 +1,4 @@
-package com.dfsek.terra.addons.injection;
+package com.dfsek.terra.api.injection.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
diff --git a/common/src/main/java/com/dfsek/terra/addons/injection/InjectionException.java b/common/src/main/java/com/dfsek/terra/api/injection/exception/InjectionException.java
similarity index 86%
rename from common/src/main/java/com/dfsek/terra/addons/injection/InjectionException.java
rename to common/src/main/java/com/dfsek/terra/api/injection/exception/InjectionException.java
index 26d3e5be4..93e0d258c 100644
--- a/common/src/main/java/com/dfsek/terra/addons/injection/InjectionException.java
+++ b/common/src/main/java/com/dfsek/terra/api/injection/exception/InjectionException.java
@@ -1,4 +1,4 @@
-package com.dfsek.terra.addons.injection;
+package com.dfsek.terra.api.injection.exception;
public class InjectionException extends Exception {
private static final long serialVersionUID = -6929631447064215387L;
diff --git a/common/src/main/java/com/dfsek/terra/api/platform/Player.java b/common/src/main/java/com/dfsek/terra/api/platform/Player.java
deleted file mode 100644
index 136727749..000000000
--- a/common/src/main/java/com/dfsek/terra/api/platform/Player.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.dfsek.terra.api.platform;
-
-import com.dfsek.terra.api.platform.entity.Entity;
-
-public interface Player extends Entity {
-}
diff --git a/common/src/main/java/com/dfsek/terra/api/platform/entity/Player.java b/common/src/main/java/com/dfsek/terra/api/platform/entity/Player.java
new file mode 100644
index 000000000..43a002089
--- /dev/null
+++ b/common/src/main/java/com/dfsek/terra/api/platform/entity/Player.java
@@ -0,0 +1,4 @@
+package com.dfsek.terra.api.platform.entity;
+
+public interface Player extends Entity {
+}
diff --git a/common/src/main/java/com/dfsek/terra/api/platform/package-info.java b/common/src/main/java/com/dfsek/terra/api/platform/package-info.java
index f1b97f5ed..44377a381 100644
--- a/common/src/main/java/com/dfsek/terra/api/platform/package-info.java
+++ b/common/src/main/java/com/dfsek/terra/api/platform/package-info.java
@@ -1,4 +1,6 @@
/**
* API for platform implementations. Mostly interfaces to be implemented by platform delegates.
+ *
+ * Interfaces in this package generally should not be implemented by addons.
*/
package com.dfsek.terra.api.platform;
diff --git a/common/src/main/java/com/dfsek/terra/registry/CheckedRegistry.java b/common/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java
similarity index 96%
rename from common/src/main/java/com/dfsek/terra/registry/CheckedRegistry.java
rename to common/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java
index 5d8963f19..d7900cee7 100644
--- a/common/src/main/java/com/dfsek/terra/registry/CheckedRegistry.java
+++ b/common/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java
@@ -1,7 +1,8 @@
-package com.dfsek.terra.registry;
+package com.dfsek.terra.api.registry;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.ConfigLoader;
+import com.dfsek.terra.registry.OpenRegistry;
import com.dfsek.terra.registry.exception.DuplicateEntryException;
import java.lang.reflect.Type;
diff --git a/common/src/main/java/com/dfsek/terra/registry/LockedRegistry.java b/common/src/main/java/com/dfsek/terra/api/registry/LockedRegistry.java
similarity index 93%
rename from common/src/main/java/com/dfsek/terra/registry/LockedRegistry.java
rename to common/src/main/java/com/dfsek/terra/api/registry/LockedRegistry.java
index 709088366..e53e21e08 100644
--- a/common/src/main/java/com/dfsek/terra/registry/LockedRegistry.java
+++ b/common/src/main/java/com/dfsek/terra/api/registry/LockedRegistry.java
@@ -1,7 +1,8 @@
-package com.dfsek.terra.registry;
+package com.dfsek.terra.api.registry;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.ConfigLoader;
+import com.dfsek.terra.registry.OpenRegistry;
import java.lang.reflect.Type;
import java.util.Set;
diff --git a/common/src/main/java/com/dfsek/terra/registry/Registry.java b/common/src/main/java/com/dfsek/terra/api/registry/Registry.java
similarity index 96%
rename from common/src/main/java/com/dfsek/terra/registry/Registry.java
rename to common/src/main/java/com/dfsek/terra/api/registry/Registry.java
index 5289cb39a..41f10379b 100644
--- a/common/src/main/java/com/dfsek/terra/registry/Registry.java
+++ b/common/src/main/java/com/dfsek/terra/api/registry/Registry.java
@@ -1,4 +1,4 @@
-package com.dfsek.terra.registry;
+package com.dfsek.terra.api.registry;
import com.dfsek.tectonic.loading.TypeLoader;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/loot/Entry.java b/common/src/main/java/com/dfsek/terra/api/structures/loot/Entry.java
index 4da109325..4eb506c1d 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/loot/Entry.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/loot/Entry.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.loot;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.platform.inventory.ItemStack;
import com.dfsek.terra.api.structures.loot.functions.AmountFunction;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/loot/LootTable.java b/common/src/main/java/com/dfsek/terra/api/structures/loot/LootTable.java
index cdbc80296..f5da89b65 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/loot/LootTable.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/loot/LootTable.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.loot;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.platform.inventory.Inventory;
import com.dfsek.terra.api.platform.inventory.ItemStack;
import com.dfsek.terra.api.util.GlueList;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java b/common/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java
index 418d86332..e01a25bdb 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java
@@ -1,9 +1,9 @@
package com.dfsek.terra.api.structures.loot;
-import com.dfsek.terra.api.core.TerraPlugin;
-import com.dfsek.terra.api.math.ProbabilityCollection;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.platform.inventory.ItemStack;
import com.dfsek.terra.api.util.GlueList;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import net.jafama.FastMath;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/loot/functions/EnchantFunction.java b/common/src/main/java/com/dfsek/terra/api/structures/loot/functions/EnchantFunction.java
index badfe6979..555f0cf21 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/loot/functions/EnchantFunction.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/loot/functions/EnchantFunction.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.loot.functions;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.platform.inventory.ItemStack;
import com.dfsek.terra.api.platform.inventory.item.Enchantment;
import com.dfsek.terra.api.platform.inventory.item.ItemMeta;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java b/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java
index 219d8092d..c3d8a70fc 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.script;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.structures.parser.Parser;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/BiomeFunctionBuilder.java b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/BiomeFunctionBuilder.java
index 58c71b589..7c15c70b4 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/BiomeFunctionBuilder.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/BiomeFunctionBuilder.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.script.builders;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
import com.dfsek.terra.api.structures.script.functions.BiomeFunction;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/BlockFunctionBuilder.java b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/BlockFunctionBuilder.java
index ac0052165..41c4a0dfe 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/BlockFunctionBuilder.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/BlockFunctionBuilder.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.script.builders;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.structures.parser.exceptions.ParseException;
import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.constants.BooleanConstant;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckFunctionBuilder.java b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckFunctionBuilder.java
index af024d8c2..c4e26486a 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckFunctionBuilder.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckFunctionBuilder.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.script.builders;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.structures.parser.exceptions.ParseException;
import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/EntityFunctionBuilder.java b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/EntityFunctionBuilder.java
index 6582d617e..dd66a3d84 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/EntityFunctionBuilder.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/EntityFunctionBuilder.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.script.builders;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.structures.parser.exceptions.ParseException;
import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/LootFunctionBuilder.java b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/LootFunctionBuilder.java
index b2a39c92a..fe4634848 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/LootFunctionBuilder.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/LootFunctionBuilder.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.script.builders;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
import com.dfsek.terra.api.structures.script.functions.LootFunction;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/PullFunctionBuilder.java b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/PullFunctionBuilder.java
index 54eb8fc27..9b55da244 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/PullFunctionBuilder.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/PullFunctionBuilder.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.script.builders;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.structures.parser.exceptions.ParseException;
import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/StateFunctionBuilder.java b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/StateFunctionBuilder.java
index cbd37db8f..56c9ab2e3 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/StateFunctionBuilder.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/StateFunctionBuilder.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.script.builders;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.structures.parser.exceptions.ParseException;
import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/StructureFunctionBuilder.java b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/StructureFunctionBuilder.java
index 311cb4d1b..2b0be8468 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/StructureFunctionBuilder.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/StructureFunctionBuilder.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.script.builders;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.structures.parser.exceptions.ParseException;
import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java
index 8e8640e98..54eb7e280 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/BiomeFunction.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.script.functions;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Vector2;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java
index 27e10da56..0373fe5fe 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.script.functions;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Vector2;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.block.BlockData;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java
index bc01fcd23..7e1a1b6c8 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.script.functions;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.math.vector.Vector2;
import com.dfsek.terra.api.math.vector.Vector3;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java
index 96ca732ce..547ae7a00 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.script.functions;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Vector2;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.entity.EntityType;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java
index 5218f86a7..09f1af284 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.script.functions;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Vector2;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.structures.loot.LootTable;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java
index de1d56053..059aca0fa 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.script.functions;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Vector2;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.block.BlockData;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java
index 812ca86bb..4e2e2c276 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.script.functions;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Vector2;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java
index cd61d0ae0..6fdefff68 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.script.functions;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Vector2;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java b/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java
index 7b0c04234..482b242fd 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.structure.buffer.items;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.block.state.BlockState;
import com.dfsek.terra.api.platform.block.state.Container;
diff --git a/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java b/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java
index 6e11ea384..3edf9873d 100644
--- a/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java
+++ b/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedStateManipulator.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.structures.structure.buffer.items;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.block.state.BlockState;
diff --git a/common/src/main/java/com/dfsek/terra/debug/DebugLogger.java b/common/src/main/java/com/dfsek/terra/api/util/DebugLogger.java
similarity index 95%
rename from common/src/main/java/com/dfsek/terra/debug/DebugLogger.java
rename to common/src/main/java/com/dfsek/terra/api/util/DebugLogger.java
index c907fab9f..35604d620 100644
--- a/common/src/main/java/com/dfsek/terra/debug/DebugLogger.java
+++ b/common/src/main/java/com/dfsek/terra/api/util/DebugLogger.java
@@ -1,4 +1,4 @@
-package com.dfsek.terra.debug;
+package com.dfsek.terra.api.util;
import java.util.logging.Logger;
diff --git a/common/src/main/java/com/dfsek/terra/api/util/world/MaterialSet.java b/common/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java
similarity index 93%
rename from common/src/main/java/com/dfsek/terra/api/util/world/MaterialSet.java
rename to common/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java
index 0e43ea827..44b9b16f6 100644
--- a/common/src/main/java/com/dfsek/terra/api/util/world/MaterialSet.java
+++ b/common/src/main/java/com/dfsek/terra/api/util/collections/MaterialSet.java
@@ -1,4 +1,4 @@
-package com.dfsek.terra.api.util.world;
+package com.dfsek.terra.api.util.collections;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData;
diff --git a/common/src/main/java/com/dfsek/terra/api/math/ProbabilityCollection.java b/common/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollection.java
similarity index 54%
rename from common/src/main/java/com/dfsek/terra/api/math/ProbabilityCollection.java
rename to common/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollection.java
index 6d785e1d7..ecdd520b4 100644
--- a/common/src/main/java/com/dfsek/terra/api/math/ProbabilityCollection.java
+++ b/common/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollection.java
@@ -1,19 +1,23 @@
-package com.dfsek.terra.api.math;
+package com.dfsek.terra.api.util.collections;
+import com.dfsek.terra.api.math.MathUtil;
import com.dfsek.terra.api.math.noise.NoiseSampler;
+import org.jetbrains.annotations.NotNull;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.Random;
import java.util.Set;
@SuppressWarnings("unchecked")
-public class ProbabilityCollection {
+public class ProbabilityCollection implements Collection {
private final Set cont = new HashSet<>();
private Object[] array = new Object[0];
private int size;
- public com.dfsek.terra.api.math.ProbabilityCollection add(E item, int probability) {
+ public ProbabilityCollection add(E item, int probability) {
if(!cont.contains(item)) size++;
cont.add(item);
int oldLength = array.length;
@@ -43,10 +47,81 @@ public class ProbabilityCollection {
return array.length;
}
+ @Override
public int size() {
return size;
}
+ @Override
+ public boolean isEmpty() {
+ return array.length == 0;
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return cont.contains(o);
+ }
+
+ @NotNull
+ @Override
+ public Iterator iterator() {
+ return cont.iterator();
+ }
+
+ @NotNull
+ @Override
+ public Object[] toArray() {
+ return cont.toArray();
+ }
+
+ @SuppressWarnings("SuspiciousToArrayCall")
+ @NotNull
+ @Override
+ public T[] toArray(@NotNull T[] a) {
+ return cont.toArray(a);
+ }
+
+ /**
+ * Adds an item with probability of 1.
+ */
+ @Override
+ public boolean add(E e) {
+ add(e, 1);
+ return true; // Since this adds the item with a probability, the collection will always have changed.
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ throw new UnsupportedOperationException("Cannot remove item from ProbabilityCollection!");
+ }
+
+ @Override
+ public boolean containsAll(@NotNull Collection> c) {
+ return cont.containsAll(c);
+ }
+
+ @Override
+ public boolean addAll(@NotNull Collection extends E> c) {
+ c.forEach(this::add);
+ return true;
+ }
+
+ @Override
+ public boolean removeAll(@NotNull Collection> c) {
+ throw new UnsupportedOperationException("Cannot remove item from ProbabilityCollection!");
+ }
+
+ @Override
+ public boolean retainAll(@NotNull Collection> c) {
+ throw new UnsupportedOperationException("Cannot remove item from ProbabilityCollection!");
+ }
+
+ @Override
+ public void clear() {
+ cont.clear();
+ array = new Object[0];
+ }
+
public Set getContents() {
return new HashSet<>(cont);
}
diff --git a/common/src/main/java/com/dfsek/terra/api/util/mutable/MutableBoolean.java b/common/src/main/java/com/dfsek/terra/api/util/mutable/MutableBoolean.java
index 146bc606a..50abd8feb 100644
--- a/common/src/main/java/com/dfsek/terra/api/util/mutable/MutableBoolean.java
+++ b/common/src/main/java/com/dfsek/terra/api/util/mutable/MutableBoolean.java
@@ -1,5 +1,7 @@
package com.dfsek.terra.api.util.mutable;
+import org.jetbrains.annotations.NotNull;
+
public class MutableBoolean implements MutablePrimitive {
private boolean value;
@@ -17,4 +19,9 @@ public class MutableBoolean implements MutablePrimitive {
value = !value;
return value;
}
+
+ @Override
+ public int compareTo(@NotNull Boolean o) {
+ return Boolean.compare(value, o);
+ }
}
diff --git a/common/src/main/java/com/dfsek/terra/api/util/mutable/MutableDouble.java b/common/src/main/java/com/dfsek/terra/api/util/mutable/MutableDouble.java
index 483fa3d3e..be86110b3 100644
--- a/common/src/main/java/com/dfsek/terra/api/util/mutable/MutableDouble.java
+++ b/common/src/main/java/com/dfsek/terra/api/util/mutable/MutableDouble.java
@@ -1,5 +1,7 @@
package com.dfsek.terra.api.util.mutable;
+import org.jetbrains.annotations.NotNull;
+
public class MutableDouble extends MutableNumber {
private static final long serialVersionUID = -2218110876763640053L;
@@ -36,4 +38,9 @@ public class MutableDouble extends MutableNumber {
public void divide(Double divide) {
value /= divide;
}
+
+ @Override
+ public int compareTo(@NotNull Double o) {
+ return Double.compare(value, o);
+ }
}
diff --git a/common/src/main/java/com/dfsek/terra/api/util/mutable/MutableInteger.java b/common/src/main/java/com/dfsek/terra/api/util/mutable/MutableInteger.java
index 0774680d5..a2d949d87 100644
--- a/common/src/main/java/com/dfsek/terra/api/util/mutable/MutableInteger.java
+++ b/common/src/main/java/com/dfsek/terra/api/util/mutable/MutableInteger.java
@@ -1,5 +1,7 @@
package com.dfsek.terra.api.util.mutable;
+import org.jetbrains.annotations.NotNull;
+
public class MutableInteger extends MutableNumber {
private static final long serialVersionUID = -4427935901819632745L;
@@ -38,4 +40,9 @@ public class MutableInteger extends MutableNumber {
public void add(int add) {
value += add;
}
+
+ @Override
+ public int compareTo(@NotNull Integer o) {
+ return Integer.compare(value, o);
+ }
}
diff --git a/common/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java b/common/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java
index f1848007d..ab3e17f70 100644
--- a/common/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java
+++ b/common/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.util.mutable;
-public interface MutablePrimitive {
+public interface MutablePrimitive extends Comparable{
T get();
void set(T value);
diff --git a/common/src/main/java/com/dfsek/terra/api/util/mutable/package-info.java b/common/src/main/java/com/dfsek/terra/api/util/mutable/package-info.java
new file mode 100644
index 000000000..02bf8235e
--- /dev/null
+++ b/common/src/main/java/com/dfsek/terra/api/util/mutable/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * Mutable objects containing primitive types.
+ */
+package com.dfsek.terra.api.util.mutable;
\ No newline at end of file
diff --git a/common/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java b/common/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java
index ff35cc1f5..1a7d15d39 100644
--- a/common/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java
+++ b/common/src/main/java/com/dfsek/terra/api/util/seeded/SeededBuilder.java
@@ -2,6 +2,7 @@ package com.dfsek.terra.api.util.seeded;
import java.util.function.Function;
+@FunctionalInterface
public interface SeededBuilder extends Function {
}
diff --git a/common/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java b/common/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java
index c64e4d17e..5ec6f4511 100644
--- a/common/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java
+++ b/common/src/main/java/com/dfsek/terra/api/util/seeded/SourceSeeded.java
@@ -2,5 +2,6 @@ package com.dfsek.terra.api.util.seeded;
import com.dfsek.terra.api.world.biome.pipeline.source.BiomeSource;
+@FunctionalInterface
public interface SourceSeeded extends SeededBuilder {
}
diff --git a/common/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java b/common/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java
index 093e54207..02ebbe181 100644
--- a/common/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java
+++ b/common/src/main/java/com/dfsek/terra/api/util/seeded/StageSeeded.java
@@ -2,5 +2,6 @@ package com.dfsek.terra.api.util.seeded;
import com.dfsek.terra.api.world.biome.pipeline.stages.Stage;
+@FunctionalInterface
public interface StageSeeded extends SeededBuilder {
}
diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java b/common/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java
index 1dcd5fdc7..4aaac0e9e 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java
@@ -1,9 +1,9 @@
package com.dfsek.terra.api.world.biome;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.platform.world.Biome;
import com.dfsek.terra.api.platform.world.World;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import java.util.Set;
diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java b/common/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java
index 5f51ff5a7..40d12c428 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/biome/UserDefinedBiome.java
@@ -1,8 +1,8 @@
package com.dfsek.terra.api.world.biome;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.platform.world.Biome;
import com.dfsek.terra.api.platform.world.World;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.config.builder.GeneratorBuilder;
import com.dfsek.terra.config.templates.BiomeTemplate;
diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java
index 5fcfc2e1a..d16016d91 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderListMutator.java
@@ -1,7 +1,7 @@
package com.dfsek.terra.api.world.biome.pipeline.mutator;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.noise.NoiseSampler;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.world.biome.TerraBiome;
import java.util.Map;
diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java
index 15e7edcc9..d6195c7a4 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/BorderMutator.java
@@ -1,7 +1,7 @@
package com.dfsek.terra.api.world.biome.pipeline.mutator;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.noise.NoiseSampler;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.world.biome.TerraBiome;
public class BorderMutator implements BiomeMutator {
diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java
index ebd3ec5f2..8d701109a 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceListMutator.java
@@ -1,7 +1,7 @@
package com.dfsek.terra.api.world.biome.pipeline.mutator;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.noise.NoiseSampler;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.world.biome.TerraBiome;
import java.util.Map;
diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java
index b37657654..7bc705b66 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/mutator/ReplaceMutator.java
@@ -1,7 +1,7 @@
package com.dfsek.terra.api.world.biome.pipeline.mutator;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.noise.NoiseSampler;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.world.biome.TerraBiome;
public class ReplaceMutator implements BiomeMutator {
diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java
index fa7b9fe01..fa95986b4 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/biome/pipeline/source/RandomSource.java
@@ -1,7 +1,7 @@
package com.dfsek.terra.api.world.biome.pipeline.source;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.noise.NoiseSampler;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.world.biome.TerraBiome;
public class RandomSource implements BiomeSource {
diff --git a/common/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java b/common/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java
index e53bd4749..397cbe7a4 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/biome/provider/StandardBiomeProvider.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.world.biome.provider;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.noise.NoiseSampler;
import com.dfsek.terra.api.math.vector.Vector2;
import com.dfsek.terra.api.world.biome.TerraBiome;
diff --git a/common/src/main/java/com/dfsek/terra/api/world/generation/TerraChunkGenerator.java b/common/src/main/java/com/dfsek/terra/api/world/generation/TerraChunkGenerator.java
index 71b9e8f90..5b6dba9f0 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/generation/TerraChunkGenerator.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/generation/TerraChunkGenerator.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.world.generation;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.platform.world.BiomeGrid;
import com.dfsek.terra.api.platform.world.World;
import com.dfsek.terra.api.platform.world.generator.ChunkData;
diff --git a/common/src/main/java/com/dfsek/terra/async/AsyncBiomeFinder.java b/common/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java
similarity index 93%
rename from common/src/main/java/com/dfsek/terra/async/AsyncBiomeFinder.java
rename to common/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java
index 38b6662a3..c41892b12 100644
--- a/common/src/main/java/com/dfsek/terra/async/AsyncBiomeFinder.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/locate/AsyncBiomeFinder.java
@@ -1,6 +1,6 @@
-package com.dfsek.terra.async;
+package com.dfsek.terra.api.world.locate;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.world.biome.TerraBiome;
diff --git a/common/src/main/java/com/dfsek/terra/async/AsyncFeatureFinder.java b/common/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java
similarity index 97%
rename from common/src/main/java/com/dfsek/terra/async/AsyncFeatureFinder.java
rename to common/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java
index b44afc711..31b2dec6b 100644
--- a/common/src/main/java/com/dfsek/terra/async/AsyncFeatureFinder.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/locate/AsyncFeatureFinder.java
@@ -1,6 +1,6 @@
-package com.dfsek.terra.async;
+package com.dfsek.terra.api.world.locate;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.world.World;
diff --git a/common/src/main/java/com/dfsek/terra/async/AsyncStructureFinder.java b/common/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java
similarity index 95%
rename from common/src/main/java/com/dfsek/terra/async/AsyncStructureFinder.java
rename to common/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java
index 4680da9fd..2686fb2db 100644
--- a/common/src/main/java/com/dfsek/terra/async/AsyncStructureFinder.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/locate/AsyncStructureFinder.java
@@ -1,6 +1,6 @@
-package com.dfsek.terra.async;
+package com.dfsek.terra.api.world.locate;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.MathUtil;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.math.vector.Vector3;
diff --git a/common/src/main/java/com/dfsek/terra/api/world/palette/Palette.java b/common/src/main/java/com/dfsek/terra/api/world/palette/Palette.java
index 0ea01239a..881cd406c 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/palette/Palette.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/palette/Palette.java
@@ -1,8 +1,8 @@
package com.dfsek.terra.api.world.palette;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.noise.NoiseSampler;
import com.dfsek.terra.api.util.GlueList;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import java.util.List;
import java.util.Random;
diff --git a/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java b/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java
index 8881b1646..cb44e8fb4 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java
@@ -1,8 +1,8 @@
package com.dfsek.terra.api.world.palette.holder;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.noise.NoiseSampler;
import com.dfsek.terra.api.platform.block.BlockData;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import org.jetbrains.annotations.NotNull;
public class PaletteLayerHolder {
diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/FractalTree.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/FractalTree.java
index 869ed9183..9a95e3d8c 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/FractalTree.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/FractalTree.java
@@ -1,11 +1,11 @@
package com.dfsek.terra.api.world.tree.fractal;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.entity.Entity;
import com.dfsek.terra.api.platform.entity.EntityType;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
import java.util.Random;
import java.util.function.Consumer;
diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/TreeGeometry.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/TreeGeometry.java
index 7ec3ee28c..46fc1f716 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/TreeGeometry.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/TreeGeometry.java
@@ -1,9 +1,9 @@
package com.dfsek.terra.api.world.tree.fractal;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.block.BlockData;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import java.util.Random;
diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/Cactus.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/Cactus.java
index 359d59f1d..5b56ea7f6 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/Cactus.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/Cactus.java
@@ -1,9 +1,9 @@
package com.dfsek.terra.api.world.tree.fractal.trees;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.block.BlockData;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.world.tree.fractal.FractalTree;
import java.util.Random;
diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/IceSpike.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/IceSpike.java
index abbeb0f2b..dfa231326 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/IceSpike.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/IceSpike.java
@@ -1,12 +1,12 @@
package com.dfsek.terra.api.world.tree.fractal.trees;
-import com.dfsek.terra.api.core.TerraPlugin;
-import com.dfsek.terra.api.math.ProbabilityCollection;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.handle.WorldHandle;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.world.tree.fractal.FractalTree;
import com.dfsek.terra.api.world.tree.fractal.TreeGeometry;
diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/OakTree.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/OakTree.java
index a5502ee6a..c86a2620f 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/OakTree.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/OakTree.java
@@ -1,10 +1,10 @@
package com.dfsek.terra.api.world.tree.fractal.trees;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.block.BlockData;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.world.tree.fractal.FractalTree;
import com.dfsek.terra.api.world.tree.fractal.TreeGeometry;
import net.jafama.FastMath;
diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredPillar.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredPillar.java
index 0bb915cd5..225947dca 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredPillar.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredPillar.java
@@ -1,9 +1,9 @@
package com.dfsek.terra.api.world.tree.fractal.trees;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.block.BlockData;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.world.tree.fractal.FractalTree;
import java.util.Random;
diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredTree.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredTree.java
index 2175df3c1..38425f989 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredTree.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/ShatteredTree.java
@@ -1,12 +1,12 @@
package com.dfsek.terra.api.world.tree.fractal.trees;
-import com.dfsek.terra.api.core.TerraPlugin;
-import com.dfsek.terra.api.math.ProbabilityCollection;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.handle.WorldHandle;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.world.tree.fractal.FractalTree;
import com.dfsek.terra.api.world.tree.fractal.TreeGeometry;
import net.jafama.FastMath;
diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredPillar.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredPillar.java
index a73c5dce9..a1465ef05 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredPillar.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredPillar.java
@@ -1,9 +1,9 @@
package com.dfsek.terra.api.world.tree.fractal.trees;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.block.BlockData;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.world.tree.fractal.FractalTree;
import java.util.Random;
diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredTree.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredTree.java
index ce9fa2abf..a5109ba9d 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredTree.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SmallShatteredTree.java
@@ -1,12 +1,12 @@
package com.dfsek.terra.api.world.tree.fractal.trees;
-import com.dfsek.terra.api.core.TerraPlugin;
-import com.dfsek.terra.api.math.ProbabilityCollection;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.handle.WorldHandle;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.world.tree.fractal.FractalTree;
import com.dfsek.terra.api.world.tree.fractal.TreeGeometry;
import net.jafama.FastMath;
diff --git a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SpruceTree.java b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SpruceTree.java
index eb51add0c..5f2f91765 100644
--- a/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SpruceTree.java
+++ b/common/src/main/java/com/dfsek/terra/api/world/tree/fractal/trees/SpruceTree.java
@@ -1,10 +1,10 @@
package com.dfsek.terra.api.world.tree.fractal.trees;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.block.BlockData;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.world.tree.fractal.FractalTree;
import com.dfsek.terra.api.world.tree.fractal.TreeGeometry;
import net.jafama.FastMath;
diff --git a/common/src/main/java/com/dfsek/terra/carving/CarverCache.java b/common/src/main/java/com/dfsek/terra/carving/CarverCache.java
index fe379c53c..00d3427a1 100644
--- a/common/src/main/java/com/dfsek/terra/carving/CarverCache.java
+++ b/common/src/main/java/com/dfsek/terra/carving/CarverCache.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.carving;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.MathUtil;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.world.World;
diff --git a/common/src/main/java/com/dfsek/terra/carving/CarverPalette.java b/common/src/main/java/com/dfsek/terra/carving/CarverPalette.java
index 937994d1d..c0c942bcd 100644
--- a/common/src/main/java/com/dfsek/terra/carving/CarverPalette.java
+++ b/common/src/main/java/com/dfsek/terra/carving/CarverPalette.java
@@ -1,9 +1,9 @@
package com.dfsek.terra.carving;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import java.util.Map;
import java.util.TreeMap;
diff --git a/common/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java b/common/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java
index e5fd230ab..8172425c9 100644
--- a/common/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java
+++ b/common/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java
@@ -4,7 +4,7 @@ import com.dfsek.paralithic.Expression;
import com.dfsek.paralithic.eval.parser.Parser;
import com.dfsek.paralithic.eval.parser.Scope;
import com.dfsek.paralithic.eval.tokenizer.ParseException;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction;
import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction2;
diff --git a/common/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/src/main/java/com/dfsek/terra/config/GenericLoaders.java
index 82bae3dfb..b848f0fbb 100644
--- a/common/src/main/java/com/dfsek/terra/config/GenericLoaders.java
+++ b/common/src/main/java/com/dfsek/terra/config/GenericLoaders.java
@@ -1,17 +1,17 @@
package com.dfsek.terra.config;
import com.dfsek.tectonic.loading.TypeRegistry;
-import com.dfsek.terra.addons.addon.TerraAddon;
import com.dfsek.terra.api.LoaderRegistrar;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
+import com.dfsek.terra.api.addons.TerraAddon;
import com.dfsek.terra.api.math.GridSpawn;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.noise.samplers.ImageSampler;
import com.dfsek.terra.api.math.noise.samplers.noise.CellularSampler;
+import com.dfsek.terra.api.util.collections.MaterialSet;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.util.seeded.SourceSeeded;
import com.dfsek.terra.api.util.seeded.StageSeeded;
-import com.dfsek.terra.api.util.world.MaterialSet;
import com.dfsek.terra.api.world.biome.pipeline.stages.ExpanderStage;
import com.dfsek.terra.api.world.biome.pipeline.stages.MutatorStage;
import com.dfsek.terra.api.world.biome.provider.BiomeProvider;
diff --git a/common/src/main/java/com/dfsek/terra/config/PluginConfig.java b/common/src/main/java/com/dfsek/terra/config/PluginConfig.java
index 1d058e96a..b9815d4f1 100644
--- a/common/src/main/java/com/dfsek/terra/config/PluginConfig.java
+++ b/common/src/main/java/com/dfsek/terra/config/PluginConfig.java
@@ -5,7 +5,7 @@ import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.config.ConfigTemplate;
import com.dfsek.tectonic.exception.ConfigException;
import com.dfsek.tectonic.loading.ConfigLoader;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.util.JarUtil;
import java.io.File;
diff --git a/common/src/main/java/com/dfsek/terra/config/exception/FileMissingException.java b/common/src/main/java/com/dfsek/terra/config/exception/FileMissingException.java
deleted file mode 100644
index c4ac0ecf3..000000000
--- a/common/src/main/java/com/dfsek/terra/config/exception/FileMissingException.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.dfsek.terra.config.exception;
-
-import com.dfsek.tectonic.exception.ConfigException;
-
-public class FileMissingException extends ConfigException {
- private static final long serialVersionUID = 4489395640246760802L;
-
- public FileMissingException(String message) {
- super(message);
- }
-
- public FileMissingException(String message, Throwable cause) {
- super(message, cause);
- }
-}
diff --git a/common/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java b/common/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java
index f3e987b93..66d871149 100644
--- a/common/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java
+++ b/common/src/main/java/com/dfsek/terra/config/factories/BiomeFactory.java
@@ -1,7 +1,7 @@
package com.dfsek.terra.config.factories;
import com.dfsek.paralithic.eval.parser.Scope;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.world.biome.TerraBiome;
import com.dfsek.terra.api.world.biome.UserDefinedBiome;
import com.dfsek.terra.config.builder.GeneratorBuilder;
diff --git a/common/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java b/common/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java
index 19c16e47e..9b3e681c7 100644
--- a/common/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java
+++ b/common/src/main/java/com/dfsek/terra/config/factories/CarverFactory.java
@@ -2,7 +2,7 @@ package com.dfsek.terra.config.factories;
import com.dfsek.paralithic.eval.tokenizer.ParseException;
import com.dfsek.tectonic.exception.LoadException;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.MathUtil;
import com.dfsek.terra.carving.UserDefinedCarver;
import com.dfsek.terra.config.pack.ConfigPack;
diff --git a/common/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java b/common/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java
index ba51ca3dd..160e1dc21 100644
--- a/common/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java
+++ b/common/src/main/java/com/dfsek/terra/config/factories/FloraFactory.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.config.factories;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.noise.samplers.noise.random.WhiteNoiseSampler;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.world.flora.Flora;
diff --git a/common/src/main/java/com/dfsek/terra/config/factories/OreFactory.java b/common/src/main/java/com/dfsek/terra/config/factories/OreFactory.java
index da74a1a81..9eeede7af 100644
--- a/common/src/main/java/com/dfsek/terra/config/factories/OreFactory.java
+++ b/common/src/main/java/com/dfsek/terra/config/factories/OreFactory.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.config.factories;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.config.templates.OreTemplate;
import com.dfsek.terra.world.population.items.ores.DeformedSphereOre;
diff --git a/common/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java b/common/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java
index 0e113f216..d7cf0a74c 100644
--- a/common/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java
+++ b/common/src/main/java/com/dfsek/terra/config/factories/PaletteFactory.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.config.factories;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.world.palette.NoisePalette;
import com.dfsek.terra.api.world.palette.Palette;
diff --git a/common/src/main/java/com/dfsek/terra/config/factories/StructureFactory.java b/common/src/main/java/com/dfsek/terra/config/factories/StructureFactory.java
index 5724e2bfa..afefca45f 100644
--- a/common/src/main/java/com/dfsek/terra/config/factories/StructureFactory.java
+++ b/common/src/main/java/com/dfsek/terra/config/factories/StructureFactory.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.config.factories;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.config.templates.StructureTemplate;
import com.dfsek.terra.world.population.items.TerraStructure;
diff --git a/common/src/main/java/com/dfsek/terra/config/factories/TerraFactory.java b/common/src/main/java/com/dfsek/terra/config/factories/TerraFactory.java
index 8e7d5ee82..5965eb4ad 100644
--- a/common/src/main/java/com/dfsek/terra/config/factories/TerraFactory.java
+++ b/common/src/main/java/com/dfsek/terra/config/factories/TerraFactory.java
@@ -2,7 +2,7 @@ package com.dfsek.terra.config.factories;
import com.dfsek.tectonic.config.ConfigTemplate;
import com.dfsek.tectonic.exception.LoadException;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
public interface TerraFactory {
O build(C config, TerraPlugin main) throws LoadException;
diff --git a/common/src/main/java/com/dfsek/terra/config/factories/TreeFactory.java b/common/src/main/java/com/dfsek/terra/config/factories/TreeFactory.java
index 717ad33cd..681e03b45 100644
--- a/common/src/main/java/com/dfsek/terra/config/factories/TreeFactory.java
+++ b/common/src/main/java/com/dfsek/terra/config/factories/TreeFactory.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.config.factories;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.world.tree.Tree;
import com.dfsek.terra.config.templates.TreeTemplate;
import com.dfsek.terra.world.population.items.tree.TerraTree;
diff --git a/common/src/main/java/com/dfsek/terra/config/lang/LangUtil.java b/common/src/main/java/com/dfsek/terra/config/lang/LangUtil.java
index a3d47ccd1..2c8452d64 100644
--- a/common/src/main/java/com/dfsek/terra/config/lang/LangUtil.java
+++ b/common/src/main/java/com/dfsek/terra/config/lang/LangUtil.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.config.lang;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.platform.CommandSender;
import java.io.File;
diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java
index 4001a8589..d4d7b5c01 100644
--- a/common/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java
+++ b/common/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java
@@ -4,7 +4,7 @@ import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.tectonic.loading.TypeLoader;
import com.dfsek.terra.api.platform.block.MaterialData;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
import java.lang.reflect.Type;
import java.util.List;
diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java
index 28a471ce1..050281b4d 100644
--- a/common/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java
+++ b/common/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java
@@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.tectonic.loading.TypeLoader;
-import com.dfsek.terra.api.math.ProbabilityCollection;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/Types.java b/common/src/main/java/com/dfsek/terra/config/loaders/Types.java
index 206c6226a..9c91e598a 100644
--- a/common/src/main/java/com/dfsek/terra/config/loaders/Types.java
+++ b/common/src/main/java/com/dfsek/terra/config/loaders/Types.java
@@ -1,8 +1,8 @@
package com.dfsek.terra.config.loaders;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.world.biome.TerraBiome;
import com.dfsek.terra.api.world.flora.Flora;
import com.dfsek.terra.api.world.palette.Palette;
diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java
index 411dd0b5e..719bf9b91 100644
--- a/common/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java
+++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java
@@ -4,9 +4,9 @@ import com.dfsek.tectonic.exception.ConfigException;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.tectonic.loading.TypeLoader;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.noise.samplers.noise.random.WhiteNoiseSampler;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.util.seeded.NoiseSeeded;
import com.dfsek.terra.api.world.flora.Flora;
import com.dfsek.terra.config.loaders.Types;
diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java
index fa2b98181..0fddd9705 100644
--- a/common/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java
+++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java
@@ -3,9 +3,9 @@ package com.dfsek.terra.config.loaders.config;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.tectonic.loading.TypeLoader;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.noise.samplers.noise.random.WhiteNoiseSampler;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.util.seeded.NoiseSeeded;
import com.dfsek.terra.api.world.tree.Tree;
import com.dfsek.terra.config.loaders.Types;
diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/SourceBuilderLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/SourceBuilderLoader.java
index a7d2d61ed..e4509473c 100644
--- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/SourceBuilderLoader.java
+++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/SourceBuilderLoader.java
@@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders.config.biome;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.tectonic.loading.TypeLoader;
-import com.dfsek.terra.api.math.ProbabilityCollection;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.util.seeded.NoiseSeeded;
import com.dfsek.terra.api.util.seeded.SourceSeeded;
import com.dfsek.terra.api.world.biome.TerraBiome;
diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/BiomePipelineTemplate.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/BiomePipelineTemplate.java
index 0e3195efb..b0a05add6 100644
--- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/BiomePipelineTemplate.java
+++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/source/BiomePipelineTemplate.java
@@ -2,7 +2,7 @@ package com.dfsek.terra.config.loaders.config.biome.templates.source;
import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.util.seeded.SourceSeeded;
import com.dfsek.terra.api.util.seeded.StageSeeded;
import com.dfsek.terra.api.world.biome.pipeline.BiomePipeline;
diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java
index b7eb95219..570b161fc 100644
--- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java
+++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderListMutatorTemplate.java
@@ -1,7 +1,7 @@
package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator;
import com.dfsek.tectonic.annotations.Value;
-import com.dfsek.terra.api.math.ProbabilityCollection;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.world.biome.TerraBiome;
import com.dfsek.terra.api.world.biome.pipeline.mutator.BiomeMutator;
import com.dfsek.terra.api.world.biome.pipeline.mutator.BorderListMutator;
diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java
index 6b06e8bcf..207d2720a 100644
--- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java
+++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/BorderMutatorTemplate.java
@@ -1,7 +1,7 @@
package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator;
import com.dfsek.tectonic.annotations.Value;
-import com.dfsek.terra.api.math.ProbabilityCollection;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.world.biome.TerraBiome;
import com.dfsek.terra.api.world.biome.pipeline.mutator.BiomeMutator;
import com.dfsek.terra.api.world.biome.pipeline.mutator.BorderMutator;
diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java
index 52bfdf946..7c3cfd968 100644
--- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java
+++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java
@@ -1,7 +1,7 @@
package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator;
import com.dfsek.tectonic.annotations.Value;
-import com.dfsek.terra.api.math.ProbabilityCollection;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.world.biome.TerraBiome;
import com.dfsek.terra.api.world.biome.pipeline.mutator.BiomeMutator;
import com.dfsek.terra.api.world.biome.pipeline.mutator.ReplaceListMutator;
diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java
index 379b08137..61ad68c1d 100644
--- a/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java
+++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceMutatorTemplate.java
@@ -1,7 +1,7 @@
package com.dfsek.terra.config.loaders.config.biome.templates.stage.mutator;
import com.dfsek.tectonic.annotations.Value;
-import com.dfsek.terra.api.math.ProbabilityCollection;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.world.biome.TerraBiome;
import com.dfsek.terra.api.world.biome.pipeline.mutator.BiomeMutator;
import com.dfsek.terra.api.world.biome.pipeline.mutator.ReplaceMutator;
diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java
index 26f12725e..696683dd5 100644
--- a/common/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java
+++ b/common/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java
@@ -4,9 +4,9 @@ import com.dfsek.tectonic.config.Configuration;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.tectonic.loading.TypeLoader;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.platform.block.BlockData;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.carving.CarverPalette;
import com.dfsek.terra.config.loaders.Types;
diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java
index 12c32224c..01a30a2e2 100644
--- a/common/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java
+++ b/common/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java
@@ -3,9 +3,9 @@ package com.dfsek.terra.config.loaders.palette;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.tectonic.loading.TypeLoader;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.noise.NoiseSampler;
import com.dfsek.terra.api.platform.block.BlockData;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.util.seeded.NoiseSeeded;
import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder;
import com.dfsek.terra.config.loaders.Types;
diff --git a/common/src/main/java/com/dfsek/terra/config/pack/ConfigPack.java b/common/src/main/java/com/dfsek/terra/config/pack/ConfigPack.java
index d7c32f3c6..2e88fda2b 100644
--- a/common/src/main/java/com/dfsek/terra/config/pack/ConfigPack.java
+++ b/common/src/main/java/com/dfsek/terra/config/pack/ConfigPack.java
@@ -8,10 +8,11 @@ import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.tectonic.loading.TypeRegistry;
import com.dfsek.tectonic.loading.object.ObjectTemplate;
import com.dfsek.terra.api.LoaderRegistrar;
-import com.dfsek.terra.api.core.TerraPlugin;
-import com.dfsek.terra.api.core.event.events.config.ConfigPackPostLoadEvent;
-import com.dfsek.terra.api.core.event.events.config.ConfigPackPreLoadEvent;
+import com.dfsek.terra.api.TerraPlugin;
+import com.dfsek.terra.api.event.events.config.ConfigPackPostLoadEvent;
+import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent;
import com.dfsek.terra.api.platform.block.BlockData;
+import com.dfsek.terra.api.registry.CheckedRegistry;
import com.dfsek.terra.api.structures.loot.LootTable;
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
import com.dfsek.terra.api.structures.script.StructureScript;
@@ -22,7 +23,6 @@ import com.dfsek.terra.api.world.flora.Flora;
import com.dfsek.terra.api.world.palette.Palette;
import com.dfsek.terra.api.world.tree.Tree;
import com.dfsek.terra.carving.UserDefinedCarver;
-import com.dfsek.terra.config.exception.FileMissingException;
import com.dfsek.terra.config.factories.BiomeFactory;
import com.dfsek.terra.config.factories.CarverFactory;
import com.dfsek.terra.config.factories.FloraFactory;
@@ -49,7 +49,6 @@ import com.dfsek.terra.config.templates.OreTemplate;
import com.dfsek.terra.config.templates.PaletteTemplate;
import com.dfsek.terra.config.templates.StructureTemplate;
import com.dfsek.terra.config.templates.TreeTemplate;
-import com.dfsek.terra.registry.CheckedRegistry;
import com.dfsek.terra.registry.OpenRegistry;
import com.dfsek.terra.registry.config.BiomeRegistry;
import com.dfsek.terra.registry.config.CarverRegistry;
@@ -145,7 +144,7 @@ public class ConfigPack implements LoaderRegistrar {
biomeProviderBuilder = packPostTemplate.getProviderBuilder();
biomeProviderBuilder.build(0); // Build dummy provider to catch errors at load time.
} catch(FileNotFoundException e) {
- throw new FileMissingException("No pack.yml file found in " + folder.getAbsolutePath(), e);
+ throw new LoadException("No pack.yml file found in " + folder.getAbsolutePath(), e);
}
} catch(Exception e) {
main.getLogger().severe("Failed to load config pack from folder \"" + folder.getAbsolutePath() + "\"");
@@ -176,7 +175,7 @@ public class ConfigPack implements LoaderRegistrar {
if(entry.getName().equals("pack.yml")) pack = entry;
}
- if(pack == null) throw new FileMissingException("No pack.yml file found in " + file.getName());
+ if(pack == null) throw new LoadException("No pack.yml file found in " + file.getName());
selfLoader.load(template, file.getInputStream(pack));
main.getLogger().info("Loading config pack \"" + template.getID() + "\"");
diff --git a/common/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java b/common/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java
index d57615148..593d6e2d7 100644
--- a/common/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java
+++ b/common/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java
@@ -3,7 +3,7 @@ package com.dfsek.terra.config.pack;
import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.config.ConfigTemplate;
-import com.dfsek.terra.addons.addon.TerraAddon;
+import com.dfsek.terra.api.addons.TerraAddon;
import com.dfsek.terra.api.util.seeded.NoiseSeeded;
import com.dfsek.terra.config.loaders.config.function.FunctionTemplate;
diff --git a/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java b/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java
index 230be1ea1..a7aa92403 100644
--- a/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java
+++ b/common/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java
@@ -8,8 +8,7 @@ import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.config.ValidatedConfigTemplate;
import com.dfsek.tectonic.exception.ValidationException;
-import com.dfsek.terra.api.core.TerraPlugin;
-import com.dfsek.terra.api.math.ProbabilityCollection;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.noise.NoiseSampler;
import com.dfsek.terra.api.math.noise.samplers.noise.ConstantSampler;
import com.dfsek.terra.api.math.paralithic.BlankFunction;
@@ -18,6 +17,7 @@ import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.platform.world.Biome;
import com.dfsek.terra.api.util.GlueList;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.util.seeded.NoiseSeeded;
import com.dfsek.terra.api.world.palette.Palette;
import com.dfsek.terra.api.world.palette.SinglePalette;
diff --git a/common/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java b/common/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java
index b196852a1..989fe3919 100644
--- a/common/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java
+++ b/common/src/main/java/com/dfsek/terra/config/templates/CarverTemplate.java
@@ -5,7 +5,7 @@ import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value;
import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.platform.block.MaterialData;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.carving.CarverPalette;
import java.util.HashMap;
diff --git a/common/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java b/common/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java
index 3b676bee8..8e1564e4a 100644
--- a/common/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java
+++ b/common/src/main/java/com/dfsek/terra/config/templates/FloraTemplate.java
@@ -3,7 +3,7 @@ package com.dfsek.terra.config.templates;
import com.dfsek.tectonic.annotations.Abstractable;
import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder;
import com.dfsek.terra.world.population.items.flora.TerraFlora;
diff --git a/common/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java b/common/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java
index 7e56bab83..7362a4c6a 100644
--- a/common/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java
+++ b/common/src/main/java/com/dfsek/terra/config/templates/OreTemplate.java
@@ -5,7 +5,7 @@ import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value;
import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.platform.block.BlockData;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.world.population.items.ores.Ore;
@SuppressWarnings({"unused", "FieldMayBeFinal"})
diff --git a/common/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java b/common/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java
index 8da29ddf8..a291ae3f9 100644
--- a/common/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java
+++ b/common/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java
@@ -5,10 +5,10 @@ import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.config.ConfigTemplate;
import com.dfsek.terra.api.math.GridSpawn;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.structures.script.StructureScript;
import com.dfsek.terra.api.util.GlueList;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import java.util.List;
diff --git a/common/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java b/common/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java
index 07db47a1c..008d05d4f 100644
--- a/common/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java
+++ b/common/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java
@@ -3,9 +3,9 @@ package com.dfsek.terra.config.templates;
import com.dfsek.tectonic.annotations.Abstractable;
import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.structures.script.StructureScript;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
@SuppressWarnings({"unused", "FieldMayBeFinal"})
public class TreeTemplate extends AbstractableTemplate {
diff --git a/common/src/main/java/com/dfsek/terra/registry/OpenRegistry.java b/common/src/main/java/com/dfsek/terra/registry/OpenRegistry.java
index 5d3fbb5bd..43fc732bd 100644
--- a/common/src/main/java/com/dfsek/terra/registry/OpenRegistry.java
+++ b/common/src/main/java/com/dfsek/terra/registry/OpenRegistry.java
@@ -2,7 +2,7 @@ package com.dfsek.terra.registry;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.ConfigLoader;
-import com.dfsek.tectonic.loading.TypeLoader;
+import com.dfsek.terra.api.registry.Registry;
import com.dfsek.terra.registry.exception.DuplicateEntryException;
import java.lang.reflect.Type;
diff --git a/common/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java b/common/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java
index 3a3905330..c06b8b0d4 100644
--- a/common/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java
+++ b/common/src/main/java/com/dfsek/terra/registry/config/FloraRegistry.java
@@ -1,9 +1,9 @@
package com.dfsek.terra.registry.config;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.world.flora.Flora;
import com.dfsek.terra.registry.OpenRegistry;
import com.dfsek.terra.world.population.items.flora.ConstantFlora;
diff --git a/common/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java b/common/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java
index 53a857d9e..e54c8ec81 100644
--- a/common/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java
+++ b/common/src/main/java/com/dfsek/terra/registry/config/PaletteRegistry.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.registry.config;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.world.palette.Palette;
import com.dfsek.terra.api.world.palette.SinglePalette;
diff --git a/common/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java b/common/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java
index bf9fa629f..05a29d849 100644
--- a/common/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java
+++ b/common/src/main/java/com/dfsek/terra/registry/config/TreeRegistry.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.registry.config;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.block.MaterialData;
diff --git a/common/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java b/common/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java
index 3483b3091..6f8ae2663 100644
--- a/common/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java
+++ b/common/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java
@@ -1,13 +1,13 @@
package com.dfsek.terra.registry.master;
-import com.dfsek.terra.addons.addon.TerraAddon;
-import com.dfsek.terra.addons.injection.InjectionException;
-import com.dfsek.terra.addons.injection.Injector;
-import com.dfsek.terra.addons.loading.AddonClassLoader;
-import com.dfsek.terra.addons.loading.AddonLoadException;
-import com.dfsek.terra.addons.loading.pre.AddonPool;
-import com.dfsek.terra.addons.loading.pre.PreLoadAddon;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.addon.AddonClassLoader;
+import com.dfsek.terra.addon.AddonPool;
+import com.dfsek.terra.addon.PreLoadAddon;
+import com.dfsek.terra.addon.exception.AddonLoadException;
+import com.dfsek.terra.api.TerraPlugin;
+import com.dfsek.terra.api.addons.TerraAddon;
+import com.dfsek.terra.api.injection.Injector;
+import com.dfsek.terra.api.injection.exception.InjectionException;
import com.dfsek.terra.registry.OpenRegistry;
import com.dfsek.terra.registry.exception.DuplicateEntryException;
diff --git a/common/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java b/common/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java
index 17476237c..c756a2b2b 100644
--- a/common/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java
+++ b/common/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java
@@ -1,7 +1,7 @@
package com.dfsek.terra.registry.master;
import com.dfsek.tectonic.exception.ConfigException;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.config.pack.ConfigPack;
import com.dfsek.terra.registry.OpenRegistry;
diff --git a/common/src/main/java/com/dfsek/terra/world/TerraWorld.java b/common/src/main/java/com/dfsek/terra/world/TerraWorld.java
index 236224aa6..f14773800 100644
--- a/common/src/main/java/com/dfsek/terra/world/TerraWorld.java
+++ b/common/src/main/java/com/dfsek/terra/world/TerraWorld.java
@@ -1,7 +1,7 @@
package com.dfsek.terra.world;
-import com.dfsek.terra.api.core.TerraPlugin;
-import com.dfsek.terra.api.core.event.events.world.TerraWorldLoadEvent;
+import com.dfsek.terra.api.TerraPlugin;
+import com.dfsek.terra.api.event.events.world.TerraWorldLoadEvent;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.block.BlockData;
diff --git a/common/src/main/java/com/dfsek/terra/world/carving/NoiseCarver.java b/common/src/main/java/com/dfsek/terra/world/carving/NoiseCarver.java
index 04b961a90..e325e7a0c 100644
--- a/common/src/main/java/com/dfsek/terra/world/carving/NoiseCarver.java
+++ b/common/src/main/java/com/dfsek/terra/world/carving/NoiseCarver.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.world.carving;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.world.ChunkAccess;
diff --git a/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java b/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java
index be6857923..3f841b95a 100644
--- a/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java
+++ b/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator2D.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.world.generation.generators;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.world.BiomeGrid;
diff --git a/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java b/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java
index 734dbfd59..6fe999c4d 100644
--- a/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java
+++ b/common/src/main/java/com/dfsek/terra/world/generation/generators/DefaultChunkGenerator3D.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.world.generation.generators;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.block.BlockData;
diff --git a/common/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java b/common/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java
index 31e7e6c00..bfc287d9e 100644
--- a/common/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java
+++ b/common/src/main/java/com/dfsek/terra/world/generation/math/SamplerCache.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.world.generation.math;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.MathUtil;
import com.dfsek.terra.api.platform.world.World;
import com.dfsek.terra.world.TerraWorld;
diff --git a/common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java b/common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java
index 929d41626..38d5755fe 100644
--- a/common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java
+++ b/common/src/main/java/com/dfsek/terra/world/population/CavePopulator.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.world.population;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.block.Block;
import com.dfsek.terra.api.platform.block.BlockData;
@@ -52,28 +52,28 @@ public class CavePopulator implements TerraBlockPopulator {
switch(type) {
case CENTER:
if(template.getInner().canReplace(m)) {
- handle.setBlockData(b, template.getInner().get(v.getBlockY()).get(random), false);
+ b.setBlockData(template.getInner().get(v.getBlockY()).get(random), false);
if(template.getUpdate().contains(m)) updateNeeded.add(b);
if(template.getShift().containsKey(m)) shiftCandidate.put(b.getLocation(), m);
}
break;
case WALL:
if(template.getOuter().canReplace(m)) {
- handle.setBlockData(b, template.getOuter().get(v.getBlockY()).get(random), false);
+ b.setBlockData(template.getOuter().get(v.getBlockY()).get(random), false);
if(template.getUpdate().contains(m)) updateNeeded.add(b);
if(template.getShift().containsKey(m)) shiftCandidate.put(b.getLocation(), m);
}
break;
case TOP:
if(template.getTop().canReplace(m)) {
- handle.setBlockData(b, template.getTop().get(v.getBlockY()).get(random), false);
+ b.setBlockData(template.getTop().get(v.getBlockY()).get(random), false);
if(template.getUpdate().contains(m)) updateNeeded.add(b);
if(template.getShift().containsKey(m)) shiftCandidate.put(b.getLocation(), m);
}
break;
case BOTTOM:
if(template.getBottom().canReplace(m)) {
- handle.setBlockData(b, template.getBottom().get(v.getBlockY()).get(random), false);
+ b.setBlockData(template.getBottom().get(v.getBlockY()).get(random), false);
if(template.getUpdate().contains(m)) updateNeeded.add(b);
if(template.getShift().containsKey(m)) shiftCandidate.put(b.getLocation(), m);
}
@@ -95,8 +95,8 @@ public class CavePopulator implements TerraBlockPopulator {
}
for(Block b : updateNeeded) {
BlockData orig = handle.getBlockData(b);
- handle.setBlockData(b, AIR, false);
- handle.setBlockData(b, orig, true);
+ b.setBlockData(AIR, false);
+ b.setBlockData(orig, true);
}
}
diff --git a/common/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java b/common/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java
index 4aeca61c2..281854cce 100644
--- a/common/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java
+++ b/common/src/main/java/com/dfsek/terra/world/population/FloraPopulator.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.world.population;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Vector2;
import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.platform.world.World;
diff --git a/common/src/main/java/com/dfsek/terra/world/population/OrePopulator.java b/common/src/main/java/com/dfsek/terra/world/population/OrePopulator.java
index 1fdc5c961..a67944409 100644
--- a/common/src/main/java/com/dfsek/terra/world/population/OrePopulator.java
+++ b/common/src/main/java/com/dfsek/terra/world/population/OrePopulator.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.world.population;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.MathUtil;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.world.Chunk;
diff --git a/common/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java b/common/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java
index d19fc1fa0..ed46b15e3 100644
--- a/common/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java
+++ b/common/src/main/java/com/dfsek/terra/world/population/StructurePopulator.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.world.population;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.MathUtil;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.world.Chunk;
diff --git a/common/src/main/java/com/dfsek/terra/world/population/TreePopulator.java b/common/src/main/java/com/dfsek/terra/world/population/TreePopulator.java
index 1b14c80bd..82bf925c7 100644
--- a/common/src/main/java/com/dfsek/terra/world/population/TreePopulator.java
+++ b/common/src/main/java/com/dfsek/terra/world/population/TreePopulator.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.world.population;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Vector2;
import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.platform.world.World;
diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java b/common/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java
index 89e39ae67..e150d92fe 100644
--- a/common/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java
+++ b/common/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java
@@ -1,10 +1,10 @@
package com.dfsek.terra.world.population.items;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.noise.NoiseSampler;
import com.dfsek.terra.api.math.vector.Vector2;
import com.dfsek.terra.api.platform.world.Chunk;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
public abstract class PlaceableLayer {
protected final double density;
diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java b/common/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java
index 975ea34ff..f3976fbab 100644
--- a/common/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java
+++ b/common/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java
@@ -1,9 +1,9 @@
package com.dfsek.terra.world.population.items;
import com.dfsek.terra.api.math.GridSpawn;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.structures.script.StructureScript;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.config.templates.StructureTemplate;
public class TerraStructure {
diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java b/common/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java
index 0559f61dd..d7bec46bf 100644
--- a/common/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java
+++ b/common/src/main/java/com/dfsek/terra/world/population/items/flora/ConstantFlora.java
@@ -7,7 +7,7 @@ import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.util.GlueList;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.world.flora.Flora;
import java.util.List;
diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java b/common/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java
index a5feb9c84..579b70035 100644
--- a/common/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java
+++ b/common/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java
@@ -1,10 +1,10 @@
package com.dfsek.terra.world.population.items.flora;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.noise.NoiseSampler;
import com.dfsek.terra.api.math.vector.Vector2;
import com.dfsek.terra.api.platform.world.Chunk;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.world.flora.Flora;
import com.dfsek.terra.world.population.items.PlaceableLayer;
diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java b/common/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java
index c542e06b4..28ecac16d 100644
--- a/common/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java
+++ b/common/src/main/java/com/dfsek/terra/world/population/items/flora/TerraFlora.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.world.population.items.flora;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.block.Block;
@@ -13,7 +13,7 @@ import com.dfsek.terra.api.platform.handle.WorldHandle;
import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.util.FastRandom;
import com.dfsek.terra.api.util.GlueList;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.world.flora.Flora;
import com.dfsek.terra.api.world.palette.Palette;
import net.jafama.FastMath;
diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java b/common/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java
index 22c6bb193..9df59e768 100644
--- a/common/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java
+++ b/common/src/main/java/com/dfsek/terra/world/population/items/ores/DeformedSphereOre.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.world.population.items.ores;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.noise.samplers.noise.simplex.OpenSimplex2Sampler;
import com.dfsek.terra.api.math.vector.Vector3;
@@ -8,7 +8,7 @@ import com.dfsek.terra.api.platform.block.Block;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.handle.WorldHandle;
import com.dfsek.terra.api.platform.world.Chunk;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
import java.util.Random;
diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java b/common/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java
index 1115ce3c7..541a7dacf 100644
--- a/common/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java
+++ b/common/src/main/java/com/dfsek/terra/world/population/items/ores/Ore.java
@@ -1,10 +1,10 @@
package com.dfsek.terra.world.population.items.ores;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.world.Chunk;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
import java.util.Random;
diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java b/common/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java
index a1b9b3b65..798d7ff01 100644
--- a/common/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java
+++ b/common/src/main/java/com/dfsek/terra/world/population/items/ores/VanillaOre.java
@@ -1,13 +1,13 @@
package com.dfsek.terra.world.population.items.ores;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.block.Block;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.handle.WorldHandle;
import com.dfsek.terra.api.platform.world.Chunk;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
import net.jafama.FastMath;
import java.util.Random;
diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java b/common/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java
index a0abe79aa..07c4ae283 100644
--- a/common/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java
+++ b/common/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java
@@ -1,10 +1,10 @@
package com.dfsek.terra.world.population.items.tree;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.structures.script.StructureScript;
import com.dfsek.terra.api.structures.structure.Rotation;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.world.tree.Tree;
import java.util.Random;
diff --git a/common/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java b/common/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java
index 71bb5b077..4f90b1be7 100644
--- a/common/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java
+++ b/common/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java
@@ -1,12 +1,12 @@
package com.dfsek.terra.world.population.items.tree;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.noise.NoiseSampler;
import com.dfsek.terra.api.math.vector.Vector2;
import com.dfsek.terra.api.platform.block.Block;
import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.world.Chunk;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.util.world.PopulationUtil;
import com.dfsek.terra.api.world.tree.Tree;
import com.dfsek.terra.world.population.items.PlaceableLayer;
diff --git a/common/src/test/java/biome/DistributionTest.java b/common/src/test/java/biome/DistributionTest.java
index abecc1efd..a6217010a 100644
--- a/common/src/test/java/biome/DistributionTest.java
+++ b/common/src/test/java/biome/DistributionTest.java
@@ -9,14 +9,17 @@ import com.dfsek.tectonic.config.ValidatedConfigTemplate;
import com.dfsek.tectonic.exception.ConfigException;
import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.tectonic.loading.TypeRegistry;
-import com.dfsek.terra.addons.addon.TerraAddon;
-import com.dfsek.terra.api.core.TerraPlugin;
-import com.dfsek.terra.api.core.event.EventManager;
-import com.dfsek.terra.api.math.ProbabilityCollection;
+import com.dfsek.terra.api.TerraPlugin;
+import com.dfsek.terra.api.addons.TerraAddon;
+import com.dfsek.terra.api.event.EventManager;
import com.dfsek.terra.api.platform.handle.ItemHandle;
import com.dfsek.terra.api.platform.handle.WorldHandle;
import com.dfsek.terra.api.platform.world.Biome;
import com.dfsek.terra.api.platform.world.World;
+import com.dfsek.terra.api.registry.CheckedRegistry;
+import com.dfsek.terra.api.registry.LockedRegistry;
+import com.dfsek.terra.api.util.DebugLogger;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.util.seeded.NoiseSeeded;
import com.dfsek.terra.api.world.biome.Generator;
import com.dfsek.terra.api.world.biome.TerraBiome;
@@ -34,9 +37,6 @@ import com.dfsek.terra.config.loaders.config.biome.templates.source.SingleBiomeP
import com.dfsek.terra.config.loaders.config.sampler.NoiseSamplerBuilderLoader;
import com.dfsek.terra.config.pack.ConfigPack;
import com.dfsek.terra.config.templates.AbstractableTemplate;
-import com.dfsek.terra.debug.DebugLogger;
-import com.dfsek.terra.registry.CheckedRegistry;
-import com.dfsek.terra.registry.LockedRegistry;
import com.dfsek.terra.registry.config.BiomeRegistry;
import com.dfsek.terra.registry.config.NoiseRegistry;
import com.dfsek.terra.world.TerraWorld;
diff --git a/common/src/test/java/biome/ImageTest.java b/common/src/test/java/biome/ImageTest.java
index 8e52c0ce9..0569dcc69 100644
--- a/common/src/test/java/biome/ImageTest.java
+++ b/common/src/test/java/biome/ImageTest.java
@@ -7,9 +7,9 @@ import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.config.ConfigTemplate;
import com.dfsek.tectonic.config.ValidatedConfigTemplate;
import com.dfsek.tectonic.exception.ConfigException;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.platform.world.Biome;
import com.dfsek.terra.api.platform.world.World;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.world.biome.Generator;
import com.dfsek.terra.api.world.biome.TerraBiome;
import com.dfsek.terra.api.world.biome.provider.BiomeProvider;
diff --git a/common/src/test/java/noise/ColorConfigTemplate.java b/common/src/test/java/noise/ColorConfigTemplate.java
index 0a8c88556..ddc3ba9f0 100644
--- a/common/src/test/java/noise/ColorConfigTemplate.java
+++ b/common/src/test/java/noise/ColorConfigTemplate.java
@@ -3,7 +3,7 @@ package noise;
import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.config.ConfigTemplate;
-import com.dfsek.terra.api.math.ProbabilityCollection;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
public class ColorConfigTemplate implements ConfigTemplate {
@Value("colors")
diff --git a/common/src/test/java/noise/NoiseTool.java b/common/src/test/java/noise/NoiseTool.java
index ef518aa1b..a335a88de 100644
--- a/common/src/test/java/noise/NoiseTool.java
+++ b/common/src/test/java/noise/NoiseTool.java
@@ -2,8 +2,8 @@ package noise;
import com.dfsek.tectonic.exception.ConfigException;
import com.dfsek.tectonic.loading.ConfigLoader;
-import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.noise.NoiseSampler;
+import com.dfsek.terra.api.util.collections.ProbabilityCollection;
import com.dfsek.terra.api.util.seeded.NoiseSeeded;
import com.dfsek.terra.config.GenericLoaders;
import com.dfsek.terra.config.fileloaders.FolderLoader;
diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java
index 0251d2ada..162e41131 100644
--- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java
+++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java
@@ -1,7 +1,7 @@
package com.dfsek.terra.bukkit;
import com.dfsek.terra.api.math.vector.Location;
-import com.dfsek.terra.api.platform.Player;
+import com.dfsek.terra.api.platform.entity.Player;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
public class BukkitPlayer implements Player {
diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java
index 1d3b70dcb..5f8e99ee5 100644
--- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java
+++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java
@@ -1,19 +1,22 @@
package com.dfsek.terra.bukkit;
import com.dfsek.tectonic.loading.TypeRegistry;
-import com.dfsek.terra.addons.addon.TerraAddon;
-import com.dfsek.terra.addons.annotations.Addon;
-import com.dfsek.terra.addons.annotations.Author;
-import com.dfsek.terra.addons.annotations.Version;
-import com.dfsek.terra.api.core.TerraPlugin;
-import com.dfsek.terra.api.core.event.EventManager;
-import com.dfsek.terra.api.core.event.TerraEventManager;
+import com.dfsek.terra.api.TerraPlugin;
+import com.dfsek.terra.api.addons.TerraAddon;
+import com.dfsek.terra.api.addons.annotations.Addon;
+import com.dfsek.terra.api.addons.annotations.Author;
+import com.dfsek.terra.api.addons.annotations.Version;
+import com.dfsek.terra.api.event.EventManager;
+import com.dfsek.terra.api.event.TerraEventManager;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.platform.handle.ItemHandle;
import com.dfsek.terra.api.platform.handle.WorldHandle;
import com.dfsek.terra.api.platform.world.Biome;
import com.dfsek.terra.api.platform.world.World;
+import com.dfsek.terra.api.registry.CheckedRegistry;
+import com.dfsek.terra.api.registry.LockedRegistry;
+import com.dfsek.terra.api.util.DebugLogger;
import com.dfsek.terra.api.world.generation.TerraChunkGenerator;
import com.dfsek.terra.bukkit.command.command.TerraCommand;
import com.dfsek.terra.bukkit.command.command.structure.LocateCommand;
@@ -31,9 +34,6 @@ import com.dfsek.terra.config.PluginConfig;
import com.dfsek.terra.config.lang.LangUtil;
import com.dfsek.terra.config.lang.Language;
import com.dfsek.terra.config.pack.ConfigPack;
-import com.dfsek.terra.debug.DebugLogger;
-import com.dfsek.terra.registry.CheckedRegistry;
-import com.dfsek.terra.registry.LockedRegistry;
import com.dfsek.terra.registry.master.AddonRegistry;
import com.dfsek.terra.registry.master.ConfigRegistry;
import com.dfsek.terra.world.TerraWorld;
diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/Command.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/Command.java
index 730389d76..93b1435ab 100644
--- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/Command.java
+++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/Command.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.bukkit.command;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.bukkit.BukkitCommandSender;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/PacksCommand.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/PacksCommand.java
index 0cdea2157..1bdd037a1 100644
--- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/PacksCommand.java
+++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/PacksCommand.java
@@ -1,12 +1,11 @@
package com.dfsek.terra.bukkit.command.command;
+import com.dfsek.terra.api.registry.CheckedRegistry;
import com.dfsek.terra.bukkit.BukkitCommandSender;
import com.dfsek.terra.bukkit.command.Command;
import com.dfsek.terra.config.lang.LangUtil;
import com.dfsek.terra.config.pack.ConfigPack;
import com.dfsek.terra.config.pack.ConfigPackTemplate;
-import com.dfsek.terra.registry.CheckedRegistry;
-import com.dfsek.terra.registry.master.ConfigRegistry;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;
diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/TerraCommand.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/TerraCommand.java
index f844b82e3..639a63345 100644
--- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/TerraCommand.java
+++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/TerraCommand.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.bukkit.command.command;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.bukkit.BukkitCommandSender;
import com.dfsek.terra.bukkit.command.Command;
import com.dfsek.terra.bukkit.command.command.biome.BiomeCommand;
diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeLocateCommand.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeLocateCommand.java
index 07b07e451..a52a7c83b 100644
--- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeLocateCommand.java
+++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/biome/BiomeLocateCommand.java
@@ -2,7 +2,7 @@ package com.dfsek.terra.bukkit.command.command.biome;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.world.biome.TerraBiome;
-import com.dfsek.terra.async.AsyncBiomeFinder;
+import com.dfsek.terra.api.world.locate.AsyncBiomeFinder;
import com.dfsek.terra.bukkit.TerraBukkitPlugin;
import com.dfsek.terra.bukkit.command.WorldCommand;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/structure/LocateCommand.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/structure/LocateCommand.java
index 933895da6..e23c95bbc 100644
--- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/structure/LocateCommand.java
+++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/command/structure/LocateCommand.java
@@ -1,7 +1,7 @@
package com.dfsek.terra.bukkit.command.command.structure;
import com.dfsek.terra.api.math.vector.Vector3;
-import com.dfsek.terra.async.AsyncStructureFinder;
+import com.dfsek.terra.api.world.locate.AsyncStructureFinder;
import com.dfsek.terra.bukkit.TerraBukkitPlugin;
import com.dfsek.terra.bukkit.command.WorldCommand;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java
index 8c0e5bb09..20e283332 100644
--- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java
+++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.bukkit.generator;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.world.generation.TerraBlockPopulator;
import com.dfsek.terra.api.world.generation.TerraChunkGenerator;
diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java
index 753b785c9..98b449536 100644
--- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java
+++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.bukkit.listeners;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.world.World;
import com.dfsek.terra.api.transform.MapTransform;
diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java
index 01d298372..fd79cde9b 100644
--- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java
+++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java
@@ -1,7 +1,7 @@
package com.dfsek.terra.bukkit.listeners;
-import com.dfsek.terra.api.core.TerraPlugin;
-import com.dfsek.terra.async.AsyncStructureFinder;
+import com.dfsek.terra.api.TerraPlugin;
+import com.dfsek.terra.api.world.locate.AsyncStructureFinder;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.dfsek.terra.world.TerraWorld;
import com.dfsek.terra.world.population.items.TerraStructure;
diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java
index e3bfa8642..01748e1c5 100644
--- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java
+++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java
@@ -1,7 +1,7 @@
package com.dfsek.terra.bukkit.listeners;
-import com.dfsek.terra.api.core.TerraPlugin;
-import com.dfsek.terra.async.AsyncStructureFinder;
+import com.dfsek.terra.api.TerraPlugin;
+import com.dfsek.terra.api.world.locate.AsyncStructureFinder;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.dfsek.terra.world.TerraWorld;
import com.dfsek.terra.world.population.items.TerraStructure;
diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java
index edb09bd22..78615d036 100644
--- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java
+++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java
@@ -1,10 +1,10 @@
package com.dfsek.terra.bukkit.listeners;
-import com.dfsek.terra.api.core.TerraPlugin;
-import com.dfsek.terra.api.core.event.EventListener;
-import com.dfsek.terra.api.core.event.annotations.Global;
-import com.dfsek.terra.api.core.event.annotations.Priority;
-import com.dfsek.terra.api.core.event.events.config.ConfigPackPreLoadEvent;
+import com.dfsek.terra.api.TerraPlugin;
+import com.dfsek.terra.api.event.EventListener;
+import com.dfsek.terra.api.event.annotations.Global;
+import com.dfsek.terra.api.event.annotations.Priority;
+import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.dfsek.terra.bukkit.world.BukkitTree;
import com.dfsek.terra.registry.exception.DuplicateEntryException;
diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java
index 99761067e..fedefbaab 100644
--- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java
+++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java
@@ -1,6 +1,6 @@
package com.dfsek.terra.bukkit.population;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.platform.world.World;
import com.dfsek.terra.api.util.FastRandom;
diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java
index 737c56bdb..643488ccb 100644
--- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java
+++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java
@@ -377,11 +377,11 @@ public final class BukkitAdapter {
return ((BukkitEnchantment) enchantment).getHandle();
}
- public static Player adapt(com.dfsek.terra.api.platform.Player player) {
+ public static Player adapt(com.dfsek.terra.api.platform.entity.Player player) {
return ((BukkitPlayer) player).getHandle();
}
- public static com.dfsek.terra.api.platform.Player adapt(Player player) {
+ public static com.dfsek.terra.api.platform.entity.Player adapt(Player player) {
return new BukkitPlayer(player);
}
}
diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java
index ecf87d1e9..69f1e578c 100644
--- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java
+++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java
@@ -1,10 +1,10 @@
package com.dfsek.terra.bukkit.world;
-import com.dfsek.terra.api.core.TerraPlugin;
+import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.platform.handle.WorldHandle;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.world.tree.Tree;
import org.bukkit.TreeType;
diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java
index b08cad22f..3bb773ee3 100644
--- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java
+++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java
@@ -1,25 +1,27 @@
package com.dfsek.terra.fabric;
import com.dfsek.tectonic.loading.TypeRegistry;
-import com.dfsek.terra.addons.addon.TerraAddon;
-import com.dfsek.terra.api.core.TerraPlugin;
-import com.dfsek.terra.api.core.event.EventManager;
-import com.dfsek.terra.api.core.event.TerraEventManager;
+import com.dfsek.terra.api.TerraPlugin;
+import com.dfsek.terra.api.addons.TerraAddon;
+import com.dfsek.terra.api.event.EventManager;
+import com.dfsek.terra.api.event.TerraEventManager;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.platform.handle.ItemHandle;
import com.dfsek.terra.api.platform.handle.WorldHandle;
import com.dfsek.terra.api.platform.world.World;
+import com.dfsek.terra.api.registry.CheckedRegistry;
+import com.dfsek.terra.api.registry.LockedRegistry;
import com.dfsek.terra.api.transform.MapTransform;
import com.dfsek.terra.api.transform.NotNullValidator;
import com.dfsek.terra.api.transform.Transformer;
+import com.dfsek.terra.api.util.DebugLogger;
import com.dfsek.terra.api.world.biome.TerraBiome;
import com.dfsek.terra.config.GenericLoaders;
import com.dfsek.terra.config.PluginConfig;
import com.dfsek.terra.config.lang.LangUtil;
import com.dfsek.terra.config.lang.Language;
import com.dfsek.terra.config.pack.ConfigPack;
-import com.dfsek.terra.debug.DebugLogger;
import com.dfsek.terra.fabric.inventory.FabricItemHandle;
import com.dfsek.terra.fabric.mixin.GeneratorTypeAccessor;
import com.dfsek.terra.fabric.world.FabricBiome;
@@ -27,8 +29,6 @@ import com.dfsek.terra.fabric.world.FabricWorldHandle;
import com.dfsek.terra.fabric.world.TerraBiomeSource;
import com.dfsek.terra.fabric.world.features.PopulatorFeature;
import com.dfsek.terra.fabric.world.generator.FabricChunkGeneratorWrapper;
-import com.dfsek.terra.registry.CheckedRegistry;
-import com.dfsek.terra.registry.LockedRegistry;
import com.dfsek.terra.registry.master.AddonRegistry;
import com.dfsek.terra.registry.master.ConfigRegistry;
import com.dfsek.terra.world.TerraWorld;
diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/FabricTree.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/FabricTree.java
index b5bbabccc..53d727461 100644
--- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/FabricTree.java
+++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/FabricTree.java
@@ -2,7 +2,7 @@ package com.dfsek.terra.fabric.world;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.block.MaterialData;
-import com.dfsek.terra.api.util.world.MaterialSet;
+import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.world.tree.Tree;
import com.dfsek.terra.fabric.TerraFabricPlugin;
import com.dfsek.terra.fabric.world.generator.FabricChunkGenerator;
diff --git a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java
index 9257c40ca..d917f5fe9 100644
--- a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java
+++ b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java
@@ -1,26 +1,26 @@
package com.dfsek.terra;
import com.dfsek.tectonic.loading.TypeRegistry;
-import com.dfsek.terra.addons.addon.TerraAddon;
-import com.dfsek.terra.api.core.TerraPlugin;
-import com.dfsek.terra.api.core.event.EventManager;
-import com.dfsek.terra.api.core.event.TerraEventManager;
+import com.dfsek.terra.api.TerraPlugin;
+import com.dfsek.terra.api.addons.TerraAddon;
+import com.dfsek.terra.api.event.EventManager;
+import com.dfsek.terra.api.event.TerraEventManager;
import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.platform.handle.ItemHandle;
import com.dfsek.terra.api.platform.handle.WorldHandle;
import com.dfsek.terra.api.platform.world.Biome;
import com.dfsek.terra.api.platform.world.World;
+import com.dfsek.terra.api.registry.CheckedRegistry;
+import com.dfsek.terra.api.registry.LockedRegistry;
+import com.dfsek.terra.api.util.DebugLogger;
import com.dfsek.terra.config.GenericLoaders;
import com.dfsek.terra.config.PluginConfig;
import com.dfsek.terra.config.lang.LangUtil;
import com.dfsek.terra.config.lang.Language;
import com.dfsek.terra.config.pack.ConfigPack;
-import com.dfsek.terra.debug.DebugLogger;
import com.dfsek.terra.platform.RawBiome;
import com.dfsek.terra.platform.RawWorldHandle;
-import com.dfsek.terra.registry.CheckedRegistry;
-import com.dfsek.terra.registry.LockedRegistry;
import com.dfsek.terra.registry.master.AddonRegistry;
import com.dfsek.terra.registry.master.ConfigRegistry;
import com.dfsek.terra.world.TerraWorld;