Change Surface Rules later to catch Biomes added by FAPI
This commit is contained in:
parent
fc280cac4c
commit
e1883409fa
4 changed files with 46 additions and 2 deletions
|
@ -133,6 +133,12 @@ public class BCLWorldPresetSettings extends WorldPresetSettings {
|
||||||
return biomeSource;
|
return biomeSource;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void injectSurfaceRules(RegistryAccess registryAccess, WorldGenSettings settings) {
|
||||||
|
//END and NETHER are handled in #repairSettingsOnLoad
|
||||||
|
SurfaceRuleUtil.injectSurfaceRules(settings, SurfaceRuleRegistry.NON_MANAGED_DIMENSIONS);
|
||||||
|
}
|
||||||
|
|
||||||
private static Holder<NoiseGeneratorSettings> injectSurfaceRules(
|
private static Holder<NoiseGeneratorSettings> injectSurfaceRules(
|
||||||
Holder<NoiseGeneratorSettings> reference,
|
Holder<NoiseGeneratorSettings> reference,
|
||||||
Holder<NoiseGeneratorSettings> settings,
|
Holder<NoiseGeneratorSettings> settings,
|
||||||
|
@ -236,7 +242,6 @@ public class BCLWorldPresetSettings extends WorldPresetSettings {
|
||||||
public WorldGenSettings repairSettingsOnLoad(RegistryAccess registryAccess, WorldGenSettings settings) {
|
public WorldGenSettings repairSettingsOnLoad(RegistryAccess registryAccess, WorldGenSettings settings) {
|
||||||
settings = fixSettingsInCurrentWorld(registryAccess, LevelStem.NETHER, BuiltinDimensionTypes.NETHER, settings);
|
settings = fixSettingsInCurrentWorld(registryAccess, LevelStem.NETHER, BuiltinDimensionTypes.NETHER, settings);
|
||||||
settings = fixSettingsInCurrentWorld(registryAccess, LevelStem.END, BuiltinDimensionTypes.END, settings);
|
settings = fixSettingsInCurrentWorld(registryAccess, LevelStem.END, BuiltinDimensionTypes.END, settings);
|
||||||
SurfaceRuleUtil.injectSurfaceRules(settings, SurfaceRuleRegistry.NON_MANAGED_DIMENSIONS);
|
|
||||||
return settings;
|
return settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
package org.betterx.worlds.together.mixin.common;
|
||||||
|
|
||||||
|
import org.betterx.worlds.together.world.WorldGenUtil;
|
||||||
|
|
||||||
|
import net.minecraft.core.RegistryAccess;
|
||||||
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.server.level.progress.ChunkProgressListener;
|
||||||
|
import net.minecraft.world.level.storage.WorldData;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Final;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We need a hook here to alter surface rules after Fabric did add its biomes
|
||||||
|
* in {@link net.fabricmc.fabric.mixin.biome.MixinMinecraftServer}
|
||||||
|
*/
|
||||||
|
@Mixin(value = MinecraftServer.class, priority = 500)
|
||||||
|
public class MinecraftServerMixin {
|
||||||
|
@Shadow
|
||||||
|
@Final
|
||||||
|
private RegistryAccess.Frozen registryHolder;
|
||||||
|
@Shadow
|
||||||
|
@Final
|
||||||
|
protected WorldData worldData;
|
||||||
|
|
||||||
|
@Inject(method = "createLevels", at = @At("HEAD"))
|
||||||
|
private void together_addSurfaceRules(ChunkProgressListener worldGenerationProgressListener, CallbackInfo ci) {
|
||||||
|
WorldGenUtil.getWorldSettings().injectSurfaceRules(registryHolder, this.worldData.worldGenSettings());
|
||||||
|
}
|
||||||
|
}
|
|
@ -23,7 +23,6 @@ public class VanillaWorldPresetSettings extends WorldPresetSettings {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorldGenSettings repairSettingsOnLoad(RegistryAccess registryAccess, WorldGenSettings settings) {
|
public WorldGenSettings repairSettingsOnLoad(RegistryAccess registryAccess, WorldGenSettings settings) {
|
||||||
SurfaceRuleUtil.injectSurfaceRules(settings, SurfaceRuleRegistry.ALL_DIMENSIONS);
|
|
||||||
return settings;
|
return settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,4 +30,9 @@ public class VanillaWorldPresetSettings extends WorldPresetSettings {
|
||||||
public BiomeSource addDatapackBiomes(BiomeSource biomeSource, Set<Holder<Biome>> datapackBiomes) {
|
public BiomeSource addDatapackBiomes(BiomeSource biomeSource, Set<Holder<Biome>> datapackBiomes) {
|
||||||
return biomeSource;
|
return biomeSource;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void injectSurfaceRules(RegistryAccess registryAccess, WorldGenSettings settings) {
|
||||||
|
SurfaceRuleUtil.injectSurfaceRules(settings, SurfaceRuleRegistry.ALL_DIMENSIONS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,4 +52,5 @@ public abstract class WorldPresetSettings {
|
||||||
public abstract Codec<? extends WorldPresetSettings> codec();
|
public abstract Codec<? extends WorldPresetSettings> codec();
|
||||||
public abstract WorldGenSettings repairSettingsOnLoad(RegistryAccess registryAccess, WorldGenSettings settings);
|
public abstract WorldGenSettings repairSettingsOnLoad(RegistryAccess registryAccess, WorldGenSettings settings);
|
||||||
public abstract BiomeSource addDatapackBiomes(BiomeSource biomeSource, Set<Holder<Biome>> datapackBiomes);
|
public abstract BiomeSource addDatapackBiomes(BiomeSource biomeSource, Set<Holder<Biome>> datapackBiomes);
|
||||||
|
public abstract void injectSurfaceRules(RegistryAccess registryAccess, WorldGenSettings settings);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue