本帖最后由 Rothes 于 2023-2-7 02:02 编辑 
本插件目前基于GNU GPLv3协议开源
来自群组: PluginsCDTribe
| ProtocolStringReplacer | 
| ┃ 简介 | 
| ProtocolStringReplacer是一款通过修改网络数据包而实现替换字符串功能的插件,致力于优化效率、提供更多功能,以达到方便、实用的目标. 由于只修改了发送给玩家的数据包,故不会影响服务端上的处理. | 
| ┃ 特性 | 
| 更详细的列表请在 MCBBS v4 资源站中查看,此处列表不完整修复服务端 Log4j 0day CVE 漏洞(全版本) [修复根源, 见截图] 独立版 修改以下内容中的字符串,或者屏蔽: 
 不会增加服务器的带宽压力! 所有替换均在原数据包上操作. 支持对控制台的信息管理! 每一个字符都可以替换或屏蔽! 支持修改 Json, 对 Json 的智能处理, 即使不了解 Json 也可使用普通替换模式, 不会破坏任何数据. 针对修改物品制作的缓存机制, 处理一个窗口内所有物品仅需1毫秒 (于 支持替换为PAPI变量, 且更安全, 可以在配置文件中设定占位符使用格式 游戏内的指令修改功能 以及现代化的指令结构 多个替换配置文件系统 有序化的字符串替换 完全的注释保留功能 完全支持热加载 过滤系统 计划内容: 更多游戏内指令修改功能 更多过滤功能 扩展更多信息等修改 制作维基 …… | 
| ┃ 指令 | 
| /psr help 显示插件指令列表 /psr edit 游戏内替换配置编辑器 /psr parse 测试替换字符串 /psr capture 捕获部分数据包的内容 /psr reload 重载插件所有配置文件 详细的指令帮助请在游戏内输入子指令+ help 如/psr edit help | 
| ┃ 权限 | 
| protocolstringreplacer.command.edit 允许使用替换配置编辑器 protocolstringreplacer.command.parse 允许使用替换字符串测试功能 protocolstringreplacer.command.reload 允许重载插件配置文件 protocolstringreplacer.command.capture 允许捕获数据包的内容 protocolstringreplacer.feature.usermetacache 为创造模式恢复修改前的原物品 (防止创造模式替换到实际物品的特性) protocolstringreplacer.feature.usermetacache.noncreative 为非创造模式玩家也提供该功能 (用于一些奇怪的特殊情况, 若遇到无法移动物品等问题时尝试给予该权限) | 
| ┃ 截图 | 
| ┃ 配置文件 | 
| 注意:替换配置文件必须放于plugins/ProtocolStringReplacer/Replacers文件夹或其子文件夹中 | 
| ┃ 下载链接 | 
| 请在 MCBBS v4 资源站中下载插件, 此贴内附件不是最新版本: 喜欢的话欢迎评论,别让这帖子沉啦 请安装前置插件 ProtocolLib 4.7.0+(Spigot 1.18 需 4.8.0+版本) PlaceholderAPI 2.10.9+ 请使用Java8+运行本插件 建议使用 Paper 或其分支服务端以获得最佳兼容性和效果 PSR 3.0.0 开发中! 3.0.0 将完全重写, 提供更多自定义项、提供一些 API, 并且模块化项目以便于适配其它平台,同时还会进一步优化插件 (目前预计适配 BungeeCord),许可证切换为 LGPL PSR 2.0.0 将可无损升级至 3.0.0 | 
| ┃ 示例配置 | 
| 用法: 安装本插件后,解压并替换(合并) plugins/ProtocolStringReplacer/Replacers 使用时请将 Slimefun 默认语言设为简体中文,适配1.14+全粘液版本 示例配置最后更新于2023/02/07 基于 PSR v2.17.1 | 
| ┃ 更新日志 | 
| ┃ 问题反馈 | 
| 如果您在使用插件过程中遇到任何问题,欢迎在GitHub issue tracker上反馈。 有任何需要咨询的,可在贴内回复或私信,我每日都会检查MCBBS, 或直接在 QQ 上进行咨询: 空巢插件交流群: 422532220 机器人秒速审核, 如果没秒速就是炸了 插件维基编写中: https://rothes.gitbook.io/protocolstringreplacer/ | 
| ┃ 常见问题 | 
| 1. PAPI占位符无法替换 PSR 默认的占位符格式为{占位符}(全角字符), 而不是 %占位符% . 这是为了服务器安全性, 防止玩家通过发送占位符来获取服务器信息. 同时, 可以使 PSR 自动检测字符串中是否包含占位符, 若无则不会调用 PAPI API, 这可以大大加快替换效率. 您可以在插件的 Config.yml 中调整此设定. 2. 有时无法替换生物的名称 这是由 ProtocolLib 的问题导致. 该问题不在 PSR 可以处理的范围之内, 且不仅仅只影响到了 PSR 插件的处理. 目前 PSR 已将该报错屏蔽. 3. 插件导致服务器大幅卡顿 PSR 已经对插件进行了很极致的优化, 且所有运行的进程皆异步进行. 若您遇到此问题, 通常这是由于一些插件在主线程上进行了有关的网络处理, 而 PSR 扩大了此行为对主线程的影响. 请手动排除您的服务端插件. 4. 无法使用色彩符号 由于一些原因, PSR 使用 Minecraft 原版提供的色彩符号 '§' 而不是 Bukkit 中常用的色彩符号 '&'. 请尝试将您的替换配置中的所有色彩符号替换为 '§'. 5. 无法加载插件: Invalid plugin.yml 由于 MCBBS 附件下载常出问题, 通过备用链接(SpigotMC)下载即可. | 
本插件目前基于GNU GPLv3协议开源
所用部分代码使用Apache等开源项目,其余皆为原创
感觉不错,很实用
优化效率就很不错  感谢分享  (希望能常更新. 支持
 本帖最后由 小张up 于 2021-6-13 11:44 编辑 
[11:36:31 INFO]: [ProtocolStringReplacer] Enabling ProtocolStringReplacer v1.1.5-beta
[11:36:31 ERROR]: Error occurred while enabling ProtocolStringReplacer v1.1.5-beta (Is it up to date?)
java.lang.NoClassDefFoundError: me/clip/placeholderapi/replacer/Replacer
at me.Rothes.ProtocolStringReplacer.ProtocolStringReplacer.initialize(ProtocolStringReplacer.java:77) ~[?:?]
at me.Rothes.ProtocolStringReplacer.ProtocolStringReplacer.onEnable(ProtocolStringReplacer.java:41) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) ~[patched_1.16.5.jar:git-Paper-762]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370) ~[patched_1.16.5.jar:git-Paper-762]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:500) ~[patched_1.16.5.jar:git-Paper-762]
at com.rylinaux.plugman.util.PluginUtil.load(PluginUtil.java:366) ~[?:?]
at com.rylinaux.plugman.util.PluginUtil.load(PluginUtil.java:318) ~[?:?]
at com.rylinaux.plugman.util.PluginUtil.reload(PluginUtil.java:380) ~[?:?]
at com.rylinaux.plugman.command.ReloadCommand.execute(ReloadCommand.java:122) ~[?:?]
at com.rylinaux.plugman.PlugManCommandHandler.onCommand(PlugManCommandHandler.java:95) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[patched_1.16.5.jar:git-Paper-762]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159) ~[patched_1.16.5.jar:git-Paper-762]
at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchCommand(CraftServer.java:826) ~[patched_1.16.5.jar:git-Paper-762]
at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchServerCommand(CraftServer.java:788) ~[patched_1.16.5.jar:git-Paper-762]
at net.minecraft.server.v1_16_R3.DedicatedServer.handleCommandQueue(DedicatedServer.java:470) ~[patched_1.16.5.jar:git-Paper-762]
at net.minecraft.server.v1_16_R3.DedicatedServer.b(DedicatedServer.java:437) ~[patched_1.16.5.jar:git-Paper-762]
at net.minecraft.server.v1_16_R3.MinecraftServer.a(MinecraftServer.java:1342) ~[patched_1.16.5.jar:git-Paper-762]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1130) ~[patched_1.16.5.jar:git-Paper-762]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291) ~[patched_1.16.5.jar:git-Paper-762]
at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.lang.ClassNotFoundException: me.clip.placeholderapi.replacer.Replacer
at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:153) ~[patched_1.16.5.jar:git-Paper-762]
at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:114) ~[patched_1.16.5.jar:git-Paper-762]
at java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[?:?]
... 20 more
[11:38:07 INFO]: [PlugMan] Plugin Information: ProtocolLib
[11:38:07 INFO]: - Version: 4.6.1-SNAPSHOT-b501
[11:38:07 INFO]: - Author(s): dmulloy2, comphenix
[11:38:07 INFO]: - Status: Enabled
[11:38:58 INFO]: [PlugMan] Plugin Information: PlaceholderAPI
[11:38:58 INFO]: - Version: 2.10.4
[11:38:58 INFO]: - Author(s): extended_clip, Glare
[11:38:58 INFO]: - Status: Enabled
看了看你的maven构建脚本,我的Papi貌似过时了
[11:36:31 ERROR]: Error occurred while enabling ProtocolStringReplacer v1.1.5-beta (Is it up to date?)
java.lang.NoClassDefFoundError: me/clip/placeholderapi/replacer/Replacer
at me.Rothes.ProtocolStringReplacer.ProtocolStringReplacer.initialize(ProtocolStringReplacer.java:77) ~[?:?]
at me.Rothes.ProtocolStringReplacer.ProtocolStringReplacer.onEnable(ProtocolStringReplacer.java:41) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) ~[patched_1.16.5.jar:git-Paper-762]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370) ~[patched_1.16.5.jar:git-Paper-762]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:500) ~[patched_1.16.5.jar:git-Paper-762]
at com.rylinaux.plugman.util.PluginUtil.load(PluginUtil.java:366) ~[?:?]
at com.rylinaux.plugman.util.PluginUtil.load(PluginUtil.java:318) ~[?:?]
at com.rylinaux.plugman.util.PluginUtil.reload(PluginUtil.java:380) ~[?:?]
at com.rylinaux.plugman.command.ReloadCommand.execute(ReloadCommand.java:122) ~[?:?]
at com.rylinaux.plugman.PlugManCommandHandler.onCommand(PlugManCommandHandler.java:95) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[patched_1.16.5.jar:git-Paper-762]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159) ~[patched_1.16.5.jar:git-Paper-762]
at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchCommand(CraftServer.java:826) ~[patched_1.16.5.jar:git-Paper-762]
at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchServerCommand(CraftServer.java:788) ~[patched_1.16.5.jar:git-Paper-762]
at net.minecraft.server.v1_16_R3.DedicatedServer.handleCommandQueue(DedicatedServer.java:470) ~[patched_1.16.5.jar:git-Paper-762]
at net.minecraft.server.v1_16_R3.DedicatedServer.b(DedicatedServer.java:437) ~[patched_1.16.5.jar:git-Paper-762]
at net.minecraft.server.v1_16_R3.MinecraftServer.a(MinecraftServer.java:1342) ~[patched_1.16.5.jar:git-Paper-762]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1130) ~[patched_1.16.5.jar:git-Paper-762]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291) ~[patched_1.16.5.jar:git-Paper-762]
at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.lang.ClassNotFoundException: me.clip.placeholderapi.replacer.Replacer
at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:153) ~[patched_1.16.5.jar:git-Paper-762]
at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:114) ~[patched_1.16.5.jar:git-Paper-762]
at java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[?:?]
... 20 more
[11:38:07 INFO]: [PlugMan] Plugin Information: ProtocolLib
[11:38:07 INFO]: - Version: 4.6.1-SNAPSHOT-b501
[11:38:07 INFO]: - Author(s): dmulloy2, comphenix
[11:38:07 INFO]: - Status: Enabled
[11:38:58 INFO]: [PlugMan] Plugin Information: PlaceholderAPI
[11:38:58 INFO]: - Version: 2.10.4
[11:38:58 INFO]: - Author(s): extended_clip, Glare
[11:38:58 INFO]: - Status: Enabled
看了看你的maven构建脚本,我的Papi貌似过时了
小张up 发表于 2021-6-13 11:37
[11:36:31 INFO]: Enabling ProtocolStringReplacer v1.1.5-beta
[11:36:31 ERROR]: Error occurred while ...
PlaceholderAPI不是最新的,试试更新到
PlaceholderAPI-2.10.9
Rothes 发表于 2021-6-13 11:42
PlaceholderAPI不是最新的,试试更新到
PlaceholderAPI-2.10.9
嗯,刚刚看到了
好像挺不错的,不过会不会跟tr菜单冲突呢
LINKCHUM 发表于 2021-6-13 16:49
好像挺不错的,不过会不会跟tr菜单冲突呢
应该不会。而且提供了过滤功能,如果字符串有冲突,也可以通过调整配置文件自行修复
 本帖最后由 Rothes 于 2021-6-16 19:48 编辑 
