Added config for biomes
This commit is contained in:
parent
41e0d1e42a
commit
d382a965e9
10 changed files with 322 additions and 267 deletions
|
@ -1,37 +0,0 @@
|
|||
package ru.betterend.config;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
public class ClientConfig extends Config {
|
||||
|
||||
private static ClientConfig instance;
|
||||
|
||||
public static ClientConfig get() {
|
||||
if (instance == null) {
|
||||
instance = new ClientConfig();
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
private ClientConfig() {
|
||||
JsonObject config = ConfigWriter.load();
|
||||
if (config.size() > 0) {
|
||||
KEEPER.fromJson(config);
|
||||
} else {
|
||||
ConfigWriter.save(KEEPER.toJson());
|
||||
}
|
||||
}
|
||||
|
||||
public void reloadFromDisk() {
|
||||
JsonObject config = ConfigWriter.load();
|
||||
if (config.size() > 0) {
|
||||
KEEPER.fromJson(config);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveChanges() {
|
||||
ConfigWriter.save(KEEPER.toJson());
|
||||
}
|
||||
}
|
|
@ -5,29 +5,29 @@ import ru.betterend.config.ConfigKeeper.*;
|
|||
|
||||
public abstract class Config {
|
||||
|
||||
protected final static ConfigKeeper KEEPER = ConfigKeeper.getInstance();
|
||||
protected final ConfigKeeper configKeeper = new ConfigKeeper();
|
||||
|
||||
public abstract void saveChanges();
|
||||
|
||||
public <E extends Entry<?>> E getEntry(String key) {
|
||||
return KEEPER.getEntry(key);
|
||||
return this.configKeeper.getEntry(key);
|
||||
}
|
||||
|
||||
public <T> T getDefault(String key) {
|
||||
Entry<T> entry = KEEPER.getEntry(key);
|
||||
Entry<T> entry = configKeeper.getEntry(key);
|
||||
return entry != null ? entry.getDefault() : null;
|
||||
}
|
||||
|
||||
public String getString(String key) {
|
||||
String str = KEEPER.getValue(key);
|
||||
String str = configKeeper.getValue(key);
|
||||
return str != null ? str : "";
|
||||
}
|
||||
|
||||
public boolean setString(String key, String value) {
|
||||
try {
|
||||
StringEntry entry = KEEPER.getEntry(key);
|
||||
StringEntry entry = configKeeper.getEntry(key);
|
||||
entry.setValue(value);
|
||||
KEEPER.set(key, entry);
|
||||
this.configKeeper.set(key, entry);
|
||||
|
||||
return true;
|
||||
} catch (NullPointerException ex) {
|
||||
|
@ -38,15 +38,15 @@ public abstract class Config {
|
|||
}
|
||||
|
||||
public int getInt(String key) {
|
||||
Integer val = KEEPER.getValue(key);
|
||||
Integer val = configKeeper.getValue(key);
|
||||
return val != null ? val : 0;
|
||||
}
|
||||
|
||||
public boolean setInt(String key, int value) {
|
||||
try {
|
||||
IntegerEntry entry = KEEPER.getEntry(key);
|
||||
IntegerEntry entry = configKeeper.getEntry(key);
|
||||
entry.setValue(value);
|
||||
KEEPER.set(key, entry);
|
||||
this.configKeeper.set(key, entry);
|
||||
|
||||
return true;
|
||||
} catch (NullPointerException ex) {
|
||||
|
@ -58,9 +58,9 @@ public abstract class Config {
|
|||
|
||||
public <T extends Comparable<T>> boolean setRanged(String key, T value) {
|
||||
try {
|
||||
RangeEntry<T> entry = KEEPER.getEntry(key);
|
||||
RangeEntry<T> entry = configKeeper.getEntry(key);
|
||||
entry.setValue(value);
|
||||
KEEPER.set(key, entry);
|
||||
this.configKeeper.set(key, entry);
|
||||
|
||||
return true;
|
||||
} catch (NullPointerException | ClassCastException ex) {
|
||||
|
@ -71,15 +71,15 @@ public abstract class Config {
|
|||
}
|
||||
|
||||
public float getFloat(String key) {
|
||||
Float val = KEEPER.getValue(key);
|
||||
Float val = configKeeper.getValue(key);
|
||||
return val != null ? val : 0.0F;
|
||||
}
|
||||
|
||||
public boolean setFloat(String key, float value) {
|
||||
try {
|
||||
FloatEntry entry = KEEPER.getEntry(key);
|
||||
FloatEntry entry = configKeeper.getEntry(key);
|
||||
entry.setValue(value);
|
||||
KEEPER.set(key, entry);
|
||||
this.configKeeper.set(key, entry);
|
||||
|
||||
return true;
|
||||
} catch (NullPointerException ex) {
|
||||
|
@ -90,15 +90,15 @@ public abstract class Config {
|
|||
}
|
||||
|
||||
public boolean getBoolean(String key) {
|
||||
Boolean val = KEEPER.getValue(key);
|
||||
Boolean val = configKeeper.getValue(key);
|
||||
return val != null ? val : false;
|
||||
}
|
||||
|
||||
public boolean setBoolean(String key, boolean value) {
|
||||
try {
|
||||
BooleanEntry entry = KEEPER.getEntry(key);
|
||||
BooleanEntry entry = configKeeper.getEntry(key);
|
||||
entry.setValue(value);
|
||||
KEEPER.set(key, entry);
|
||||
this.configKeeper.set(key, entry);
|
||||
|
||||
return true;
|
||||
} catch (NullPointerException ex) {
|
||||
|
|
|
@ -13,48 +13,9 @@ import ru.betterend.BetterEnd;
|
|||
|
||||
public final class ConfigKeeper {
|
||||
|
||||
private static ConfigKeeper instance;
|
||||
public static ConfigKeeper getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new ConfigKeeper();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
private Map<String, Entry<?>> configEntries = new HashMap<>();
|
||||
|
||||
private ConfigKeeper() {}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public <E extends Entry<?>> E getEntry(String key) {
|
||||
Entry<?> entry = this.configEntries.get(key);
|
||||
if (entry == null) {
|
||||
BetterEnd.LOGGER.warning(String.format("Entry '%s' doesn't exists.", key));
|
||||
return null;
|
||||
}
|
||||
return (E) entry;
|
||||
}
|
||||
|
||||
public <T> T getValue(String key) {
|
||||
Entry<T> entry = this.getEntry(key);
|
||||
if (entry == null) {
|
||||
BetterEnd.LOGGER.warning(String.format("Empty value will be returned.", key));
|
||||
return null;
|
||||
}
|
||||
return entry.getValue();
|
||||
}
|
||||
|
||||
public void set(String key, Entry<?> entry) {
|
||||
configEntries.put(key, entry);
|
||||
}
|
||||
|
||||
public <T extends Entry<?>> void registerEntry(String key, T entry) {
|
||||
configEntries.put(key, entry);
|
||||
}
|
||||
|
||||
public JsonElement toJson() {
|
||||
JsonObject jsonObject = new JsonObject();
|
||||
|
||||
public JsonElement toJson(JsonObject jsonObject) {
|
||||
for (String param : configEntries.keySet()) {
|
||||
jsonObject.addProperty(param, configEntries.get(param).asString());
|
||||
}
|
||||
|
@ -71,6 +32,33 @@ public final class ConfigKeeper {
|
|||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public <E extends Entry<?>> E getEntry(String key) {
|
||||
Entry<?> entry = this.configEntries.get(key);
|
||||
if (entry == null) {
|
||||
BetterEnd.LOGGER.warning(String.format("Entry '%s' doesn't exists.", key));
|
||||
return null;
|
||||
}
|
||||
return (E) entry;
|
||||
}
|
||||
|
||||
public <T> T getValue(String key) {
|
||||
Entry<T> entry = this.getEntry(key);
|
||||
if (entry == null) {
|
||||
BetterEnd.LOGGER.warning("Empty value will be returned.");
|
||||
return null;
|
||||
}
|
||||
return entry.getValue();
|
||||
}
|
||||
|
||||
public void set(String key, Entry<?> entry) {
|
||||
configEntries.put(key, entry);
|
||||
}
|
||||
|
||||
public <T extends Entry<?>> void registerEntry(String key, T entry) {
|
||||
configEntries.put(key, entry);
|
||||
}
|
||||
|
||||
public static class BooleanEntry extends Entry<Boolean> {
|
||||
|
||||
public BooleanEntry(Boolean defaultValue, Consumer<Boolean> consumer, Supplier<Boolean> supplier) {
|
||||
|
@ -94,12 +82,12 @@ public final class ConfigKeeper {
|
|||
|
||||
@Override
|
||||
public String asString() {
|
||||
return getValue() ? "true" : "false";
|
||||
return this.getValue() ? "true" : "false";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fromString(String value) {
|
||||
setValue(value.equals("true") ? true : false);
|
||||
this.setValue(value.equals("true") ? true : false);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -132,7 +120,7 @@ public final class ConfigKeeper {
|
|||
|
||||
@Override
|
||||
public void fromString(String value) {
|
||||
setValue(Float.valueOf(value));
|
||||
this.setValue(Float.valueOf(value));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -155,7 +143,7 @@ public final class ConfigKeeper {
|
|||
|
||||
@Override
|
||||
public void fromString(String value) {
|
||||
setValue(Float.valueOf(value));
|
||||
this.setValue(Float.valueOf(value));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -193,7 +181,7 @@ public final class ConfigKeeper {
|
|||
|
||||
@Override
|
||||
public void fromString(String value) {
|
||||
setValue(Integer.valueOf(value));
|
||||
this.setValue(Integer.valueOf(value));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -216,7 +204,7 @@ public final class ConfigKeeper {
|
|||
|
||||
@Override
|
||||
public void fromString(String value) {
|
||||
setValue(Integer.valueOf(value));
|
||||
this.setValue(Integer.valueOf(value));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -254,7 +242,7 @@ public final class ConfigKeeper {
|
|||
|
||||
@Override
|
||||
public void fromString(String value) {
|
||||
setValue(value);
|
||||
this.setValue(value);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -13,24 +13,51 @@ import ru.betterend.util.JsonFactory;
|
|||
|
||||
public class ConfigWriter {
|
||||
|
||||
private final static FabricLoader fabricLoader = FabricLoader.getInstance();
|
||||
private final static Path GAME_CONFIG_DIR = fabricLoader.getConfigDir();
|
||||
private final static File MOD_CONFIG_DIR = new File(GAME_CONFIG_DIR.toFile(), BetterEnd.MOD_ID);
|
||||
private final static File CONFIG_FILE = new File(MOD_CONFIG_DIR, "settings.json");
|
||||
private final static Path GAME_CONFIG_DIR = FabricLoader.getInstance().getConfigDir();
|
||||
public final static File MOD_CONFIG_DIR = new File(GAME_CONFIG_DIR.toFile(), BetterEnd.MOD_ID);
|
||||
private final static File MAIN_CONFIG_FILE = new File(MOD_CONFIG_DIR, "settings.json");
|
||||
|
||||
private static JsonObject configObject;
|
||||
private static JsonObject mainConfig;
|
||||
|
||||
private ConfigWriter() {}
|
||||
private JsonObject configObject;
|
||||
private File configFile;
|
||||
|
||||
public static JsonObject load() {
|
||||
public JsonObject loadConfig(File configFile) {
|
||||
this.configFile = configFile;
|
||||
if (configObject == null) {
|
||||
configObject = JsonFactory.getJsonObject(CONFIG_FILE);
|
||||
configObject = load(configFile);
|
||||
}
|
||||
|
||||
return configObject;
|
||||
}
|
||||
|
||||
public void saveConfig() {
|
||||
if (configFile == null || configObject == null) {
|
||||
return;
|
||||
}
|
||||
save(configFile, configObject);
|
||||
}
|
||||
|
||||
public static JsonObject load() {
|
||||
if (mainConfig == null) {
|
||||
mainConfig = load(MAIN_CONFIG_FILE);
|
||||
}
|
||||
return mainConfig;
|
||||
}
|
||||
|
||||
public static JsonObject load(File configFile) {
|
||||
return JsonFactory.getJsonObject(configFile);
|
||||
}
|
||||
|
||||
public static void save() {
|
||||
save(MAIN_CONFIG_FILE, mainConfig);
|
||||
}
|
||||
|
||||
public static void save(JsonElement config) {
|
||||
JsonFactory.storeJson(CONFIG_FILE, config);
|
||||
save(MAIN_CONFIG_FILE, config);
|
||||
}
|
||||
|
||||
public static void save(File configFile, JsonElement config) {
|
||||
JsonFactory.storeJson(configFile, config);
|
||||
}
|
||||
}
|
||||
|
|
34
src/main/java/ru/betterend/config/MainConfig.java
Normal file
34
src/main/java/ru/betterend/config/MainConfig.java
Normal file
|
@ -0,0 +1,34 @@
|
|||
package ru.betterend.config;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
public class MainConfig extends Config {
|
||||
|
||||
private static MainConfig instance;
|
||||
|
||||
public static MainConfig getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new MainConfig();
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
private MainConfig() {
|
||||
//TODO: Need to register config params in the Keeper
|
||||
|
||||
JsonObject config = ConfigWriter.load();
|
||||
if (config.size() > 0) {
|
||||
this.configKeeper.fromJson(config);
|
||||
} else {
|
||||
this.configKeeper.toJson(config);
|
||||
ConfigWriter.save();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveChanges() {
|
||||
this.configKeeper.toJson(ConfigWriter.load());
|
||||
ConfigWriter.save();
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package ru.betterend;
|
||||
package ru.betterend.util;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
|
@ -1,4 +1,4 @@
|
|||
package ru.betterend;
|
||||
package ru.betterend.util;
|
||||
|
||||
import java.util.Random;
|
||||
|
43
src/main/java/ru/betterend/world/biome/BiomeConfig.java
Normal file
43
src/main/java/ru/betterend/world/biome/BiomeConfig.java
Normal file
|
@ -0,0 +1,43 @@
|
|||
package ru.betterend.world.biome;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Path;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
import net.minecraft.util.Identifier;
|
||||
import ru.betterend.config.Config;
|
||||
import ru.betterend.config.ConfigWriter;
|
||||
|
||||
public class BiomeConfig extends Config {
|
||||
|
||||
private final static Path BIOME_CONFIG_DIR = ConfigWriter.MOD_CONFIG_DIR.toPath().resolve("biomes");
|
||||
|
||||
private EndBiome biome;
|
||||
private ConfigWriter configWriter;
|
||||
private File configFile;
|
||||
|
||||
public BiomeConfig(EndBiome biome) {
|
||||
this.biome = biome;
|
||||
Identifier biomeId = biome.getID();
|
||||
this.configFile = new File(BIOME_CONFIG_DIR.toFile(), biomeId.getPath());
|
||||
this.configWriter = new ConfigWriter();
|
||||
this.registerEntries();
|
||||
JsonObject config = configWriter.loadConfig(configFile);
|
||||
if (config.size() > 0) {
|
||||
this.configKeeper.fromJson(config);
|
||||
} else {
|
||||
this.configKeeper.toJson(config);
|
||||
this.configWriter.saveConfig();
|
||||
}
|
||||
}
|
||||
|
||||
private void registerEntries() {
|
||||
//TODO: Need to register config params in the Keeper
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveChanges() {
|
||||
this.configWriter.saveConfig();
|
||||
}
|
||||
}
|
|
@ -26,7 +26,7 @@ import net.minecraft.world.gen.feature.ConfiguredFeature;
|
|||
import net.minecraft.world.gen.feature.ConfiguredStructureFeature;
|
||||
import net.minecraft.world.gen.surfacebuilder.ConfiguredSurfaceBuilders;
|
||||
import ru.betterend.BetterEnd;
|
||||
import ru.betterend.MHelper;
|
||||
import ru.betterend.util.MHelper;
|
||||
|
||||
public class BiomeDefinition
|
||||
{
|
||||
|
|
|
@ -4,8 +4,8 @@ import java.util.HashMap;
|
|||
|
||||
import net.minecraft.util.math.ChunkPos;
|
||||
import net.minecraft.world.gen.ChunkRandom;
|
||||
import ru.betterend.MHelper;
|
||||
import ru.betterend.noise.OpenSimplexNoise;
|
||||
import ru.betterend.util.MHelper;
|
||||
import ru.betterend.world.biome.EndBiome;
|
||||
|
||||
public class BiomeMap
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue