More config refactor. Removed Smelter console spam
This commit is contained in:
parent
fd06db2822
commit
fb1ef6249f
2 changed files with 53 additions and 54 deletions
|
@ -62,7 +62,6 @@ public class EndStoneSmelterScreenHandler extends AbstractRecipeScreenHandler<In
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ScreenHandlerType<?> getType() {
|
public ScreenHandlerType<?> getType() {
|
||||||
BetterEnd.LOGGER.info("End Stone Smelter: requested Handler Type: {}", HANDLER_TYPE);
|
|
||||||
return HANDLER_TYPE;
|
return HANDLER_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package ru.betterend.config;
|
package ru.betterend.config;
|
||||||
|
|
||||||
|
import java.lang.reflect.Type;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
@ -7,11 +8,15 @@ import java.util.function.Supplier;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
|
import com.google.common.reflect.TypeToken;
|
||||||
|
import com.google.gson.JsonElement;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.JsonHelper;
|
import net.minecraft.util.JsonHelper;
|
||||||
|
|
||||||
|
import ru.betterend.util.JsonFactory;
|
||||||
|
|
||||||
public final class ConfigKeeper {
|
public final class ConfigKeeper {
|
||||||
|
|
||||||
private Map<ConfigKey, Entry<?>> configEntries = Maps.newHashMap();
|
private Map<ConfigKey, Entry<?>> configEntries = Maps.newHashMap();
|
||||||
|
@ -44,43 +49,35 @@ public final class ConfigKeeper {
|
||||||
}
|
}
|
||||||
String paramKey = paramId.getPath();
|
String paramKey = paramId.getPath();
|
||||||
paramKey += " [default: " + entry.getDefault() + "]";
|
paramKey += " [default: " + entry.getDefault() + "]";
|
||||||
if (value instanceof Boolean) {
|
entry.toJson(jsonCategory, paramKey, value);
|
||||||
jsonCategory.addProperty(paramKey, (Boolean) value);
|
|
||||||
} else if (value instanceof Number) {
|
|
||||||
jsonCategory.addProperty(paramKey, (Number) value);
|
|
||||||
} else {
|
|
||||||
jsonCategory.addProperty(paramKey, entry.asString(value));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
private <T, E extends Entry<T>> T getValue(ConfigKey key, E entry) {
|
private <T, E extends Entry<T>> T getValue(ConfigKey key, E entry) {
|
||||||
T defaultVal = entry.getDefault();
|
if (configObject == null) {
|
||||||
if (configObject == null) return defaultVal;
|
return entry.getDefault();
|
||||||
|
}
|
||||||
|
|
||||||
Identifier categoryId = key.getCategory();
|
Identifier categoryId = key.getCategory();
|
||||||
Identifier paramId = key.getParameter();
|
Identifier paramId = key.getParameter();
|
||||||
String group = categoryId.getPath();
|
String group = categoryId.getPath();
|
||||||
if (!configObject.has(group)) return defaultVal;
|
if (!configObject.has(group)) {
|
||||||
|
return entry.getDefault();
|
||||||
|
}
|
||||||
|
|
||||||
JsonObject jsonGroup = JsonHelper.getObject(configObject, group);
|
JsonObject jsonGroup = JsonHelper.getObject(configObject, group);
|
||||||
String category = paramId.getNamespace();
|
String category = paramId.getNamespace();
|
||||||
if (!jsonGroup.has(category)) return defaultVal;
|
if (!jsonGroup.has(category)) {
|
||||||
|
return entry.getDefault();
|
||||||
|
}
|
||||||
|
|
||||||
JsonObject jsonCategory = JsonHelper.getObject(jsonGroup, category);
|
JsonObject jsonCategory = JsonHelper.getObject(jsonGroup, category);
|
||||||
String paramKey = paramId.getPath();
|
String paramKey = paramId.getPath();
|
||||||
paramKey += " [default: " + entry.getDefault() + "]";
|
paramKey += " [default: " + entry.getDefault() + "]";
|
||||||
if (!jsonCategory.has(paramKey)) return defaultVal;
|
if (!jsonCategory.has(paramKey)) {
|
||||||
|
return entry.getDefault();
|
||||||
|
|
||||||
if (defaultVal instanceof Boolean) {
|
|
||||||
return (T) (Object) jsonCategory.get(paramKey).getAsBoolean();
|
|
||||||
} else if (defaultVal instanceof Integer) {
|
|
||||||
return (T) (Object) jsonCategory.get(paramKey).getAsInt();
|
|
||||||
} else if (defaultVal instanceof Float) {
|
|
||||||
return (T) (Object) jsonCategory.get(paramKey).getAsFloat();
|
|
||||||
}
|
}
|
||||||
return entry.fromString(JsonHelper.getString(jsonCategory, paramKey));
|
|
||||||
|
return entry.fromJson(jsonCategory.get(paramKey));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
|
@ -113,13 +110,13 @@ public final class ConfigKeeper {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String asString(Boolean value) {
|
public Boolean fromJson(JsonElement json) {
|
||||||
return value ? "true" : "false";
|
return json.getAsBoolean();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean fromString(String value) {
|
public void toJson(JsonObject json, String key, Boolean value) {
|
||||||
return value.equals("true") ? true : false;
|
json.addProperty(key, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,13 +127,13 @@ public final class ConfigKeeper {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Float fromString(String value) {
|
public Float fromJson(JsonElement json) {
|
||||||
return Float.valueOf(value);
|
return json.getAsFloat();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String asString(Float value) {
|
public void toJson(JsonObject json, String key, Float value) {
|
||||||
return Float.toString(value);
|
json.addProperty(key, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,13 +144,13 @@ public final class ConfigKeeper {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Float fromString(String value) {
|
public Float fromJson(JsonElement json) {
|
||||||
return Float.valueOf(value);
|
return json.getAsFloat();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String asString(Float value) {
|
public void toJson(JsonObject json, String key, Float value) {
|
||||||
return Float.toString(value);
|
json.addProperty(key, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -169,13 +166,13 @@ public final class ConfigKeeper {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer fromString(String value) {
|
public Integer fromJson(JsonElement json) {
|
||||||
return Integer.parseInt(value);
|
return json.getAsInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String asString(Integer value) {
|
public void toJson(JsonObject json, String key, Integer value) {
|
||||||
return Integer.toString(value);
|
json.addProperty(key, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -186,13 +183,13 @@ public final class ConfigKeeper {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer fromString(String value) {
|
public Integer fromJson(JsonElement json) {
|
||||||
return Integer.parseInt(value);
|
return json.getAsInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String asString(Integer value) {
|
public void toJson(JsonObject json, String key, Integer value) {
|
||||||
return Integer.toString(value);
|
json.addProperty(key, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,21 +200,25 @@ public final class ConfigKeeper {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String fromString(String value) {
|
public String fromJson(JsonElement json) {
|
||||||
return value;
|
return json.getAsString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String asString(String value) {
|
public void toJson(JsonObject json, String key, String value) {
|
||||||
return value;
|
json.addProperty(key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class EnumEntry<T extends Enum<T>> extends Entry<T> {
|
public static class EnumEntry<T extends Enum<T>> extends Entry<T> {
|
||||||
|
|
||||||
|
private Type type;
|
||||||
|
|
||||||
public EnumEntry(T defaultValue) {
|
public EnumEntry(T defaultValue) {
|
||||||
super(defaultValue);
|
super(defaultValue);
|
||||||
|
this.type = new TypeToken<T>(){
|
||||||
|
private static final long serialVersionUID = 1L;}.getType();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -226,14 +227,13 @@ public final class ConfigKeeper {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("unchecked")
|
public T fromJson(JsonElement json) {
|
||||||
public T fromString(String value) {
|
return JsonFactory.GSON.fromJson(json, type);
|
||||||
return (T) Enum.valueOf(defaultValue.getClass(), value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String asString(T value) {
|
public void toJson(JsonObject json, String key, T value) {
|
||||||
return value.name();
|
json.addProperty(key, JsonFactory.GSON.toJson(json, type));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -267,8 +267,8 @@ public final class ConfigKeeper {
|
||||||
protected Consumer<T> writer;
|
protected Consumer<T> writer;
|
||||||
protected Supplier<T> reader;
|
protected Supplier<T> reader;
|
||||||
|
|
||||||
public abstract T fromString(String value);
|
public abstract T fromJson(JsonElement json);
|
||||||
public abstract String asString(T value);
|
public abstract void toJson(JsonObject json, String key, T value);
|
||||||
|
|
||||||
public Entry (T defaultValue) {
|
public Entry (T defaultValue) {
|
||||||
this.defaultValue = defaultValue;
|
this.defaultValue = defaultValue;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue