diff --git a/common-files/src/main/resources/translations/zh_cn.yml b/common-files/src/main/resources/translations/zh_cn.yml index 160e44580..bd6ace4e4 100644 --- a/common-files/src/main/resources/translations/zh_cn.yml +++ b/common-files/src/main/resources/translations/zh_cn.yml @@ -88,22 +88,22 @@ warning.config.type.vector3f: "在文件 发现问题 - 无法 warning.config.type.vec3d: "在文件 发现问题 - 无法加载 '': 无法将 '' 转换为双精度浮点数三维向量类型 (选项 '')" warning.config.type.map: "在文件 发现问题 - 无法加载 '': 无法将 '' 转换为映射类型 (选项 '')" warning.config.type.snbt.invalid_syntax: "在文件 发现问题 - 无法加载 '': 无效的 SNBT 语法 ''" -warning.config.type.snbt.invalid_syntax.parse_error: ", 位于第 个字符: " +warning.config.type.snbt.invalid_syntax.parse_error: ",位于第个字符:" warning.config.type.snbt.invalid_syntax.here: "<--[此处]" -warning.config.type.snbt.parser.expected_string_uuid: "应为表示有效 UUID 的字符串" +warning.config.type.snbt.parser.expected_string_uuid: "应为表示有效UUID的字符串" warning.config.type.snbt.parser.expected_number_or_boolean: "应为数字或布尔型" warning.config.type.snbt.parser.trailing: "多余的尾随数据" warning.config.type.snbt.parser.expected.compound: "应为复合标签" -warning.config.type.snbt.parser.number_parse_failure: "解析数字失败: " -warning.config.type.snbt.parser.expected_hex_escape: "字符字面量长度应为 " -warning.config.type.snbt.parser.invalid_codepoint: "无效的 Unicode 字符码位: " +warning.config.type.snbt.parser.number_parse_failure: "解析数字失败:" +warning.config.type.snbt.parser.expected_hex_escape: "字符字面量长度应为" +warning.config.type.snbt.parser.invalid_codepoint: "无效的Unicode字符码位:" warning.config.type.snbt.parser.no_such_operation: "不存在的操作: " warning.config.type.snbt.parser.expected_integer_type: "应为整数" warning.config.type.snbt.parser.expected_float_type: "应为浮点数" warning.config.type.snbt.parser.expected_non_negative_number: "应为非负数" -warning.config.type.snbt.parser.invalid_character_name: "无效的 Unicode 字符名称" +warning.config.type.snbt.parser.invalid_character_name: "无效的Unicode字符名称" warning.config.type.snbt.parser.invalid_array_element_type: "无效的数组元素类型" -warning.config.type.snbt.parser.invalid_unquoted_start: "无引号字符串不能以数字 0-9、+ 或 - 开头" +warning.config.type.snbt.parser.invalid_unquoted_start: "无引号字符串不能以数字0-9、+或-开头" warning.config.type.snbt.parser.expected_unquoted_string: "应为有效的无引号字符串" warning.config.type.snbt.parser.invalid_string_contents: "无效的字符串内容" warning.config.type.snbt.parser.expected_binary_numeral: "应为二进制数" @@ -111,9 +111,9 @@ warning.config.type.snbt.parser.underscore_not_allowed: "数字的开头 warning.config.type.snbt.parser.expected_decimal_numeral: "应为十进制数" warning.config.type.snbt.parser.expected_hex_numeral: "应为十六进制数" warning.config.type.snbt.parser.empty_key: "键不能为空" -warning.config.type.snbt.parser.leading_zero_not_allowed: "十进制数不能以 0 开头" +warning.config.type.snbt.parser.leading_zero_not_allowed: "十进制数不能以0开头" warning.config.type.snbt.parser.infinity_not_allowed: "不允许使用非有限数的数值" -warning.config.type.snbt.parser.incorrect: "应为字面量 " +warning.config.type.snbt.parser.incorrect: "应为字面量" warning.config.number.missing_type: "在文件 发现问题 - 配置项 '' 缺少数字类型所需的 'type' 参数" warning.config.number.invalid_type: "在文件 发现问题 - 配置项 '' 使用了无效的数字类型 ''" warning.config.number.missing_argument: "在文件 发现问题 - 配置项 '' 缺少数字参数" diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ComponentsModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ComponentsModifier.java index 113f33324..e5f551690 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ComponentsModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ComponentsModifier.java @@ -46,7 +46,7 @@ public class ComponentsModifier implements ItemDataModifier { } else if (string.startsWith("(snbt) ")) { String snbt = string.substring("(snbt) ".length()); try { - return TagParser.parseCompoundFully(snbt); + return TagParser.parseTagFully(snbt); } catch (CommandSyntaxException e) { throw new LocalizedResourceConfigException("warning.config.type.snbt.invalid_syntax", e.getMessage()); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/snbt/TagParser.java b/core/src/main/java/net/momirealms/craftengine/core/util/snbt/TagParser.java index d399e6151..f963c635a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/snbt/TagParser.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/snbt/TagParser.java @@ -15,6 +15,7 @@ import net.momirealms.sparrow.nbt.codec.LegacyJavaOps; import net.momirealms.sparrow.nbt.codec.LegacyNBTOps; import net.momirealms.sparrow.nbt.codec.NBTOps; +@SuppressWarnings("unused") public class TagParser { public static final SimpleCommandExceptionType ERROR_TRAILING_DATA = new LocalizedSimpleCommandExceptionType( new LocalizedMessage("warning.config.type.snbt.parser.trailing") @@ -24,8 +25,8 @@ public class TagParser { ); public static final char ELEMENT_SEPARATOR = ','; public static final char NAME_VALUE_SEPARATOR = ':'; - private static final TagParser NBT_OPS_PARSER = create(VersionHelper.isOrAbove1_20_5() ? NBTOps.INSTANCE : LegacyNBTOps.INSTANCE); - private static final TagParser JAVA_OPS_PARSER = create(VersionHelper.isOrAbove1_20_5() ? JavaOps.INSTANCE : LegacyJavaOps.INSTANCE); + public static final TagParser NBT_OPS_PARSER = create(VersionHelper.isOrAbove1_20_5() ? NBTOps.INSTANCE : LegacyNBTOps.INSTANCE); + public static final TagParser JAVA_OPS_PARSER = create(VersionHelper.isOrAbove1_20_5() ? JavaOps.INSTANCE : LegacyJavaOps.INSTANCE); private final DynamicOps ops; private final Grammar grammar; @@ -48,15 +49,20 @@ public class TagParser { } throw ERROR_EXPECTED_COMPOUND.createWithContext(reader); } - public static CompoundTag parseCompoundFully(String input) throws CommandSyntaxException { StringReader reader = new StringReader(input); - return parseCompoundAsArgument(reader); + Tag result = NBT_OPS_PARSER.parseFully(reader); + return castToCompoundOrThrow(reader, result); + } + + public static Tag parseTagFully(String input) throws CommandSyntaxException { + StringReader reader = new StringReader(input); + return NBT_OPS_PARSER.parseFully(reader); } public static Object parseObjectFully(String input) throws CommandSyntaxException { StringReader reader = new StringReader(input); - return parseObjectAsArgument(reader); + return JAVA_OPS_PARSER.parseFully(reader); } public T parseFully(String input) throws CommandSyntaxException { @@ -77,8 +83,12 @@ public class TagParser { } public static CompoundTag parseCompoundAsArgument(StringReader reader) throws CommandSyntaxException { - Tag tag = NBT_OPS_PARSER.parseAsArgument(reader); - return castToCompoundOrThrow(reader, tag); + Tag result = parseTagAsArgument(reader); + return castToCompoundOrThrow(reader, result); + } + + public static Tag parseTagAsArgument(StringReader reader) throws CommandSyntaxException { + return NBT_OPS_PARSER.parseAsArgument(reader); } public static Object parseObjectAsArgument(StringReader reader) throws CommandSyntaxException {