mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-19 15:09:15 +00:00
添加冲突键警告
This commit is contained in:
@@ -27,7 +27,7 @@ subprojects {
|
||||
expand(rootProject.properties)
|
||||
}
|
||||
|
||||
filesMatching(arrayListOf("commands.yml", "config.yml", "*/*.yml", "ignite.mod.json")) {
|
||||
filesMatching(arrayListOf("commands.yml", "config.yml")) {
|
||||
expand(
|
||||
Pair("project_version", rootProject.properties["project_version"]),
|
||||
Pair("config_version", rootProject.properties["config_version"]),
|
||||
|
||||
@@ -64,6 +64,7 @@ command.upload.on_progress: "<white>Started uploading progress. Check the consol
|
||||
command.send_resource_pack.success.single: "<white>Sent resource pack to <arg:0>.</white>"
|
||||
command.send_resource_pack.success.multiple: "<white>Send resource packs to <arg:0> players.</white>"
|
||||
warning.config.pack.duplicated_files: "</red>Duplicated files Found. Please resolve them through config.yml 'resource-pack.duplicated-files-handler' section.</red>"
|
||||
warning.config.yaml.duplicated_key: "<yellow>Issue found in file <arg:0> - Found duplicated key '<arg:1>' at line <arg:2>.</yellow>"
|
||||
warning.config.type.int: "<yellow>Issue found in file <arg:0> - Failed to load '<arg:1>': Cannot cast '<arg:2>' to integer type for option '<arg:3>'.</yellow>"
|
||||
warning.config.type.float: "<yellow>Issue found in file <arg:0> - Failed to load '<arg:1>': Cannot cast '<arg:2>' to float type for option '<arg:3>'.</yellow>"
|
||||
warning.config.type.double: "<yellow>Issue found in file <arg:0> - Failed to load '<arg:1>': Cannot cast '<arg:2>' to double type for option '<arg:3>'.</yellow>"
|
||||
|
||||
@@ -64,6 +64,7 @@ command.upload.on_progress: "<white>已开始上传进程. 检查控制台以获
|
||||
command.send_resource_pack.success.single: "<white>发送资源包给 <arg:0></white>"
|
||||
command.send_resource_pack.success.multiple: "<white>发送资源包给 <arg:0> 个玩家</white>"
|
||||
warning.config.pack.duplicated_files: "</red>发现重复文件 请通过 config.yml 的 'resource-pack.duplicated-files-handler' 部分解决</red>"
|
||||
warning.config.yaml.duplicated_key: "<yellow>在文件 <arg:0> 发现问题 - 在第<arg:2>行发现重复的键 '<arg:1>'.</yellow>"
|
||||
warning.config.type.int: "<yellow>在文件 <arg:0> 发现问题 - 无法加载 '<arg:1>': 无法将 '<arg:2>' 转换为整数类型 (选项 '<arg:3>')</yellow>"
|
||||
warning.config.type.float: "<yellow>在文件 <arg:0> 发现问题 - 无法加载 '<arg:1>': 无法将 '<arg:2>' 转换为浮点数类型 (选项 '<arg:3>')</yellow>"
|
||||
warning.config.type.double: "<yellow>在文件 <arg:0> 发现问题 - 无法加载 '<arg:1>': 无法将 '<arg:2>' 转换为双精度类型 (选项 '<arg:3>')</yellow>"
|
||||
|
||||
@@ -439,7 +439,6 @@ public abstract class AbstractPackManager implements PackManager {
|
||||
TreeMap<ConfigParser, List<CachedConfigSection>> cachedConfigs = new TreeMap<>();
|
||||
Map<Path, CachedConfigFile> previousFiles = this.cachedConfigFiles;
|
||||
this.cachedConfigFiles = new Object2ObjectOpenHashMap<>(32);
|
||||
Yaml yaml = new Yaml(new StringKeyConstructor(new LoaderOptions()));
|
||||
for (Pack pack : loadedPacks()) {
|
||||
if (!pack.enabled()) continue;
|
||||
Path configurationFolderPath = pack.configurationFolder();
|
||||
@@ -456,6 +455,7 @@ public abstract class AbstractPackManager implements PackManager {
|
||||
AbstractPackManager.this.cachedConfigFiles.put(path, cachedFile);
|
||||
} else {
|
||||
try (InputStreamReader inputStream = new InputStreamReader(Files.newInputStream(path), StandardCharsets.UTF_8)) {
|
||||
Yaml yaml = new Yaml(new StringKeyConstructor(path, new LoaderOptions()));
|
||||
Map<String, Object> data = yaml.load(inputStream);
|
||||
if (data == null) return FileVisitResult.CONTINUE;
|
||||
cachedFile = new CachedConfigFile(data, pack, lastModifiedTime, size);
|
||||
@@ -463,6 +463,10 @@ public abstract class AbstractPackManager implements PackManager {
|
||||
} catch (IOException e) {
|
||||
AbstractPackManager.this.plugin.logger().severe("Error while reading config file: " + path, e);
|
||||
return FileVisitResult.CONTINUE;
|
||||
} catch (LocalizedException e) {
|
||||
e.setArgument(0, path.toString());
|
||||
TranslationManager.instance().log(e.node(), e.arguments());
|
||||
return FileVisitResult.CONTINUE;
|
||||
}
|
||||
}
|
||||
for (Map.Entry<String, Object> entry : cachedFile.config().entrySet()) {
|
||||
@@ -516,7 +520,7 @@ public abstract class AbstractPackManager implements PackManager {
|
||||
TranslationManager.instance().log(e.node(), e.arguments());
|
||||
this.plugin.debug(e::node);
|
||||
} catch (Exception e) {
|
||||
this.plugin.logger().warn("Unexpected error loading file " + cached.filePath() + " - '" + parser.sectionId()[0] + "." + key + "'. Please find the cause according to the stacktrace or seek developer help.", e);
|
||||
this.plugin.logger().warn("Unexpected error loading file " + cached.filePath() + " - '" + parser.sectionId()[0] + "." + key + "'. Please find the cause according to the stacktrace or seek developer help. Additional info: " + GsonHelper.get().toJson(configEntry.getValue()), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.momirealms.craftengine.core.plugin.config;
|
||||
|
||||
import net.momirealms.craftengine.core.plugin.locale.TranslationManager;
|
||||
import org.yaml.snakeyaml.LoaderOptions;
|
||||
import org.yaml.snakeyaml.constructor.SafeConstructor;
|
||||
import org.yaml.snakeyaml.nodes.MappingNode;
|
||||
@@ -7,13 +8,16 @@ import org.yaml.snakeyaml.nodes.Node;
|
||||
import org.yaml.snakeyaml.nodes.NodeTuple;
|
||||
import org.yaml.snakeyaml.nodes.ScalarNode;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class StringKeyConstructor extends SafeConstructor {
|
||||
private final Path path;
|
||||
|
||||
public StringKeyConstructor(LoaderOptions loaderOptions) {
|
||||
public StringKeyConstructor(Path path, LoaderOptions loaderOptions) {
|
||||
super(loaderOptions);
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -24,7 +28,10 @@ public class StringKeyConstructor extends SafeConstructor {
|
||||
Node valueNode = tuple.getValueNode();
|
||||
String key = constructScalar((ScalarNode) keyNode);
|
||||
Object value = constructObject(valueNode);
|
||||
map.put(key, value);
|
||||
Object previous = map.put(key, value);
|
||||
if (previous != null) {
|
||||
TranslationManager.instance().log("warning.config.yaml.duplicated_key", this.path.toString(), key, String.valueOf(node.getStartMark().getLine() + 1));
|
||||
}
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
@@ -213,7 +213,7 @@ public class TranslationManagerImpl implements TranslationManager {
|
||||
options.setIndent(2);
|
||||
options.setSplitLines(false);
|
||||
options.setDefaultScalarStyle(DumperOptions.ScalarStyle.DOUBLE_QUOTED);
|
||||
Yaml yaml = new Yaml(new StringKeyConstructor(new LoaderOptions()), new Representer(options), options);
|
||||
Yaml yaml = new Yaml(new StringKeyConstructor(translationFile, new LoaderOptions()), new Representer(options), options);
|
||||
LinkedHashMap<String, String> newFileContents = new LinkedHashMap<>();
|
||||
try (InputStream is = this.plugin.resourceStream("translations/" + translationFile.getFileName())) {
|
||||
Map<String, String> newMap = yaml.load(is);
|
||||
|
||||
Reference in New Issue
Block a user