1.16 NMS Support

This commit is contained in:
Daniel Mills 2020-10-20 10:16:19 -04:00
parent 0fb5cbdb06
commit 88d589bae5
15 changed files with 81 additions and 121 deletions

View File

@ -22,6 +22,7 @@ import com.volmit.iris.gen.IrisTerrainProvider;
import com.volmit.iris.gen.nms.INMS; import com.volmit.iris.gen.nms.INMS;
import com.volmit.iris.gen.provisions.ProvisionBukkit; import com.volmit.iris.gen.provisions.ProvisionBukkit;
import com.volmit.iris.gen.scaffold.IrisGenConfiguration; 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.gen.scaffold.TerrainTarget;
import com.volmit.iris.link.MultiverseCoreLink; import com.volmit.iris.link.MultiverseCoreLink;
import com.volmit.iris.link.MythicMobsLink; import com.volmit.iris.link.MythicMobsLink;
@ -223,7 +224,7 @@ public class Iris extends MortarPlugin
{ {
if(i.getGenerator() instanceof ProvisionBukkit) if(i.getGenerator() instanceof ProvisionBukkit)
{ {
((IrisTerrainProvider) ((ProvisionBukkit) i.getGenerator()).getProvider()).close(); IrisWorlds.getProvider(i).close();
} }
} }

View File

@ -6,6 +6,7 @@ import org.bukkit.entity.Player;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.IrisTerrainProvider;
import com.volmit.iris.gen.provisions.ProvisionBukkit; 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.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;
@ -39,7 +40,7 @@ public class CommandIrisCTC extends MortarCommand
return true; 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); int m = Math.min(Math.max(Integer.valueOf(args[0]), 2), 256);
g.changeThreadCount(m); g.changeThreadCount(m);
sender.sendMessage("Thread count changed to " + m); sender.sendMessage("Thread count changed to " + m);

View File

@ -7,6 +7,7 @@ import com.volmit.iris.Iris;
import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.IrisTerrainProvider;
import com.volmit.iris.gen.provisions.ProvisionBukkit; import com.volmit.iris.gen.provisions.ProvisionBukkit;
import com.volmit.iris.gen.scaffold.IrisMetrics; 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.C;
import com.volmit.iris.util.Form; import com.volmit.iris.util.Form;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
@ -35,7 +36,7 @@ public class CommandIrisMetrics extends MortarCommand
return true; return true;
} }
IrisTerrainProvider g = (IrisTerrainProvider) ((ProvisionBukkit) world.getGenerator()).getProvider(); IrisTerrainProvider g = IrisWorlds.getProvider(world);
IrisMetrics m = g.getMetrics(); IrisMetrics m = g.getMetrics();
sender.sendMessage("Thread Count: " + C.BOLD + "" + C.WHITE + g.getThreads()); sender.sendMessage("Thread Count: " + C.BOLD + "" + C.WHITE + g.getThreads());
sender.sendMessage("Total : " + C.BOLD + "" + C.WHITE + Form.duration(m.getTotal().getAverage(), 2)); sender.sendMessage("Total : " + C.BOLD + "" + C.WHITE + Form.duration(m.getTotal().getAverage(), 2));

View File

@ -7,6 +7,7 @@ import org.bukkit.entity.Player;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.IrisTerrainProvider;
import com.volmit.iris.gen.provisions.ProvisionBukkit; import com.volmit.iris.gen.provisions.ProvisionBukkit;
import com.volmit.iris.gen.scaffold.IrisWorlds;
import com.volmit.iris.object.IrisBiome; import com.volmit.iris.object.IrisBiome;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;
@ -42,7 +43,7 @@ public class CommandIrisStudioGoto extends MortarCommand
return true; return true;
} }
IrisTerrainProvider g = (IrisTerrainProvider) ((ProvisionBukkit) world.getGenerator()).getProvider(); IrisTerrainProvider g = IrisWorlds.getProvider(world);
int tries = 10000; int tries = 10000;
boolean cave = false; boolean cave = false;
IrisBiome biome2 = null; IrisBiome biome2 = null;

View File

