From b8f157bec33af367f4a3c344afe420ef1554ad53 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Wed, 9 Sep 2020 18:14:28 +0200 Subject: [PATCH] Cleanup, dropped Mockito --- pom.xml | 5 - .../customdimensions/CustomDimensions.java | 167 +----------------- .../customdimensions/DimensionWorldData.java | 23 --- 3 files changed, 8 insertions(+), 187 deletions(-) delete mode 100644 src/main/java/buttondevteam/customdimensions/DimensionWorldData.java diff --git a/pom.xml b/pom.xml index 3f869d0..1570839 100644 --- a/pom.xml +++ b/pom.xml @@ -34,11 +34,6 @@ 1.16.2-R0.1-SNAPSHOT provided - - org.mockito - mockito-core - 3.0.0 - \ No newline at end of file diff --git a/src/main/java/buttondevteam/customdimensions/CustomDimensions.java b/src/main/java/buttondevteam/customdimensions/CustomDimensions.java index 451e194..a2d989c 100644 --- a/src/main/java/buttondevteam/customdimensions/CustomDimensions.java +++ b/src/main/java/buttondevteam/customdimensions/CustomDimensions.java @@ -29,7 +29,6 @@ public class CustomDimensions extends JavaPlugin implements Listener { } public void load() throws Exception { - getLogger().info("Loading..."); var console = ((CraftServer) Bukkit.getServer()).getServer(); var field = console.getClass().getSuperclass().getDeclaredField("saveData"); field.setAccessible(true); @@ -47,22 +46,14 @@ public class CustomDimensions extends JavaPlugin implements Listener { Map.Entry, WorldDimension> dimEntry = dimIterator.next(); ResourceKey dimKey = dimEntry.getKey(); - if (dimKey != WorldDimension.OVERWORLD + if (dimKey != WorldDimension.OVERWORLD //The default dimensions are already loaded && dimKey != WorldDimension.THE_NETHER && dimKey != WorldDimension.THE_END) { - System.out.println("First check"); - for (var dimMan : console.f.a()) { - try { - System.out.println("Found dim man for key: " + console.f.a().getKey(dimMan)); - System.out.println("Resource key: " + console.f.a().c(dimMan)); - } catch (Exception e) { - e.printStackTrace(); - } - } ResourceKey worldKey = ResourceKey.a(IRegistry.L, dimKey.a()); DimensionManager dimensionmanager = dimEntry.getValue().b(); - ChunkGenerator chunkgenerator = dimEntry.getValue().c(); //TODO: Shade + ChunkGenerator chunkgenerator = dimEntry.getValue().c(); var name = dimKey.a().getKey(); + getLogger().info("Loading " + name); var session = convertable.new ConversionSession(name, dimKey) { //The original session isn't prepared for custom dimensions @Override public File a(ResourceKey resourcekey) { @@ -87,9 +78,6 @@ public class CustomDimensions extends JavaPlugin implements Listener { worlddata = new WorldDataServer(worldSettings, dimGenSettings, Lifecycle.stable()); } - //Create a custom WorldDataServer that is aware that it's a dimension and delegates most calls to the main world - var data = DimensionWorldData.create(worlddata, name); - worlddata.checkName(name); worlddata.a(console.getServerModName(), console.getModded().isPresent()); if (console.options.has("forceUpgrade")) { @@ -102,62 +90,17 @@ public class CustomDimensions extends JavaPlugin implements Listener { List spawners = ImmutableList.of(new MobSpawnerPhantom(), new MobSpawnerPatrol(), new MobSpawnerCat(), new VillageSiege(), new MobSpawnerTrader(worlddata)); - //in bf but not in bi - System.out.println("Second check"); - ResourceKey dimManKey = null; - int lastID = -1; - for (var dimMan : console.f.a()) { - try { - System.out.println("Found dim man for key: " + console.f.a().getKey(dimMan)); - var key = console.f.a().c(dimMan); - System.out.println("Resource key: " + key); - int id = console.f.a().a(dimensionmanager); - System.out.println("ID: " + id); - if (id > lastID) lastID = id; - if (key.isPresent() && key.get().a().getKey().equals(name)) { - //Register dimension manager in registry - //var originalManagerID = console.f.a().a(dimensionmanager); - -1 - //System.out.println("Replacing dimension manager with ID " + originalManagerID); - dimManKey = key.get(); - } - - } catch (Exception e) { - e.printStackTrace(); - } - } - - if (dimManKey != null) { - ResourceKey dimManResKey = ResourceKey.a(IRegistry.K, dimKey.a()); - System.out.println("Replacing with " + dimManResKey); - ((RegistryMaterials) console.f.a()).a(OptionalInt.empty(), dimManKey, dimensionmanager, Lifecycle.stable()); - } - - //in bf but not in bi - System.out.println("Third check"); - for (var dimMan : console.f.a()) { - try { - System.out.println("Found dim man for key: " + console.f.a().getKey(dimMan)); - System.out.println("Resource key: " + console.f.a().c(dimMan)); - } catch (Exception e) { - e.printStackTrace(); - } - } + ResourceKey dimManResKey = ResourceKey.a(IRegistry.K, dimKey.a()); + //Replace existing dimension manager, correctly setting the ID up (which is -1 for default worlds...) + ((RegistryMaterials) console.f.a()).a(OptionalInt.empty(), dimManResKey, dimensionmanager, Lifecycle.stable()); var worldloadlistener = console.worldLoadListenerFactory.create(11); - //RegistryMaterials registrymaterials = worlddata.getGeneratorSettings().d(); - //WorldDimension worlddimension = (WorldDimension) registrymaterials2.a(actualDimension); - //Use the main world's dimension data - WorldServer worldserver = new WorldServer(console, console.executorService, session, - data, worldKey, dimensionmanager, worldloadlistener, chunkgenerator, + worlddata, worldKey, dimensionmanager, worldloadlistener, chunkgenerator, false, //isDebugWorld - BiomeManager.a(mainWorld.getSeed()), //Biome seed + BiomeManager.a(worlddata.getGeneratorSettings().getSeed()), //Biome seed spawners, false, org.bukkit.World.Environment.NORMAL, null); - data.world = worldserver; //Mocked world data - worlddata.world = worldserver; //Inner world data - - //((CraftWorld) mainWorld).getHandle().getWorldBorder().a(new IWorldBorderListener.a(worldserver.getWorldBorder())); if (Bukkit.getWorld(name.toLowerCase(Locale.ENGLISH)) == null) { getLogger().warning("Failed to load custom dimension " + name); @@ -171,99 +114,5 @@ public class CustomDimensions extends JavaPlugin implements Listener { } } } - getLogger().info("Loading finished!"); } - - /*private WorldServer createWorldServer(WorldDataMutable worldData, String name) throws Exception { - var obj = new ObjenesisStd(); - var ws = obj.newInstance(WorldServer.class); - ws.spigotConfig = new SpigotWorldConfig(name); - //ws.generator = gen; - var field = ws.getClass().getDeclaredField("world"); - field.setAccessible(true); - field.set(ws, new CraftWorld(ws, null, org.bukkit.World.Environment.NORMAL)); - ws.ticksPerAnimalSpawns = ws.getServer().getTicksPerAnimalSpawns(); - ws.ticksPerMonsterSpawns = ws.getServer().getTicksPerMonsterSpawns(); - ... - }*/ - - /*public World load(String name) { - File folder = new File(Bukkit.getWorldContainer(), name); - World world = Bukkit.getWorld(name); - if (world != null) { - return world; - } else if (folder.exists() && !folder.isDirectory()) { - throw new IllegalArgumentException("File exists with the name '" + name + "' and isn't a folder"); - } else { - ResourceKey actualDimension = ResourceKey.a(IRegistry.M, new MinecraftKey(name)); - - Convertable.ConversionSession worldSession; - try { - worldSession = Convertable.a(Bukkit.getWorldContainer().toPath()).c(name, actualDimension); - } catch (IOException var21) { - throw new RuntimeException(var21); - } - - var server = (CraftServer) Bukkit.getServer(); - var console = server.getServer(); - - MinecraftServer.convertWorld(worldSession); - RegistryReadOps registryreadops = RegistryReadOps.a(DynamicOpsNBT.a, console.dataPackResources.h(), console.f); - WorldDataServer worlddata = (WorldDataServer) worldSession.a(registryreadops, console.datapackconfiguration); - if (worlddata == null) { - System.out.println("No world data found in datapacks!"); - System.out.println("folder: "+worldSession.folder); - System.out.println("level name: "+worldSession.getLevelName()); - Bukkit.getWorlds() - //World folder: Minecraft only supports the three default types for the main world - //Therefore we can't load a separate world with a custom dimension - //How about just pretending we did - return null; - } - - worlddata.checkName(name); - worlddata.a(console.getServerModName(), console.getModded().isPresent()); - if (console.options.has("forceUpgrade")) { - Main.convertWorld(worldSession, DataConverterRegistry.a(), console.options.has("eraseCache"), - () -> true, worlddata.getGeneratorSettings().d().d().stream().map((entry) -> ResourceKey.a(IRegistry.K, - entry.getKey().a())).collect(ImmutableSet.toImmutableSet())); - } - - long j = BiomeManager.a(Bukkit.getWorlds().get(0).getSeed()); - List list = ImmutableList.of(new MobSpawnerPhantom(), new MobSpawnerPatrol(), new MobSpawnerCat(), new VillageSiege(), new MobSpawnerTrader(worlddata)); - RegistryMaterials registrymaterials = worlddata.getGeneratorSettings().d(); - WorldDimension worlddimension = registrymaterials.a(actualDimension); - DimensionManager dimensionmanager; - ChunkGenerator chunkgenerator; - if (worlddimension == null) { - //dimensionmanager = console.f.a().d(DimensionManager.OVERWORLD); - //chunkgenerator = GeneratorSettings.a(console.f.b(IRegistry.ay), console.f.b(IRegistry.ar), (new Random()).nextLong()); - System.out.println("World dimension is null!"); - return null; - } else { - dimensionmanager = worlddimension.b(); - chunkgenerator = worlddimension.c(); - } - - var environment = World.Environment.NORMAL; - - ResourceKey worldKey = ResourceKey.a(IRegistry.L, new MinecraftKey(name.toLowerCase(Locale.ENGLISH))); - WorldServer internal = new WorldServer(console, console.executorService, worldSession, worlddata, worldKey, - dimensionmanager, console.worldLoadListenerFactory.create(11), chunkgenerator, - worlddata.getGeneratorSettings().isDebugWorld(), j, environment == World.Environment.NORMAL ? list : ImmutableList.of(), - true, environment, null); - if (Bukkit.getWorld(name.toLowerCase(Locale.ENGLISH)) == null) { - System.out.println("Newly created world not found!"); - return null; - } else { - console.initWorld(internal, worlddata, worlddata, worlddata.getGeneratorSettings()); - internal.setSpawnFlags(true, true); - console.worldServer.put(internal.getDimensionKey(), internal); - server.getPluginManager().callEvent(new WorldInitEvent(internal.getWorld())); - console.loadSpawn(internal.getChunkProvider().playerChunkMap.worldLoadListener, internal); - server.getPluginManager().callEvent(new WorldLoadEvent(internal.getWorld())); - return internal.getWorld(); - } - } - }*/ } diff --git a/src/main/java/buttondevteam/customdimensions/DimensionWorldData.java b/src/main/java/buttondevteam/customdimensions/DimensionWorldData.java deleted file mode 100644 index 2e437ab..0000000 --- a/src/main/java/buttondevteam/customdimensions/DimensionWorldData.java +++ /dev/null @@ -1,23 +0,0 @@ -package buttondevteam.customdimensions; - -import com.mojang.serialization.Lifecycle; -import net.minecraft.server.v1_16_R2.GeneratorSettings; -import net.minecraft.server.v1_16_R2.WorldDataServer; -import net.minecraft.server.v1_16_R2.WorldSettings; -import org.mockito.Mockito; - -public class DimensionWorldData extends WorldDataServer { - public DimensionWorldData(WorldSettings worldsettings, GeneratorSettings generatorsettings, Lifecycle lifecycle) { - super(worldsettings, generatorsettings, lifecycle); - } - - public static DimensionWorldData create(WorldDataServer data, String name) { - var mock = Mockito.mock(DimensionWorldData.class, Mockito.withSettings().defaultAnswer(invocation -> { - if (invocation.getMethod().getDeclaringClass() == DimensionWorldData.class) - return invocation.callRealMethod(); - return invocation.getMethod().invoke(data, invocation.getArguments()); - }).stubOnly()); - mock.b = new WorldSettings(name, data.getGameType(), false, data.getDifficulty(), true, data.q(), data.D()); - return mock; - } -}