Populate packs in a metapack under extended

This commit is contained in:
Zoe Gidiere 2024-10-25 15:58:15 -06:00
parent 1912d8e34c
commit 3d66386f99
3 changed files with 18 additions and 16 deletions

View File

@ -62,14 +62,12 @@ public abstract class ModPlatform extends AbstractPlatform {
public void registerWorldTypes(BiConsumer<Identifier, WorldPreset> registerFunction) { public void registerWorldTypes(BiConsumer<Identifier, WorldPreset> registerFunction) {
HashSet<String> configPacksInMetaPack = new HashSet<>(); HashSet<String> configPacksInMetaPack = new HashSet<>();
getRawMetaConfigRegistry().forEach(pack -> { getRawMetaConfigRegistry().forEach(pack -> {
PresetUtil.createMetaPackPreset(pack, this).apply(registerFunction); PresetUtil.createMetaPackPreset(pack, this, false).apply(registerFunction);
pack.packs().forEach((k, v) -> configPacksInMetaPack.add(v.getID())); pack.packs().forEach((k, v) -> configPacksInMetaPack.add(v.getID()));
}); });
getRawConfigRegistry() getRawConfigRegistry()
.forEach(pack -> { .forEach(pack -> {
if(!configPacksInMetaPack.contains(pack.getID())) { PresetUtil.createDefault(pack, this, configPacksInMetaPack.contains(pack.getID())).apply(registerFunction);
PresetUtil.createDefault(pack, this).apply(registerFunction);
}
}); });
} }

View File

@ -38,9 +38,9 @@ import com.dfsek.terra.mod.generation.TerraBiomeSource;
public class PresetUtil { public class PresetUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(PresetUtil.class); private static final Logger LOGGER = LoggerFactory.getLogger(PresetUtil.class);
private static final List<Identifier> PRESETS = new ArrayList<>(); private static final List<Pair<Identifier, Boolean>> PRESETS = new ArrayList<>();
public static Pair<Identifier, WorldPreset> createDefault(ConfigPack pack, ModPlatform platform) { public static Pair<Identifier, WorldPreset> createDefault(ConfigPack pack, ModPlatform platform, boolean extended) {
Registry<DimensionType> dimensionTypeRegistry = platform.dimensionTypeRegistry(); Registry<DimensionType> dimensionTypeRegistry = platform.dimensionTypeRegistry();
Registry<ChunkGeneratorSettings> chunkGeneratorSettingsRegistry = platform.chunkGeneratorSettingsRegistry(); Registry<ChunkGeneratorSettings> chunkGeneratorSettingsRegistry = platform.chunkGeneratorSettingsRegistry();
Registry<MultiNoiseBiomeSourceParameterList> multiNoiseBiomeSourceParameterLists = Registry<MultiNoiseBiomeSourceParameterList> multiNoiseBiomeSourceParameterLists =
@ -51,7 +51,7 @@ public class PresetUtil {
"terra:" + pack.getID().toLowerCase(Locale.ROOT) + "/" + pack.getNamespace().toLowerCase( "terra:" + pack.getID().toLowerCase(Locale.ROOT) + "/" + pack.getNamespace().toLowerCase(
Locale.ROOT)); Locale.ROOT));
PRESETS.add(generatorID); PRESETS.add(Pair.of(generatorID, extended));
HashMap<RegistryKey<DimensionOptions>, DimensionOptions> dimensionMap = new HashMap<>(); HashMap<RegistryKey<DimensionOptions>, DimensionOptions> dimensionMap = new HashMap<>();
@ -65,7 +65,7 @@ public class PresetUtil {
return Pair.of(generatorID, preset); return Pair.of(generatorID, preset);
} }
public static Pair<Identifier, WorldPreset> createMetaPackPreset(MetaPack metaPack, ModPlatform platform) { public static Pair<Identifier, WorldPreset> createMetaPackPreset(MetaPack metaPack, ModPlatform platform, boolean extended) {
Registry<DimensionType> dimensionTypeRegistry = platform.dimensionTypeRegistry(); Registry<DimensionType> dimensionTypeRegistry = platform.dimensionTypeRegistry();
Registry<ChunkGeneratorSettings> chunkGeneratorSettingsRegistry = platform.chunkGeneratorSettingsRegistry(); Registry<ChunkGeneratorSettings> chunkGeneratorSettingsRegistry = platform.chunkGeneratorSettingsRegistry();
Registry<MultiNoiseBiomeSourceParameterList> multiNoiseBiomeSourceParameterLists = Registry<MultiNoiseBiomeSourceParameterList> multiNoiseBiomeSourceParameterLists =
@ -75,7 +75,7 @@ public class PresetUtil {
metaPack.getID().toLowerCase(Locale.ROOT) + "/" + metaPack.getNamespace().toLowerCase( metaPack.getID().toLowerCase(Locale.ROOT) + "/" + metaPack.getNamespace().toLowerCase(
Locale.ROOT)); Locale.ROOT));
PRESETS.add(generatorID); PRESETS.add(Pair.of(generatorID, extended));
HashMap<RegistryKey<DimensionOptions>, DimensionOptions> dimensionMap = new HashMap<>(); HashMap<RegistryKey<DimensionOptions>, DimensionOptions> dimensionMap = new HashMap<>();
@ -187,7 +187,7 @@ public class PresetUtil {
} }
} }
public static List<Identifier> getPresets() { public static List<Pair<Identifier, Boolean>> getPresets() {
return PRESETS; return PRESETS;
} }
} }

View File

@ -36,16 +36,20 @@ public final class TagUtil {
PresetUtil PresetUtil
.getPresets() .getPresets()
.forEach(id -> MinecraftUtil .forEach(pair -> MinecraftUtil
.getEntry(registry, id) .getEntry(registry, pair.getLeft())
.ifPresentOrElse( .ifPresentOrElse(
preset -> collect preset -> {
.computeIfAbsent(WorldPresetTags.NORMAL, tag -> new ArrayList<>()) boolean useExtendedTag = pair.getRight(); // Get the boolean value from the pair
.add(preset), collect
() -> logger.error("Preset {} does not exist!", id))); .computeIfAbsent(useExtendedTag ? WorldPresetTags.EXTENDED : WorldPresetTags.NORMAL, tag -> new ArrayList<>())
.add(preset);
},
() -> logger.error("Preset {} does not exist!", pair.getLeft())));
registry.startTagReload(new RegistryTags<>(registry.getKey(), collect)).apply(); registry.startTagReload(new RegistryTags<>(registry.getKey(), collect)).apply();
if(logger.isDebugEnabled()) { if(logger.isDebugEnabled()) {
registry.streamEntries() registry.streamEntries()
.map(e -> e.registryKey().getValue() + ": " + .map(e -> e.registryKey().getValue() + ": " +