diff --git a/common/src/main/java/com/viaversion/viaversion/util/Config.java b/common/src/main/java/com/viaversion/viaversion/util/Config.java index acd5a6cd3..86f3adf7a 100644 --- a/common/src/main/java/com/viaversion/viaversion/util/Config.java +++ b/common/src/main/java/com/viaversion/viaversion/util/Config.java @@ -66,14 +66,26 @@ public abstract class Config { return getClass().getClassLoader().getResource("assets/viaversion/config.yml"); } + public InputStream getDefaultConfigInputStream() { + return getClass().getClassLoader().getResourceAsStream("assets/viaversion/config.yml"); + } + public Map loadConfig(File location) { - return loadConfig(location, getDefaultConfigURL()); + final URL defaultConfigUrl = getDefaultConfigURL(); + if (defaultConfigUrl != null) { + return loadConfig(location, defaultConfigUrl); + } + return loadConfig(location, this::getDefaultConfigInputStream); } public synchronized Map loadConfig(File location, URL jarConfigFile) { + return loadConfig(location, jarConfigFile::openStream); + } + + private synchronized Map loadConfig(File location, InputStreamSupplier configSupplier) { List unsupported = getUnsupportedOptions(); try { - commentStore.storeComments(jarConfigFile.openStream()); + commentStore.storeComments(configSupplier.get()); for (String option : unsupported) { List comments = commentStore.header(option); if (comments != null) { @@ -96,7 +108,7 @@ public abstract class Config { } Map defaults = config; - try (InputStream stream = jarConfigFile.openStream()) { + try (InputStream stream = configSupplier.get()) { defaults = (Map) YAML.get().load(stream); for (String option : unsupported) { defaults.remove(option); diff --git a/common/src/main/java/com/viaversion/viaversion/util/InputStreamSupplier.java b/common/src/main/java/com/viaversion/viaversion/util/InputStreamSupplier.java new file mode 100644 index 000000000..45174aefc --- /dev/null +++ b/common/src/main/java/com/viaversion/viaversion/util/InputStreamSupplier.java @@ -0,0 +1,27 @@ +/* + * This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion + * Copyright (C) 2016-2024 ViaVersion and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package com.viaversion.viaversion.util; + +import java.io.IOException; +import java.io.InputStream; + +@FunctionalInterface +public interface InputStreamSupplier { + + InputStream get() throws IOException; +} diff --git a/gradle.properties b/gradle.properties index 80e034af6..3a85ca58e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,7 @@ projectVersion=4.10.0-24w03b-SNAPSHOT mcVersions=1.20.4, 1.20.3, 1.20.2, 1.20.1, 1.20, 1.19.4, 1.19.3, 1.19.2, 1.19.1, 1.19, 1.18.2, 1.18.1, 1.18, 1.17.1, 1.17, 1.16.5, 1.16.4, 1.16.3, 1.16.2, 1.16.1, 1.16, 1.15.2, 1.15.1, 1.15, 1.14.4, 1.14.3, 1.14.2, 1.14.1, 1.14, 1.13.2, 1.13.1, 1.13, 1.12.2, 1.12.1, 1.12, 1.11.2, 1.11.1, 1.11, 1.10.2, 1.10.1, 1.10, 1.9.4, 1.9.3, 1.9.2, 1.9.1, 1.9, 1.8.9 mcVersionRange=1.8-1.20.4 waterfallVersion=1.20 -velocityVersion=3.2 +velocityVersion=3.3 # Gradle properties org.gradle.daemon=true