Rothes / ProtocolStringReplacer

A Spigot plugin that allows you to edit the String in packet sends to players.
GNU General Public License v3.0
43 stars 10 forks source link

[Bug] 计分板似乎无法正常修补 #47

Open wordangyou opened 1 month ago

wordangyou commented 1 month ago

检查清单

描述

配置如下 QQ_1720965043014 但,计分板没有正常替换,聊天,物品名又可以

重现步骤

计分板没有正常替换

预期行为

可以正常替换计分板

堆栈轨迹

No response

服务端版本

paper-1.13.2 657

ProtocolStringReplacer 版本

2.19.4

ProtocolLib 版本

5.1.0

其它插件

关于计分板插件 SimpleScoreBoard SuperLobbyDeluxe

额外内容

No response

Rothes commented 1 month ago

请查看 https://github.com/Rothes/ProtocolStringReplacer/blob/fe852a9a065271c1e3505a294b5286ec9c0d3a76/src/main/resources/Languages/zh-CN/Replacers/Example.yml#L46

wordangyou commented 1 month ago

我也尝试过从范例配置中修改,依旧不生效 如下:

本配置文件展示了大多数常用的设定选项, 供您了解.

!!! 如果您直接修改本配置的替换/屏蔽项, 它将不会生效 !!!

因为我们限制了生效所需的权限、客户端语言. 请前往 70 行查看它们.

此替换配置文件的相关设定.

Options:

是否开启本替换配置. 若为false则不会为这个文件处理. 若未定义, 默认为false.

Enabled: true

本文件的优先级. 若有多个替换配置, 优先级高的最早替换. 默认为5.

Priority: 5

可选参数

Version: '1.230201'

可选参数

Author: 'Rothes'

匹配字符串的方式. 可选值:

'Contain' : 只要包含就替换 (默认)

'Equal' : 要求设置与原字符串完全匹配

'Regex' : 使用Java正则表达式

不区分大小写.

Match-Mode: 'Contain'

筛选功能. 用于指定此文件处理字符串的条件.

Filter:

监听类型.

# 指定处理何处的字符串. 默认为全部. 可选值:
# 'ActionBar' : 处理动作栏信息文本
# 'Chat' : 处理聊天信息文本
# 'Chat-Preview' : 处理聊天预览(Chat Preview)中的文本
# 'Tab-Complete' : 处理 Tab Complete 中的文本
# 'Sign' : 处理告示牌文本
# 'Title' : 处理标题(title|subtitle)文本
# 'Entity' : 处理实体名文本
# 'Boss-Bar' : 处理Boss血量条文本
# 'ItemStack' : 处理物品(物品名|Lore|书署名|书内容)文本
# 'Window-Title' : 处理容器标题文本
# 'ScoreBoard' : 处理计分板(标题|实体名称)
# 'Console' : 处理控制台内显示的文本信息
# 'Kick-Disconnect' : 处理踢出玩家时客户端上的踢出消息
# 'Combat-Kill' : 处理玩家重生界面上的死亡信息
# 不区分大小写.
Listen-Types:
  - Chat
  - Window-Title
  - ItemStack
  - Sign
  - ScoreBoard
# 针对计分板监听的特定过滤
ScoreBoard:
  # 是否处理计分板标题. 默认为false.
  Handle-Title: true
  # 是否处理计分板中的实体名称. 默认为false.
  # 注: 对于玩家, 实体名称为玩家名称; 对于非玩家则为UUID.
  Handle-Entity-Name: true
  # 是否处理计分板中的团队显示名称. 默认为false.
  Handle-Team-Display-Name: true
  # 是否处理计分板中的团队显示前缀. 默认为false.
  Handle-Team-Prefix: true
  # 是否处理计分板中的团队显示后缀. 默认为false.
  Handle-Team-Suffix: true
# 针对物品监听的特定过滤
ItemStack:
  # 仅 Json. 是否处理物品的完整 nbt. 默认为false.
  Handle-Nbt-Compound: false
  # 仅 Json. 是否处理物品的 Display nbt 组件. 默认为false.
  Handle-Nbt-Display-Compound: false
  # 是否处理物品的 Display nbt 组件中的各个元素. 默认为true.
  Handle-Nbt-Display-Entries: true
  # 过滤要处理的物品类型. 若设为 null 或空列表, 则会处理所有物品.
  # 否则, PSR 只会处理此处列出的物品类型.
  Handle-Item-Types:
    - DIRT
    - STONE
User:
  # 处理所需权限. 若设定, 用户必须拥有该权限
  # 才能使该替换配置为其生效.
  Permission: ''
  # 所需客户端语言. 只会为在下面列出的客户端语言处理.
  # 设为空列表或者移除以跳过语言检查.
  # 语言列表: https://minecraft.fandom.com/wiki/Language#Languages
  Locales:
    - en_us  # English (US)
    - en_gb  # English (UK)
    - zh_cn  # 简体中文(中国大陆)
    - zh_hk  # 繁體中文(香港特別行政區)
    - zh_tw  # 繁體中文(台灣)
    - lzh    # 文言(華夏)
# PSR 将忽略长度超过此处定义值的字符串(但不是整个数据包)处理.
# 设为 -1 以禁用此功能.
Max-Length:
  # 常规文本. (或者 Common)
  Text: -1
  # Json.
  Json: -1
  # Direct. 直观替换模式.
  Direct: -1

替换的字符串列表.

替换模式优先度: Direct > Json > Common, 忽略文件优先度.

提示: 您可以使用 /psr capture 指令以快速抓取准确的原字符串.

Replaces:

常规文本替换模式.

常规替换模式中的每个条目根据 Json 中的不同格式分割.

使用常规模式的一大好处就是它不会破坏组件中的格式.

Common:

屏蔽的字符串列表. 如果一个数据包中的任何字符串被匹配,

这整个数据包将被屏蔽发送给玩家.

此功能同样适用于控制台消息.

Blocks: Common:

Rothes commented 1 month ago

计分板的东西一般不会一直发送,只会在进入服务器的时候发送。确保reload后重新进入服务器。可以尝试/psr capture并重载使用计分板的插件。

wordangyou commented 1 month ago

我也尝试过使用热重载和重启

wordangyou commented 1 month ago

但依旧无效,尝试过两个计分板插件

Rothes commented 1 month ago

未能使用提供的环境复现

Options:
  Enabled: true
  Match-Mode: Contain
  Filter:
    Listen-Types: []
    ScoreBoard:
      Handle-Title: true
      Handle-Entity-Name: true
      Handle-Team-Display-Name: true
      Handle-Team-Prefix: true
      Handle-Team-Suffix: true
Replaces:
  Common:
  - Original: r
    Replacement: 啊