已兼容1.17,请安装1.17的专用ProtocolLib (来自官方预览版)
https://ci.dmulloy2.net/job/ProtocolLib/lastSuccessfulBuild/
目前ProtocolLib还有一些问题,如监听包错误,我只提供了兼容,这代表1.17可能部分功能失效。
这不是我的问题,请大家等待ProtocolLib方支持.
由于不知道ProtocolLib何时才能完全提供向后支持,新版已提供完全适配功能。
已兼容1.17,请安装1.17的专用ProtocolLib (来自官方预览版)
https://ci.dmulloy2.net/job/ProtocolLib/lastSuccessfulBuild/
这不是我的问题,请大家等待ProtocolLib方支持.
由于不知道ProtocolLib何时才能完全提供向后支持,新版已提供完全适配功能。
我在1.17里面使用psr打示例的''我的名字''没有输出变量,不晓得是啥问题
 本帖最后由 小张up 于 2021-6-20 21:23 编辑 
复制代码我的配置文件是这样的,但为什么正则语句没用
在正则测试器中这个句子没问题
 
 
但在这个插件里却无效
 
 
是最新版
而且,使用插件后,容器都变英文了
 
 
- # 是否开启本替换配置. 若为false则不会为这个文件处理. 若未定义, 默认为false.
 
