From 2d5b6e44922e4649ab4ec839b513a2fe02c3450e Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Tue, 8 Sep 2020 22:30:09 +0200 Subject: [PATCH] Progress with loading custom dimensions It begins loading but complains about having the same UUID (it's using the same conversion stuff) --- pom.xml | 6 +++ .../customdimensions/CustomDimensions.java | 12 ++---- .../customdimensions/DimensionWorldData.java | 39 +++++++++++++++++++ 3 files changed, 49 insertions(+), 8 deletions(-) create mode 100644 src/main/java/buttondevteam/customdimensions/DimensionWorldData.java 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; + } +}