diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/nms/NMSChunkGeneratorDelegate.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/nms/NMSChunkGeneratorDelegate.java index 29a821e30..3ba22039a 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/nms/NMSChunkGeneratorDelegate.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/nms/NMSChunkGeneratorDelegate.java @@ -9,11 +9,15 @@ import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; import com.mojang.serialization.Codec; import net.minecraft.core.BlockPosition; +import net.minecraft.core.IRegistry; +import net.minecraft.core.IRegistryWritable; +import net.minecraft.server.dedicated.DedicatedServer; import net.minecraft.server.level.RegionLimitedWorldAccess; import net.minecraft.world.level.BlockColumn; import net.minecraft.world.level.GeneratorAccessSeed; import net.minecraft.world.level.LevelHeightAccessor; import net.minecraft.world.level.StructureManager; +import net.minecraft.world.level.biome.BiomeBase; import net.minecraft.world.level.biome.BiomeManager; import net.minecraft.world.level.biome.Climate; import net.minecraft.world.level.biome.Climate.Sampler; @@ -24,10 +28,14 @@ import net.minecraft.world.level.levelgen.ChunkGeneratorAbstract; import net.minecraft.world.level.levelgen.HeightMap; import net.minecraft.world.level.levelgen.WorldGenStage; import net.minecraft.world.level.levelgen.blending.Blender; +import net.minecraft.world.level.levelgen.structure.StructureSet; +import org.bukkit.Bukkit; +import org.bukkit.craftbukkit.v1_18_R2.CraftServer; import org.bukkit.craftbukkit.v1_18_R2.CraftWorld; import org.bukkit.craftbukkit.v1_18_R2.block.data.CraftBlockData; import java.util.List; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; @@ -42,9 +50,20 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator { private final long seed; + public static IRegistry getStructureRegistry() { + CraftServer craftserver = (CraftServer) Bukkit.getServer(); + DedicatedServer dedicatedserver = craftserver.getServer(); + + return dedicatedserver + .aU() // getRegistryManager + .b( // getRegistry + IRegistry.aM // biome registry key + ); + } + public NMSChunkGeneratorDelegate(ChunkGenerator vanilla, ConfigPack pack, NMSBiomeProvider biomeProvider, long seed) { - super(vanilla.b, vanilla.e, biomeProvider, biomeProvider, seed); + super(getStructureRegistry(), Optional.empty(), biomeProvider, biomeProvider, seed); this.delegate = pack.getGeneratorProvider().newInstance(pack); this.vanilla = vanilla; this.biomeSource = biomeProvider;