More config refactor. Removed Smelter console spam

This commit is contained in:
Aleksey 2020-12-12 10:42:05 +03:00
parent fd06db2822
commit fb1ef6249f
2 changed files with 53 additions and 54 deletions

View file

@ -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;
} }

View file

@ -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;