From 88d589bae56572db10c328ec26687e94319a5744 Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Tue, 20 Oct 2020 10:16:19 -0400 Subject: [PATCH] 1.16 NMS Support --- src/main/java/com/volmit/iris/Iris.java | 3 +- .../volmit/iris/command/CommandIrisCTC.java | 5 +- .../iris/command/CommandIrisMetrics.java | 3 +- .../iris/command/CommandIrisStudioGoto.java | 3 +- .../command/CommandIrisStudioHotload.java | 3 +- .../iris/command/CommandIrisStudioSummon.java | 3 +- .../iris/command/CommandIrisWhatBiome.java | 6 +- .../iris/gen/ContextualTerrainProvider.java | 1 - .../gen/nms/v16_2/NMSChunkGenerator16_2.java | 135 +++++------------- .../iris/gen/nms/v16_2/NMSCreator16_2.java | 6 +- .../volmit/iris/gen/scaffold/IrisWorlds.java | 16 +++ .../iris/gen/scaffold/ProvisionedHolder.java | 6 + .../iris/gen/scaffold/TerrainProvider.java | 2 - .../volmit/iris/manager/IrisBoardManager.java | 6 +- .../java/com/volmit/iris/util/PregenJob.java | 4 +- 15 files changed, 81 insertions(+), 121 deletions(-) create mode 100644 src/main/java/com/volmit/iris/gen/scaffold/ProvisionedHolder.java diff --git a/src/main/java/com/volmit/iris/Iris.java b/src/main/java/com/volmit/iris/Iris.java index 90a5ff214..62cf376da 100644 --- a/src/main/java/com/volmit/iris/Iris.java +++ b/src/main/java/com/volmit/iris/Iris.java @@ -22,6 +22,7 @@ import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.nms.INMS; import com.volmit.iris.gen.provisions.ProvisionBukkit; import com.volmit.iris.gen.scaffold.IrisGenConfiguration; +import com.volmit.iris.gen.scaffold.IrisWorlds; import com.volmit.iris.gen.scaffold.TerrainTarget; import com.volmit.iris.link.MultiverseCoreLink; import com.volmit.iris.link.MythicMobsLink; @@ -223,7 +224,7 @@ public class Iris extends MortarPlugin { if(i.getGenerator() instanceof ProvisionBukkit) { - ((IrisTerrainProvider) ((ProvisionBukkit) i.getGenerator()).getProvider()).close(); + IrisWorlds.getProvider(i).close(); } } diff --git a/src/main/java/com/volmit/iris/command/CommandIrisCTC.java b/src/main/java/com/volmit/iris/command/CommandIrisCTC.java index 7cfa48b69..f7933d0b8 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisCTC.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisCTC.java @@ -6,6 +6,7 @@ import org.bukkit.entity.Player; import com.volmit.iris.Iris; import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.provisions.ProvisionBukkit; +import com.volmit.iris.gen.scaffold.IrisWorlds; import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarSender; @@ -27,7 +28,7 @@ public class CommandIrisCTC extends MortarCommand sender.sendMessage("/iris ctc " + getArgsUsage()); return true; } - + if(sender.isPlayer()) { Player p = sender.player(); @@ -39,7 +40,7 @@ public class CommandIrisCTC extends MortarCommand return true; } - IrisTerrainProvider g = (IrisTerrainProvider) ((ProvisionBukkit) world.getGenerator()).getProvider(); + IrisTerrainProvider g = IrisWorlds.getProvider(world); int m = Math.min(Math.max(Integer.valueOf(args[0]), 2), 256); g.changeThreadCount(m); sender.sendMessage("Thread count changed to " + m); diff --git a/src/main/java/com/volmit/iris/command/CommandIrisMetrics.java b/src/main/java/com/volmit/iris/command/CommandIrisMetrics.java index 088523c01..eca178021 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisMetrics.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisMetrics.java @@ -7,6 +7,7 @@ import com.volmit.iris.Iris; import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.provisions.ProvisionBukkit; import com.volmit.iris.gen.scaffold.IrisMetrics; +import com.volmit.iris.gen.scaffold.IrisWorlds; import com.volmit.iris.util.C; import com.volmit.iris.util.Form; import com.volmit.iris.util.MortarCommand; @@ -35,7 +36,7 @@ public class CommandIrisMetrics extends MortarCommand return true; } - IrisTerrainProvider g = (IrisTerrainProvider) ((ProvisionBukkit) world.getGenerator()).getProvider(); + IrisTerrainProvider g = IrisWorlds.getProvider(world); IrisMetrics m = g.getMetrics(); sender.sendMessage("Thread Count: " + C.BOLD + "" + C.WHITE + g.getThreads()); sender.sendMessage("Total : " + C.BOLD + "" + C.WHITE + Form.duration(m.getTotal().getAverage(), 2)); diff --git a/src/main/java/com/volmit/iris/command/CommandIrisStudioGoto.java b/src/main/java/com/volmit/iris/command/CommandIrisStudioGoto.java index ffb944527..814da25d3 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisStudioGoto.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisStudioGoto.java @@ -7,6 +7,7 @@ import org.bukkit.entity.Player; import com.volmit.iris.Iris; import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.provisions.ProvisionBukkit; +import com.volmit.iris.gen.scaffold.IrisWorlds; import com.volmit.iris.object.IrisBiome; import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarSender; @@ -42,7 +43,7 @@ public class CommandIrisStudioGoto extends MortarCommand return true; } - IrisTerrainProvider g = (IrisTerrainProvider) ((ProvisionBukkit) world.getGenerator()).getProvider(); + IrisTerrainProvider g = IrisWorlds.getProvider(world); int tries = 10000; boolean cave = false; IrisBiome biome2 = null; diff --git a/src/main/java/com/volmit/iris/command/CommandIrisStudioHotload.java b/src/main/java/com/volmit/iris/command/CommandIrisStudioHotload.java index 785f8a5cb..702d5fe94 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisStudioHotload.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisStudioHotload.java @@ -7,6 +7,7 @@ import com.volmit.iris.Iris; import com.volmit.iris.IrisSettings; import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.provisions.ProvisionBukkit; +import com.volmit.iris.gen.scaffold.IrisWorlds; import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarSender; @@ -39,7 +40,7 @@ public class CommandIrisStudioHotload extends MortarCommand return true; } - IrisTerrainProvider g = (IrisTerrainProvider) ((ProvisionBukkit) world.getGenerator()).getProvider(); + IrisTerrainProvider g = IrisWorlds.getProvider(world); g.onHotload(); sender.sendMessage("Hotloaded!"); return true; diff --git a/src/main/java/com/volmit/iris/command/CommandIrisStudioSummon.java b/src/main/java/com/volmit/iris/command/CommandIrisStudioSummon.java index 12b59fcf7..0eb66b5ef 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisStudioSummon.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisStudioSummon.java @@ -7,6 +7,7 @@ import com.volmit.iris.Iris; import com.volmit.iris.IrisSettings; import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.provisions.ProvisionBukkit; +import com.volmit.iris.gen.scaffold.IrisWorlds; import com.volmit.iris.object.IrisEntity; import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarSender; @@ -40,7 +41,7 @@ public class CommandIrisStudioSummon extends MortarCommand return true; } - IrisTerrainProvider g = (IrisTerrainProvider) ((ProvisionBukkit) world.getGenerator()).getProvider(); + IrisTerrainProvider g = IrisWorlds.getProvider(world); if(args.length == 0) { for(String i : g.getData().getEntityLoader().getPossibleKeys()) diff --git a/src/main/java/com/volmit/iris/command/CommandIrisWhatBiome.java b/src/main/java/com/volmit/iris/command/CommandIrisWhatBiome.java index dc1e5310f..57b28b6ce 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisWhatBiome.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisWhatBiome.java @@ -5,7 +5,7 @@ import org.bukkit.entity.Player; import com.volmit.iris.Iris; import com.volmit.iris.gen.IrisTerrainProvider; -import com.volmit.iris.gen.provisions.ProvisionBukkit; +import com.volmit.iris.gen.scaffold.IrisWorlds; import com.volmit.iris.object.IrisBiome; import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarSender; @@ -31,7 +31,9 @@ public class CommandIrisWhatBiome extends MortarCommand try { - IrisBiome b = ((IrisTerrainProvider) ((ProvisionBukkit) w.getGenerator()).getProvider()).sampleTrueBiome(p.getLocation().getBlockX(), p.getLocation().getBlockY(), p.getLocation().getBlockZ()); + + IrisTerrainProvider g = IrisWorlds.getProvider(w); + IrisBiome b = g.sampleTrueBiome(p.getLocation().getBlockX(), p.getLocation().getBlockY(), p.getLocation().getBlockZ()); sender.sendMessage("IBiome: " + b.getLoadKey() + " (" + b.getDerivative().name() + ")"); } diff --git a/src/main/java/com/volmit/iris/gen/ContextualTerrainProvider.java b/src/main/java/com/volmit/iris/gen/ContextualTerrainProvider.java index a83003fa8..5c1b860b9 100644 --- a/src/main/java/com/volmit/iris/gen/ContextualTerrainProvider.java +++ b/src/main/java/com/volmit/iris/gen/ContextualTerrainProvider.java @@ -43,7 +43,6 @@ import com.volmit.iris.util.B; import com.volmit.iris.util.BlockPosition; import com.volmit.iris.util.C; import com.volmit.iris.util.ChronoLatch; -import com.volmit.iris.util.HeightMap; import com.volmit.iris.util.J; import com.volmit.iris.util.KList; import com.volmit.iris.util.KSet; diff --git a/src/main/java/com/volmit/iris/gen/nms/v16_2/NMSChunkGenerator16_2.java b/src/main/java/com/volmit/iris/gen/nms/v16_2/NMSChunkGenerator16_2.java index 2204b7ef9..d2578ce0c 100644 --- a/src/main/java/com/volmit/iris/gen/nms/v16_2/NMSChunkGenerator16_2.java +++ b/src/main/java/com/volmit/iris/gen/nms/v16_2/NMSChunkGenerator16_2.java @@ -5,11 +5,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Random; -import java.util.function.Predicate; import java.util.function.Supplier; -import java.util.stream.IntStream; - -import javax.annotation.Nullable; import org.bukkit.Material; import org.bukkit.block.Biome; @@ -22,17 +18,17 @@ import org.bukkit.generator.ChunkGenerator.ChunkData; import org.bukkit.material.MaterialData; import com.mojang.serialization.Codec; -import com.volmit.iris.Iris; import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.provisions.ProvisionBukkit; import com.volmit.iris.gen.scaffold.GeneratedChunk; import com.volmit.iris.gen.scaffold.Provisioned; +import com.volmit.iris.gen.scaffold.ProvisionedHolder; +import com.volmit.iris.gen.scaffold.TerrainProvider; import com.volmit.iris.util.O; import com.volmit.iris.util.V; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import it.unimi.dsi.fastutil.objects.ObjectList; -import it.unimi.dsi.fastutil.objects.ObjectListIterator; import net.minecraft.server.v1_16_R2.BiomeBase; import net.minecraft.server.v1_16_R2.BiomeManager; import net.minecraft.server.v1_16_R2.BiomeSettingsMobs; @@ -57,12 +53,6 @@ import net.minecraft.server.v1_16_R2.IChunkAccess; import net.minecraft.server.v1_16_R2.IRegistry; import net.minecraft.server.v1_16_R2.IRegistryCustom; import net.minecraft.server.v1_16_R2.IStructureAccess; -import net.minecraft.server.v1_16_R2.MathHelper; -import net.minecraft.server.v1_16_R2.NoiseGenerator; -import net.minecraft.server.v1_16_R2.NoiseGenerator3; -import net.minecraft.server.v1_16_R2.NoiseGenerator3Handler; -import net.minecraft.server.v1_16_R2.NoiseGeneratorOctaves; -import net.minecraft.server.v1_16_R2.NoiseGeneratorPerlin; import net.minecraft.server.v1_16_R2.NoiseSettings; import net.minecraft.server.v1_16_R2.PacketDebug; import net.minecraft.server.v1_16_R2.ProtoChunk; @@ -80,31 +70,20 @@ import net.minecraft.server.v1_16_R2.StructureManager; import net.minecraft.server.v1_16_R2.StructurePiece; import net.minecraft.server.v1_16_R2.StructureSettingsFeature; import net.minecraft.server.v1_16_R2.StructureStart; -import net.minecraft.server.v1_16_R2.SystemUtils; import net.minecraft.server.v1_16_R2.WorldChunkManager; -import net.minecraft.server.v1_16_R2.WorldChunkManagerTheEnd; import net.minecraft.server.v1_16_R2.WorldGenFeatureDefinedStructureJigsawJunction; import net.minecraft.server.v1_16_R2.WorldGenFeatureDefinedStructurePoolTemplate; import net.minecraft.server.v1_16_R2.WorldGenFeaturePillagerOutpostPoolPiece; import net.minecraft.server.v1_16_R2.WorldGenStage; import net.minecraft.server.v1_16_R2.WorldServer; -public class NMSChunkGenerator16_2 extends ChunkGenerator +@SuppressWarnings("deprecation") +public class NMSChunkGenerator16_2 extends ChunkGenerator implements ProvisionedHolder { private static final IBlockData k = Blocks.AIR.getBlockData(); private final Provisioned provisioned; private final int maxHeight; - private final int m; - private final int n; private final int xzSize; - private final int p; - protected final SeededRandom e; - private final NoiseGeneratorOctaves q; - private final NoiseGeneratorOctaves r; - private final NoiseGeneratorOctaves s; - private final NoiseGenerator t; - private final NoiseGeneratorOctaves u; - private final NoiseGenerator3Handler v; protected final IBlockData f; protected final IBlockData g; private final long w; @@ -129,30 +108,9 @@ public class NMSChunkGenerator16_2 extends ChunkGenerator NoiseSettings noisesettings = generatorsettingbase.b(); this.maxHeight = noisesettings.f() * 4; - this.m = noisesettings.e() * 4; this.f = generatorsettingbase.c(); this.g = generatorsettingbase.d(); - this.n = 16 / this.m; this.xzSize = noisesettings.a() / this.maxHeight; - this.p = 16 / this.m; - this.e = new SeededRandom(i); - this.q = new NoiseGeneratorOctaves(this.e, IntStream.rangeClosed(-15, 0)); - this.r = new NoiseGeneratorOctaves(this.e, IntStream.rangeClosed(-15, 0)); - this.s = new NoiseGeneratorOctaves(this.e, IntStream.rangeClosed(-7, 0)); - this.t = (NoiseGenerator) (noisesettings.i() ? new NoiseGenerator3(this.e, IntStream.rangeClosed(-3, 0)) : new NoiseGeneratorOctaves(this.e, IntStream.rangeClosed(-3, 0))); - this.e.a(2620); - this.u = new NoiseGeneratorOctaves(this.e, IntStream.rangeClosed(-15, 0)); - if(noisesettings.k()) - { - SeededRandom seededrandom = new SeededRandom(i); - - seededrandom.a(17292); - this.v = new NoiseGenerator3Handler(seededrandom); - } - else - { - this.v = null; - } BC = new BlockColumn(new IBlockData[this.xzSize * this.maxHeight]); } @@ -193,37 +151,7 @@ public class NMSChunkGenerator16_2 extends ChunkGenerator @Override public int getBaseHeight(int i, int j, HeightMap.Type heightmap_type) { - if(heightmap_type.equals(HeightMap.Type.MOTION_BLOCKING)) - { - return (int) ((IrisTerrainProvider) provisioned.getProvider()).getNoiseHeight(i, j); - } - - if(heightmap_type.equals(HeightMap.Type.MOTION_BLOCKING_NO_LEAVES)) - { - return (int) ((IrisTerrainProvider) provisioned.getProvider()).getNoiseHeight(i, j); - } - - if(heightmap_type.equals(HeightMap.Type.OCEAN_FLOOR)) - { - return (int) ((IrisTerrainProvider) provisioned.getProvider()).getNoiseHeight(i, j); - } - - if(heightmap_type.equals(HeightMap.Type.OCEAN_FLOOR_WG)) - { - return (int) ((IrisTerrainProvider) provisioned.getProvider()).getNoiseHeight(i, j); - } - - if(heightmap_type.equals(HeightMap.Type.WORLD_SURFACE)) - { - return (int) ((IrisTerrainProvider) provisioned.getProvider()).getTerrainWaterHeight(i, j); - } - - if(heightmap_type.equals(HeightMap.Type.WORLD_SURFACE_WG)) - { - return (int) ((IrisTerrainProvider) provisioned.getProvider()).getTerrainWaterHeight(i, j); - } - - return (int) ((IrisTerrainProvider) provisioned.getProvider()).getTerrainWaterHeight(i, j); + return 63; } @Override @@ -336,7 +264,6 @@ public class NMSChunkGenerator16_2 extends ChunkGenerator this.setBlock(x, y, z, material.createBlockData()); } - @SuppressWarnings("deprecation") public void setBlock(int x, int y, int z, MaterialData material) { this.setBlock(x, y, z, CraftMagicNumbers.getBlock((MaterialData) material)); @@ -352,7 +279,6 @@ public class NMSChunkGenerator16_2 extends ChunkGenerator this.setRegion(xMin, yMin, zMin, xMax, yMax, zMax, material.createBlockData()); } - @SuppressWarnings("deprecation") public void setRegion(int xMin, int yMin, int zMin, int xMax, int yMax, int zMax, MaterialData material) { this.setRegion(xMin, yMin, zMin, xMax, yMax, zMax, CraftMagicNumbers.getBlock((MaterialData) material)); @@ -368,7 +294,6 @@ public class NMSChunkGenerator16_2 extends ChunkGenerator return CraftMagicNumbers.getMaterial((Block) this.getTypeId(x, y, z).getBlock()); } - @SuppressWarnings("deprecation") public MaterialData getTypeAndData(int x, int y, int z) { return CraftMagicNumbers.getMaterial((IBlockData) this.getTypeId(x, y, z)); @@ -646,17 +571,6 @@ public class NMSChunkGenerator16_2 extends ChunkGenerator } } - private static double b(int i, int j, int k) - { - double d0 = (double) (i * i + k * k); - double d1 = (double) j + 0.5D; - double d2 = d1 * d1; - double d3 = Math.pow(2.718281828459045D, -(d2 / 16.0D + d0 / 16.0D)); - double d4 = -d1 * MathHelper.i(d2 / 2.0D + d0 / 2.0D) / 2.0D; - - return d4 * d3; - } - @Override public int getSeaLevel() { @@ -716,12 +630,12 @@ public class NMSChunkGenerator16_2 extends ChunkGenerator ChunkCoordIntPair chunkcoordintpair = ichunkaccess.getPos(); BiomeBase biomebase = this.b.getBiome((chunkcoordintpair.x << 2) + 2, 0, (chunkcoordintpair.z << 2) + 2); this.a(StructureFeatures.k, iregistrycustom, structuremanager, ichunkaccess, definedstructuremanager, i, chunkcoordintpair, biomebase); - for(Supplier supplier : biomebase.e().a()) + for(Supplier> supplier : biomebase.e().a()) { - StructureFeature structurefeature = (StructureFeature) supplier.get(); + StructureFeature structurefeature = (StructureFeature) supplier.get(); if(StructureFeature.c == StructureGenerator.STRONGHOLD) { - StructureFeature structureFeature = structurefeature; + StructureFeature structureFeature = structurefeature; synchronized(structureFeature) { this.a(structurefeature, iregistrycustom, structuremanager, ichunkaccess, definedstructuremanager, i, chunkcoordintpair, biomebase); @@ -734,19 +648,18 @@ public class NMSChunkGenerator16_2 extends ChunkGenerator private void a(StructureFeature structurefeature, IRegistryCustom iregistrycustom, StructureManager structuremanager, IChunkAccess ichunkaccess, DefinedStructureManager definedstructuremanager, long i, ChunkCoordIntPair chunkcoordintpair, BiomeBase biomebase) { - StructureStart structurestart = structuremanager.a(SectionPosition.a((ChunkCoordIntPair) ichunkaccess.getPos(), (int) 0), structurefeature.d, (IStructureAccess) ichunkaccess); + StructureStart structurestart = structuremanager.a(SectionPosition.a((ChunkCoordIntPair) ichunkaccess.getPos(), (int) 0), structurefeature.d, (IStructureAccess) ichunkaccess); int j = structurestart != null ? structurestart.j() : 0; StructureSettingsFeature structuresettingsfeature = getSettings().a(structurefeature.d); if(structuresettingsfeature != null) { - StructureStart structurestart1 = structurefeature.a(iregistrycustom, this, this.b, definedstructuremanager, i, chunkcoordintpair, biomebase, j, structuresettingsfeature); + StructureStart structurestart1 = structurefeature.a(iregistrycustom, this, this.b, definedstructuremanager, i, chunkcoordintpair, biomebase, j, structuresettingsfeature); structuremanager.a(SectionPosition.a((ChunkCoordIntPair) ichunkaccess.getPos(), (int) 0), structurefeature.d, structurestart1, (IStructureAccess) ichunkaccess); } } public void storeStructures(GeneratorAccessSeed generatoraccessseed, StructureManager structuremanager, IChunkAccess ichunkaccess) { - boolean flag = true; int i = ichunkaccess.getPos().x; int j = ichunkaccess.getPos().z; int k = i << 4; @@ -759,14 +672,14 @@ public class NMSChunkGenerator16_2 extends ChunkGenerator while(j1 <= j + 8) { long k1 = ChunkCoordIntPair.pair((int) i1, (int) j1); - for(StructureStart structurestart : generatoraccessseed.getChunkAt(i1, j1).h().values()) + for(StructureStart structurestart : generatoraccessseed.getChunkAt(i1, j1).h().values()) { try { if(structurestart == StructureStart.a || !structurestart.c().a(k, l, k + 15, l + 15)) continue; structuremanager.a(sectionposition, structurestart.l(), k1, (IStructureAccess) ichunkaccess); - PacketDebug.a((GeneratorAccessSeed) generatoraccessseed, (StructureStart) structurestart); + PacketDebug.a((GeneratorAccessSeed) generatoraccessseed, (StructureStart) structurestart); } catch(Exception exception) { @@ -782,4 +695,28 @@ public class NMSChunkGenerator16_2 extends ChunkGenerator ++i1; } } + + @Override + public Provisioned getProvisioned() + { + return provisioned; + } + + @Override + public void clearRegeneratedLists() + { + getProvisioned().clearRegeneratedLists(); + } + + @Override + public TerrainProvider getProvider() + { + return getProvisioned().getProvider(); + } + + @Override + public void regenerate(int x, int z) + { + getProvisioned().regenerate(x, z); + } } diff --git a/src/main/java/com/volmit/iris/gen/nms/v16_2/NMSCreator16_2.java b/src/main/java/com/volmit/iris/gen/nms/v16_2/NMSCreator16_2.java index b2cf4915f..f6325475b 100644 --- a/src/main/java/com/volmit/iris/gen/nms/v16_2/NMSCreator16_2.java +++ b/src/main/java/com/volmit/iris/gen/nms/v16_2/NMSCreator16_2.java @@ -7,7 +7,6 @@ import java.util.Locale; import java.util.Map; import java.util.Objects; import java.util.Properties; -import java.util.Random; import org.apache.commons.lang.Validate; import org.bukkit.Bukkit; @@ -52,7 +51,6 @@ import net.minecraft.server.v1_16_R2.MobSpawnerPatrol; import net.minecraft.server.v1_16_R2.MobSpawnerPhantom; import net.minecraft.server.v1_16_R2.MobSpawnerTrader; import net.minecraft.server.v1_16_R2.NBTBase; -import net.minecraft.server.v1_16_R2.RegistryMaterials; import net.minecraft.server.v1_16_R2.RegistryReadOps; import net.minecraft.server.v1_16_R2.ResourceKey; import net.minecraft.server.v1_16_R2.SaveData; @@ -151,11 +149,9 @@ class NMSCreator16_2 implements INMSCreator } final long j = BiomeManager.a(creator.seed()); final List list = (List) ImmutableList.of((MobSpawner) new MobSpawnerPhantom(), (MobSpawner) new MobSpawnerPatrol(), (MobSpawner) new MobSpawnerCat(), (MobSpawner) new VillageSiege(), (MobSpawner) new MobSpawnerTrader((IWorldDataServer) worlddata)); - final RegistryMaterials registrymaterials = (RegistryMaterials) worlddata.getGeneratorSettings().d(); - final WorldDimension worlddimension = (WorldDimension) registrymaterials.a((ResourceKey) actualDimension); DimensionManager dimensionmanager; net.minecraft.server.v1_16_R2.ChunkGenerator chunkgenerator; - long ll = new Random().nextLong(); + long ll = creator.seed(); dimensionmanager = (DimensionManager) getConsoleDimension(console).a().d(DimensionManager.OVERWORLD); O ws = new O(); chunkgenerator = new NMSChunkGenerator16_2(pro, ws, (WorldChunkManager) new WorldChunkManagerOverworld(ll, false, false, (IRegistry) getConsoleDimension(console).b(IRegistry.ay)), ll, () -> (GeneratorSettingBase) getConsoleDimension(console).b(IRegistry.ar).d(GeneratorSettingBase.c)); diff --git a/src/main/java/com/volmit/iris/gen/scaffold/IrisWorlds.java b/src/main/java/com/volmit/iris/gen/scaffold/IrisWorlds.java index 7b4c071be..d3b4f5cb8 100644 --- a/src/main/java/com/volmit/iris/gen/scaffold/IrisWorlds.java +++ b/src/main/java/com/volmit/iris/gen/scaffold/IrisWorlds.java @@ -3,6 +3,7 @@ package com.volmit.iris.gen.scaffold; import org.bukkit.World; import com.volmit.iris.gen.IrisTerrainProvider; +import com.volmit.iris.gen.provisions.ProvisionBukkit; public class IrisWorlds { @@ -20,4 +21,19 @@ public class IrisWorlds return null; } + + public static ProvisionBukkit getProvisioned(World world) + { + if(isIrisWorld(world)) + { + if(world.getGenerator() instanceof ProvisionedHolder) + { + return (ProvisionBukkit) ((ProvisionedHolder) world.getGenerator()).getProvisioned(); + } + + return ((ProvisionBukkit) world.getGenerator()); + } + + return null; + } } diff --git a/src/main/java/com/volmit/iris/gen/scaffold/ProvisionedHolder.java b/src/main/java/com/volmit/iris/gen/scaffold/ProvisionedHolder.java new file mode 100644 index 000000000..a1fb62c1c --- /dev/null +++ b/src/main/java/com/volmit/iris/gen/scaffold/ProvisionedHolder.java @@ -0,0 +1,6 @@ +package com.volmit.iris.gen.scaffold; + +public interface ProvisionedHolder extends Provisioned +{ + public Provisioned getProvisioned(); +} diff --git a/src/main/java/com/volmit/iris/gen/scaffold/TerrainProvider.java b/src/main/java/com/volmit/iris/gen/scaffold/TerrainProvider.java index 643f4f71a..d53e48a30 100644 --- a/src/main/java/com/volmit/iris/gen/scaffold/TerrainProvider.java +++ b/src/main/java/com/volmit/iris/gen/scaffold/TerrainProvider.java @@ -7,8 +7,6 @@ import java.util.function.Function; import org.bukkit.generator.BlockPopulator; import org.bukkit.util.BlockVector; -import com.volmit.iris.util.HeightMap; - public interface TerrainProvider { public TerrainTarget getTarget(); diff --git a/src/main/java/com/volmit/iris/manager/IrisBoardManager.java b/src/main/java/com/volmit/iris/manager/IrisBoardManager.java index 9d54d12c3..19eec679d 100644 --- a/src/main/java/com/volmit/iris/manager/IrisBoardManager.java +++ b/src/main/java/com/volmit/iris/manager/IrisBoardManager.java @@ -10,7 +10,7 @@ import org.bukkit.event.player.PlayerChangedWorldEvent; import com.volmit.iris.Iris; import com.volmit.iris.gen.IrisTerrainProvider; -import com.volmit.iris.gen.provisions.ProvisionBukkit; +import com.volmit.iris.gen.scaffold.IrisWorlds; import com.volmit.iris.noise.CNG; import com.volmit.iris.object.IrisBiome; import com.volmit.iris.util.BoardManager; @@ -56,7 +56,7 @@ public class IrisBoardManager implements BoardProvider, Listener @DontObfuscate private boolean isIrisWorld(World w) { - return (w.getGenerator() instanceof ProvisionBukkit) && ((IrisTerrainProvider) ((ProvisionBukkit) w.getGenerator()).getProvider()).isDev(); + return IrisWorlds.getProvider(w).isDev(); } public void updatePlayer(Player p) @@ -90,7 +90,7 @@ public class IrisBoardManager implements BoardProvider, Listener return v; } - IrisTerrainProvider g = (IrisTerrainProvider) ((ProvisionBukkit) player.getWorld().getGenerator()).getProvider(); + IrisTerrainProvider g = IrisWorlds.getProvider(player.getWorld()); if(cl.flip()) { diff --git a/src/main/java/com/volmit/iris/util/PregenJob.java b/src/main/java/com/volmit/iris/util/PregenJob.java index c8b690104..727493c3d 100644 --- a/src/main/java/com/volmit/iris/util/PregenJob.java +++ b/src/main/java/com/volmit/iris/util/PregenJob.java @@ -13,7 +13,7 @@ import org.bukkit.event.world.ChunkUnloadEvent; import com.volmit.iris.Iris; import com.volmit.iris.gen.IrisTerrainProvider; -import com.volmit.iris.gen.provisions.ProvisionBukkit; +import com.volmit.iris.gen.scaffold.IrisWorlds; import com.volmit.iris.gui.PregenGui; import io.papermc.lib.PaperLib; @@ -75,7 +75,7 @@ public class PregenJob implements Listener this.chunkZ = 0; completed = false; first = true; - tp = (world.getGenerator() instanceof ProvisionBukkit) ? (IrisTerrainProvider) ((ProvisionBukkit) world.getGenerator()).getProvider() : null; + tp = IrisWorlds.getProvider(world); chunkSpiraler = new Spiraler(cubeSize, cubeSize, (x, z) -> {