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
public ScreenHandlerType<?> getType() {
BetterEnd.LOGGER.info("End Stone Smelter: requested Handler Type: {}", HANDLER_TYPE);
return HANDLER_TYPE;
}

View file

@ -1,5 +1,6 @@
package ru.betterend.config;
import java.lang.reflect.Type;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Supplier;
@ -7,11 +8,15 @@ import java.util.function.Supplier;
import org.jetbrains.annotations.Nullable;
import com.google.common.collect.Maps;
import com.google.common.reflect.TypeToken;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import net.minecraft.util.Identifier;
import net.minecraft.util.JsonHelper;
import ru.betterend.util.JsonFactory;
public final class ConfigKeeper {
private Map<ConfigKey, Entry<?>> configEntries = Maps.newHashMap();
@ -44,43 +49,35 @@ public final class ConfigKeeper {
}
String paramKey = paramId.getPath();
paramKey += " [default: " + entry.getDefault() + "]";
if (value instanceof Boolean) {
jsonCategory.addProperty(paramKey, (Boolean) value);
} else if (value instanceof Number) {
jsonCategory.addProperty(paramKey, (Number) value);
} else {
jsonCategory.addProperty(paramKey, entry.asString(value));
}
entry.toJson(jsonCategory, paramKey, value);
}
@SuppressWarnings("unchecked")
private <T, E extends Entry<T>> T getValue(ConfigKey key, E entry) {
T defaultVal = entry.getDefault();
if (configObject == null) return defaultVal;
if (configObject == null) {
return entry.getDefault();
}
Identifier categoryId = key.getCategory();
Identifier paramId = key.getParameter();
String group = categoryId.getPath();
if (!configObject.has(group)) return defaultVal;
if (!configObject.has(group)) {
return entry.getDefault();
}
JsonObject jsonGroup = JsonHelper.getObject(configObject, group);
String category = paramId.getNamespace();
if (!jsonGroup.has(category)) return defaultVal;
if (!jsonGroup.has(category)) {
return entry.getDefault();
}
JsonObject jsonCategory = JsonHelper.getObject(jsonGroup, category);
String paramKey = paramId.getPath();
paramKey += " [default: " + entry.getDefault() + "]";
if (!jsonCategory.has(paramKey)) return defaultVal;
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();
if (!jsonCategory.has(paramKey)) {
return entry.getDefault();
}
return entry.fromString(JsonHelper.getString(jsonCategory, paramKey));
return entry.fromJson(jsonCategory.get(paramKey));
}
@Nullable
@ -113,13 +110,13 @@ public final class ConfigKeeper {
}
@Override
public String asString(Boolean value) {
return value ? "true" : "false";
public Boolean fromJson(JsonElement json) {
return json.getAsBoolean();
}
@Override
public Boolean fromString(String value) {
return value.equals("true") ? true : false;
public void toJson(JsonObject json, String key, Boolean value) {
json.addProperty(key, value);
}
}
@ -130,13 +127,13 @@ public final class ConfigKeeper {
}
@Override
public Float fromString(String value) {
return Float.valueOf(value);
public Float fromJson(JsonElement json) {
return json.getAsFloat();
}
@Override
public String asString(Float value) {
return Float.toString(value);
public void toJson(JsonObject json, String key, Float value) {
json.addProperty(key, value);
}
}
@ -147,13 +144,13 @@ public final class ConfigKeeper {
}
@Override
public Float fromString(String value) {
return Float.valueOf(value);
public Float fromJson(JsonElement json) {
return json.getAsFloat();
}
@Override
public String asString(Float value) {
return Float.toString(value);
public void toJson(JsonObject json, String key, Float value) {
json.addProperty(key, value);
}
}
@ -169,13 +166,13 @@ public final class ConfigKeeper {
}
@Override
public Integer fromString(String value) {
return Integer.parseInt(value);
public Integer fromJson(JsonElement json) {
return json.getAsInt();
}
@Override
public String asString(Integer value) {
return Integer.toString(value);
public void toJson(JsonObject json, String key, Integer value) {
json.addProperty(key, value);
}
}
@ -186,13 +183,13 @@ public final class ConfigKeeper {
}
@Override
public Integer fromString(String value) {
return Integer.parseInt(value);
public Integer fromJson(JsonElement json) {
return json.getAsInt();
}
@Override
public String asString(Integer value) {
return Integer.toString(value);
public void toJson(JsonObject json, String key, Integer value) {
json.addProperty(key, value);
}
}
@ -203,21 +200,25 @@ public final class ConfigKeeper {
}
@Override
public String fromString(String value) {
return value;
public String fromJson(JsonElement json) {
return json.getAsString();
}
@Override
public String asString(String value) {
return value;
public void toJson(JsonObject json, String key, String value) {
json.addProperty(key, value);
}
}
public static class EnumEntry<T extends Enum<T>> extends Entry<T> {
private Type type;
public EnumEntry(T defaultValue) {
super(defaultValue);
this.type = new TypeToken<T>(){
private static final long serialVersionUID = 1L;}.getType();
}
@Override
@ -226,14 +227,13 @@ public final class ConfigKeeper {
}
@Override
@SuppressWarnings("unchecked")
public T fromString(String value) {
return (T) Enum.valueOf(defaultValue.getClass(), value);
public T fromJson(JsonElement json) {
return JsonFactory.GSON.fromJson(json, type);
}
@Override
public String asString(T value) {
return value.name();
public void toJson(JsonObject json, String key, T value) {
json.addProperty(key, JsonFactory.GSON.toJson(json, type));
}
}
@ -267,8 +267,8 @@ public final class ConfigKeeper {
protected Consumer<T> writer;
protected Supplier<T> reader;
public abstract T fromString(String value);
public abstract String asString(T value);
public abstract T fromJson(JsonElement json);
public abstract void toJson(JsonObject json, String key, T value);
public Entry (T defaultValue) {
this.defaultValue = defaultValue;