package jas.spawner.legacy.world; import jas.common.global.ImportedSpawnList; import jas.spawner.legacy.spawner.biome.group.BiomeGroupRegistry; import jas.spawner.legacy.spawner.biome.structure.StructureHandlerRegistry; import jas.spawner.legacy.spawner.creature.entry.BiomeSpawnListRegistry; import jas.spawner.legacy.spawner.creature.handler.LivingGroupRegistry; import jas.spawner.legacy.spawner.creature.handler.LivingHandlerRegistry; import jas.spawner.legacy.spawner.creature.type.CreatureTypeRegistry; import jas.spawner.modern.DefaultProps; import java.io.File; import net.minecraft.world.World; /** * Do not store references to anything accessed in a static way */ public final class WorldSettings { private WorldProperties worldProperties; private BiomeGroupRegistry biomeGroupRegistry; private CreatureTypeRegistry creatureTypeRegistry; private LivingHandlerRegistry livingHandlerRegistry; private StructureHandlerRegistry structureHandlerRegistry; private BiomeSpawnListRegistry biomeSpawnListRegistry; private LivingGroupRegistry livingGroupRegistry; private ImportedSpawnList importedSpawnList; public WorldSettings(File modConfigDirectoryFile, World world, ImportedSpawnList importedSpawnList) { this.importedSpawnList = importedSpawnList; this.worldProperties = new WorldProperties(); this.biomeGroupRegistry = new BiomeGroupRegistry(worldProperties); this.livingGroupRegistry = new LivingGroupRegistry(worldProperties); this.creatureTypeRegistry = new CreatureTypeRegistry(biomeGroupRegistry, worldProperties); this.livingHandlerRegistry = new LivingHandlerRegistry(livingGroupRegistry, creatureTypeRegistry, worldProperties); structureHandlerRegistry = new StructureHandlerRegistry(livingHandlerRegistry, worldProperties); loadWorldSettings(modConfigDirectoryFile, world); } public void saveWorldSettings(File configDirectory, World world) { if (worldProperties.getSavedFileConfiguration().universalDirectory != worldProperties.getFolderConfiguration().universalDirectory) { worldProperties.setSavedUniversalDirectory(worldProperties.getFolderConfiguration().universalDirectory); File entityFolder = new File(configDirectory, DefaultProps.MODDIR + DefaultProps.WORLDSETTINGSDIR + worldProperties.getFolderConfiguration().saveName + "/" + DefaultProps.ENTITYHANDLERDIR); File[] entityFileList = entityFolder.listFiles(); if (entityFileList != null) { for (File file : entityFolder.listFiles()) { file.delete(); } } File spawnFolder = new File(configDirectory, DefaultProps.MODDIR + DefaultProps.WORLDSETTINGSDIR + worldProperties.getFolderConfiguration().saveName + "/" + DefaultProps.ENTITYSPAWNRDIR); File[] spawnFileList = entityFolder.listFiles(); if (spawnFileList != null) { for (File file : spawnFolder.listFiles()) { file.delete(); } } } worldProperties.saveToConfig(configDirectory); biomeGroupRegistry.saveToConfig(configDirectory); livingGroupRegistry.saveToConfig(configDirectory); creatureTypeRegistry.saveCurrentToConfig(configDirectory); livingHandlerRegistry.saveToConfig(configDirectory); structureHandlerRegistry.saveCurrentToConfig(configDirectory); biomeSpawnListRegistry.saveToConfig(configDirectory); } public void loadWorldSettings(File modConfigDirectoryFile, World world) { worldProperties.loadFromConfig(modConfigDirectoryFile, world); biomeGroupRegistry.loadFromConfig(modConfigDirectoryFile); livingGroupRegistry.loadFromConfig(modConfigDirectoryFile); creatureTypeRegistry.loadFromConfig(modConfigDirectoryFile); livingHandlerRegistry.loadFromConfig(modConfigDirectoryFile, world, importedSpawnList); structureHandlerRegistry.loadFromConfig(modConfigDirectoryFile, world); biomeSpawnListRegistry = new BiomeSpawnListRegistry(worldProperties, biomeGroupRegistry, livingGroupRegistry, creatureTypeRegistry, livingHandlerRegistry, structureHandlerRegistry); biomeSpawnListRegistry.loadFromConfig(modConfigDirectoryFile, importedSpawnList); saveWorldSettings(modConfigDirectoryFile, world); } public WorldProperties worldProperties() { return worldProperties; } public BiomeGroupRegistry biomeGroupRegistry() { return biomeGroupRegistry; } public LivingGroupRegistry livingGroupRegistry() { return livingGroupRegistry; } public CreatureTypeRegistry creatureTypeRegistry() { return creatureTypeRegistry; } public LivingHandlerRegistry livingHandlerRegistry() { return livingHandlerRegistry; } public StructureHandlerRegistry structureHandlerRegistry() { return structureHandlerRegistry; } public BiomeSpawnListRegistry biomeSpawnListRegistry() { return biomeSpawnListRegistry; } }