- Enable: true
 
- # 本文件的优先级. 若有多个替换配置, 优先级高的最早替换. 默认为5.
 
- Priority: 30
 
- # 匹配字符串的方式. 可选值:
 
- # 'contain' : 只要包含就替换 (默认)
 
- # 'equal' : 要求设置与原字符串完全匹配
 
- # 'regex' : 使用正则表达式
 
- Match-Type: 'regex'
 
- # 筛选功能. 用于指定此文件替换字符串的条件.
 
- Filter:
 
-   # 指定替换的数据包类型. 默认为全部. 可选值:
 
-   # WINDOW_ITEMS 监听打开窗口中的物品
 
-   # SET_SLOT 监听窗口中槽位的物品
 
-   # OPEN_WINDOW 监听窗口的标题文本
 
-   # CHAT 监听聊天文本
 
-   # ENTITY_METADATA 监听实体名称
 
-   # TILE_ENTITY_DATA 监听tile的nbt数据. 目前仅支持修改告示牌信息
 
-   Packet-Types:
 
-     - CHAT
 
 
- Replaces:
 
-   # 左侧的key为原字符串 右侧的value为替换后的字符串.
 
-   'me' : '我'
 
- '/(?<=\[123\] .*)\[123\] /g' : ''
在正则测试器中这个句子没问题
 
