From 243ef8c0be2e6d6fe194d2ea885bf9c38c9139de Mon Sep 17 00:00:00 2001 From: cyberpwn Date: Fri, 16 Sep 2022 03:24:56 -0400 Subject: [PATCH] f --- .../engine/platform/BukkitChunkGenerator.java | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java b/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java index 026c4f46c..0c5136f0c 100644 --- a/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java +++ b/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java @@ -123,18 +123,24 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun @EventHandler public void onWorldInit(WorldInitEvent event) { try { - ServerLevel serverLevel = ((CraftWorld)event.getWorld()).getHandle(); - Engine engine = getEngine(event.getWorld()); - Class clazz = serverLevel.getChunkSource().chunkMap.generator.getClass(); - Field biomeSource = getField(clazz, "c"); - biomeSource.setAccessible(true); - Field unsafeField = Unsafe.class.getDeclaredField("theUnsafe"); - unsafeField.setAccessible(true); - Unsafe unsafe = (Unsafe) unsafeField.get(null); - CustomBiomeSource customBiomeSource = new CustomBiomeSource(event.getWorld().getSeed(), engine, event.getWorld()); - unsafe.putObject(biomeSource.get(serverLevel.getChunkSource().chunkMap.generator), unsafe.objectFieldOffset(biomeSource), customBiomeSource); - biomeSource.set(serverLevel.getChunkSource().chunkMap.generator, customBiomeSource); - Iris.info("Injected Iris Biome Source into " + event.getWorld().getName()); + if(world.name().equals(event.getWorld().getName()) && world.getRawWorldSeed() == event.getWorld().getSeed()) { + ServerLevel serverLevel = ((CraftWorld)event.getWorld()).getHandle(); + Engine engine = getEngine(event.getWorld()); + Class clazz = serverLevel.getChunkSource().chunkMap.generator.getClass(); + Field biomeSource = getField(clazz, "c"); + biomeSource.setAccessible(true); + Field unsafeField = Unsafe.class.getDeclaredField("theUnsafe"); + unsafeField.setAccessible(true); + Unsafe unsafe = (Unsafe) unsafeField.get(null); + CustomBiomeSource customBiomeSource = new CustomBiomeSource(event.getWorld().getSeed(), engine, event.getWorld()); + unsafe.putObject(biomeSource.get(serverLevel.getChunkSource().chunkMap.generator), unsafe.objectFieldOffset(biomeSource), customBiomeSource); + biomeSource.set(serverLevel.getChunkSource().chunkMap.generator, customBiomeSource); + Iris.info("Injected Iris Biome Source into " + event.getWorld().getName()); + } + + else { + Iris.info("World " + event.getWorld().getName() + " is not an Iris world in this context"); + } } catch(Throwable e) {