From 9b5cf69032f7d6a53dd727aa9282603e5c93eae8 Mon Sep 17 00:00:00 2001 From: ApliNi Date: Sun, 21 Jan 2024 14:04:49 +0800 Subject: [PATCH] =?UTF-8?q?v2.0=20=E6=9B=B4=E6=96=B0=E8=87=AA=E8=BF=B0?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 78 ++++++++++++++---- README_MCBBS.txt | 79 ++++++++++++++----- pom.xml | 2 +- .../UseTranslatedNames.java | 8 +- src/main/resources/config.yml | 1 - src/main/resources/words.yml | 8 +- 6 files changed, 135 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index 247959f..0e6fb6e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ## useTranslatedNames -内置获取翻译名功能的JSON字符串替换插件, 可用于翻译 CoreProtect 等插件的消息 +内置获取翻译名功能的JSON字符串替换插件, 可用于消息替换和翻译 CoreProtect 等插件的消息 ![](https://github.com/ApliNi/useTranslatedNames/blob/main/_img/%E6%95%88%E6%9E%9C%E5%9B%BE.png) @@ -8,35 +8,37 @@ --- ## 功能和指令 -- `/usetranslatednames` 显示插件信息 - - `/usetranslatednames reload` 重新加载配置 - - `/usetranslatednames debug` 调试模式 +- `/utn` 显示插件信息 + - `/utn reload` - 重新加载配置 + - `/utn debug` - 调试模式 插件会根据配置捕获对应的服务端消息, 然后替换其中的物品名称并重新发送消息. 详细信息参考"配置"部分. ### 配置 ```yaml -config-version: 2 -list: +configVersion: 3 + +dev: + # true = 适用于 1.20.4 版本的方法 (需要 ProtocolLib 5.2.0 + # false = 适用于更低版本的旧方法 + listeningMode: true + +list: # 替换列表 # 翻译实体名 :: 24.03/m 前 #**苦力怕** 破坏 草方块 - - inspect-length: 1024 - replace-regex: '\{"text":"#([a-z0-9_]+)§f([^"]+)","color":"#31B0E8"\}' - replace-to: >- + - inspectLength: 1024 + get: '\{"text":"#([a-z0-9_]+)§f([^"]+)","color":"#31B0E8"\}' + set: >- {"text":"§8#"}, {"translate":"_$1:TranslatedName_","color":"#31b0e8"}, {"text":"§f_$2_","color":"#31B0E8"} # 翻译物品 :: 24.03/m 前 #苦力怕 破坏 **草方块** - - inspect-length: 1024 # 检查消息长度是否小于此值 - # 替换, 使用正则表达式匹配 - replace-regex: '\{"text":"([a-z0-9_]+)(?:§f.{0,3})?","color":"#31B0E8"\}' - # _$1_ = 正则匹配到的变量 1, 也可以是 `_$2_` (第 2 个变量)... - # _$1:ItemType_ = 将 _$1_ 用于获取物品类型, 提供给 JSON hoverEvent 使用的物品类型 show_entity, show_item(block) - # _$1:TranslatedName_ = 将 _$1_ 用于名称翻译, 返回与语言路径对应的 KEY, 例如 `entity.minecraft.allay` - replace-to: >- + - inspectLength: 1024 + get: '\{"text":"([a-z0-9_]+)(?:§f.{0,3})?","color":"#31B0E8"\}' + set: >- {"extra":[ {"translate":"_$1:TranslatedName_"}, {"text":" §8_$1_", @@ -47,7 +49,49 @@ list: "clickEvent":{"action":"copy_to_clipboard","value":"_$1_"} } ],"color":"#31b0e8","text":""} + + + # [示例] 所有可用配置 + # [可选, 默认所有玩家] 对拥有该权限的玩家处理这条消息 + - permission: 'minecraft.command' + # [必选] 检查消息长度是否小于此值 + inspectLength: 64 + # [必选] 使用正则表达式匹配 + get: '^\{"text":"","extra":\["Missing required argument (\d+)"\]\}$' + # [必选] 将消息替换为 + # _$1_ = 正则匹配到的变量 1, 也可以是 `_$2_` (第 2 个变量)... + # _$1:ItemType_ = 将 _$1_ 用于获取物品类型, 提供给 JSON hoverEvent 使用的物品类型 show_entity, show_item(block) + # _$1:TranslatedName_ = 将 _$1_ 用于名称翻译, 返回与语言路径对应的 KEY, 例如 `entity.minecraft.allay` + # _$1:Words:组名_ = 将 _$1_ 用于词替换, 需要配置 words.yml + # 其他示例: + # set: >- # YAML 语法中使用 `>-` 可以编写换行的文本, 效果如上 + # set: '' # 如果为空, 则取消发送这条消息 + set: '{"text":"§bIpacEL §f> §b此指令需要至少§a_$1:Words:中文数字_个参数"}' + # [可选, 默认聊天栏] 将消息显示在操作栏 (物品栏上面) + displayPlace: 'ACTION_BAR' + +``` + +```yaml +# 词替换配置文件 +words: + # 创建一个组, 组名不应包含下划线 "_" + 中文数字: + # 添加一个词替换 + # 如果多个词的配置重复, 将会被忽略 + - get: '1' # [必选] 需要匹配的词 + set: '一' # [必选] 替换为 + lang: 'zh_cn' # [可选, 默认直接替换] 当客户端语言与其匹配时进行替换 + + - get: '2' + set: '二' + lang: 'zh_cn' + + - get: '3' + set: '三' + lang: 'zh_cn' + ``` ### 依赖 -- ProtocolLib 5.2.0 +- ProtocolLib diff --git a/README_MCBBS.txt b/README_MCBBS.txt index e03600e..29acb78 100644 --- a/README_MCBBS.txt +++ b/README_MCBBS.txt @@ -5,7 +5,7 @@ https://github.com/ApliNi/useTranslatedNames --- ## useTranslatedNames -内置获取翻译名功能的JSON字符串替换插件, 可用于翻译 CoreProtect 等插件的消息 +内置获取翻译名功能的JSON字符串替换插件, 可用于消息替换和翻译 CoreProtect 等插件的消息 ![](https://github.com/ApliNi/useTranslatedNames/blob/main/_img/%E6%95%88%E6%9E%9C%E5%9B%BE.png) @@ -14,35 +14,37 @@ https://github.com/ApliNi/useTranslatedNames --- ## 功能和指令 -- `/usetranslatednames` 显示插件信息 - - `/usetranslatednames reload` 重新加载配置 - - `/usetranslatednames debug` 调试模式 +- `/utn` 显示插件信息 + - `/utn reload` - 重新加载配置 + - `/utn debug` - 调试模式 插件会根据配置捕获对应的服务端消息, 然后替换其中的物品名称并重新发送消息. 详细信息参考"配置"部分. ### 配置 ```yaml -config-version: 2 -list: +configVersion: 3 + +dev: + # true = 适用于 1.20.4 版本的方法 (需要 ProtocolLib 5.2.0 + # false = 适用于更低版本的旧方法 + listeningMode: true + +list: # 替换列表 # 翻译实体名 :: 24.03/m 前 #**苦力怕** 破坏 草方块 - - inspect-length: 1024 - replace-regex: '\{"text":"#([a-z0-9_]+)§f([^"]+)","color":"#31B0E8"\}' - replace-to: >- + - inspectLength: 1024 + get: '\{"text":"#([a-z0-9_]+)§f([^"]+)","color":"#31B0E8"\}' + set: >- {"text":"§8#"}, {"translate":"_$1:TranslatedName_","color":"#31b0e8"}, {"text":"§f_$2_","color":"#31B0E8"} # 翻译物品 :: 24.03/m 前 #苦力怕 破坏 **草方块** - - inspect-length: 1024 # 检查消息长度是否小于此值 - # 替换, 使用正则表达式匹配 - replace-regex: '\{"text":"([a-z0-9_]+)(?:§f.{0,3})?","color":"#31B0E8"\}' - # _$1_ = 正则匹配到的变量 1, 也可以是 `_$2_` (第 2 个变量)... - # _$1:ItemType_ = 将 _$1_ 用于获取物品类型, 提供给 JSON hoverEvent 使用的物品类型 show_entity, show_item(block) - # _$1:TranslatedName_ = 将 _$1_ 用于名称翻译, 返回与语言路径对应的 KEY, 例如 `entity.minecraft.allay` - replace-to: >- + - inspectLength: 1024 + get: '\{"text":"([a-z0-9_]+)(?:§f.{0,3})?","color":"#31B0E8"\}' + set: >- {"extra":[ {"translate":"_$1:TranslatedName_"}, {"text":" §8_$1_", @@ -53,11 +55,52 @@ list: "clickEvent":{"action":"copy_to_clipboard","value":"_$1_"} } ],"color":"#31b0e8","text":""} + + + # [示例] 所有可用配置 + # [可选, 默认所有玩家] 对拥有该权限的玩家处理这条消息 + - permission: 'minecraft.command' + # [必选] 检查消息长度是否小于此值 + inspectLength: 64 + # [必选] 使用正则表达式匹配 + get: '^\{"text":"","extra":\["Missing required argument (\d+)"\]\}$' + # [必选] 将消息替换为 + # _$1_ = 正则匹配到的变量 1, 也可以是 `_$2_` (第 2 个变量)... + # _$1:ItemType_ = 将 _$1_ 用于获取物品类型, 提供给 JSON hoverEvent 使用的物品类型 show_entity, show_item(block) + # _$1:TranslatedName_ = 将 _$1_ 用于名称翻译, 返回与语言路径对应的 KEY, 例如 `entity.minecraft.allay` + # _$1:Words:组名_ = 将 _$1_ 用于词替换, 需要配置 words.yml + # 其他示例: + # set: >- # YAML 语法中使用 `>-` 可以编写换行的文本, 效果如上 + # set: '' # 如果为空, 则取消发送这条消息 + set: '{"text":"§bIpacEL §f> §b此指令需要至少§a_$1:Words:中文数字_个参数"}' + # [可选, 默认聊天栏] 将消息显示在操作栏 (物品栏上面) + displayPlace: 'ACTION_BAR' + ``` -### 依赖 -- ProtocolLib 5.2.0 +```yaml +# 词替换配置文件 +words: + # 创建一个组, 组名不应包含下划线 "_" + 中文数字: + # 添加一个词替换 + # 如果多个词的配置重复, 将会被忽略 + - get: '1' # [必选] 需要匹配的词 + set: '一' # [必选] 替换为 + lang: 'zh_cn' # [可选, 默认直接替换] 当客户端语言与其匹配时进行替换 + + - get: '2' + set: '二' + lang: 'zh_cn' + + - get: '3' + set: '三' + lang: 'zh_cn' +``` + +### 依赖 +- ProtocolLib --- diff --git a/pom.xml b/pom.xml index 50fe4ab..0870a19 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ io.github.aplini useTranslatedNames -1.0 +2.0 useTranslatedNames diff --git a/src/main/java/aplini/usetranslatednames/UseTranslatedNames.java b/src/main/java/aplini/usetranslatednames/UseTranslatedNames.java index 74aceea..56498e8 100644 --- a/src/main/java/aplini/usetranslatednames/UseTranslatedNames.java +++ b/src/main/java/aplini/usetranslatednames/UseTranslatedNames.java @@ -33,7 +33,7 @@ public final class UseTranslatedNames extends JavaPlugin implements CommandExecu // 监听器模式 boolean listeningMode = true; // 词配置 Map<组名.词 or 组名.语言.词, 词配置> - HashMap words; + private HashMap words; // 配置文件 List list = new ArrayList<>(); @@ -106,7 +106,8 @@ public void onPacketSending(PacketEvent event){ } String oldJson = matcher.group(0); - // 处理翻译变量 _$1:ItemType_, _$1:TranslatedName_ + + // 处理翻译变量替换 _$1:ItemType_, _$1:TranslatedName_ if(cli.enTransVar){ cli.dataTransVar.reset(); while(cli.dataTransVar.find()){ @@ -119,6 +120,7 @@ public void onPacketSending(PacketEvent event){ } } + // 处理词替换 _$1:Words:xxx_ if(cli.enWordReplace){ cli.dataWordReplace.reset(); @@ -134,7 +136,7 @@ public void onPacketSending(PacketEvent event){ } - // 处理正则变量 _$1_ + // 处理正则替换 _$1_ if(cli.enRegExpReplace){ int matcherLength = matcher.groupCount(); for(int i = 1; i <= matcherLength; i++){ diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index bb0b3ee..11139ac 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -50,4 +50,3 @@ list: # 替换列表 set: '{"text":"§bIpacEL §f> §b此指令需要至少§a_$1:Words:中文数字_个参数"}' # [可选, 默认聊天栏] 将消息显示在操作栏 (物品栏上面) displayPlace: 'ACTION_BAR' - diff --git a/src/main/resources/words.yml b/src/main/resources/words.yml index 82732b2..5d26560 100644 --- a/src/main/resources/words.yml +++ b/src/main/resources/words.yml @@ -1,5 +1,9 @@ # 词替换配置文件 words: + + # 这是系统内置的组 + __toTranslatedName__: [] + # 创建一个组, 组名不应包含下划线 "_" 中文数字: # 添加一个词替换 @@ -7,9 +11,11 @@ words: - get: '1' # [必选] 需要匹配的词 set: '一' # [必选] 替换为 lang: 'zh_cn' # [可选, 默认直接替换] 当客户端语言与其匹配时进行替换 + - get: '2' set: '二' lang: 'zh_cn' + - get: '3' set: '三' - lang: 'zh_cn' \ No newline at end of file + lang: 'zh_cn'