diff --git a/pom.xml b/pom.xml
index c0b1bd3..3f869d0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -32,6 +32,12 @@
org.spigotmc
spigot
1.16.2-R0.1-SNAPSHOT
+ provided
+
+
+ org.mockito
+ mockito-core
+ 3.0.0
diff --git a/src/main/java/buttondevteam/customdimensions/CustomDimensions.java b/src/main/java/buttondevteam/customdimensions/CustomDimensions.java
index 3151326..86f827e 100644
--- a/src/main/java/buttondevteam/customdimensions/CustomDimensions.java
+++ b/src/main/java/buttondevteam/customdimensions/CustomDimensions.java
@@ -11,10 +11,6 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.world.WorldLoadEvent;
import org.bukkit.plugin.java.JavaPlugin;
-import org.objenesis.Objenesis;
-import org.objenesis.ObjenesisStd;
-import org.spigotmc.SpigotWorldConfig;
-import org.spigotmc.TickLimiter;
import java.util.*;
@@ -69,13 +65,13 @@ public class CustomDimensions extends JavaPlugin implements Listener {
if (resourcekey != WorldDimension.OVERWORLD) {
ResourceKey resourcekey1 = ResourceKey.a(IRegistry.L, resourcekey.a());
DimensionManager dimensionmanager1 = entry.getValue().b();
- ChunkGenerator chunkgenerator = entry.getValue().c();
- SecondaryWorldData secondaryworlddata = new SecondaryWorldData(saveData, iworlddataserver);
+ ChunkGenerator chunkgenerator = entry.getValue().c(); //TODO: Shade
+ var data = DimensionWorldData.create((WorldDataServer) iworlddataserver, "dream_dimension", EnumGamemode.CREATIVE);
WorldServer worldserver1 = new WorldServer(console, console.executorService, console.convertable,
- secondaryworlddata, resourcekey1, dimensionmanager1, worldloadlistener, chunkgenerator,
+ data, resourcekey1, dimensionmanager1, worldloadlistener, chunkgenerator,
false, //isDebugWorld
BiomeManager.a(mainWorld.getSeed()), //Biome seed
- ImmutableList.of(), false, org.bukkit.World.Environment.NORMAL, null, secondaryworlddata.getName());
+ ImmutableList.of(), false, org.bukkit.World.Environment.NORMAL, null);
((CraftWorld) mainWorld).getHandle().getWorldBorder().a(new IWorldBorderListener.a(worldserver1.getWorldBorder()));
console.worldServer.put(resourcekey1, worldserver1);
diff --git a/src/main/java/buttondevteam/customdimensions/DimensionWorldData.java b/src/main/java/buttondevteam/customdimensions/DimensionWorldData.java
new file mode 100644
index 0000000..6583223
--- /dev/null
+++ b/src/main/java/buttondevteam/customdimensions/DimensionWorldData.java
@@ -0,0 +1,39 @@
+package buttondevteam.customdimensions;
+
+import com.mojang.serialization.Lifecycle;
+import net.minecraft.server.v1_16_R2.*;
+import org.mockito.Answers;
+import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+public class DimensionWorldData extends WorldDataServer {
+ public DimensionWorldData(WorldSettings worldsettings, GeneratorSettings generatorsettings, Lifecycle lifecycle) {
+ super(worldsettings, generatorsettings, lifecycle);
+ }
+
+ private String name;
+ private EnumGamemode gamemode;
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public EnumGamemode getGameType() {
+ return gamemode;
+ }
+
+ public static DimensionWorldData create(WorldDataServer data, String name, EnumGamemode gamemode) {
+ var mock = Mockito.mock(DimensionWorldData.class, invocation -> {
+ if (invocation.getMethod().getDeclaringClass() == DimensionWorldData.class)
+ return invocation.callRealMethod();
+ return invocation.getMethod().invoke(data, invocation.getArguments());
+ });
+ mock.name = name;
+ mock.gamemode = gamemode; //There are a couple things that come from SaveData, but that's the same
+ mock.b = data.b;
+ return mock;
+ }
+}