diff --git a/CommonCore/Data/src/de/steamwar/data/YMLWrapper.java b/CommonCore/Data/src/de/steamwar/data/YMLWrapper.java index 7e9df6b4..9ccf0700 100644 --- a/CommonCore/Data/src/de/steamwar/data/YMLWrapper.java +++ b/CommonCore/Data/src/de/steamwar/data/YMLWrapper.java @@ -25,6 +25,7 @@ import java.io.File; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Function; import java.util.stream.Collectors; @@ -55,13 +56,23 @@ public abstract class YMLWrapper { public abstract String getDefaultGameName(); - public abstract String getString(String path, String defaultValue); + public abstract T get(String path, T defaultValue, Function mapper); - public abstract int getInt(String path, int defaultValue); + public String getString(String path, String defaultValue) { + return get(path, defaultValue, Objects::toString); + } - public abstract double getDouble(String path, double defaultValue); + public int getInt(String path, int defaultValue) { + return get(path, defaultValue, Integer.class::cast); + } - public abstract boolean getBoolean(String path, boolean defaultValue); + public double getDouble(String path, double defaultValue) { + return get(path, defaultValue, Double.class::cast); + } + + public boolean getBoolean(String path, boolean defaultValue) { + return get(path, defaultValue, Boolean.class::cast); + } public final ST getSchematicType(String path, String defaultValue) { String schematicType = getString(path, defaultValue); diff --git a/SchematicSystem/SchematicSystem_Core/src/de/steamwar/schematicsystem/CheckSchemTypeManager.java b/SchematicSystem/SchematicSystem_Core/src/de/steamwar/schematicsystem/CheckSchemTypeManager.java index 2b0e8317..f881ce51 100644 --- a/SchematicSystem/SchematicSystem_Core/src/de/steamwar/schematicsystem/CheckSchemTypeManager.java +++ b/SchematicSystem/SchematicSystem_Core/src/de/steamwar/schematicsystem/CheckSchemTypeManager.java @@ -36,7 +36,6 @@ public class CheckSchemTypeManager { static { File folder = new File(SchematicSystem.getInstance().getDataFolder().getParentFile(), "FightSystem"); - if(folder.exists()) { for(File configFile : folder.listFiles((file, name) -> name.endsWith(".yml") && !name.endsWith(".kits.yml"))) { GameModeConfig gameModeConfig = new GameModeConfig<>(YMLWrapperImpl.ofTyped(configFile)); diff --git a/SpigotCore/SpigotCore_Main/src/de/steamwar/data/YMLWrapperImpl.java b/SpigotCore/SpigotCore_Main/src/de/steamwar/data/YMLWrapperImpl.java index 78a050a6..2f07b6b2 100644 --- a/SpigotCore/SpigotCore_Main/src/de/steamwar/data/YMLWrapperImpl.java +++ b/SpigotCore/SpigotCore_Main/src/de/steamwar/data/YMLWrapperImpl.java @@ -101,27 +101,13 @@ public class YMLWrapperImpl extends YMLWrapper { } @Override - public String getString(String path, String defaultValue) { + public T get(String path, T defaultValue, Function mapper) { if (config == null) return defaultValue; - return config.getString(pathPrefix + path, defaultValue); - } - - @Override - public int getInt(String path, int defaultValue) { - if (config == null) return defaultValue; - return config.getInt(pathPrefix + path, defaultValue); - } - - @Override - public double getDouble(String path, double defaultValue) { - if (config == null) return defaultValue; - return config.getDouble(pathPrefix + path, defaultValue); - } - - @Override - public boolean getBoolean(String path, boolean defaultValue) { - if (config == null) return defaultValue; - return config.getBoolean(pathPrefix + path, defaultValue); + try { + return mapper.apply(config.get(path, defaultValue)); + } catch (ClassCastException e) { + return defaultValue; + } } @Override diff --git a/VelocityCore/src/de/steamwar/data/YMLWrapperImpl.java b/VelocityCore/src/de/steamwar/data/YMLWrapperImpl.java index 272b018d..c58c4708 100644 --- a/VelocityCore/src/de/steamwar/data/YMLWrapperImpl.java +++ b/VelocityCore/src/de/steamwar/data/YMLWrapperImpl.java @@ -88,41 +88,12 @@ public class YMLWrapperImpl extends YMLWrapper { } @Override - public String getString(String path, String defaultValue) { + public T get(String path, T defaultValue, Function mapper) { Object value = this.document.get(path); - if (value instanceof String) { - return (String) value; - } else { - return defaultValue; - } - } - - @Override - public int getInt(String path, int defaultValue) { - Object value = this.document.get(path); - if (value instanceof Integer) { - return (Integer) value; - } else { - return defaultValue; - } - } - - @Override - public double getDouble(String path, double defaultValue) { - Object value = this.document.get(path); - if (value instanceof Double) { - return (Double) value; - } else { - return defaultValue; - } - } - - @Override - public boolean getBoolean(String path, boolean defaultValue) { - Object value = this.document.get(path); - if (value instanceof Boolean) { - return (Boolean) value; - } else { + if (value == null) return defaultValue; + try { + return mapper.apply(value); + } catch (ClassCastException e) { return defaultValue; } }