fix /te reload

This commit is contained in:
dfsek
2021-10-17 12:16:33 -07:00
parent c93dd19678
commit 901ec1cda3
3 changed files with 22 additions and 7 deletions

View File

@@ -3,6 +3,7 @@ package com.dfsek.terra.fabric;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.TypeRegistry;
import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper;
import com.dfsek.terra.fabric.util.FabricUtil;
import net.fabricmc.loader.api.FabricLoader;
@@ -50,6 +51,11 @@ public class PlatformImpl extends AbstractPlatform {
LangUtil.load(getTerraConfig().getLanguage(), this); // Load language.
boolean succeed = getRawConfigRegistry().loadAll(this);
worlds.forEach(world -> {
FabricChunkGeneratorWrapper chunkGeneratorWrapper = ((FabricChunkGeneratorWrapper) world.getChunkManager().getChunkGenerator());
chunkGeneratorWrapper.setPack(getConfigRegistry().get(chunkGeneratorWrapper.getPack().getID()));
});
return succeed;
}

View File

@@ -60,10 +60,10 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C
);
private final long seed;
private final ChunkGenerator delegate;
private ChunkGenerator delegate;
private final TerraBiomeSource biomeSource;
private final ConfigPack pack;
private ConfigPack pack;
private ServerWorld world;
public FabricChunkGeneratorWrapper(TerraBiomeSource biomeSource, long seed, ConfigPack configPack) {
@@ -77,6 +77,13 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C
this.seed = seed;
}
public void setPack(ConfigPack pack) {
this.pack = pack;
this.delegate = pack.getGeneratorProvider().newInstance(pack);
biomeSource.setPack(pack);
delegate.getPlatform().logger().info("Loading world with config pack " + pack.getID());
}
@Override
protected Codec<? extends net.minecraft.world.gen.chunk.ChunkGenerator> getCodec() {

View File

@@ -34,8 +34,11 @@ public class TerraBiomeSource extends BiomeSource {
private final Registry<Biome> biomeRegistry;
private final long seed;
private final BiomeProvider provider;
private final ConfigPack pack;
private ConfigPack pack;
public void setPack(ConfigPack pack) {
this.pack = pack;
}
public TerraBiomeSource(Registry<Biome> biomes, long seed, ConfigPack pack) {
super(biomes.stream()
@@ -45,7 +48,6 @@ public class TerraBiomeSource extends BiomeSource {
.collect(Collectors.toList()));
this.biomeRegistry = biomes;
this.seed = seed;
this.provider = pack.getBiomeProviderBuilder();
this.pack = pack;
}
@@ -61,11 +63,11 @@ public class TerraBiomeSource extends BiomeSource {
@Override
public Biome getBiomeForNoiseGen(int biomeX, int biomeY, int biomeZ) {
TerraBiome biome = provider.getBiome(biomeX << 2, biomeZ << 2, seed);
TerraBiome biome = pack.getBiomeProviderBuilder().getBiome(biomeX << 2, biomeZ << 2, seed);
return biomeRegistry.get(new Identifier("terra", FabricUtil.createBiomeID(pack, biome.getID())));
}
public BiomeProvider getProvider() {
return provider;
return pack.getBiomeProviderBuilder();
}
}