Moved memeber

This commit is contained in:
Frank 2022-05-25 14:03:04 +02:00
parent a64e437c3c
commit 3bc2018333
3 changed files with 16 additions and 17 deletions

View file

@ -8,6 +8,7 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.biome.BiomeSource;
import net.minecraft.world.level.levelgen.SurfaceRules;
import net.minecraft.world.level.levelgen.SurfaceRules.RuleSource;
import org.betterx.bclib.api.biomes.BiomeAPI;
import org.betterx.bclib.mixin.common.NoiseGeneratorSettingsMixin;
@ -73,4 +74,17 @@ public class SurfaceRuleUtil {
SURFACE_RULES.put(biomeID, source);
//NOISE_GENERATOR_SETTINGS.forEach(BiomeAPI::changeSurfaceRulesForGenerator);
}
public static RuleSource addRulesForBiomeSource(RuleSource org, BiomeSource biomeSource) {
List<RuleSource> additionalRules = getRuleSources(biomeSource);
if (org instanceof SurfaceRules.SequenceRuleSource sequenceRule) {
List<RuleSource> existingSequence = sequenceRule.sequence();
additionalRules = additionalRules.stream().filter(r -> existingSequence.indexOf(r) < 0).collect(Collectors.toList());
additionalRules.addAll(sequenceRule.sequence());
} else {
additionalRules.add(org);
}
return SurfaceRules.sequence(additionalRules.toArray(new RuleSource[additionalRules.size()]));
}
}

View file

@ -16,8 +16,6 @@ import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.dimension.DimensionType;
import net.minecraft.world.level.dimension.LevelStem;
import net.minecraft.world.level.levelgen.NoiseGeneratorSettings;
import net.minecraft.world.level.levelgen.SurfaceRules;
import net.minecraft.world.level.levelgen.SurfaceRules.RuleSource;
import net.minecraft.world.level.levelgen.WorldGenSettings;
import net.minecraft.world.level.levelgen.presets.WorldPreset;
import net.minecraft.world.level.levelgen.structure.StructureSet;
@ -37,10 +35,8 @@ import org.betterx.bclib.world.generator.BCLBiomeSource;
import org.betterx.bclib.world.generator.BCLibEndBiomeSource;
import org.betterx.bclib.world.generator.BCLibNetherBiomeSource;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import org.jetbrains.annotations.NotNull;
@ -388,16 +384,4 @@ public class WorldGenUtil {
}
}
public static RuleSource addRulesForBiomeSource(RuleSource org, BiomeSource biomeSource) {
List<RuleSource> additionalRules = SurfaceRuleUtil.getRuleSources(biomeSource);
if (org instanceof SurfaceRules.SequenceRuleSource sequenceRule) {
List<RuleSource> existingSequence = sequenceRule.sequence();
additionalRules = additionalRules.stream().filter(r -> existingSequence.indexOf(r) < 0).collect(Collectors.toList());
additionalRules.addAll(sequenceRule.sequence());
} else {
additionalRules.add(org);
}
return SurfaceRules.sequence(additionalRules.toArray(new RuleSource[additionalRules.size()]));
}
}

View file

@ -16,6 +16,7 @@ import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import org.betterx.bclib.BCLib;
import org.betterx.bclib.api.worldgen.BCLChunkGenerator;
import org.betterx.bclib.api.worldgen.SurfaceRuleUtil;
import org.betterx.bclib.api.worldgen.WorldGenUtil;
import org.betterx.bclib.interfaces.ChunkGeneratorAccessor;
import org.betterx.bclib.interfaces.NoiseGeneratorSettingsProvider;
@ -114,7 +115,7 @@ public class BCLWorldPresetSettings extends WorldPresetSettings {
old.defaultBlock(),
old.defaultFluid(),
old.noiseRouter(),
WorldGenUtil.addRulesForBiomeSource(old.surfaceRule(), biomeSource),
SurfaceRuleUtil.addRulesForBiomeSource(old.surfaceRule(), biomeSource),
old.spawnTarget(),
old.seaLevel(),
old.disableMobGeneration(),