但在这个插件里却无效
 
是最新版
而且,使用插件后,容器都变英文了
 
 本帖最后由 Rothes 于 2021-6-20 22:38 编辑 
现在json和chat组件的修改不是很完善。可能容器用的是translate,但是插件也解析了。等我完善之后应该就好。容器的问题,就麻烦暂时先手动修改一下OPEN_WINDOW数据包吧。
正则的问题我待会看看
小张up 发表于 2021-6-20 21:11
我的配置文件是这样的,但为什么正则语句没用
在正则测试器中这个句子没问题
现在json和chat组件的修改不是很完善。可能容器用的是translate,但是插件也解析了。等我完善之后应该就好。容器的问题,就麻烦暂时先手动修改一下OPEN_WINDOW数据包吧。
正则的问题我待会看看
26880 发表于 2021-6-20 17:05
我在1.17里面使用psr打示例的''我的名字''没有输出变量,不晓得是啥问题
我没有把这个添加进 示例配置文件。 你需要手动添加
'我的名字': '{player_name}'
Rothes 发表于 2021-6-20 22:37
现在json和chat组件的修改不是很完善。可能容器用的是translate,但是插件也解析了。等我完善之后应该就好 ...
好,这么晚还在查阅消息辛苦了
加油
小张up 发表于 2021-6-20 22:42
好,这么晚还在查阅消息辛苦了
加油
这几天我重构了一部分代码,之前没有上传这一部分。我待会上传新版插件,貌似已修复正则问题
Rothes 发表于 2021-6-20 22:37
我没有把这个添加进 示例配置文件。 你需要手动添加
'我的名字': '{player_name}' ...
啊这,但是我这里直接放进plugins后生成的文件有示例一样的文件,单纯的替换也有效果,但是变量就拉了跨了

26880 发表于 2021-6-21 10:51
啊这,但是我这里直接放进plugins后生成的文件有示例一样的文件,单纯的替换也有效果,但是变量就拉了跨 ...
检查一下PlaceholderAPI是否下载了Player变量。使用/papi ecloud download player
Rothes 发表于 2021-6-21 12:34
检查一下PlaceholderAPI是否下载了Player变量。使用/papi ecloud download player
哦草,问题解决是我的锅,我还以为这个变量是papi自带的,浏览一圈变量网站被翻译器生草翻译骗过去了
不兼容Loliserver呀,可惜了
3401286177 发表于 2021-6-25 11:33
不兼容Loliserver呀,可惜了
检查了一下,看起来主要是前置ProtocolLib不支持。
小张up 发表于 2021-6-20 21:11
我的配置文件是这样的,但为什么正则语句没用
在正则测试器中这个句子没问题
容器变为英文的问题已经修复,抱歉拖得有点久啦
 本帖最后由 小张up 于 2021-6-26 18:51 编辑 
没事,插件已经非常优秀了
(另外我那个正则咋样改才能编译过)
Rothes 发表于 2021-6-26 16:09
容器变为英文的问题已经修复,抱歉拖得有点久啦
没事,插件已经非常优秀了
(另外我那个正则咋样改才能编译过)
非常不错的插件,支持下
小张up 发表于 2021-6-26 18:45
没事,插件已经非常优秀了
(另外我那个正则咋样改才能编译过)
谢谢,这个正则你是想要实现什么啊?
Rothes 发表于 2021-6-26 20:51
谢谢,这个正则你是想要实现什么啊?
 
匹配一句话中除去第一个"[123] "之外的所有"[123] "

虽说匹配器里能使用,但匹配器也提示
 
有没有可能是Java不支持本特性造成的
 本帖最后由 Rothes 于 2021-6-27 10:52 编辑 
