From 34040abc8fe1df66d02e9e9a8eb81b43d686d290 Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Sun, 22 Nov 2020 11:41:43 -0500 Subject: [PATCH] Support spigot --- ...PAPER.java => NMSChunkGenerator_16_2.java} | 19 ++++++-------- .../volmit/iris/nms/v16_2/NMSCreator16_2.java | 8 +----- ...6_2.java => NMSWorldChunkManager16_2.java} | 8 +++--- ..._PAPER.java => NMSChunkGenerator16_3.java} | 25 +++++++++++-------- .../volmit/iris/nms/v16_3/NMSCreator16_3.java | 9 ++----- ...6_3.java => NMSWorldChunkManager16_3.java} | 8 +++--- .../com/volmit/iris/object/IrisDimension.java | 1 - .../engine/EngineCompositeGenerator.java | 10 +++++++- 8 files changed, 42 insertions(+), 46 deletions(-) rename src/main/java/com/volmit/iris/nms/v16_2/{ChunkGeneratorAbstract_16_2_PAPER.java => NMSChunkGenerator_16_2.java} (95%) rename src/main/java/com/volmit/iris/nms/v16_2/{WorldChunkManagerIris16_2.java => NMSWorldChunkManager16_2.java} (81%) rename src/main/java/com/volmit/iris/nms/v16_3/{ChunkGeneratorAbstract_16_3_PAPER.java => NMSChunkGenerator16_3.java} (95%) rename src/main/java/com/volmit/iris/nms/v16_3/{WorldChunkManagerIris16_3.java => NMSWorldChunkManager16_3.java} (81%) diff --git a/src/main/java/com/volmit/iris/nms/v16_2/ChunkGeneratorAbstract_16_2_PAPER.java b/src/main/java/com/volmit/iris/nms/v16_2/NMSChunkGenerator_16_2.java similarity index 95% rename from src/main/java/com/volmit/iris/nms/v16_2/ChunkGeneratorAbstract_16_2_PAPER.java rename to src/main/java/com/volmit/iris/nms/v16_2/NMSChunkGenerator_16_2.java index 05a083783..8b0ba1153 100644 --- a/src/main/java/com/volmit/iris/nms/v16_2/ChunkGeneratorAbstract_16_2_PAPER.java +++ b/src/main/java/com/volmit/iris/nms/v16_2/NMSChunkGenerator_16_2.java @@ -10,12 +10,9 @@ import com.volmit.iris.Iris; import com.volmit.iris.nms.INMS; import com.volmit.iris.scaffold.cache.Cache; import com.volmit.iris.scaffold.engine.EngineCompositeGenerator; -import com.volmit.iris.util.KMap; -import com.volmit.iris.util.O; -import com.volmit.iris.util.TerrainChunk; -import com.volmit.iris.util.V; -import it.unimi.dsi.fastutil.objects.ObjectArrayList; -import it.unimi.dsi.fastutil.objects.ObjectList; +import com.volmit.iris.util.*; +import net.minecraft.server.v1_16_R2.BlockPosition; +import net.minecraft.server.v1_16_R2.HeightMap; import net.minecraft.server.v1_16_R2.*; import org.bukkit.WorldCreator; import org.bukkit.block.Biome; @@ -29,7 +26,7 @@ import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Supplier; -public final class ChunkGeneratorAbstract_16_2_PAPER extends ChunkGenerator { +public final class NMSChunkGenerator_16_2 extends ChunkGenerator { private static final IBlockData k; private final O ws; protected final IBlockData f; @@ -47,11 +44,11 @@ public final class ChunkGeneratorAbstract_16_2_PAPER extends ChunkGenerator { k = Blocks.AIR.getBlockData(); } - public ChunkGeneratorAbstract_16_2_PAPER(O ws, WorldCreator wc, WorldChunkManager worldchunkmanager, long i, Supplier supplier) { + public NMSChunkGenerator_16_2(O ws, WorldCreator wc, WorldChunkManager worldchunkmanager, long i, Supplier supplier) { this(ws, wc, worldchunkmanager, worldchunkmanager, i, supplier); } - private ChunkGeneratorAbstract_16_2_PAPER(O ws, WorldCreator wc, WorldChunkManager worldchunkmanager, WorldChunkManager worldchunkmanager1, long i, Supplier supplier) { + private NMSChunkGenerator_16_2(O ws, WorldCreator wc, WorldChunkManager worldchunkmanager, WorldChunkManager worldchunkmanager1, long i, Supplier supplier) { super(worldchunkmanager, worldchunkmanager1, ((GeneratorSettingBase)supplier.get()).a(), i); this.wc = wc; this.ws = ws; @@ -149,8 +146,8 @@ public final class ChunkGeneratorAbstract_16_2_PAPER extends ChunkGenerator { @Override public void buildNoise(GeneratorAccess generatoraccess, StructureManager structuremanager, IChunkAccess ichunkaccess) { - ObjectList objectlist = new ObjectArrayList(10); - ObjectList objectlist1 = new ObjectArrayList(32); + KList objectlist = new KList(10); + KList objectlist1 = new KList<>(32); ChunkCoordIntPair chunkcoordintpair = ichunkaccess.getPos(); int i = chunkcoordintpair.x; int j = chunkcoordintpair.z; diff --git a/src/main/java/com/volmit/iris/nms/v16_2/NMSCreator16_2.java b/src/main/java/com/volmit/iris/nms/v16_2/NMSCreator16_2.java index b7605b560..5eb443a4c 100644 --- a/src/main/java/com/volmit/iris/nms/v16_2/NMSCreator16_2.java +++ b/src/main/java/com/volmit/iris/nms/v16_2/NMSCreator16_2.java @@ -15,7 +15,6 @@ import net.minecraft.server.v1_16_R2.IRegistryCustom.Dimension; import org.apache.commons.lang.Validate; import org.bukkit.Bukkit; import org.bukkit.World; -import org.bukkit.World.Environment; import org.bukkit.WorldCreator; import org.bukkit.craftbukkit.v1_16_R2.CraftServer; import org.bukkit.event.Event; @@ -33,11 +32,6 @@ class NMSCreator16_2 implements INMSCreator @SuppressWarnings({"unchecked", "rawtypes", "resource"}) public World createWorld(WorldCreator creator, boolean loadSpawn) { - if(!creator.environment().equals(Environment.NORMAL)) - { - return creator.createWorld(); - } - EngineCompositeGenerator pro = (EngineCompositeGenerator) creator.generator(); CraftServer server = ((CraftServer) Bukkit.getServer()); Map worlds = new V(server).get("worlds"); @@ -125,7 +119,7 @@ class NMSCreator16_2 implements INMSCreator long ll = creator.seed(); dimensionmanager = (DimensionManager) getConsoleDimension(console).a().d(DimensionManager.OVERWORLD); O ws = new O(); - chunkgenerator = new ChunkGeneratorAbstract_16_2_PAPER(ws, creator, (WorldChunkManager) new WorldChunkManagerIris16_2(((EngineCompositeGenerator)creator.generator()), creator.name(), ll, false, false, (IRegistry) getConsoleDimension(console).b(IRegistry.ay)), ll, () -> (GeneratorSettingBase) getConsoleDimension(console).b(IRegistry.ar).d(GeneratorSettingBase.c)); + chunkgenerator = new NMSChunkGenerator_16_2(ws, creator, (WorldChunkManager) new NMSWorldChunkManager16_2(((EngineCompositeGenerator)creator.generator()), creator.name(), ll, false, false, (IRegistry) getConsoleDimension(console).b(IRegistry.ay)), ll, () -> (GeneratorSettingBase) getConsoleDimension(console).b(IRegistry.ar).d(GeneratorSettingBase.c)); final ResourceKey worldKey = (ResourceKey) ResourceKey.a(IRegistry.L, new MinecraftKey(name.toLowerCase(Locale.ENGLISH))); //@builder final WorldServer internal = new WorldServer((MinecraftServer) console, diff --git a/src/main/java/com/volmit/iris/nms/v16_2/WorldChunkManagerIris16_2.java b/src/main/java/com/volmit/iris/nms/v16_2/NMSWorldChunkManager16_2.java similarity index 81% rename from src/main/java/com/volmit/iris/nms/v16_2/WorldChunkManagerIris16_2.java rename to src/main/java/com/volmit/iris/nms/v16_2/NMSWorldChunkManager16_2.java index dbe92b37a..76a2ac430 100644 --- a/src/main/java/com/volmit/iris/nms/v16_2/WorldChunkManagerIris16_2.java +++ b/src/main/java/com/volmit/iris/nms/v16_2/NMSWorldChunkManager16_2.java @@ -7,8 +7,8 @@ import com.volmit.iris.scaffold.engine.EngineCompositeGenerator; import net.minecraft.server.v1_16_R2.*; import org.bukkit.craftbukkit.v1_16_R2.util.CraftNamespacedKey; -public class WorldChunkManagerIris16_2 extends WorldChunkManager { - public static final Codec e = RecordCodecBuilder.create((var0) -> { +public class NMSWorldChunkManager16_2 extends WorldChunkManager { + public static final Codec e = RecordCodecBuilder.create((var0) -> { return var0.group(Codec.LONG.fieldOf("seed").stable().forGetter((var0x) -> { return var0x.h; }), Codec.BOOL.optionalFieldOf("legacy_biome_init_layer", false, Lifecycle.stable()).forGetter((var0x) -> { @@ -17,7 +17,7 @@ public class WorldChunkManagerIris16_2 extends WorldChunkManager { return var0x.j; }), RegistryLookupCodec.a(IRegistry.ay).forGetter((var0x) -> { return var0x.k; - })).apply(var0, var0.stable((a,b,c,d) -> new WorldChunkManagerIris16_2(null, "", a, b, c, d))); + })).apply(var0, var0.stable((a,b,c,d) -> new NMSWorldChunkManager16_2(null, "", a, b, c, d))); }); private final long h; private final boolean i; @@ -25,7 +25,7 @@ public class WorldChunkManagerIris16_2 extends WorldChunkManager { private final EngineCompositeGenerator compound; private final IRegistry k; - public WorldChunkManagerIris16_2(EngineCompositeGenerator compound, String wn, long var0, boolean var2, boolean var3, IRegistry var4) { + public NMSWorldChunkManager16_2(EngineCompositeGenerator compound, String wn, long var0, boolean var2, boolean var3, IRegistry var4) { super(compound.getAllBiomes(wn).convert((v)-> v.getDerivative().getKey().getKey()).stream().map((var1) -> { return () -> { return (BiomeBase)var4.d(ResourceKey.a(IRegistry.ay, new MinecraftKey(var1))); diff --git a/src/main/java/com/volmit/iris/nms/v16_3/ChunkGeneratorAbstract_16_3_PAPER.java b/src/main/java/com/volmit/iris/nms/v16_3/NMSChunkGenerator16_3.java similarity index 95% rename from src/main/java/com/volmit/iris/nms/v16_3/ChunkGeneratorAbstract_16_3_PAPER.java rename to src/main/java/com/volmit/iris/nms/v16_3/NMSChunkGenerator16_3.java index 21f11b894..574836b8d 100644 --- a/src/main/java/com/volmit/iris/nms/v16_3/ChunkGeneratorAbstract_16_3_PAPER.java +++ b/src/main/java/com/volmit/iris/nms/v16_3/NMSChunkGenerator16_3.java @@ -10,12 +10,9 @@ import com.volmit.iris.Iris; import com.volmit.iris.nms.INMS; import com.volmit.iris.scaffold.cache.Cache; import com.volmit.iris.scaffold.engine.EngineCompositeGenerator; -import com.volmit.iris.util.KMap; -import com.volmit.iris.util.O; -import com.volmit.iris.util.TerrainChunk; -import com.volmit.iris.util.V; -import it.unimi.dsi.fastutil.objects.ObjectArrayList; -import it.unimi.dsi.fastutil.objects.ObjectList; +import com.volmit.iris.util.*; +import net.minecraft.server.v1_16_R3.BlockPosition; +import net.minecraft.server.v1_16_R3.HeightMap; import net.minecraft.server.v1_16_R3.*; import org.bukkit.WorldCreator; import org.bukkit.block.Biome; @@ -29,7 +26,7 @@ import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Supplier; -public final class ChunkGeneratorAbstract_16_3_PAPER extends ChunkGenerator { +public final class NMSChunkGenerator16_3 extends ChunkGenerator { private static final IBlockData k; private final O ws; protected final IBlockData f; @@ -47,11 +44,11 @@ public final class ChunkGeneratorAbstract_16_3_PAPER extends ChunkGenerator { k = Blocks.AIR.getBlockData(); } - public ChunkGeneratorAbstract_16_3_PAPER(O ws, WorldCreator wc, WorldChunkManager worldchunkmanager, long i, Supplier supplier) { + public NMSChunkGenerator16_3(O ws, WorldCreator wc, WorldChunkManager worldchunkmanager, long i, Supplier supplier) { this(ws, wc, worldchunkmanager, worldchunkmanager, i, supplier); } - private ChunkGeneratorAbstract_16_3_PAPER(O ws, WorldCreator wc, WorldChunkManager worldchunkmanager, WorldChunkManager worldchunkmanager1, long i, Supplier supplier) { + private NMSChunkGenerator16_3(O ws, WorldCreator wc, WorldChunkManager worldchunkmanager, WorldChunkManager worldchunkmanager1, long i, Supplier supplier) { super(worldchunkmanager, worldchunkmanager1, ((GeneratorSettingBase)supplier.get()).a(), i); this.wc = wc; this.ws = ws; @@ -149,8 +146,8 @@ public final class ChunkGeneratorAbstract_16_3_PAPER extends ChunkGenerator { @Override public void buildNoise(GeneratorAccess generatoraccess, StructureManager structuremanager, IChunkAccess ichunkaccess) { - ObjectList objectlist = new ObjectArrayList(10); - ObjectList objectlist1 = new ObjectArrayList(32); + KList objectlist = new KList(10); + KList objectlist1 = new KList(32); ChunkCoordIntPair chunkcoordintpair = ichunkaccess.getPos(); int i = chunkcoordintpair.x; int j = chunkcoordintpair.z; @@ -425,6 +422,11 @@ public final class ChunkGeneratorAbstract_16_3_PAPER extends ChunkGenerator { } } + public boolean isStructures() + { + return gen.shouldGenerateStructures(); + } + private BiomeBase getStructureBiome(int k, int l) { return (BiomeBase) INMS.get().getBiomeBase(ws.get().getWorld(), gen.getComposite().getDefaultEngine().getSurfaceBiome(k, l).getVanillaDerivative()); } @@ -526,6 +528,7 @@ public final class ChunkGeneratorAbstract_16_3_PAPER extends ChunkGenerator { for(Supplier> supplier : biomebase.e().a()) { StructureFeature structurefeature = (StructureFeature) supplier.get(); + if(StructureFeature.c == StructureGenerator.STRONGHOLD) { StructureFeature structureFeature = structurefeature; diff --git a/src/main/java/com/volmit/iris/nms/v16_3/NMSCreator16_3.java b/src/main/java/com/volmit/iris/nms/v16_3/NMSCreator16_3.java index 8ceefa2ce..8886aa632 100644 --- a/src/main/java/com/volmit/iris/nms/v16_3/NMSCreator16_3.java +++ b/src/main/java/com/volmit/iris/nms/v16_3/NMSCreator16_3.java @@ -33,11 +33,6 @@ class NMSCreator16_3 implements INMSCreator @SuppressWarnings({"unchecked", "rawtypes", "resource"}) public World createWorld(WorldCreator creator, boolean loadSpawn) { - if(!creator.environment().equals(Environment.NORMAL)) - { - return creator.createWorld(); - } - EngineCompositeGenerator pro = (EngineCompositeGenerator) creator.generator(); CraftServer server = ((CraftServer) Bukkit.getServer()); Map worlds = new V(server).get("worlds"); @@ -125,8 +120,8 @@ class NMSCreator16_3 implements INMSCreator long ll = creator.seed(); dimensionmanager = (DimensionManager) getConsoleDimension(console).a().d(DimensionManager.OVERWORLD); O ws = new O(); - chunkgenerator = new ChunkGeneratorAbstract_16_3_PAPER(ws, creator, (WorldChunkManager) - new WorldChunkManagerIris16_3(((EngineCompositeGenerator)creator.generator()), creator.name(), ll, false, false, (IRegistry) getConsoleDimension(console).b(IRegistry.ay)), ll, + chunkgenerator = new NMSChunkGenerator16_3(ws, creator, (WorldChunkManager) + new NMSWorldChunkManager16_3(((EngineCompositeGenerator)creator.generator()), creator.name(), ll, false, false, (IRegistry) getConsoleDimension(console).b(IRegistry.ay)), ll, () -> (GeneratorSettingBase) getConsoleDimension(console).b(IRegistry.ar).d(GeneratorSettingBase.c)); final ResourceKey worldKey = (ResourceKey) ResourceKey.a(IRegistry.L, new MinecraftKey(name.toLowerCase(Locale.ENGLISH))); //@builder diff --git a/src/main/java/com/volmit/iris/nms/v16_3/WorldChunkManagerIris16_3.java b/src/main/java/com/volmit/iris/nms/v16_3/NMSWorldChunkManager16_3.java similarity index 81% rename from src/main/java/com/volmit/iris/nms/v16_3/WorldChunkManagerIris16_3.java rename to src/main/java/com/volmit/iris/nms/v16_3/NMSWorldChunkManager16_3.java index caf1c6321..721380fa3 100644 --- a/src/main/java/com/volmit/iris/nms/v16_3/WorldChunkManagerIris16_3.java +++ b/src/main/java/com/volmit/iris/nms/v16_3/NMSWorldChunkManager16_3.java @@ -7,8 +7,8 @@ import com.volmit.iris.scaffold.engine.EngineCompositeGenerator; import net.minecraft.server.v1_16_R3.*; import org.bukkit.craftbukkit.v1_16_R3.util.CraftNamespacedKey; -public class WorldChunkManagerIris16_3 extends WorldChunkManager { - public static final Codec e = RecordCodecBuilder.create((var0) -> { +public class NMSWorldChunkManager16_3 extends WorldChunkManager { + public static final Codec e = RecordCodecBuilder.create((var0) -> { return var0.group(Codec.LONG.fieldOf("seed").stable().forGetter((var0x) -> { return var0x.h; }), Codec.BOOL.optionalFieldOf("legacy_biome_init_layer", false, Lifecycle.stable()).forGetter((var0x) -> { @@ -17,7 +17,7 @@ public class WorldChunkManagerIris16_3 extends WorldChunkManager { return var0x.j; }), RegistryLookupCodec.a(IRegistry.ay).forGetter((var0x) -> { return var0x.k; - })).apply(var0, var0.stable((a,b,c,d) -> new WorldChunkManagerIris16_3(null, "", a, b, c, d))); + })).apply(var0, var0.stable((a,b,c,d) -> new NMSWorldChunkManager16_3(null, "", a, b, c, d))); }); private final long h; private final boolean i; @@ -25,7 +25,7 @@ public class WorldChunkManagerIris16_3 extends WorldChunkManager { private final EngineCompositeGenerator compound; private final IRegistry k; - public WorldChunkManagerIris16_3(EngineCompositeGenerator compound, String wn, long var0, boolean var2, boolean var3, IRegistry var4) { + public NMSWorldChunkManager16_3(EngineCompositeGenerator compound, String wn, long var0, boolean var2, boolean var3, IRegistry var4) { super(compound.getAllBiomes(wn).convert((v)-> v.getDerivative().getKey().getKey()).stream().map((var1) -> { return () -> { return (BiomeBase)var4.d(ResourceKey.a(IRegistry.ay, new MinecraftKey(var1))); diff --git a/src/main/java/com/volmit/iris/object/IrisDimension.java b/src/main/java/com/volmit/iris/object/IrisDimension.java index 993931efd..1fdb110fd 100644 --- a/src/main/java/com/volmit/iris/object/IrisDimension.java +++ b/src/main/java/com/volmit/iris/object/IrisDimension.java @@ -389,7 +389,6 @@ public class IrisDimension extends IrisRegistrant return r; } - public KList getAllAnyRegions() { KList r = new KList<>(); diff --git a/src/main/java/com/volmit/iris/scaffold/engine/EngineCompositeGenerator.java b/src/main/java/com/volmit/iris/scaffold/engine/EngineCompositeGenerator.java index 2611cf10e..2091e3381 100644 --- a/src/main/java/com/volmit/iris/scaffold/engine/EngineCompositeGenerator.java +++ b/src/main/java/com/volmit/iris/scaffold/engine/EngineCompositeGenerator.java @@ -320,7 +320,15 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce @Override public boolean shouldGenerateStructures() { - return false; + try + { + return getComposite().getDefaultEngine().getDimension().isVanillaStructures(); + } + + catch(Throwable e) + { + return false; + } } public static EngineCompositeGenerator newStudioWorld(String dimension) {