Support spigot

This commit is contained in:
Daniel Mills 2020-11-22 11:41:43 -05:00
parent 03f535e85e
commit 34040abc8f
8 changed files with 42 additions and 46 deletions

View File

@ -10,12 +10,9 @@ import com.volmit.iris.Iris;
import com.volmit.iris.nms.INMS; import com.volmit.iris.nms.INMS;
import com.volmit.iris.scaffold.cache.Cache; import com.volmit.iris.scaffold.cache.Cache;
import com.volmit.iris.scaffold.engine.EngineCompositeGenerator; import com.volmit.iris.scaffold.engine.EngineCompositeGenerator;
import com.volmit.iris.util.KMap; import com.volmit.iris.util.*;
import com.volmit.iris.util.O; import net.minecraft.server.v1_16_R2.BlockPosition;
import com.volmit.iris.util.TerrainChunk; import net.minecraft.server.v1_16_R2.HeightMap;
import com.volmit.iris.util.V;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import it.unimi.dsi.fastutil.objects.ObjectList;
import net.minecraft.server.v1_16_R2.*; import net.minecraft.server.v1_16_R2.*;
import org.bukkit.WorldCreator; import org.bukkit.WorldCreator;
import org.bukkit.block.Biome; import org.bukkit.block.Biome;
@ -29,7 +26,7 @@ import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Supplier; 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 static final IBlockData k;
private final O<WorldServer> ws; private final O<WorldServer> ws;
protected final IBlockData f; protected final IBlockData f;
@ -47,11 +44,11 @@ public final class ChunkGeneratorAbstract_16_2_PAPER extends ChunkGenerator {
k = Blocks.AIR.getBlockData(); k = Blocks.AIR.getBlockData();
} }
public ChunkGeneratorAbstract_16_2_PAPER(O<WorldServer> ws, WorldCreator wc, WorldChunkManager worldchunkmanager, long i, Supplier<GeneratorSettingBase> supplier) { public NMSChunkGenerator_16_2(O<WorldServer> ws, WorldCreator wc, WorldChunkManager worldchunkmanager, long i, Supplier<GeneratorSettingBase> supplier) {
this(ws, wc, worldchunkmanager, worldchunkmanager, i, supplier); this(ws, wc, worldchunkmanager, worldchunkmanager, i, supplier);
} }
private ChunkGeneratorAbstract_16_2_PAPER(O<WorldServer> ws, WorldCreator wc, WorldChunkManager worldchunkmanager, WorldChunkManager worldchunkmanager1, long i, Supplier<GeneratorSettingBase> supplier) { private NMSChunkGenerator_16_2(O<WorldServer> ws, WorldCreator wc, WorldChunkManager worldchunkmanager, WorldChunkManager worldchunkmanager1, long i, Supplier<GeneratorSettingBase> supplier) {
super(worldchunkmanager, worldchunkmanager1, ((GeneratorSettingBase)supplier.get()).a(), i); super(worldchunkmanager, worldchunkmanager1, ((GeneratorSettingBase)supplier.get()).a(), i);
this.wc = wc; this.wc = wc;
this.ws = ws; this.ws = ws;
@ -149,8 +146,8 @@ public final class ChunkGeneratorAbstract_16_2_PAPER extends ChunkGenerator {
@Override @Override
public void buildNoise(GeneratorAccess generatoraccess, StructureManager structuremanager, IChunkAccess ichunkaccess) public void buildNoise(GeneratorAccess generatoraccess, StructureManager structuremanager, IChunkAccess ichunkaccess)
{ {
ObjectList<StructurePiece> objectlist = new ObjectArrayList<StructurePiece>(10); KList<StructurePiece> objectlist = new KList<StructurePiece>(10);
ObjectList<WorldGenFeatureDefinedStructureJigsawJunction> objectlist1 = new ObjectArrayList<WorldGenFeatureDefinedStructureJigsawJunction>(32); KList<WorldGenFeatureDefinedStructureJigsawJunction> objectlist1 = new KList<>(32);
ChunkCoordIntPair chunkcoordintpair = ichunkaccess.getPos(); ChunkCoordIntPair chunkcoordintpair = ichunkaccess.getPos();
int i = chunkcoordintpair.x; int i = chunkcoordintpair.x;
int j = chunkcoordintpair.z; int j = chunkcoordintpair.z;

View File

@ -15,7 +15,6 @@ import net.minecraft.server.v1_16_R2.IRegistryCustom.Dimension;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.World.Environment;
import org.bukkit.WorldCreator; import org.bukkit.WorldCreator;
import org.bukkit.craftbukkit.v1_16_R2.CraftServer; import org.bukkit.craftbukkit.v1_16_R2.CraftServer;
import org.bukkit.event.Event; import org.bukkit.event.Event;
@ -33,11 +32,6 @@ class NMSCreator16_2 implements INMSCreator
@SuppressWarnings({"unchecked", "rawtypes", "resource"}) @SuppressWarnings({"unchecked", "rawtypes", "resource"})
public World createWorld(WorldCreator creator, boolean loadSpawn) public World createWorld(WorldCreator creator, boolean loadSpawn)
{ {
if(!creator.environment().equals(Environment.NORMAL))
{
return creator.createWorld();
}
EngineCompositeGenerator pro = (EngineCompositeGenerator) creator.generator(); EngineCompositeGenerator pro = (EngineCompositeGenerator) creator.generator();
CraftServer server = ((CraftServer) Bukkit.getServer()); CraftServer server = ((CraftServer) Bukkit.getServer());
Map<String, World> worlds = new V(server).get("worlds"); Map<String, World> worlds = new V(server).get("worlds");
@ -125,7 +119,7 @@ class NMSCreator16_2 implements INMSCreator
long ll = creator.seed(); long ll = creator.seed();
dimensionmanager = (DimensionManager) getConsoleDimension(console).a().d(DimensionManager.OVERWORLD); dimensionmanager = (DimensionManager) getConsoleDimension(console).a().d(DimensionManager.OVERWORLD);
O<WorldServer> ws = new O<WorldServer>(); O<WorldServer> ws = new O<WorldServer>();
chunkgenerator = new ChunkGeneratorAbstract_16_2_PAPER(ws, creator, (WorldChunkManager) new WorldChunkManagerIris16_2(((EngineCompositeGenerator)creator.generator()), creator.name(), ll, false, false, (IRegistry<BiomeBase>) 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<BiomeBase>) getConsoleDimension(console).b(IRegistry.ay)), ll, () -> (GeneratorSettingBase) getConsoleDimension(console).b(IRegistry.ar).d(GeneratorSettingBase.c));
final ResourceKey<net.minecraft.server.v1_16_R2.World> worldKey = (ResourceKey<net.minecraft.server.v1_16_R2.World>) ResourceKey.a(IRegistry.L, new MinecraftKey(name.toLowerCase(Locale.ENGLISH))); final ResourceKey<net.minecraft.server.v1_16_R2.World> worldKey = (ResourceKey<net.minecraft.server.v1_16_R2.World>) ResourceKey.a(IRegistry.L, new MinecraftKey(name.toLowerCase(Locale.ENGLISH)));
//@builder //@builder
final WorldServer internal = new WorldServer((MinecraftServer) console, final WorldServer internal = new WorldServer((MinecraftServer) console,

View File

@ -7,8 +7,8 @@ import com.volmit.iris.scaffold.engine.EngineCompositeGenerator;
import net.minecraft.server.v1_16_R2.*; import net.minecraft.server.v1_16_R2.*;
import org.bukkit.craftbukkit.v1_16_R2.util.CraftNamespacedKey; import org.bukkit.craftbukkit.v1_16_R2.util.CraftNamespacedKey;
public class WorldChunkManagerIris16_2 extends WorldChunkManager { public class NMSWorldChunkManager16_2 extends WorldChunkManager {
public static final Codec<WorldChunkManagerIris16_2> e = RecordCodecBuilder.create((var0) -> { public static final Codec<NMSWorldChunkManager16_2> e = RecordCodecBuilder.create((var0) -> {
return var0.group(Codec.LONG.fieldOf("seed").stable().forGetter((var0x) -> { return var0.group(Codec.LONG.fieldOf("seed").stable().forGetter((var0x) -> {
return var0x.h; return var0x.h;
}), Codec.BOOL.optionalFieldOf("legacy_biome_init_layer", false, Lifecycle.stable()).forGetter((var0x) -> { }), 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; return var0x.j;
}), RegistryLookupCodec.a(IRegistry.ay).forGetter((var0x) -> { }), RegistryLookupCodec.a(IRegistry.ay).forGetter((var0x) -> {
return var0x.k; 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 long h;
private final boolean i; private final boolean i;
@ -25,7 +25,7 @@ public class WorldChunkManagerIris16_2 extends WorldChunkManager {
private final EngineCompositeGenerator compound; private final EngineCompositeGenerator compound;
private final IRegistry<BiomeBase> k; private final IRegistry<BiomeBase> k;
public WorldChunkManagerIris16_2(EngineCompositeGenerator compound, String wn, long var0, boolean var2, boolean var3, IRegistry<BiomeBase> var4) { public NMSWorldChunkManager16_2(EngineCompositeGenerator compound, String wn, long var0, boolean var2, boolean var3, IRegistry<BiomeBase> var4) {
super(compound.getAllBiomes(wn).convert((v)-> v.getDerivative().getKey().getKey()).stream().map((var1) -> { super(compound.getAllBiomes(wn).convert((v)-> v.getDerivative().getKey().getKey()).stream().map((var1) -> {
return () -> { return () -> {
return (BiomeBase)var4.d(ResourceKey.a(IRegistry.ay, new MinecraftKey(var1))); return (BiomeBase)var4.d(ResourceKey.a(IRegistry.ay, new MinecraftKey(var1)));

View File

@ -10,12 +10,9 @@ import com.volmit.iris.Iris;
import com.volmit.iris.nms.INMS; import com.volmit.iris.nms.INMS;
import com.volmit.iris.scaffold.cache.Cache; import com.volmit.iris.scaffold.cache.Cache;
import com.volmit.iris.scaffold.engine.EngineCompositeGenerator; import com.volmit.iris.scaffold.engine.EngineCompositeGenerator;
import com.volmit.iris.util.KMap; import com.volmit.iris.util.*;
import com.volmit.iris.util.O; import net.minecraft.server.v1_16_R3.BlockPosition;
import com.volmit.iris.util.TerrainChunk; import net.minecraft.server.v1_16_R3.HeightMap;
import com.volmit.iris.util.V;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import it.unimi.dsi.fastutil.objects.ObjectList;
import net.minecraft.server.v1_16_R3.*; import net.minecraft.server.v1_16_R3.*;
import org.bukkit.WorldCreator; import org.bukkit.WorldCreator;
import org.bukkit.block.Biome; import org.bukkit.block.Biome;
@ -29,7 +26,7 @@ import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Supplier; 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 static final IBlockData k;
private final O<WorldServer> ws; private final O<WorldServer> ws;
protected final IBlockData f; protected final IBlockData f;
@ -47,11 +44,11 @@ public final class ChunkGeneratorAbstract_16_3_PAPER extends ChunkGenerator {
k = Blocks.AIR.getBlockData(); k = Blocks.AIR.getBlockData();
} }
public ChunkGeneratorAbstract_16_3_PAPER(O<WorldServer> ws, WorldCreator wc, WorldChunkManager worldchunkmanager, long i, Supplier<GeneratorSettingBase> supplier) { public NMSChunkGenerator16_3(O<WorldServer> ws, WorldCreator wc, WorldChunkManager worldchunkmanager, long i, Supplier<GeneratorSettingBase> supplier) {
this(ws, wc, worldchunkmanager, worldchunkmanager, i, supplier); this(ws, wc, worldchunkmanager, worldchunkmanager, i, supplier);
} }
private ChunkGeneratorAbstract_16_3_PAPER(O<WorldServer> ws, WorldCreator wc, WorldChunkManager worldchunkmanager, WorldChunkManager worldchunkmanager1, long i, Supplier<GeneratorSettingBase> supplier) { private NMSChunkGenerator16_3(O<WorldServer> ws, WorldCreator wc, WorldChunkManager worldchunkmanager, WorldChunkManager worldchunkmanager1, long i, Supplier<GeneratorSettingBase> supplier) {
super(worldchunkmanager, worldchunkmanager1, ((GeneratorSettingBase)supplier.get()).a(), i); super(worldchunkmanager, worldchunkmanager1, ((GeneratorSettingBase)supplier.get()).a(), i);
this.wc = wc; this.wc = wc;
this.ws = ws; this.ws = ws;
@ -149,8 +146,8 @@ public final class ChunkGeneratorAbstract_16_3_PAPER extends ChunkGenerator {
@Override @Override
public void buildNoise(GeneratorAccess generatoraccess, StructureManager structuremanager, IChunkAccess ichunkaccess) public void buildNoise(GeneratorAccess generatoraccess, StructureManager structuremanager, IChunkAccess ichunkaccess)
{ {
ObjectList<StructurePiece> objectlist = new ObjectArrayList<StructurePiece>(10); KList<StructurePiece> objectlist = new KList<StructurePiece>(10);
ObjectList<WorldGenFeatureDefinedStructureJigsawJunction> objectlist1 = new ObjectArrayList<WorldGenFeatureDefinedStructureJigsawJunction>(32); KList<WorldGenFeatureDefinedStructureJigsawJunction> objectlist1 = new KList<WorldGenFeatureDefinedStructureJigsawJunction>(32);
ChunkCoordIntPair chunkcoordintpair = ichunkaccess.getPos(); ChunkCoordIntPair chunkcoordintpair = ichunkaccess.getPos();
int i = chunkcoordintpair.x; int i = chunkcoordintpair.x;
int j = chunkcoordintpair.z; 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) { private BiomeBase getStructureBiome(int k, int l) {
return (BiomeBase) INMS.get().getBiomeBase(ws.get().getWorld(), gen.getComposite().getDefaultEngine().getSurfaceBiome(k, l).getVanillaDerivative()); 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<StructureFeature<?, ?>> supplier : biomebase.e().a()) for(Supplier<StructureFeature<?, ?>> supplier : biomebase.e().a())
{ {
StructureFeature<?, ?> structurefeature = (StructureFeature<?, ?>) supplier.get(); StructureFeature<?, ?> structurefeature = (StructureFeature<?, ?>) supplier.get();
if(StructureFeature.c == StructureGenerator.STRONGHOLD) if(StructureFeature.c == StructureGenerator.STRONGHOLD)
{ {
StructureFeature<?, ?> structureFeature = structurefeature; StructureFeature<?, ?> structureFeature = structurefeature;

View File

@ -33,11 +33,6 @@ class NMSCreator16_3 implements INMSCreator
@SuppressWarnings({"unchecked", "rawtypes", "resource"}) @SuppressWarnings({"unchecked", "rawtypes", "resource"})
public World createWorld(WorldCreator creator, boolean loadSpawn) public World createWorld(WorldCreator creator, boolean loadSpawn)
{ {
if(!creator.environment().equals(Environment.NORMAL))
{
return creator.createWorld();
}
EngineCompositeGenerator pro = (EngineCompositeGenerator) creator.generator(); EngineCompositeGenerator pro = (EngineCompositeGenerator) creator.generator();
CraftServer server = ((CraftServer) Bukkit.getServer()); CraftServer server = ((CraftServer) Bukkit.getServer());
Map<String, World> worlds = new V(server).get("worlds"); Map<String, World> worlds = new V(server).get("worlds");
@ -125,8 +120,8 @@ class NMSCreator16_3 implements INMSCreator
long ll = creator.seed(); long ll = creator.seed();
dimensionmanager = (DimensionManager) getConsoleDimension(console).a().d(DimensionManager.OVERWORLD); dimensionmanager = (DimensionManager) getConsoleDimension(console).a().d(DimensionManager.OVERWORLD);
O<WorldServer> ws = new O<WorldServer>(); O<WorldServer> ws = new O<WorldServer>();
chunkgenerator = new ChunkGeneratorAbstract_16_3_PAPER(ws, creator, (WorldChunkManager) chunkgenerator = new NMSChunkGenerator16_3(ws, creator, (WorldChunkManager)
new WorldChunkManagerIris16_3(((EngineCompositeGenerator)creator.generator()), creator.name(), ll, false, false, (IRegistry<BiomeBase>) getConsoleDimension(console).b(IRegistry.ay)), ll, new NMSWorldChunkManager16_3(((EngineCompositeGenerator)creator.generator()), creator.name(), ll, false, false, (IRegistry<BiomeBase>) getConsoleDimension(console).b(IRegistry.ay)), ll,
() -> (GeneratorSettingBase) getConsoleDimension(console).b(IRegistry.ar).d(GeneratorSettingBase.c)); () -> (GeneratorSettingBase) getConsoleDimension(console).b(IRegistry.ar).d(GeneratorSettingBase.c));
final ResourceKey<net.minecraft.server.v1_16_R3.World> worldKey = (ResourceKey<net.minecraft.server.v1_16_R3.World>) ResourceKey.a(IRegistry.L, new MinecraftKey(name.toLowerCase(Locale.ENGLISH))); final ResourceKey<net.minecraft.server.v1_16_R3.World> worldKey = (ResourceKey<net.minecraft.server.v1_16_R3.World>) ResourceKey.a(IRegistry.L, new MinecraftKey(name.toLowerCase(Locale.ENGLISH)));
//@builder //@builder

View File

@ -7,8 +7,8 @@ import com.volmit.iris.scaffold.engine.EngineCompositeGenerator;
import net.minecraft.server.v1_16_R3.*; import net.minecraft.server.v1_16_R3.*;
import org.bukkit.craftbukkit.v1_16_R3.util.CraftNamespacedKey; import org.bukkit.craftbukkit.v1_16_R3.util.CraftNamespacedKey;
public class WorldChunkManagerIris16_3 extends WorldChunkManager { public class NMSWorldChunkManager16_3 extends WorldChunkManager {
public static final Codec<WorldChunkManagerIris16_3> e = RecordCodecBuilder.create((var0) -> { public static final Codec<NMSWorldChunkManager16_3> e = RecordCodecBuilder.create((var0) -> {
return var0.group(Codec.LONG.fieldOf("seed").stable().forGetter((var0x) -> { return var0.group(Codec.LONG.fieldOf("seed").stable().forGetter((var0x) -> {
return var0x.h; return var0x.h;
}), Codec.BOOL.optionalFieldOf("legacy_biome_init_layer", false, Lifecycle.stable()).forGetter((var0x) -> { }), 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; return var0x.j;
}), RegistryLookupCodec.a(IRegistry.ay).forGetter((var0x) -> { }), RegistryLookupCodec.a(IRegistry.ay).forGetter((var0x) -> {
return var0x.k; 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 long h;
private final boolean i; private final boolean i;
@ -25,7 +25,7 @@ public class WorldChunkManagerIris16_3 extends WorldChunkManager {
private final EngineCompositeGenerator compound; private final EngineCompositeGenerator compound;
private final IRegistry<BiomeBase> k; private final IRegistry<BiomeBase> k;
public WorldChunkManagerIris16_3(EngineCompositeGenerator compound, String wn, long var0, boolean var2, boolean var3, IRegistry<BiomeBase> var4) { public NMSWorldChunkManager16_3(EngineCompositeGenerator compound, String wn, long var0, boolean var2, boolean var3, IRegistry<BiomeBase> var4) {
super(compound.getAllBiomes(wn).convert((v)-> v.getDerivative().getKey().getKey()).stream().map((var1) -> { super(compound.getAllBiomes(wn).convert((v)-> v.getDerivative().getKey().getKey()).stream().map((var1) -> {
return () -> { return () -> {
return (BiomeBase)var4.d(ResourceKey.a(IRegistry.ay, new MinecraftKey(var1))); return (BiomeBase)var4.d(ResourceKey.a(IRegistry.ay, new MinecraftKey(var1)));

View File

@ -389,7 +389,6 @@ public class IrisDimension extends IrisRegistrant
return r; return r;
} }
public KList<IrisRegion> getAllAnyRegions() public KList<IrisRegion> getAllAnyRegions()
{ {
KList<IrisRegion> r = new KList<>(); KList<IrisRegion> r = new KList<>();

View File

@ -320,8 +320,16 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
@Override @Override
public boolean shouldGenerateStructures() { public boolean shouldGenerateStructures() {
try
{
return getComposite().getDefaultEngine().getDimension().isVanillaStructures();
}
catch(Throwable e)
{
return false; return false;
} }
}
public static EngineCompositeGenerator newStudioWorld(String dimension) { public static EngineCompositeGenerator newStudioWorld(String dimension) {
return new EngineCompositeGenerator(dimension, false); return new EngineCompositeGenerator(dimension, false);