试试
'(?<=\[123\])(.*?)\[123\]': '$1'
小张up 发表于 2021-6-27 09:50
匹配一句话中除去第一个"[123] "之外的所有"[123] "
试试
'(?<=\[123\])(.*?)\[123\]': '$1'
可以拿走了兄弟
 本帖最后由 凉凉の咸鱼 于 2021-6-27 14:21 编辑 
玩家进服务器的时候报此类错误
Paper-1.17 build 49
ProtocolLib-4.7.0 build 524
复制代码
玩家进服务器的时候报此类错误
Paper-1.17 build 49
ProtocolLib-4.7.0 build 524
- [ProtocolStringReplacer] Unhandled exception occured in onPacketSending(PacketEvent) for ProtocolStringReplacer
 
- java.lang.IllegalArgumentException: entityID cannot be negative
 
-         at org.apache.commons.lang.Validate.isTrue(Validate.java:136) ~[patched_1.17.jar:git-Paper-49]
 
-         at com.comphenix.protocol.injector.EntityUtilities.getEntityFromID(EntityUtilities.java:218) ~[?:?]
 
-         at com.comphenix.protocol.injector.PacketFilterManager.getEntityFromID(PacketFilterManager.java:851) ~[?:?]
 
-         at com.comphenix.protocol.wrappers.BukkitConverters$10.getSpecific(BukkitConverters.java:691) ~[?:?]
 
-         at com.comphenix.protocol.wrappers.BukkitConverters$10.getSpecific(BukkitConverters.java:676) ~[?:?]
 
-         at com.comphenix.protocol.reflect.StructureModifier.readInternal(StructureModifier.java:229) ~[?:?]
 
-         at com.comphenix.protocol.reflect.StructureModifier.read(StructureModifier.java:197) ~[?:?]
 
-         at me.Rothes.ProtocolStringReplacer.PacketListeners.Server.EntityMetadata$1.onPacketSending(EntityMetadata.java:22) ~[?:?]
 
-         at com.comphenix.protocol.injector.SortedPacketListenerList.invokeSendingListener(SortedPacketListenerList.java:195) ~[?:?]
 
-         at com.comphenix.protocol.injector.SortedPacketListenerList.invokePacketSending(SortedPacketListenerList.java:149) ~[?:?]
 
-         at com.comphenix.protocol.injector.PacketFilterManager.handlePacket(PacketFilterManager.java:535) ~[?:?]
 
-         at com.comphenix.protocol.injector.PacketFilterManager.invokePacketSending(PacketFilterManager.java:516) ~[?:?]
 
-         at com.comphenix.protocol.injector.netty.ProtocolInjector.packetQueued(ProtocolInjector.java:346) ~[?:?]
 
-         at com.comphenix.protocol.injector.netty.ProtocolInjector.onPacketSending(ProtocolInjector.java:308) ~[?:?]
 
-         at com.comphenix.protocol.injector.netty.ChannelInjector.processSending(ChannelInjector.java:433) ~[?:?]
 
-         at com.comphenix.protocol.injector.netty.ChannelInjector.access$800(ChannelInjector.java:70) ~[?:?]
 
-         at com.comphenix.protocol.injector.netty.ChannelInjector$3.handleScheduled(ChannelInjector.java:373) ~[?:?]
 
-         at com.comphenix.protocol.injector.netty.ChannelInjector$3.onMessageScheduled(ChannelInjector.java:343) ~[?:?]
 
-         at com.comphenix.protocol.injector.netty.ChannelProxy$2.schedulingRunnable(ChannelProxy.java:127) ~[?:?]
 
-         at com.comphenix.protocol.injector.netty.EventLoopProxy.execute(EventLoopProxy.java:95) ~[?:?]
 
-         at net.minecraft.network.Connection.sendPacket(Connection.java:294) ~[?:?]
 
-         at net.minecraft.network.Connection.processQueue(Connection.java:373) ~[?:?]
 
-         at net.minecraft.network.Connection.flushQueue(Connection.java:346) ~[?:?]
 
-         at net.minecraft.network.Connection.send(Connection.java:277) ~[?:?]
 
-         at net.minecraft.server.network.ServerGamePacketListenerImpl.send(ServerGamePacketListenerImpl.java:1920) ~[?:?]
 
-         at net.minecraft.server.network.ServerGamePacketListenerImpl.send(ServerGamePacketListenerImpl.java:1906) ~[?:?]
 
-         at net.minecraft.server.level.ChunkMap$TrackedEntity.broadcast(ChunkMap.java:2327) ~[?:?]
 
-         at net.minecraft.server.level.ServerEntity.sendChanges(ServerEntity.java:204) ~[?:?]
 
-         at net.minecraft.server.level.ChunkMap.processTrackQueue(ChunkMap.java:2051) ~[patched_1.17.jar:git-Paper-49]
 
-         at net.minecraft.server.level.ChunkMap.tick(ChunkMap.java:2062) ~[patched_1.17.jar:git-Paper-49]
 
