73 lines
3.8 KiB
Diff
73 lines
3.8 KiB
Diff
--- a/net/minecraft/world/level/chunk/ChunkGenerator.java
|
|
+++ b/net/minecraft/world/level/chunk/ChunkGenerator.java
|
|
@@ -261,7 +261,7 @@
|
|
|
|
while (iterator.hasNext()) {
|
|
Holder<StructureFeature<?, ?>> holder = (Holder) iterator.next();
|
|
- Stream stream = set1.stream();
|
|
+ Stream<Holder<BiomeBase>> stream = set1.stream(); // CraftBukkit - decompile error
|
|
HolderSet holderset1 = ((StructureFeature) holder.value()).biomes();
|
|
|
|
Objects.requireNonNull(holderset1);
|
|
@@ -411,7 +411,7 @@
|
|
return null;
|
|
}
|
|
|
|
- public void applyBiomeDecoration(GeneratorAccessSeed generatoraccessseed, IChunkAccess ichunkaccess, StructureManager structuremanager) {
|
|
+ public void addVanillaDecorations(GeneratorAccessSeed generatoraccessseed, IChunkAccess ichunkaccess, StructureManager structuremanager) { // CraftBukkit
|
|
ChunkCoordIntPair chunkcoordintpair = ichunkaccess.getPos();
|
|
|
|
if (!SharedConstants.debugVoidTerrain(chunkcoordintpair)) {
|
|
@@ -427,7 +427,7 @@
|
|
Set<BiomeBase> set = new ObjectArraySet();
|
|
|
|
if (this instanceof ChunkProviderFlat) {
|
|
- Stream stream = this.biomeSource.possibleBiomes().stream().map(Holder::value);
|
|
+ Stream<BiomeBase> stream = this.biomeSource.possibleBiomes().stream().map(Holder::value); // CraftBukkit - decompile error
|
|
|
|
Objects.requireNonNull(set);
|
|
stream.forEach(set::add);
|
|
@@ -467,7 +467,7 @@
|
|
StructureFeature<?, ?> structurefeature = (StructureFeature) iterator.next();
|
|
|
|
seededrandom.setFeatureSeed(i, i1, l);
|
|
- Supplier supplier = () -> {
|
|
+ Supplier<String> supplier = () -> { // CraftBukkit - decompile error
|
|
Optional optional = iregistry.getResourceKey(structurefeature).map(Object::toString);
|
|
|
|
Objects.requireNonNull(structurefeature);
|
|
@@ -552,6 +552,33 @@
|
|
}
|
|
}
|
|
|
|
+ public void applyBiomeDecoration(GeneratorAccessSeed generatoraccessseed, IChunkAccess ichunkaccess, StructureManager structuremanager) {
|
|
+ // CraftBukkit start
|
|
+ applyBiomeDecoration(generatoraccessseed, ichunkaccess, structuremanager, true);
|
|
+ }
|
|
+
|
|
+ public void applyBiomeDecoration(GeneratorAccessSeed generatoraccessseed, IChunkAccess ichunkaccess, StructureManager structuremanager, boolean vanilla) {
|
|
+ if (vanilla) {
|
|
+ addVanillaDecorations(generatoraccessseed, ichunkaccess, structuremanager);
|
|
+ }
|
|
+
|
|
+ org.bukkit.World world = generatoraccessseed.getMinecraftWorld().getWorld();
|
|
+ // only call when a populator is present (prevents unnecessary entity conversion)
|
|
+ if (!world.getPopulators().isEmpty()) {
|
|
+ org.bukkit.craftbukkit.generator.CraftLimitedRegion limitedRegion = new org.bukkit.craftbukkit.generator.CraftLimitedRegion(generatoraccessseed, ichunkaccess.getPos());
|
|
+ int x = ichunkaccess.getPos().x;
|
|
+ int z = ichunkaccess.getPos().z;
|
|
+ for (org.bukkit.generator.BlockPopulator populator : world.getPopulators()) {
|
|
+ SeededRandom seededrandom = new SeededRandom(new net.minecraft.world.level.levelgen.LegacyRandomSource(generatoraccessseed.getSeed()));
|
|
+ seededrandom.setDecorationSeed(generatoraccessseed.getSeed(), x, z);
|
|
+ populator.populate(world, seededrandom, x, z, limitedRegion);
|
|
+ }
|
|
+ limitedRegion.saveEntities();
|
|
+ limitedRegion.breakLink();
|
|
+ }
|
|
+ // CraftBukkit end
|
|
+ }
|
|
+
|
|
public boolean hasFeatureChunkInRange(ResourceKey<StructureSet> resourcekey, long i, int j, int k, int l) {
|
|
StructureSet structureset = (StructureSet) this.structureSets.get(resourcekey);
|
|
|