simplify NMS impl

This commit is contained in:
dfsek 2022-05-29 21:04:48 -07:00
parent 126ddaf9c7
commit 38e4e9bc94
2 changed files with 5 additions and 29 deletions

View File

@ -1,7 +1,6 @@
package com.dfsek.terra.bukkit.nms; package com.dfsek.terra.bukkit.nms;
import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.util.generic.Construct;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.info.WorldProperties; import com.dfsek.terra.api.world.info.WorldProperties;
import com.dfsek.terra.bukkit.generator.BukkitProtoChunk; import com.dfsek.terra.bukkit.generator.BukkitProtoChunk;
@ -12,13 +11,11 @@ import com.mojang.serialization.Codec;
import net.minecraft.core.BlockPosition; import net.minecraft.core.BlockPosition;
import net.minecraft.server.level.RegionLimitedWorldAccess; import net.minecraft.server.level.RegionLimitedWorldAccess;
import net.minecraft.world.level.BlockColumn; import net.minecraft.world.level.BlockColumn;
import net.minecraft.world.level.ChunkCoordIntPair;
import net.minecraft.world.level.GeneratorAccessSeed; import net.minecraft.world.level.GeneratorAccessSeed;
import net.minecraft.world.level.LevelHeightAccessor; import net.minecraft.world.level.LevelHeightAccessor;
import net.minecraft.world.level.StructureManager; import net.minecraft.world.level.StructureManager;
import net.minecraft.world.level.biome.BiomeManager; import net.minecraft.world.level.biome.BiomeManager;
import net.minecraft.world.level.biome.Climate.Sampler; import net.minecraft.world.level.biome.Climate.Sampler;
import net.minecraft.world.level.block.state.IBlockData;
import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.chunk.IChunkAccess; import net.minecraft.world.level.chunk.IChunkAccess;
import net.minecraft.world.level.levelgen.ChunkGeneratorAbstract; import net.minecraft.world.level.levelgen.ChunkGeneratorAbstract;
@ -29,9 +26,6 @@ import org.bukkit.craftbukkit.v1_18_R2.CraftWorld;
import org.bukkit.craftbukkit.v1_18_R2.block.data.CraftBlockData; import org.bukkit.craftbukkit.v1_18_R2.block.data.CraftBlockData;
import org.bukkit.craftbukkit.v1_18_R2.generator.CraftChunkData; import org.bukkit.craftbukkit.v1_18_R2.generator.CraftChunkData;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.List; import java.util.List;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
@ -47,14 +41,8 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator {
private final CraftWorld world; private final CraftWorld world;
public NMSChunkGeneratorDelegate(ChunkGenerator vanilla, ConfigPack pack, NMSBiomeProvider biomeProvider, long seed, public NMSChunkGeneratorDelegate(ChunkGenerator vanilla, ConfigPack pack, NMSBiomeProvider biomeProvider, CraftWorld world) {
CraftWorld world) { super(vanilla.b, vanilla.e, biomeProvider);
super(
vanilla.b, // structure sets
vanilla.e, // structure overrides
biomeProvider); //Last arg is WorldChunkManager
this.delegate = pack.getGeneratorProvider().newInstance(pack); this.delegate = pack.getGeneratorProvider().newInstance(pack);
this.vanilla = vanilla; this.vanilla = vanilla;
this.biomeSource = biomeProvider; this.biomeSource = biomeProvider;
@ -76,17 +64,7 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator {
@Override //fillFromNoise @Override //fillFromNoise
public CompletableFuture<IChunkAccess> a(Executor executor, Blender blender, StructureManager structuremanager, public CompletableFuture<IChunkAccess> a(Executor executor, Blender blender, StructureManager structuremanager,
IChunkAccess ichunkaccess) { IChunkAccess ichunkaccess) {
return CompletableFuture.supplyAsync(() -> { return vanilla.a(executor, blender, structuremanager, ichunkaccess);
BukkitServerWorld serverWorld = new BukkitServerWorld(world);
BiomeProvider biomeProvider = pack.getBiomeProvider().caching(serverWorld);
CraftChunkData chunkData = new CraftChunkData(this.world, ichunkaccess);
int x = ichunkaccess.f().c;
int z = ichunkaccess.f().d;
delegate.generateChunkData(new BukkitProtoChunk(chunkData), new BukkitServerWorld(world), biomeProvider, x, z);
return ichunkaccess;
}, executor);
} }
@ -113,7 +91,7 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator {
@Override // withSeed @Override // withSeed
public ChunkGenerator a(long seed) { public ChunkGenerator a(long seed) {
return new NMSChunkGeneratorDelegate(vanilla, pack, biomeSource, seed, world); return new NMSChunkGeneratorDelegate(vanilla, pack, biomeSource, world);
} }
//spawnOriginalMobs //spawnOriginalMobs

View File

@ -3,7 +3,6 @@ package com.dfsek.terra.bukkit.nms;
import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.bukkit.generator.BukkitChunkGeneratorWrapper; import com.dfsek.terra.bukkit.generator.BukkitChunkGeneratorWrapper;
import net.minecraft.server.level.PlayerChunkMap;
import net.minecraft.server.level.WorldServer; import net.minecraft.server.level.WorldServer;
import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.chunk.ChunkGenerator;
import org.bukkit.craftbukkit.v1_18_R2.CraftWorld; import org.bukkit.craftbukkit.v1_18_R2.CraftWorld;
@ -28,8 +27,7 @@ public class NMSInjectListener implements Listener {
ChunkGenerator vanilla = serverWorld.k().g(); ChunkGenerator vanilla = serverWorld.k().g();
NMSBiomeProvider provider = new NMSBiomeProvider(pack.getBiomeProvider(), vanilla.e(), craftWorld.getSeed()); NMSBiomeProvider provider = new NMSBiomeProvider(pack.getBiomeProvider(), vanilla.e(), craftWorld.getSeed());
NMSChunkGeneratorDelegate custom = new NMSChunkGeneratorDelegate(vanilla, pack, provider, NMSChunkGeneratorDelegate custom = new NMSChunkGeneratorDelegate(vanilla, pack, provider, craftWorld);
craftWorld.getSeed(), craftWorld);
custom.conf = vanilla.conf; // world config from Spigot custom.conf = vanilla.conf; // world config from Spigot