-         at net.minecraft.server.level.ServerChunkCache.tickChunks(ServerChunkCache.java:874) ~[?:?]
 
-         at net.minecraft.server.level.ServerChunkCache.tick(ServerChunkCache.java:753) ~[?:?]
 
-         at net.minecraft.server.level.ServerLevel.tick(ServerLevel.java:581) ~[?:?]
 
-         at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1551) ~[patched_1.17.jar:git-Paper-49]
 
-         at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:477) ~[patched_1.17.jar:git-Paper-49]
 
-         at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1404) ~[patched_1.17.jar:git-Paper-49]
 
-         at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1180) ~[patched_1.17.jar:git-Paper-49]
 
-         at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:320) ~[patched_1.17.jar:git-Paper-49]
 
-         at java.lang.Thread.run(Thread.java:831) [?:?]
 
- [14:15:19 ERROR]: Parameters: 
 
-   net.minecraft.network.protocol.game.PacketPlayOutEntityMetadata@25c1b56e[
 
-     a=-6
 
-     b=[net.minecraft.network.syncher.DataWatcher$Item@57635385]
 
-   ]
 
 本帖最后由 Rothes 于 2021-6-27 18:32 编辑 
这个貌似是Protocollib的问题,我之前就看到有人反馈了
可以发一下完整的插件列表看看
新版已添加一个检测防止问题,按照源码,Protocollib就应该返回Null的,但是它没有这么做
凉凉の咸鱼 发表于 2021-6-27 14:16
玩家进服务器的时候报此类错误
Paper-1.17 build 49
ProtocolLib-4.7.0 build 524
可以发一下完整的插件列表看看
新版已添加一个检测防止问题,按照源码,Protocollib就应该返回Null的,但是它没有这么做
Rothes 发表于 2021-6-27 18:14
这个貌似是Protocollib的问题,我之前就看到有人反馈了
可以发一下完整的插件列表看看
新版已添加 ...
- Plugins (28): 
 
- Boom, 
 
- Chunkmaster, 
 
- CMI, 
 
- CMIEInjector, 
 
- CMILib, 
 
- ConsoleSpamFix, 
 
- CoreProtect, 
 
- DeluxeMenus, 
 
- eBackup, 
 
- FartherViewDistance, 
 
- JulyLibrary, 
 
- JulySafe, 
 
- LockettePro, 
 
- LuckPerms, 
 
- Moeka, 
 
- momojs, 
 
- MultiLogin, 
 
- Multiverse-Core, 
 
- PlaceholderAPI, 
 
- ProtocolLib, 
 
- ProtocolStringReplacer, 
 
- QuickShop, 
 
- QuickShopList, 
 
- Residence, 
 
- Shift_Menu, 
 
- TAB, 
 
- Vault, 
 
- ZccAfk
凉凉の咸鱼 发表于 2021-6-27 19:08
还是有这错误, 不过问题也不是太大 用 ConsoleSpamFix 干掉了..
还是有那就只能等ProtocolLib修掉了...我这边无从下手
您好,服务器中已经安装papi但是您的插件先加载导致检测不到papi了,这咋办
 本帖最后由 Rothes 于 2021-7-1 12:35 编辑 
