Skip to content

Commit 1c44bd2

Browse files
committed
Remove extra configs again and move them into resource-packs and mods
1 parent 4133436 commit 1c44bd2

File tree

8 files changed

+210
-113
lines changed

8 files changed

+210
-113
lines changed

BlueMapCLI/src/main/java/de/bluecolored/bluemap/cli/BlueMapCLI.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,12 @@ public void renderMaps() throws IOException {
8686
Preconditions.checkNotNull(resourcePack);
8787

8888
MainConfig config = configManager.getMainConfig();
89+
configManager.loadResourceConfigs(resourcePack);
8990

9091
config.getWebDataPath().toFile().mkdirs();
9192

9293
Map<String, MapType> maps = new HashMap<>();
9394

94-
configManager.getBlockPropertiesConfig().setResourcePack(resourcePack);
9595
for (MapConfig mapConfig : config.getMapConfigs()) {
9696
File mapPath = new File(mapConfig.getWorldPath());
9797
if (!mapPath.exists() || !mapPath.isDirectory()) {
@@ -214,11 +214,6 @@ private boolean loadResources() throws IOException, ParseResourceException {
214214
resourceExtensionsFile.delete();
215215
FileUtils.copyURLToFile(BlueMapCLI.class.getResource("/resourceExtensions.zip"), resourceExtensionsFile, 10000, 10000);
216216

217-
File blockColorsConfigFile = new File(configFolder, "blockColors.json");
218-
if (!blockColorsConfigFile.exists()) {
219-
FileUtils.copyURLToFile(BlueMapCLI.class.getResource("/blockColors.json"), blockColorsConfigFile, 10000, 10000);
220-
}
221-
222217
//find more resource packs
223218
File resourcePackFolder = configFolder.toPath().resolve("resourcepacks").toFile();
224219
resourcePackFolder.mkdirs();
@@ -233,7 +228,6 @@ private boolean loadResources() throws IOException, ParseResourceException {
233228
resourcePack = new ResourcePack();
234229
if (textureExportFile.exists()) resourcePack.loadTextureFile(textureExportFile);
235230
resourcePack.load(resources);
236-
resourcePack.loadBlockColorConfig(blockColorsConfigFile);
237231
resourcePack.saveTextureFile(textureExportFile);
238232

239233
return true;
@@ -281,7 +275,7 @@ public static void main(String[] args) throws IOException, ParseResourceExceptio
281275

282276
ConfigManager config = new ConfigManager(configFolder, cliConfigUrl, cliDefaultsUrl);
283277
boolean configCreated = !config.getMainConfigFile().exists();
284-
config.loadOrCreateConfigs();
278+
config.loadMainConfig();
285279

286280
if (configCreated) {
287281
Logger.global.logInfo("No config file found! Created default configs here: " + configFolder);

BlueMapCore/src/main/java/de/bluecolored/bluemap/core/config/BlockPropertiesConfig.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,12 @@ public class BlockPropertiesConfig implements BlockPropertiesMapper {
5353

5454
private ResourcePack resourcePack = null;
5555

56-
public BlockPropertiesConfig(ConfigurationNode node) throws IOException {
57-
this(node, null);
56+
public BlockPropertiesConfig(ConfigurationNode node, ResourcePack resourcePack) throws IOException {
57+
this(node, resourcePack, null);
5858
}
5959

60-
public BlockPropertiesConfig(ConfigurationNode node, ConfigurationLoader<? extends ConfigurationNode> autopoulationConfigLoader) throws IOException {
60+
public BlockPropertiesConfig(ConfigurationNode node, ResourcePack resourcePack, ConfigurationLoader<? extends ConfigurationNode> autopoulationConfigLoader) throws IOException {
61+
this.resourcePack = resourcePack;
6162
this.autopoulationConfigLoader = autopoulationConfigLoader;
6263

6364
mappings = MultimapBuilder.hashKeys().arrayListValues().build();
@@ -86,14 +87,6 @@ public BlockPropertiesConfig(ConfigurationNode node, ConfigurationLoader<? exten
8687
});
8788
}
8889

89-
/**
90-
* Sets the {@link ResourcePack} of this PropertyMapper, so it can generate better defaults if the mapping is missing
91-
* @param resourcePack the {@link ResourcePack}
92-
*/
93-
public void setResourcePack(ResourcePack resourcePack) {
94-
this.resourcePack = resourcePack;
95-
}
96-
9790
@Override
9891
public BlockProperties get(BlockState from){
9992
try {

BlueMapCore/src/main/java/de/bluecolored/bluemap/core/config/ConfigManager.java

Lines changed: 104 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import java.io.BufferedReader;
2828
import java.io.File;
2929
import java.io.IOException;
30+
import java.io.InputStream;
3031
import java.io.InputStreamReader;
3132
import java.net.URL;
3233
import java.nio.charset.StandardCharsets;
@@ -37,7 +38,9 @@
3738
import java.util.stream.Collectors;
3839

3940
import de.bluecolored.bluemap.core.BlueMap;
41+
import de.bluecolored.bluemap.core.logger.Logger;
4042
import de.bluecolored.bluemap.core.resourcepack.ResourcePack;
43+
import de.bluecolored.bluemap.core.resourcepack.ResourcePack.Resource;
4144
import ninja.leaping.configurate.ConfigurationNode;
4245
import ninja.leaping.configurate.gson.GsonConfigurationLoader;
4346
import ninja.leaping.configurate.hocon.HoconConfigurationLoader;
@@ -109,20 +112,103 @@ public File getBiomeConfigFile() {
109112
return new File(configFolder, "biomes.json");
110113
}
111114

112-
public void loadOrCreateConfigs() throws IOException {
113-
mainConfig = new MainConfig(loadOrCreate(getMainConfigFile(), defaultMainConfig, mainConfigDefaultValues, true));
115+
public File getBlockColorConfigFile() {
116+
return new File(configFolder, "blockColors.json");
117+
}
118+
119+
public void loadMainConfig() throws IOException {
120+
mainConfig = new MainConfig(
121+
loadOrCreate(
122+
getMainConfigFile(),
123+
defaultMainConfig,
124+
mainConfigDefaultValues,
125+
true,
126+
true
127+
)
128+
);
129+
}
130+
131+
public void loadResourceConfigs(ResourcePack resourcePack) throws IOException {
114132

133+
//load blockColors.json from resources, config-folder and resourcepack
134+
URL blockColorsConfigUrl = BlueMap.class.getResource("/blockColors.json");
135+
ConfigurationNode blockColorsConfigNode = loadOrCreate(
136+
getBlockColorConfigFile(),
137+
null,
138+
blockColorsConfigUrl,
139+
false,
140+
false
141+
);
142+
blockColorsConfigNode = joinFromResourcePack(resourcePack, "blockColors.json", blockColorsConfigNode);
143+
resourcePack.getBlockColorCalculator().loadColorConfig(blockColorsConfigNode);
144+
145+
//load blockIds.json from resources, config-folder and resourcepack
115146
URL blockIdsConfigUrl = BlueMap.class.getResource("/blockIds.json");
116-
blockIdConfig = new BlockIdConfig(loadOrCreate(getBlockIdConfigFile(), null, blockIdsConfigUrl, false), getLoader(makeAutogen(getBlockIdConfigFile())));
117-
147+
ConfigurationNode blockIdsConfigNode = loadOrCreate(
148+
getBlockIdConfigFile(),
149+
null,
150+
blockIdsConfigUrl,
151+
false,
152+
false
153+
);
154+
blockIdsConfigNode = joinFromResourcePack(resourcePack, "blockIds.json", blockIdsConfigNode);
155+
blockIdConfig = new BlockIdConfig(
156+
blockIdsConfigNode,
157+
null //getLoader(makeAutogen(getBlockIdConfigFile()))
158+
);
159+
160+
//load blockProperties.json from resources, config-folder and resourcepack
118161
URL blockPropertiesConfigUrl = BlueMap.class.getResource("/blockProperties.json");
119-
blockPropertiesConfig = new BlockPropertiesConfig(loadOrCreate(getBlockPropertiesConfigFile(), null, blockPropertiesConfigUrl, false), getLoader(makeAutogen(getBlockPropertiesConfigFile())));
162+
ConfigurationNode blockPropertiesConfigNode = loadOrCreate(
163+
getBlockPropertiesConfigFile(),
164+
null,
165+
blockPropertiesConfigUrl,
166+
false,
167+
false
168+
);
169+
blockPropertiesConfigNode = joinFromResourcePack(resourcePack, "blockProperties.json", blockPropertiesConfigNode);
170+
blockPropertiesConfig = new BlockPropertiesConfig(
171+
blockPropertiesConfigNode,
172+
resourcePack,
173+
null //getLoader(makeAutogen(getBlockPropertiesConfigFile()))
174+
);
120175

176+
//load biomes.json from resources, config-folder and resourcepack
121177
URL biomeConfigUrl = BlueMap.class.getResource("/biomes.json");
122-
biomeConfig = new BiomeConfig(loadOrCreate(getBiomeConfigFile(), null, biomeConfigUrl, false), getLoader(makeAutogen(getBiomeConfigFile())));
178+
ConfigurationNode biomeConfigNode = loadOrCreate(
179+
getBiomeConfigFile(),
180+
null,
181+
biomeConfigUrl,
182+
false,
183+
false
184+
);
185+
biomeConfigNode = joinFromResourcePack(resourcePack, "biomes.json", biomeConfigNode);
186+
biomeConfig = new BiomeConfig(
187+
biomeConfigNode,
188+
null //getLoader(makeAutogen(getBiomeConfigFile()))
189+
);
123190
}
124191

125-
private ConfigurationNode loadOrCreate(File configFile, URL defaultConfig, URL defaultValues, boolean usePlaceholders) throws IOException {
192+
private ConfigurationNode joinFromResourcePack(ResourcePack resourcePack, String configFileName, ConfigurationNode defaultConfig) {
193+
ConfigurationNode joinedNode = null;
194+
for (Resource resource : resourcePack.getConfigAdditions(configFileName)) {
195+
try {
196+
ConfigurationNode node = getLoader(configFileName, resource.read()).load();
197+
if (joinedNode == null) joinedNode = node;
198+
else joinedNode.mergeValuesFrom(node);
199+
} catch (IOException ex) {
200+
Logger.global.logWarning("Failed to load an additional " + configFileName + " from the resource-pack! " + ex);
201+
}
202+
}
203+
204+
if (joinedNode == null) return defaultConfig;
205+
206+
joinedNode.mergeValuesFrom(defaultConfig);
207+
208+
return joinedNode;
209+
}
210+
211+
private ConfigurationNode loadOrCreate(File configFile, URL defaultConfig, URL defaultValues, boolean usePlaceholders, boolean generateEmptyConfig) throws IOException {
126212

127213
ConfigurationNode configNode;
128214
if (!configFile.exists()) {
@@ -153,7 +239,7 @@ private ConfigurationNode loadOrCreate(File configFile, URL defaultConfig, URL d
153239
configNode = loader.createEmptyNode();
154240

155241
//save to create file
156-
loader.save(configNode);
242+
if (generateEmptyConfig) loader.save(configNode);
157243
}
158244
} else {
159245
//load config
@@ -169,11 +255,21 @@ private ConfigurationNode loadOrCreate(File configFile, URL defaultConfig, URL d
169255
return configNode;
170256
}
171257

258+
/*
172259
private File makeAutogen(File file) throws IOException {
173260
File autogenFile = file.getCanonicalFile().toPath().getParent().resolve("generated").resolve(file.getName()).toFile();
174261
autogenFile.getParentFile().mkdirs();
175262
return autogenFile;
176263
}
264+
*/
265+
266+
private ConfigurationLoader<? extends ConfigurationNode> getLoader(String filename, InputStream is){
267+
BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
268+
269+
if (filename.endsWith(".json")) return GsonConfigurationLoader.builder().setSource(() -> reader).build();
270+
if (filename.endsWith(".yaml") || filename.endsWith(".yml")) return YAMLConfigurationLoader.builder().setSource(() -> reader).build();
271+
else return HoconConfigurationLoader.builder().setSource(() -> reader).build();
272+
}
177273

178274
private ConfigurationLoader<? extends ConfigurationNode> getLoader(URL url){
179275
if (url.getFile().endsWith(".json")) return GsonConfigurationLoader.builder().setURL(url).build();

BlueMapCore/src/main/java/de/bluecolored/bluemap/core/resourcepack/BlockColorCalculator.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626

2727
import java.awt.Color;
2828
import java.awt.image.BufferedImage;
29-
import java.io.File;
3029
import java.io.IOException;
3130
import java.util.HashMap;
3231
import java.util.Map;
@@ -43,7 +42,6 @@
4342
import de.bluecolored.bluemap.core.world.Biome;
4443
import de.bluecolored.bluemap.core.world.Block;
4544
import ninja.leaping.configurate.ConfigurationNode;
46-
import ninja.leaping.configurate.gson.GsonConfigurationLoader;
4745

4846
public class BlockColorCalculator {
4947

@@ -59,14 +57,9 @@ public BlockColorCalculator(BufferedImage foliageMap, BufferedImage grassMap) {
5957
this.blockColorMap = new HashMap<>();
6058
}
6159

62-
public void loadColorConfig(File configFile) throws IOException {
60+
public void loadColorConfig(ConfigurationNode colorConfig) throws IOException {
6361
blockColorMap.clear();
6462

65-
ConfigurationNode colorConfig = GsonConfigurationLoader.builder()
66-
.setFile(configFile)
67-
.build()
68-
.load();
69-
7063
for (Entry<Object, ? extends ConfigurationNode> entry : colorConfig.getChildrenMap().entrySet()){
7164
String key = entry.getKey().toString();
7265
String value = entry.getValue().getString();

0 commit comments

Comments
 (0)