diff --git a/src/main/java/biomesoplenty/common/biome/BiomeConfigData.java b/src/main/java/biomesoplenty/common/biome/BiomeConfigData.java index ccc06dc20..04fd7c486 100644 --- a/src/main/java/biomesoplenty/common/biome/BiomeConfigData.java +++ b/src/main/java/biomesoplenty/common/biome/BiomeConfigData.java @@ -10,6 +10,7 @@ package biomesoplenty.common.biome; import com.google.common.collect.Maps; import com.google.gson.annotations.SerializedName; +import java.util.Map; import java.util.TreeMap; public class BiomeConfigData @@ -20,8 +21,8 @@ public class BiomeConfigData @SerializedName("sub_biome_weights") public TreeMap subBiomeEntries = Maps.newTreeMap(); - //@SerializedName("island_biome_weights") - //public Map islandBiomeEntries = Maps.newHashMap(); + @SerializedName("island_biome_toggles") + public Map islandBiomeEntries = Maps.newHashMap(); @SerializedName("vanilla_biome_weights") public TreeMap vanillaBiomeEntries = Maps.newTreeMap(); @@ -36,6 +37,16 @@ public class BiomeConfigData } } + public static class ToggleableBiomeEntry + { + public boolean enabled; + + public ToggleableBiomeEntry(boolean enabled) + { + this.enabled = enabled; + } + } + public static class SubBiomeEntry { public int weight; diff --git a/src/main/java/biomesoplenty/common/biome/BiomeRegistry.java b/src/main/java/biomesoplenty/common/biome/BiomeRegistry.java index 0ec147b4e..d74c3922e 100644 --- a/src/main/java/biomesoplenty/common/biome/BiomeRegistry.java +++ b/src/main/java/biomesoplenty/common/biome/BiomeRegistry.java @@ -33,7 +33,7 @@ import java.util.function.Consumer; public class BiomeRegistry { - private static final String CONFIG_FILE_NAME = "biome_weights.json"; + private static final String CONFIG_FILE_NAME = "biomes.json"; private static Map> deferrances = Maps.newHashMap(); @@ -161,49 +161,50 @@ public class BiomeRegistry public static void configureIslandBiomes() { // Island biomes are currently not configurable due to them being registered multiple times for different climates -// List islandBiomeReistrations = deferrances.get(RegistrationType.ISLAND_BIOME); -// Map defaultIslandBiomeEntries = Maps.newTreeMap(); -// Map regDataMap = Maps.newHashMap(); -// -// for (DeferredRegistration registration : islandBiomeReistrations) -// { -// IslandBiomeRegistrationData regData = registration.regData; -// String biomeName = registration.regData.getBiome().delegate.name().toString(); -// defaultIslandBiomeEntries.put(biomeName, new BiomeConfigData.IslandBiomeEntry(regData.getWeight())); -// regDataMap.put(biomeName, registration.regData); -// } -// -// BiomeConfigData defaultConfigData = new BiomeConfigData(); -// defaultConfigData.islandBiomeEntries = defaultIslandBiomeEntries; -// BiomeConfigData configData = getConfigData(defaultConfigData); -// -// Map revisedIslandBiomeEntries = Maps.newHashMap(defaultIslandBiomeEntries); -// -// // Merge the config file with the default values -// for (Map.Entry biomeEntry : configData.islandBiomeEntries.entrySet()) -// { -// if (revisedIslandBiomeEntries.containsKey(biomeEntry.getKey())) -// { -// revisedIslandBiomeEntries.put(biomeEntry.getKey(), biomeEntry.getValue()); -// } -// } -// -// // Write back to the config file -// configData.islandBiomeEntries = revisedIslandBiomeEntries; -// JsonUtil.writeFile(getConfigFile(), configData); -// -// for (Map.Entry biomeEntry : configData.islandBiomeEntries.entrySet()) -// { -// String name = biomeEntry.getKey(); -// BiomeConfigData.IslandBiomeEntry islandBiomeEntry = biomeEntry.getValue(); -// -// // Replace the default values for this biome with those from the config file -// if (regDataMap.containsKey(name)) -// { -// IslandBiomeRegistrationData registrationData = regDataMap.get(name); -// registrationData.setWeight(islandBiomeEntry.weight); -// } -// } + List islandBiomeReistrations = deferrances.get(RegistrationType.ISLAND_BIOME); + Map defaultBiomeEntries = Maps.newTreeMap(); + + for (DeferredRegistration registration : islandBiomeReistrations) + { + SingleClimateRegistrationData regData = registration.regData; + String biomeName = regData.getBiome().delegate.name().toString(); + defaultBiomeEntries.put(biomeName, new BiomeConfigData.ToggleableBiomeEntry(true)); + } + + BiomeConfigData defaultConfigData = new BiomeConfigData(); + defaultConfigData.islandBiomeEntries = defaultBiomeEntries; + BiomeConfigData configData = getConfigData(defaultConfigData); + + Map revisedBiomeEntries = Maps.newHashMap(defaultBiomeEntries); + + // Merge the config file with the default values + for (Map.Entry biomeEntry : configData.islandBiomeEntries.entrySet()) + { + if (revisedBiomeEntries.containsKey(biomeEntry.getKey())) + { + revisedBiomeEntries.put(biomeEntry.getKey(), biomeEntry.getValue()); + } + } + + // Write back to the config file + configData.islandBiomeEntries = revisedBiomeEntries; + JsonUtil.writeFile(getConfigFile(), configData); + + for (DeferredRegistration registration : islandBiomeReistrations) + { + SingleClimateRegistrationData regData = registration.regData; + String biomeName = regData.getBiome().delegate.name().toString(); + + if (revisedBiomeEntries.containsKey(biomeName)) + { + BiomeConfigData.ToggleableBiomeEntry entry = revisedBiomeEntries.get(biomeName); + + if (!entry.enabled) + { + registration.regData.setWeight(0); + } + } + } } public static void configureVanillaBiomes() diff --git a/src/main/java/biomesoplenty/init/ModBiomes.java b/src/main/java/biomesoplenty/init/ModBiomes.java index bbc1a33bf..cd22db160 100644 --- a/src/main/java/biomesoplenty/init/ModBiomes.java +++ b/src/main/java/biomesoplenty/init/ModBiomes.java @@ -154,7 +154,7 @@ public class ModBiomes registerIslandBiome(tropics, BOPClimates.TROPICAL, 50); registerIslandBiome(tropics, BOPClimates.HOT_DESERT, 50); - //BiomeRegistry.configureIslandBiomes(); + BiomeRegistry.configureIslandBiomes(); BiomeRegistry.finalizeRegistrations(BiomeRegistry.RegistrationType.ISLAND_BIOME); // Set up vanilla biomes