这个问题不应该发生,应该是因服务端版本而异
如果确实是这样的话,请手动使用压缩软件打开插件jar中的plugin.yml
把softdepend改成depend
请说明服务端版本,我之后会研究
DongShaoNB 发表于 2021-7-1 07:18
您好,服务器中已经安装papi但是您的插件先加载导致检测不到papi了,这咋办 ...
这个问题不应该发生,应该是因服务端版本而异
如果确实是这样的话,请手动使用压缩软件打开插件jar中的plugin.yml
把softdepend改成depend
请说明服务端版本,我之后会研究
Rothes 发表于 2021-7-1 12:34
这个问题不应该发生,应该是因服务端版本而异
如果确实是这样的话,请手动使用压缩软件打开插件jar中的plu ...
paper-1.17-55
Rothes 发表于 2021-7-1 23:20
我在这个版本下测试没有问题...
请发送log日志
[07:13:01] [main/INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD'
[07:13:01] [main/INFO]: Reloading ResourceManager: Default, bukkit
[07:13:02] [Worker-Main-2/INFO]: Loaded 7 recipes
[07:13:04] [Server thread/INFO]: Starting minecraft server version 1.17
[07:13:04] [Server thread/INFO]: Loading properties
[07:13:04] [Server thread/INFO]: This server is running Paper version git-Paper-55 (MC: 1.17) (Implementing API version 1.17-R0.1-SNAPSHOT) (Git: ba7ffd0)
[07:13:04] [Server thread/INFO]: Debug logging is disabled
[07:13:04] [Server thread/INFO]: Server Ping Player Sample Count: 12
[07:13:04] [Server thread/INFO]: Using 4 threads for Netty based IO
[07:13:04] [Server thread/INFO]: Default game type: SURVIVAL
[07:13:04] [Server thread/INFO]: Generating keypair
[07:13:04] [Server thread/INFO]: Starting Minecraft server on *:25565
[07:13:04] [Server thread/INFO]: Using default channel type
[07:13:05] [Server thread/WARN]: Initializing Legacy Material Support. Unless you have legacy plugins and/or data this is a bug!
[07:13:10] [Server thread/WARN]: Legacy plugin AllMusic v2.12.5 does not specify an api-version.
[07:13:13] [Server thread/INFO]: [PlaceholderAPI] Loading PlaceholderAPI v2.10.9
[07:13:13] [Server thread/INFO]: [Vault] Loading Vault v1.7.3-b131
[07:13:13] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it
[07:13:13] [Server thread/INFO]: [ProtocolLib] Enabling ProtocolLib v4.7.0-SNAPSHOT-b526
[07:13:13] [Server thread/INFO]: [ProtocolLib] Started structure compiler thread.
[07:13:13] [Server thread/INFO]: [LuckPerms] Enabling LuckPerms v5.3.48
[07:13:13] [Server thread/INFO]: __
[07:13:13] [Server thread/INFO]: | |__) LuckPerms v5.3.48
[07:13:13] [Server thread/INFO]: |___ | Running on Bukkit - Paper
[07:13:13] [Server thread/INFO]:
[07:13:13] [Server thread/INFO]: [LuckPerms] Loading configuration...
[07:13:14] [Server thread/INFO]: [LuckPerms] Loading storage provider... [H2]
[07:13:14] [Server thread/INFO]: [LuckPerms] Loading internal permission managers...
[07:13:14] [Server thread/INFO]: [LuckPerms] Performing initial data load...
[07:13:14] [Server thread/INFO]: [LuckPerms] Successfully enabled. (took 1218ms)
[07:13:14] [Server thread/INFO]: [WorldEdit] Enabling WorldEdit v7.2.5+57d5ac9
[07:13:14] [Server thread/INFO]: WEPIF: Using the Bukkit Permissions API.
[07:13:15] [Server thread/WARN]:
**********************************************
** This WorldEdit version does not fully support your version of Bukkit.
**
** When working with blocks or undoing, chests will be empty, signs
** will be blank, and so on. There will be no support for entity
** and block property-related functions.
**
** Please see https://worldedit.enginehub.org/en/latest/faq/#bukkit-adapters
**********************************************
[07:13:15] [Server thread/INFO]: [Vault] Enabling Vault v1.7.3-b131
[07:13:15] [Server thread/INFO]: [Vault] [Permission] SuperPermissions loaded as backup permission system.
[07:13:15] [Server thread/INFO]: [Vault] Enabled Version 1.7.3-b131
[07:13:15] [Server thread/INFO]: [LuckPerms] Registered Vault permission & chat hook.
[07:13:15] [Server thread/INFO]: WEPIF: Vault detected! Using Vault for permissions
[07:13:15] [Server thread/WARN]: **** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!
[07:13:15] [Server thread/WARN]: The server will make no attempt to authenticate usernames. Beware.
[07:13:15] [Server thread/WARN]: While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.
[07:13:15] [Server thread/WARN]: To change this, set "online-mode" to "true" in the server.properties file.
[07:13:15] [Server thread/INFO]: Preparing level "WLC"
[07:13:15] [Server thread/INFO]: Registering commands with com.sk89q.worldedit.bukkit.BukkitServerInterface
[07:13:16] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld
[07:13:17] [Worker-Main-2/INFO]: Preparing spawn area: 0%
[07:13:17] [Worker-Main-2/INFO]: Preparing spawn area: 0%
[07:13:17] [Worker-Main-2/INFO]: Preparing spawn area: 0%
[07:13:17] [Worker-Main-2/INFO]: Preparing spawn area: 0%
[07:13:17] [Server thread/INFO]: Time elapsed: 1906 ms
[07:13:17] [Server thread/INFO]: Preparing start region for dimension minecraft:the_nether
[07:13:19] [Server thread/INFO]: Time elapsed: 1638 ms
[07:13:19] [Server thread/INFO]: Preparing start region for dimension minecraft:the_end
[07:13:22] [Server thread/INFO]: Time elapsed: 3150 ms
[07:13:32] [Server thread/INFO]: [ProtocolStringReplacer] Enabling ProtocolStringReplacer v1.2.1
[07:13:32] [Server thread/INFO]: [ProtocolStringReplacer] 启用 Paper 1.17+ 支持.
[07:13:32] [Server thread/INFO]: [ProtocolStringReplacer] 未检测到前置插件 PlaceholderAPI,禁用插件.
[07:13:32] [Server thread/INFO]: [ProtocolStringReplacer] Disabling ProtocolStringReplacer v1.2.1
DongShaoNB 发表于 2021-7-2 03:00
[07:13:01] [main/INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https ...
从日志看PlaceholderAPI已经在这个插件加载之前加载了,你这个问题挺奇怪的
mcbbs有你更精彩~
这个优化是啥意思 优化网络么?
风雨兼程 发表于 2021-7-4 18:00
这个优化是啥意思 优化网络么?
意思是尽量快地处理文本数据,安装这个插件并不能优化网络
物品lore修改如果玩家不在线还能修改么
墨寒菌 发表于 2021-7-4 18:30
物品lore修改如果玩家不在线还能修改么
你可能误会这个插件的用途了,
插件只会修改发送给玩家的lore数据,而不会修改服务器本地的lore数据
所以玩家不在线,怎么会有发送给玩家的数据呢
想到了点东西,我写下来给你看看

插件现在貌似不支持服务端发送的系统消息
例如点击床时的“重生点已设置”和玩家重生时的“你的床或重生锚未激活”
这些消息无法被修改。
我在Spigot发现了一款支持修改这些消息的插件Message Editor | SpigotMC - High Performance Minecraft
那个插件的修改配置文件如下
复制代码这个插件也可以加一下修改这方面消息的功能。
以及,那个插件还能修改消息显示的位置,虽然这个功能没啥大用,但也可以考虑是否加一下。
最后一点,希望加一个“禁止指定消息发出”的功能
辛苦


插件现在貌似不支持服务端发送的系统消息
例如点击床时的“重生点已设置”和玩家重生时的“你的床或重生锚未激活”
这些消息无法被修改。
我在Spigot发现了一款支持修改这些消息的插件Message Editor | SpigotMC - High Performance Minecraft
那个插件的修改配置文件如下
- - ==: MessageEdit
 
-   message-before-pattern: \{"translate":"block\.minecraft\.set_spawn"\}
 
-   message-before-place: SYSTEM_CHAT
 
-   message-after: '{"translate":"block.minecraft.set_spawn"}'
 
- message-after-place: ACTION_BAR
以及,那个插件还能修改消息显示的位置,虽然这个功能没啥大用,但也可以考虑是否加一下。
最后一点,希望加一个“禁止指定消息发出”的功能
辛苦
 本帖最后由 Rothes 于 2021-7-4 23:04 编辑 
这个是直接修改json,其实现在插件完全支持,但是我未提及,主要是这样对一些新手可能不是很友好,之后我会添加一个capture指令用来截获,方便修改
现在可以这样修改:
'{"translate":"block.minecraft.set_spawn"}': '{"text":"编辑后的字符串"}'
Chat数据包可以更改显示的位置为公屏和actionbar,但是要在我插件里面加上这个功能,格式都不知道要改成什么样了,这是很头疼的问题
禁止指定消息发出的功能之后可以添加且并不难,感谢建议
感觉加上这些功能插件就可以更名成ProtocolStringEditor了
小张up 发表于 2021-7-4 19:34
想到了点东西,我写下来给你看看
插件现在貌似不支持服务端发送的系统消息
这个是直接修改json,其实现在插件完全支持,但是我未提及,主要是这样对一些新手可能不是很友好,之后我会添加一个capture指令用来截获,方便修改
现在可以这样修改:
'{"translate":"block.minecraft.set_spawn"}': '{"text":"编辑后的字符串"}'
Chat数据包可以更改显示的位置为公屏和actionbar,但是要在我插件里面加上这个功能,格式都不知道要改成什么样了,这是很头疼的问题
禁止指定消息发出的功能之后可以添加且并不难,感谢建议
感觉加上这些功能插件就可以更名成ProtocolStringEditor了
Rothes 发表于 2021-7-4 22:48
这个是直接修改json,其实现在插件完全支持,但是我未提及,主要是这样对一些新手可能不是很友好,之后我 ...
好,期待。
(话说你的粘液科技汉化的包是一个个手打的么?感觉没工具可以自动转换
Rothes 发表于 2021-7-4 22:48
这个是直接修改json,其实现在插件完全支持,但是我未提及,主要是这样对一些新手可能不是很友好,之后我 ...
不知道这样设计格式是否能行?(框内部分)
 
小张up 发表于 2021-7-5 20:13
不知道这样设计格式是否能行?(框内部分)
这样会有多余的key,其实有Yaml支持Map的格式,如
- Replaces:
 
- - Original: "原字符串"
 
-   Replacement: "新字符串"
 
- - Original: "原字符串2"
 
- Replacement: "新字符串2"
但是由于不方便大量编辑,就没有用这样的
小张up 发表于 2021-7-5 18:37
好,期待。
(话说你的粘液科技汉化的包是一个个手打的么?感觉没工具可以自动转换 ...
嗯,之前一个一个手打的
与viaversion、viabackwards冲突。尤其是1.12进入1.16的服务器中
 
 
 
 
 
 