@ -7,6 +7,7 @@ import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.IrisTerrainProvider;
import com.volmit.iris.gen.provisions.ProvisionBukkit; 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.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;
@ -39,7 +40,7 @@ public class CommandIrisStudioHotload extends MortarCommand
return true; return true;
} }
IrisTerrainProvider g = (IrisTerrainProvider) ((ProvisionBukkit) world.getGenerator()).getProvider(); IrisTerrainProvider g = IrisWorlds.getProvider(world);
g.onHotload(); g.onHotload();
sender.sendMessage("Hotloaded!"); sender.sendMessage("Hotloaded!");
return true; return true;

View File

@ -7,6 +7,7 @@ import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.IrisTerrainProvider;
import com.volmit.iris.gen.provisions.ProvisionBukkit; import com.volmit.iris.gen.provisions.ProvisionBukkit;
import com.volmit.iris.gen.scaffold.IrisWorlds;
import com.volmit.iris.object.IrisEntity; import com.volmit.iris.object.IrisEntity;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;
@ -40,7 +41,7 @@ public class CommandIrisStudioSummon extends MortarCommand
return true; return true;
} }
IrisTerrainProvider g = (IrisTerrainProvider) ((ProvisionBukkit) world.getGenerator()).getProvider(); IrisTerrainProvider g = IrisWorlds.getProvider(world);
if(args.length == 0) if(args.length == 0)
{ {
for(String i : g.getData().getEntityLoader().getPossibleKeys()) for(String i : g.getData().getEntityLoader().getPossibleKeys())

View File

@ -5,7 +5,7 @@ import org.bukkit.entity.Player;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.gen.IrisTerrainProvider; 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.object.IrisBiome;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;
@ -31,7 +31,9 @@ public class CommandIrisWhatBiome extends MortarCommand
try 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() + ")"); sender.sendMessage("IBiome: " + b.getLoadKey() + " (" + b.getDerivative().name() + ")");
} }

View File

@ -43,7 +43,6 @@ import com.volmit.iris.util.B;
import com.volmit.iris.util.BlockPosition; import com.volmit.iris.util.BlockPosition;
import com.volmit.iris.util.C; import com.volmit.iris.util.C;
import com.volmit.iris.util.ChronoLatch; import com.volmit.iris.util.ChronoLatch;
import com.volmit.iris.util.HeightMap;
import com.volmit.iris.util.J; import com.volmit.iris.util.J;
import com.volmit.iris.util.KList; import com.volmit.iris.util.KList;
import com.volmit.iris.util.KSet; import com.volmit.iris.util.KSet;

View File

@ -5,11 +5,7 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Random; import java.util.Random;
import java.util.function.Predicate;
import java.util.function.Supplier; import java.util.function.Supplier;
import java.util.stream.IntStream;
import javax.annotation.Nullable;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Biome; import org.bukkit.block.Biome;
@ -22,17 +18,17 @@ import org.bukkit.generator.ChunkGenerator.ChunkData;
import org.bukkit.material.MaterialData; import org.bukkit.material.MaterialData;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import com.volmit.iris.Iris;
import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.IrisTerrainProvider;
import com.volmit.iris.gen.provisions.ProvisionBukkit; import com.volmit.iris.gen.provisions.ProvisionBukkit;
import com.volmit.iris.gen.scaffold.GeneratedChunk; import com.volmit.iris.gen.scaffold.GeneratedChunk;
import com.volmit.iris.gen.scaffold.Provisioned; 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.O;
import com.volmit.iris.util.V; import com.volmit.iris.util.V;
import it.unimi.dsi.fastutil.objects.ObjectArrayList; import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import it.unimi.dsi.fastutil.objects.ObjectList; 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.BiomeBase;
import net.minecraft.server.v1_16_R2.BiomeManager; import net.minecraft.server.v1_16_R2.BiomeManager;
import net.minecraft.server.v1_16_R2.BiomeSettingsMobs; 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.IRegistry;
import net.minecraft.server.v1_16_R2.IRegistryCustom; import net.minecraft.server.v1_16_R2.IRegistryCustom;
import net.minecraft.server.v1_16_R2.IStructureAccess; 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.NoiseSettings;
import net.minecraft.server.v1_16_R2.PacketDebug; import net.minecraft.server.v1_16_R2.PacketDebug;
import net.minecraft.server.v1_16_R2.ProtoChunk; 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.StructurePiece;
import net.minecraft.server.v1_16_R2.StructureSettingsFeature; import net.minecraft.server.v1_16_R2.StructureSettingsFeature;
import net.minecraft.server.v1_16_R2.StructureStart; 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.WorldChunkManager;
import net.minecraft.server.v1_16_R2.WorldChunkManagerTheEnd;
import net.minecraft.server.v1_16_R2.WorldGenFeatureDefinedStructureJigsawJunction; import net.minecraft.server.v1_16_R2.WorldGenFeatureDefinedStructureJigsawJunction;
import net.minecraft.server.v1_16_R2.WorldGenFeatureDefinedStructurePoolTemplate; import net.minecraft.server.v1_16_R2.WorldGenFeatureDefinedStructurePoolTemplate;
import net.minecraft.server.v1_16_R2.WorldGenFeaturePillagerOutpostPoolPiece; import net.minecraft.server.v1_16_R2.WorldGenFeaturePillagerOutpostPoolPiece;
import net.minecraft.server.v1_16_R2.WorldGenStage; import net.minecraft.server.v1_16_R2.WorldGenStage;
import net.minecraft.server.v1_16_R2.WorldServer; 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 static final IBlockData k = Blocks.AIR.getBlockData();
private final Provisioned provisioned; private final Provisioned provisioned;
private final int maxHeight; private final int maxHeight;
private final int m;
private final int n;
private final int xzSize; 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 f;
protected final IBlockData g; protected final IBlockData g;
private final long w; private final long w;
@ -129,30 +108,9 @@ public class NMSChunkGenerator16_2 extends ChunkGenerator
NoiseSettings noisesettings = generatorsettingbase.b(); NoiseSettings noisesettings = generatorsettingbase.b();
this.maxHeight = noisesettings.f() * 4; this.maxHeight = noisesettings.f() * 4;
this.m = noisesettings.e() * 4;
this.f = generatorsettingbase.c(); this.f = generatorsettingbase.c();
this.g = generatorsettingbase.d(); this.g = generatorsettingbase.d();
this.n = 16 / this.m;
this.xzSize = noisesettings.a() / this.maxHeight; 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]); BC = new BlockColumn(new IBlockData[this.xzSize * this.maxHeight]);
} }
@ -193,37 +151,7 @@ public class NMSChunkGenerator16_2 extends ChunkGenerator
@Override @Override
public int getBaseHeight(int i, int j, HeightMap.Type heightmap_type) public int getBaseHeight(int i, int j, HeightMap.Type heightmap_type)
{ {
if(heightmap_type.equals(HeightMap.Type.MOTION_BLOCKING)) return 63;
{
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);
} }
@Override @Override
@ -336,7 +264,6 @@ public class NMSChunkGenerator16_2 extends ChunkGenerator
this.setBlock(x, y, z, material.createBlockData()); this.setBlock(x, y, z, material.createBlockData());
} }
@SuppressWarnings("deprecation")
public void setBlock(int x, int y, int z, MaterialData material) public void setBlock(int x, int y, int z, MaterialData material)
{ {
this.setBlock(x, y, z, CraftMagicNumbers.getBlock((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()); 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) 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)); 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()); return CraftMagicNumbers.getMaterial((Block) this.getTypeId(x, y, z).getBlock());
} }
@SuppressWarnings("deprecation")
public MaterialData getTypeAndData(int x, int y, int z) public MaterialData getTypeAndData(int x, int y, int z)
{ {
return CraftMagicNumbers.getMaterial((IBlockData) this.getTypeId(x, y, 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 @Override
public int getSeaLevel() public int getSeaLevel()
{ {
@ -716,12 +630,12 @@ public class NMSChunkGenerator16_2 extends ChunkGenerator
ChunkCoordIntPair chunkcoordintpair = ichunkaccess.getPos(); ChunkCoordIntPair chunkcoordintpair = ichunkaccess.getPos();
BiomeBase biomebase = this.b.getBiome((chunkcoordintpair.x << 2) + 2, 0, (chunkcoordintpair.z << 2) + 2); 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); this.a(StructureFeatures.k, iregistrycustom, structuremanager, ichunkaccess, definedstructuremanager, i, chunkcoordintpair, biomebase);
for(Supplier 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;
synchronized(structureFeature) synchronized(structureFeature)
{ {
this.a(structurefeature, iregistrycustom, structuremanager, ichunkaccess, definedstructuremanager, i, chunkcoordintpair, biomebase); 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) 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; int j = structurestart != null ? structurestart.j() : 0;
StructureSettingsFeature structuresettingsfeature = getSettings().a(structurefeature.d); StructureSettingsFeature structuresettingsfeature = getSettings().a(structurefeature.d);
if(structuresettingsfeature != null) 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); structuremanager.a(SectionPosition.a((ChunkCoordIntPair) ichunkaccess.getPos(), (int) 0), structurefeature.d, structurestart1, (IStructureAccess) ichunkaccess);
} }
} }
public void storeStructures(GeneratorAccessSeed generatoraccessseed, StructureManager structuremanager, IChunkAccess ichunkaccess) public void storeStructures(GeneratorAccessSeed generatoraccessseed, StructureManager structuremanager, IChunkAccess ichunkaccess)
{ {
boolean flag = true;
int i = ichunkaccess.getPos().x; int i = ichunkaccess.getPos().x;
int j = ichunkaccess.getPos().z; int j = ichunkaccess.getPos().z;
int k = i << 4; int k = i << 4;
@ -759,14 +672,14 @@ public class NMSChunkGenerator16_2 extends ChunkGenerator
while(j1 <= j + 8) while(j1 <= j + 8)
{ {
long k1 = ChunkCoordIntPair.pair((int) i1, (int) j1); 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 try
{ {
if(structurestart == StructureStart.a || !structurestart.c().a(k, l, k + 15, l + 15)) if(structurestart == StructureStart.a || !structurestart.c().a(k, l, k + 15, l + 15))
continue; continue;
structuremanager.a(sectionposition, structurestart.l(), k1, (IStructureAccess) ichunkaccess); structuremanager.a(sectionposition, structurestart.l(), k1, (IStructureAccess) ichunkaccess);
PacketDebug.a((GeneratorAccessSeed) generatoraccessseed, (StructureStart) structurestart); PacketDebug.a((GeneratorAccessSeed) generatoraccessseed, (StructureStart<?>) structurestart);
} }
catch(Exception exception) catch(Exception exception)
{ {
@ -782,4 +695,28 @@ public class NMSChunkGenerator16_2 extends ChunkGenerator
++i1; ++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);
}
} }

View File

@ -7,7 +7,6 @@ import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Properties; import java.util.Properties;
import java.util.Random;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit; 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.MobSpawnerPhantom;
import net.minecraft.server.v1_16_R2.MobSpawnerTrader; import net.minecraft.server.v1_16_R2.MobSpawnerTrader;
import net.minecraft.server.v1_16_R2.NBTBase; 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.RegistryReadOps;
import net.minecraft.server.v1_16_R2.ResourceKey; import net.minecraft.server.v1_16_R2.ResourceKey;
import net.minecraft.server.v1_16_R2.SaveData; 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 long j = BiomeManager.a(creator.seed());
final List<MobSpawner> list = (List<MobSpawner>) ImmutableList.of((MobSpawner) new MobSpawnerPhantom(), (MobSpawner) new MobSpawnerPatrol(), (MobSpawner) new MobSpawnerCat(), (MobSpawner) new VillageSiege(), (MobSpawner) new MobSpawnerTrader((IWorldDataServer) worlddata)); final List<MobSpawner> list = (List<MobSpawner>) ImmutableList.of((MobSpawner) new MobSpawnerPhantom(), (MobSpawner) new MobSpawnerPatrol(), (MobSpawner) new MobSpawnerCat(), (MobSpawner) new VillageSiege(), (MobSpawner) new MobSpawnerTrader((IWorldDataServer) worlddata));
final RegistryMaterials<WorldDimension> registrymaterials = (RegistryMaterials<WorldDimension>) worlddata.getGeneratorSettings().d();
final WorldDimension worlddimension = (WorldDimension) registrymaterials.a((ResourceKey) actualDimension);
DimensionManager dimensionmanager; DimensionManager dimensionmanager;
net.minecraft.server.v1_16_R2.ChunkGenerator chunkgenerator; 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); dimensionmanager = (DimensionManager) getConsoleDimension(console).a().d(DimensionManager.OVERWORLD);
O<WorldServer> ws = new O<WorldServer>(); O<WorldServer> ws = new O<WorldServer>();
chunkgenerator = new NMSChunkGenerator16_2(pro, ws, (WorldChunkManager) new WorldChunkManagerOverworld(ll, false, false, (IRegistry<BiomeBase>) getConsoleDimension(console).b(IRegistry.ay)), ll, () -> (GeneratorSettingBase) getConsoleDimension(console).b(IRegistry.ar).d(GeneratorSettingBase.c)); chunkgenerator = new NMSChunkGenerator16_2(pro, ws, (WorldChunkManager) new WorldChunkManagerOverworld(ll, false, false, (IRegistry<BiomeBase>) getConsoleDimension(console).b(IRegistry.ay)), ll, () -> (GeneratorSettingBase) getConsoleDimension(console).b(IRegistry.ar).d(GeneratorSettingBase.c));

View File

@ -3,6 +3,7 @@ package com.volmit.iris.gen.scaffold;
import org.bukkit.World; import org.bukkit.World;
import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.IrisTerrainProvider;
import com.volmit.iris.gen.provisions.ProvisionBukkit;
public class IrisWorlds public class IrisWorlds
{ {
@ -20,4 +21,19 @@ public class IrisWorlds
return null; 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;
}
} }

View File

@ -0,0 +1,6 @@
package com.volmit.iris.gen.scaffold;
public interface ProvisionedHolder extends Provisioned
{
public Provisioned getProvisioned();
}

View File

@ -7,8 +7,6 @@ import java.util.function.Function;
import org.bukkit.generator.BlockPopulator; import org.bukkit.generator.BlockPopulator;
import org.bukkit.util.BlockVector; import org.bukkit.util.BlockVector;
import com.volmit.iris.util.HeightMap;
public interface TerrainProvider public interface TerrainProvider
{ {
public TerrainTarget getTarget(); public TerrainTarget getTarget();

View File

@ -10,7 +10,7 @@ import org.bukkit.event.player.PlayerChangedWorldEvent;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.gen.IrisTerrainProvider; 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.noise.CNG;
import com.volmit.iris.object.IrisBiome; import com.volmit.iris.object.IrisBiome;
import com.volmit.iris.util.BoardManager; import com.volmit.iris.util.BoardManager;
@ -56,7 +56,7 @@ public class IrisBoardManager implements BoardProvider, Listener
@DontObfuscate @DontObfuscate
private boolean isIrisWorld(World w) 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) public void updatePlayer(Player p)
@ -90,7 +90,7 @@ public class IrisBoardManager implements BoardProvider, Listener
return v; return v;
} }
IrisTerrainProvider g = (IrisTerrainProvider) ((ProvisionBukkit) player.getWorld().getGenerator()).getProvider(); IrisTerrainProvider g = IrisWorlds.getProvider(player.getWorld());
if(cl.flip()) if(cl.flip())
{ {

View File

@ -13,7 +13,7 @@ import org.bukkit.event.world.ChunkUnloadEvent;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.gen.IrisTerrainProvider; 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 com.volmit.iris.gui.PregenGui;
import io.papermc.lib.PaperLib; import io.papermc.lib.PaperLib;
@ -75,7 +75,7 @@ public class PregenJob implements Listener
this.chunkZ = 0; this.chunkZ = 0;
completed = false; completed = false;
first = true; first = true;
tp = (world.getGenerator() instanceof ProvisionBukkit) ? (IrisTerrainProvider) ((ProvisionBukkit) world.getGenerator()).getProvider() : null; tp = IrisWorlds.getProvider(world);
chunkSpiraler = new Spiraler(cubeSize, cubeSize, (x, z) -> chunkSpiraler = new Spiraler(cubeSize, cubeSize, (x, z) ->
{ {