Minecraft(我的世界)中文论坛

标题: [[/]]Minecraft插件百科 —— [ChatControl Pro]多功能聊天管理插件Wiki翻译

作者: qsefthuopq    时间: 2019-1-29 17:41
标题: [[/]]Minecraft插件百科 —— [ChatControl Pro]多功能聊天管理插件Wiki翻译
本帖最后由 qsefthuopq 于 2019-5-25 19:40 编辑
插件名
ChatControl Pro

作者
kangarko

译者
qsefthuopq

购买地址


介绍 · Introduction

ChatControl是一款易于理解和配置的多功能聊天管理插件,可以更容易地管理你的服务器聊天消息内容。这款插件最初用于防止刷屏、打广告、脏话和防假人,但现在这款插件已经蜕变,其功能远超于一般的聊天管理插件。
页面 · Pages
首页

常见疑问
权限
指令
频道
JSON
如何分组
格式
Discord
获取帮助
变量
处理器
JavaScript变量
多世界聊天格式
自定义指令缩写和服务器名
监听优先度
聊天忽略
本地化

效果 · Effects


链接 · Links


MCBBS搬运帖



作者: cnp1911    时间: 2019-2-3 21:32
MCBBS有你更精彩~
作者: qsefthuopq    时间: 2019-4-7 18:17
本帖最后由 qsefthuopq 于 2019-5-25 19:45 编辑
兼容性

在你查看该页面之前,确认你正确地安装了该插件所需的硬件和软件.
ChatControl Pro在开发时插件作者就考虑到了插件的稳定性和性能. 这款插件从2013年诞生至今已经经过了无数次的优化来尽可能地高效运行. 插件作者也会尽可能地考虑与其他插件的兼容性.
插件兼容性
你可以安装以下兼容ChatControl的插件. ChatControl在开服时会自动检测兼容的插件并启用额外的特性.
WIKI编辑者的推荐插件
Bukkit服务端
插件支持多种服务端,但在一些服务端内部分功能可能无法正常使用. 请查看以下内容来确认插件是否兼容你的服务端版本.
Java版本
Java 8 以及更新的版本.
兼容版本
你可以在以下版本运行 ChatControl Pro . 请注意 x 代表了子版本, 比如 1.11.0 和 1.11.2.
下表已过期 现已兼容至1.14.1
Minecraft版本
兼容性
1.12.x兼容.
1.11.x兼容.
1.10.x兼容.
1.9.x兼容. 由于缺少API,书本规则无法使用.
1.8.x兼容.
1.7.10也许需要BungeeChatAPI .
1.6.4需要BungeeChatAPI.
1.5.2需要BungeeChatAPI.
1.4.7需要BungeeChatAPI.
1.3.2兼容,但一些功能会缺失.
1.2.5免费版本兼容,由于太多数据库缺少所以付费版本不兼容.
免费版和专业版的区别
如果你打算购买专业版, 请先查看以下内容.

从免费版升级到专业版是可行的.但在此之前我推荐你先备份插件文件夹.
用notepad++升级版本
'查找目标'区域: (%(\w+))
'替换为' 区域: {$2}
监听器优先级
一个常见的疑问就是不兼容其他聊天插件. 如Towny/EssentialsChat. 甚至是BanManager.查看以下内容来设置插件的兼容性.
基本内容安装
安装十分简单.步骤如下

以下图片图解第一次运行的情况. 你会受到新文件创建的提醒.

你需要特别注意开服时在控制台显示的信息. 这些信息包括了如何安装的相关信息并且会告诉你插件更新了什么内容.
屏蔽启动消息
如果你认为开服时显示的信息太多了,你可以在 settings.yml内设置Silent_Startup 为 true 来关闭. 你仍然在更新配置时能够看到更新日志.
更新
更新这个插件十分简单方便.只需拖拽新的插件文件到 plugins/内即可.但你需要先删除旧的插件文件.
插件完成更新后,所有的设置都会自动更新.不像其他大多数插件, ChatControl Pro会在控制台显示每次更新的内容.
特殊内容版本 7.5.0配置
ChatControl 使用 YAML文件的语法来保持配置简明易懂.
文件结构settings.yml
这是主要的配置.你可以在这里修改所有的设置.并且这个文件会在你更新插件版本时自动更新(可能会覆盖注释但不会覆盖修改过的配置). 汉化配置请前往MCBBS搬运帖查看


有疑问?
插件作者和译者欢迎您的提问.但在询问之前请确认你已经阅读WIKI的常见疑问.发送报错信息给插件作者可以获得插件作者最快的回复.

作者: qsefthuopq    时间: 2019-4-7 18:20
本帖最后由 qsefthuopq 于 2019-5-25 19:00 编辑
常见疑问

关键问题
插件无法运行: 'Illegal UTF8 string in constant pool in (..)' / 'java.lang.NoClassDefFoundError: me/kangarko/chatcontrol/final' ===
插件无法运行: Network inaccessible: (...) 请通过spigotmc来把报错信息或服务器IP发给kangarko.
我购买了插件但是我无法下载!
插件作者不对此负责,但如果插件作者收到了你的付款的话你可以联系插件作者来让你能够正常下载.
问题formatting.yml内的城镇聊天怎么用? (我找不到注释)
如何修改消息'You have to wait X seconds before another message' 或 'Please do not post the same or similar messages' 或广播格式 :
在你的ChatControl/ 内创建localization文件夹.然后重启服务器.之后会有新的文件被创建.详情查看本地化
如何编辑成就框的提醒消息"Goal Reached"?
"Goal Reached"的消息无法修改. 这无法用于自定义消息.这只是进度系统的功能. 你可以在settings.yml内搜索Toast (CTRL+F).
怎么关闭防刷屏功能及其消息?
这取决于你想要关闭哪种防刷屏特性.
a) 防止重复的消息 (aka "Please do not repeat same or similar message/command") -> 在settings.yml 内搜索Similar_Percentage_Block 并设置为0来关闭. 提醒: 这里有两个设置,一个是对消息的、另一个是对指令的.
b) 消息冷却 (aka "You have to wait X seconds before your next message/command") -> 在settings.yml 内搜索 Message_Delay 和 Command_Delayin并设置为0来关闭 s.
我怎么关闭管理员的自动加入频道或侦查模式?
ChatControl 根据玩家的权限自动把玩家分入频道内或使其进入侦查模式.
** 想要关闭自动加入频道, 给予你所在的组否定权限 -chatcontrol.autojoin.{频道名}.{模式}.
你可以用 '*' 来关闭自动加入所有频道,权限为 -chatcontrol.autojoin.*.
如何允许玩家发送IP地址?
查看规则配置文件内的IP地址过滤器部分.
如何防止特殊字符刷屏?
这个规则位于rules/chat.txt,默认关闭.删除# 来启用:
编辑{3}来更改允许的字符数.
问题及解决方案插件不会覆盖 /w 或其他私聊消息的缩写指令!
添加
aliases:  w:  - []
到你服务器根目录的commands.yml.
广告过滤器无效, 所有的点号都消失了! (如: www.google.com变为 www google com)
这不是由ChatControl造成的. 可能是Essentials的问题 ,请给予你的玩家 essentials.chat.url 和essentials.msg.url 权限
我在编辑规则文件后收到了 "Cannot define an operator when no rule is being created"
这是由于编码错误导致的. 请修改编码.
玩家在禁言时仍可以说话(如使用 BanManager / LiteBans 插件)
请查看获取帮助
规则对我无效 (我有管理员权限!)
如果你是管理员,你默认拥有忽略权限来忽略所有的规则. 没有规则会对你生效.你可以给你自己否定权限 "-chatcontrol.bypass.rules.{规则类型}"来使规则生效.(规则类型有 chat, commands, packets,... 详情查看权限页面).
Ignore_In_Commands 无效, 规则仍然阻止了WorldEdit 或认证auth指令!
这一部分已被重命名为 Ignore_Commands, 请更新你的handlers.yml.
在安装了一些插件后规则、频道或聊天消息不显示(Towny/Factions/Plot Squared, ...)
请查看监听优先度
规则移除了聊天的颜色!
在settings.yml 内关闭Regex_Strip_Colors.关闭后规则不会检测没有颜色的消息.
玩家无法移动 (使用 Multicraft)
你的问题是由于控制台过滤器阻止了特定消息的出现 - 而服务器检测到玩家count. 尝试关闭控制台过滤器. 在settings.yml内设置关闭控制台过滤器:
Console:  Filter:    Enabled: falseChatControl的缩写 '/chc' 和其他插件冲突! (如 ChestCommands)!
在配置内Command_Aliases处删除:
Command_Aliases: [chatcontrol, cc, anotheralias]如 /tell 发送的私聊消息造成了卡顿!
这是由于你启用了进度私聊提醒功能(主配置内搜索Private_Messages.Toast.Enabled), 因为进度会被写入文件所以会造成轻微的卡顿.
如果你不喜欢,你可以关闭这个功能来减少卡顿.
进度私聊提醒刷屏!
输入这个指令关闭播放进度: /gamerule announceAdvancements false.
防TAB补全无效!
确认你在spigot.yml内设置 tab-complete 为 -1 .
我的配置注释不见了! 我怎么找到默认文件?
配置注释会在插件更新配置时丢失.这是bukkit服务端的特性.对于中文注释,你可以重新前往MCBBS搬运帖下载



作者: qsefthuopq    时间: 2019-4-7 18:21
本帖最后由 qsefthuopq 于 2019-5-25 19:14 编辑
权限



以下为插件的所有权限.

提醒: 如果你是管理员并且你想要创建规则, 你可以给你自己否定权限: "-chatcontrol.bypass.rules".


作者: qsefthuopq    时间: 2019-4-7 18:22
本帖最后由 qsefthuopq 于 2019-5-25 19:14 编辑
指令

如何使用指令
很多指令支持额外的参数,详情往下看.
提醒: /chatcontrol 的缩写指令是 /chc /ch 的所需指令是 /channel.
主要指令
提醒: 清除和禁言指令支持沉默参数(-s),可以防止发送消息, anonymous 参数(-a)可以对玩家隐藏指令发送者.
清空聊天框全服禁言广播消息管理员聊天跨服聊天虚假的加入/退出游戏消息创建规则开关忽略的消息.查看玩家的警告分数.导入规则    banana    apple    lemon    orange数学计算器检验类别重载插件指令帮助私聊指令
提醒:查看 settings.yml来创建指令缩写.如果你安装了有相同指令的其他插件(如Essentials), ChatControl将会覆盖这些指令.
发送一条消息恢复消息侦查消息或指令频道指令加入频道离开频道直接发送消息到频道内侦查频道消息帮助指令


作者: qsefthuopq    时间: 2019-4-7 18:23
本帖最后由 qsefthuopq 于 2019-5-25 19:01 编辑
频道

玩家可以随意加入或退出一个聊天频道 (玩家需要有频道权限).可在channels.yml设置频道. 分成多个聊天频道可以减少大服的刷屏现象 (比如普通频道、求助管理频道、交易频道和管理员频道).
创建/删除频道
创建或删除频道十分简单,只需在配置内修改.以下示例为 'standard' 和 'global'的频道配置:
  1. Channels:
  2.   #
  3.   # 这是普通频道 - 默认所有玩家都加入的频道.
  4.   #
  5.   standard:
  6.     #
  7.     # 频道设置:
  8.     # 格式可在 formatting.yml 更改
  9.     #
  10.     Format: Chat   

  11.   #
  12.   # 默认该频道支持跨服聊天.
  13.   #
  14.   global:
  15.     #
  16.     # 格式可在 formatting.yml 更改
  17.     #
  18.     Format: Global_Chat
  19.     #
  20.     # 这个频道可进行跨服聊天.
  21.     #
  22.     Bungee: true
复制代码




自动加入频道
如果你想要在玩家登录后自动加入频道,只需给予以下权限:
  1. <font size="3">chatcontrol.channel.{频道}.join.{模式}</font><div><font size="3">chatcontrol.channel.autojoin.{频道}.{模式}</font></div>
复制代码


第一个权限可以让玩家以指定的模式加入指定的频道, 第二个权限则为自动加入.
当玩家手动离开频道后,他就不会再自动加入频道直至服务器重启、重载除非配置内 Reset_Cache_On_Quit 选项 settings.yml 已启用.
频道配置
你只需指定 '格式', . 所有选项都为可选选项
格式
介绍: 消息外观如何?
用于: String
可在 formats.yml 内设置:
  1. Format: Some_Format
复制代码

或直接输入格式:
  1. Format: '{pl_prefix}{player}:{pl_suffix} {message}'
复制代码


控制台格式
介绍: 消息外观如何?
用于: String
可在 formats.yml 内设置:
  1. Format: Some_Format
复制代码

或直接输入格式:
  1. Console_Format: '{channel} {player}: {message}'<b>日志格式</b>
复制代码

介绍: 消息会被记录到 ChatControl/logs/{channel}.yml 内.
用于: String
  1. Log_Format: '{player}: {message}'
复制代码


范围
介绍: 其他玩家收到消息的范围 (和范围聊天差不多)?
可用数值: 整数
  1. Range: 100
复制代码


Bungee
介绍: 是否发送消息到BungeeCords?
用于: Boolean
  1. Bungee: true
复制代码


组队
介绍: 是否只对队伍内玩家有效?
用于: String
支持:
  1. Party: town
复制代码





作者: qsefthuopq    时间: 2019-4-7 18:27
本帖最后由 qsefthuopq 于 2019-5-25 19:02 编辑
JSON

JSON 全称为 JavaScript Object Notation. 当你与服务器间进行了数据交换或存储数据到数据库内时, 数据只能为文本. JSON 广泛用于存储不同的信息,比如玩家或服务器事件.它可以便于人们读取和修改并且便于机器分析和生成.
Minecraft 在处理聊天时使用了 JSON. 为了增加聊天消息的功能, JSON 可以让其他玩家看到传输的数据. 因此你可以把鼠标放到文本或物品上来查看详细信息.
ChatControl 完全支持JSON.

.yml文件里的JSON
如 settings.yml 或 messages.yml 有消息的地方就支持JSON. 有两种使用方式.
a) 假设消息带有 [JSON]然后直接输入JSON代码.
  1. Warn_Message: '[JSON] {"text": "你好!世界"}'
复制代码

b) 用 '|-' 分隔成多行消息,在一行开头输入前缀 [JSON]并在下面输入JSON代码. 如:
  1. Example_Message: |-
  2.   [JSON]
  3.   {"text": "Hover Me","hoverEvent": {"action": "show_text","value": {"text": "Hey there!"}}}
复制代码

规则内的JSON
由于服务器的限制, 你不能像发包规则中那样发送JSON.你可以使用 'then console' 运算符并对玩家发送 'tellraw'指令:
  1. match ^This area is now protected.dont verbosethen console tellraw {player} {"text": "这片区域受到保护."}
复制代码


定时广播中的JSON
定时广播也可以使用JSON.你只需加入前缀 [JSON],并以JSON格式输入消息即可.
一个例子:
  1. Broadcaster:  [..]  Prefix: '[JSON]'  Messages:    global:    - '{"text":"这是条测试消息!"}'
复制代码



作者: qsefthuopq    时间: 2019-5-25 19:05
如何分组
创建新的组,你需要在settings.yml内启用Groups.Enabled to true, 并搜索 List 配置以下设置.
给予玩家权限 "chatcontrol.group.{组名}" 来对玩家进行分组. 玩家可以加入多个组.
以下示例分成了3个组: 游客、会员和管理员组.
  1. Groups:
  2.   List:   
  3.     guest:
  4.       Channel_Limit: 1
  5.       Message_Delay: 4
  6.     vip:
  7.       Message_Delay: 1
  8.     staff:
  9.       Message_Delay: 0
  10.       Interactive_Format: Staff_Format
复制代码
分组配置
配置分组时,你只需指定你需要使用的选项.
Message_Delay
介绍: 消息冷却
关键词: Anti_Spam.Chat.Message_Delay
  1. Message_Delay: 2
复制代码

Command_Delay
介绍: 指令冷却
关键词: Anti_Spam.Commands.Command_Delay
  1. Command_Delay: 3
复制代码
Channel_Limit_Write and Channel_Limit_Read
介绍:玩家一次可加入的频道上限第一个选项用于write输入模式,第二个用于read阅读模式.
关键词: (位于channels.yml) 搜索 Channel_Limits 选项
  1. Channel_Limit: 2
复制代码

Rejoin_Delay
介绍: 重登冷却
关键词: Anti_Bot.Cooldown.Rejoin
  1. Rejoin_Delay: 2
复制代码

Chat_After_Login
介绍: 登录后多久才能聊天
关键词: Anti_Bot.Cooldown.Chat_After_Login
  1. Chat_After_Login: 2
复制代码

Command_After_Login
介绍: 登录后多久才能使用指令
关键词: Anti_Bot.Cooldown.Command_After_Rejoin
  1. Command_After_Login: 2
复制代码

Chat_Format
介绍:自定义聊天格式
关键词: (位于 formatting.yml) Default
  1. Chat_Format: 2
复制代码

Global_Chat_Format
介绍: 自定义全服聊天格式, 需启用范围聊天模式
关键词: (位于 formatting.yml) Global
  1. Global_Chat_Format: 2
复制代码

Sound_Notify_Color
介绍: 自定义音效提醒消息颜色.
关键词: (位于 settings.yml) Sound_Notify.Color
  1. Sound_Notify_Color: '&c'
复制代码


作者: qsefthuopq    时间: 2019-5-25 19:07
格式

结构
每个格式的部件没有限制. 每个部件都代表了格式化的消息,并且你可以在每个部件上应用不同的可交互元素.
使用JSON并制作自定义格式
详情查看 https://github.com/kangarko/ChatControl-Pro/issues/771
变量
每个部分你都可以使用这里列出的变量.
部件选项
有很多选项, 详情查看:
消息
介绍:消息是否输出到聊天中?
用于: String
  1. Message: '{pl_prefix}{player}{pl_suffix}&7: {message}'
复制代码

发送者权限
介绍: 使所有部件只会在发送者有特定权限时显示.
用于: String
  1. Sender_Permission: 'my.custom.permission'
复制代码

条件
介绍: 只在满足特定的Javascript条件下显示所有部件. 支持所有变量. 详情查看.
  1. Condition: '"{player}" == "kangarko"'
复制代码

悬浮事件
介绍: 当玩家鼠标落到这个部件时显示什么?
用于: 查看下面
行为
行为就是会发生的事.可用数值: SHOW_TEXT, SHOW_ACHIEVEMENT 和 SHOW_ITEM.
数值
  1. Hover_Event:
  2.   Action: SHOW_TEXT
  3.   Values:
  4.     - "&6这名玩家是高贵的VIP"
  5.     - "&6输入 &e/vip &6查看如何获取VIP"
复制代码

点击事件
介绍: 当玩家点击这个部件时会发生什么?
用于: 看下面
行为
可用数值:OPEN_URL, OPEN_FILE, RUN_COMMAND and SUGGEST_COMMAND.
数值
  1. Click_Event:
  2.   Action: SUGGEST_COMMAND
  3.   Value: "/tell {player} "
复制代码

示例格式
以下为的带有部件: "Vip", "Prefix", "Player", "Suffix" 和 "Message" 的名为 "Chat"的格式示例.
  1. Chat:
  2.      #
  3.      # 这是个部件. 也就是说插件把一条消息分为了多个部分
  4.      # 你可以被不同部件添加不同的可交互内容.
  5.      #
  6.      # 如 Sender_Permission 或 Hover_Event 的选项不是强制选项, 你可以随意删除.
  7.      #  详细教程和选项,请查看下面的链接.
  8.      #
  9.      Vip:
  10.        Message: "&6[VIP] "
  11.        Sender_Permission: "chatcontrol.groups.vip"
  12.        Hover_Event:
  13.          Action: SHOW_TEXT
  14.          Values:
  15.            - "&6这名玩家是高贵的VIP"
  16.            - "&6输入 &e/vip &6查看如何获取VIP"
  17.      Prefix:
  18.        Message: "&f{pl_prefix}"      
  19.        Hover_Event:
  20.          Action: SHOW_TEXT
  21.          Values:
  22.            - "&8*-----* &f{player} &8*-----*"
  23.            - "&7前缀&8: &7{pl_prefix}"
  24.            - "&7组&8: &b{pl_group}"
  25.      Player:
  26.        Message: "{player}:"                 
  27.        Hover_Event:
  28.          Action: SHOW_TEXT
  29.          Values:
  30.            - "&7发出消息: &b{timestamp}"
  31.            - "&7点击私聊"
  32.        Click_Event:
  33.          Action: SUGGEST_COMMAND
  34.          Value: "/tell {player} "            
  35.      The_Rest:
  36.        Message: "{pl_suffix} {message}"
复制代码


作者: qsefthuopq    时间: 2019-5-25 19:08
Discord
ChatContro可以关联到Discord的聊天频道并显示聊天消息. 你需要安装 DiscordSRV.
如何使用
你可以查看DiscordSRV的插件简介来设置.
你也可以在DiscordSRV的config.yml内链接你的Discord频道, 详情查看https://github.com/Scarsz/DiscordSRV/wiki/Config-options#channels
想要在ChatControl内使用, 请在channels.yml内启用. 确认在 ChatControl 和 DiscordSRV的频道名相同.更多兼容选项位于channels.yml的Compatibility.Discord.


作者: qsefthuopq    时间: 2019-5-25 19:09
获取帮助

如果你有疑问或是提交漏洞,这一页面将引导你获得最快的帮助.
查看报错
当你的后台出现报错时也就意味着插件出现了问题. 为了保护数据,插件会关闭而保护使用错误的配置.
了解报错的关键是阅读报错信息. 一些人可能仍为这是不可避免的东西, 但插件作者有时候(经常)收到可以通过阅读报错就轻易解决的问题.
提交报告前
糟糕的反馈情况: 插件无法使用. 聊天格式出错!
较好的反馈情况: 想要分隔不同世界的聊天格式, 但只有一个相同聊天格式. 启用了 'Groups'并配置好了权限,重启服务器仍无法正常显示. 使用的是 ChatControl X.Y.Z, PermissionsEx X和 Spigot vX.是否哪里出错了?
该做与不该做的事情寻求帮助时你需要提供
  1. 上传有问题的文件到pastebin.net
复制代码



作者: qsefthuopq    时间: 2019-5-25 19:13
变量
变量可以用于表示实际的数据. 如: {player} 代表玩家名. ChatControl支持成千上万的变量并且你可以创建属于你的变量.
对于在variables/javascript.txt内创建变量的教程,请往查看ChatControl Pro/WIKI/JavaScript变量
插件变量
以下变量由插件提供而无需第三方插件:
带“+”的变量
一些变量支持在结尾使用 + 运算符来显示信息.
示例: 如果玩家拥有派系, 消息为 "[Faction] kangarko: test", 但如果玩家没有派系则显示 "kangarko: test" 而不是在玩家名前面显示空白 " "
支持变量:
如果你对 Javascript了解甚少, 你可以使用我们提供的变量或自定义的变量(PlaceholderAPI变量) 来轻松地敲代码.
SimpleClans变量
如果你安装了PlaceholderAPI, ChatControl为SimpleClans添加变量到PlaceholderAPI.
SimpleClan 变量1
SimpleClan 变量2
{simpleclans_in_clan}{simpleclans_clan_tag}
{simpleclans_join_date}{simpleclans_clan_color_tag}
{simpleclans_rank}{simpleclans_founded_string}
{simpleclans_tag}{simpleclans_name}
{simpleclans_tag_label}{simpleclans_average_wk}
{simpleclans_rank}{simpleclans_balance}
{simpleclans_civilian_kills}{simpleclans_size}
{simpleclans_deaths}{simpleclans_total_civilian}
{simpleclans_kdr}{simpleclans_total_deaths}
{simpleclans_neutral_kills}{simpleclans_total_kdr}
{simpleclans_rival_kills}{simpleclans_total_neutral}
{simpleclans_weighted_kills}{simpleclans_total_rival}
{simpleclans_is_leader}{simpleclans_friendly_fire}
{simpleclans_allow_deposit}{simpleclans_allow_withdraw}
{simpleclans_is_unrivable}{simpleclans_leader_size}


作者: qsefthuopq    时间: 2019-5-25 19:17
处理器

处理器可在规则捕获到内容后执行一组行为. 一个处理器包含关于应该触发什么的多个指令,并且可以从每个规则重定向.

什么是处理器
当你添加了很多规则后,你可能会发现你的规则会重复阻拦一些消息. 当你添加了很多规则后. 这些重复内容需要你删除重复的代码才能去除.使用处理器可以把这些行为分到一个组内来使规则更容易执行.
1.0 无需处理器的规则:
match **then warn &c禁止粗鄙之语.then actionbar &c请勿使用粗鄙之语!then notify chatcontrol.notify.swear {player} 说出了脏话: {message}then replace *****match bitchthen warn &c禁止粗鄙之语.then actionbar &c请勿使用粗鄙之语!then notify chatcontrol.notify.swear {player} 说出了脏话: {message}then replace *****match assholethen warn &c禁止粗鄙之语.then actionbar &c请勿使用粗鄙之语!then notify chatcontrol.notify.swear {player} 说出了脏话: {message}then replace *****
1.1 使用处理器的规则:
match **handle as swearmatch bitchhandle as swearmatch assholehandle as swear如何使用处理器
想要声明一个处理器用于一个规则, 请在规则的最后一行输入代码 handle as {handler} (替换 {handler} handlers.yml内获取的处理器名). 你仍然可以在规则内使用所有的运算符,但这些运算符可能会被特定的处理器覆盖.
配置处理器
在handlers.yml里,你可以创建或移除处理器. 以下为可用设置. 为了节约空间,你只需指定你想要使用的处理器.
Bypass_With_Permission
介绍: 如果玩家拥有指定权限则不会被检测/处理.
  1. Bypass_With_Permission: 'chatcontrol.bypass.ad'
复制代码

Ignore_Commands
介绍: 忽略列表内的指令.
  1.   Only_In_Commands:
  2.     - /register
  3.     - /reg
  4.     - /login
  5.     - /l
复制代码


Ignore_Usernames
介绍: 是否忽略在线的玩家名?
  1. Ignore_Usernames: true
复制代码

Ignore_Chatdisplay
介绍: 如果启用了聊天忽略器并且处理器捕获到消息, 忽略组合的玩家不会看到消息. 在此输入聊天忽略器组合名
  1. Ignore_Chatdisplay: swear
复制代码


Ignore_Worlds
介绍: 不检测的世界.
  1. Ignore_Worlds: [ignored_world, ignored_world_nether, another_world]
复制代码

Player_Warn_Message
介绍: 发送给玩家的警告信息. 设置为none关闭
可用: 输入整条消息或指定formatting.yml内的格式名
  1. Player_Warn_Message: "{prefix} &c抱歉, {player}, 禁止打广告!"
复制代码

Broadcast_Message
介绍: 广播消息. 设置为none关闭
可用: 输入整条消息或指定formatting.yml内的格式名
  1. Broadcast_Message: "{server} &6{player} 尝试&c打广告&6!"
复制代码

Staff_Alert
介绍:播放给有指定权限的玩家.{ruleID}变量为规则ID.
格式: 指定权限 + 消息,可用空格分隔 " " (查看下面的示例).
可用: 输入整条消息或指定formatting.yml内的格式名
  1. Staff_Alert: "chatcontrol.notify.advertise {prefix} &c{player} 违反规则 &6ID {ruleID} &c: &f{message}"
复制代码

Console_Message
介绍:记录到控制台的消息.设置为none关闭. {handler}为处理器变量.
  1. Console_Message: "{player} 违反了ID为{ruleID}的规则,触发{handler}过滤器: {message}"
复制代码

Write_To_File
介绍: 记录消息的文件路径. 设置为'none' 关闭.
  1. Write_To_File: log/advertisements.log
复制代码

Block_Message
介绍: 是否阻止消息的发送?
  1. Block_Message: true
复制代码

罚款
介绍: 安装了Vault后从玩家身上扣钱罚款.必须为整数
  1. Fine: 15
复制代码

音效
介绍: 播放的音效.
  1. Sound: ENTITY_ARROW_HIT_PLAYER, 1.0, 0.1
复制代码

Warn_Points
介绍: 如果启用了警告系统 (位于settings.yml),给予多少警告分数.
  1. Warn_Points: swear 1
复制代码

可以指定警告组合名. 提醒: 如果你设置了全服警告组合, 并想要在这里给予警告分数,你不需要指定组合名
  1. Warn_Points: swear 1
复制代码

Replace_Word
介绍:替换匹配规则的消息部分. 如果设置了这个,必须关闭 Block_Message 且不能设置 "Rewrite_To". 用| 分隔.
  1. Replace_Word: "[CENSORED]"
复制代码

提醒::用@prolong开头并且只指定一个字母会自动延伸至匹配消息的长度.
  1. Replace_Word: "@prolong *"
复制代码

Rewrite_To
介绍: 替换整条消息. 如果设置了这个,你必须关闭 Block_Message ,不能设置"Replace_Word" . 用| 分隔.
  1. Rewrite_To: 我喜欢这个服务器!|服务器真好玩!
复制代码

Execute_Commands
介绍: 以控制台身份执行的指令列表. 提醒: 可使用其他插件的指令.
  1. Execute_Commands:
  2.   - eco take {player} 10
  3.   - kick {player} &c不要打广告!
  4.   - tempban {player} 1d 禁止打广告! \n\n如果是误判请联系管理员. \n\n捕获到的消息: {message}
复制代码

Execute_Player_Commands
介绍: 以玩家身份执行的指令.
  1. Execute_Player_Commands:
  2.   - kill
复制代码

Execute_Bungee_Commands
介绍:在Bungee执行的指令. 你必须在配置内启用bungee兼容并在BungeeCord安装BungeeControlBridge.
  1. Execute_Bungee_Commands:
  2.   - alert 玩家 {player} 在 {server} 违反了规则!
复制代码




作者: qsefthuopq    时间: 2019-5-25 19:18
JavaScript变量
ChatControl Pro 支持你创建的动态高性能变量! 变量可以用于很多地方, 如聊天格式和死亡消息. 目前javascript.txt存储了所有的自定义变量.
变量不仅可以用于显示信息,还可以在你写的JavaScript代码内使用.
想要使用Javascript变量,需先启用 Variables.Custom_Enabled.
提醒: 变量在每条新消息上需要重编译,添加太多可能会影响服务器性能.

需求
你需要有一定的Java编程知识,不会的话你也可以百度一下.
运算符定义
开始声明变量. 把变量名放到运算符后.
  1. // 定义{player_name}变量:

  2. define {player_name}
复制代码


脚本
使用这个运算符来些脚本 (JavaScript)来获取变量.脚本从新一行开始写.
脚本接受以下来自以下的变量:
  1. // 返回Watch out 的变量示例!对玩家发送消息和
  2. // 播放音效:
  3. define {sound_and_message}
  4. script:
  5.   // define local pl variable, 只在该脚本内可用
  6.   var pl = event.getPlayer();
  7.   // define local sound variable
  8.   var sound = Java.type("org.bukkit.Sound").ANVIL_LAND;
  9.   // 播放音效
  10.   pl.playSound(pl.getLocation(), sound, 1F, 1F);
  11.   // 返回 "Watch out!"消息作为占位符
  12.   “Watch out!”;
复制代码


使用来自 PlaceholderAPI的变量并用于你的变量
以下示例告诉你如何结合其他插件的变量到你的变量内.
  1. define {test}
  2. script:
  3.   getTagOrPrefix(); // call the function below that returns the tag or prefix

  4.   function getTagOrPrefix() {
  5.       // replace with the tag
  6.       var tag = "{deluxetags_identifier}";
  7.      
  8.       // if the tag is empty, return prefix, else return tag with [] around it.
  9.       return tag == "" ? "{pl_prefix}" : "[" + tag + "]";
  10.   }
复制代码

轻易地访问NMS
define {ping}
script:
   // acts if as you were inside of CraftPlayer class, so NMS is directly available
   player.getHandle().ping  

代码分析:
Javascript/Java 编程向导
插件作者提供了一些如何编程的教程网站:

作者: qsefthuopq    时间: 2019-5-25 19:19
多世界聊天格式

ChatControl可以根据权限给玩家不同的聊天格式. 这可以用于不同世界给挖掘不同的聊天格式.
需要: ChatControl + 任意一个权限插件
1. 设置不同世界聊天格式的分钟
以下示例设置了生成世界、空岛世界和大厅世界的不同聊天格式.
settings.yml
  1. # 文件位置: plugins/ChatControl/settings.yml

  2. Groups:
  3.   Enabled: true
  4.   Group_List:
  5.     survival:
  6.       Interactive_Format: "(sur) &6{Guilds_name}%&r {pl_prefix} {nick}{pl_suffix}&r: {message}"

  7.     hub:
  8.       Interactive_Format: "(h) {nick}&r: {message}"

  9.     skyblock:
  10.       Interactive_Format: "(sky) &a{ISLAND_LEVEL} {nick}&r: {message}"
复制代码

2. 给予玩家权限
给予玩家不同世界的权限. 你可以用权限插件完成.
注意,重复的代码不是ChatControl之错,只是缺乏特定权限插件的兼容性.


作者: qsefthuopq    时间: 2019-5-25 19:20
自定义指令缩写

像 '/chatcontrol ignore swears' 这样比较长的指令不太好使用.所以你可以使用如 '/swears' 的缩写指令. 利用Bukkit的commands.yml 并在里面创建:
aliases:  swears:    - chatcontrol ignore swears
重启服务器即可应用缩写. 之后你就可以使用 '/swear'代替长指令了. 你可以在新一行设置更多指令的缩写.
您可能希望解析原始命令中的所有参数,例如全局聊天消息。这个例子将满足你的需求:
aliases:  shout:    - "chatcontrol global $1-"
当玩家输入 /shout [...]时, 指令会以 /chatcontrol global [...] 的格式执行.

自定义服务器名

除了 server.properties , ChatControl 也可以更改你的服务器名.
a) 想要在聊天消息显示你的服务器名缩写, 只需在settings.yml内配置 Server_Name.
b) 如果你想要在服务器切换消息中更改服务器名, 你需要在 BungeeControlBridge的 config.yml 内修改:
  1. # 用于广播时显示的服务器名缩写
  2. server-names:
  3.   lobby: "hub"
  4.   world: "survival"
复制代码



作者: qsefthuopq    时间: 2019-5-25 19:21
监听优先度

大多数插件都会监听事件. 插件在其他插件取消事件后再次取消事件.所以优先度很重要.
按顺序排列共有六种优先度
比如处理 BLOCK_PLACE 事件. lowest最低优先度监听器等待传唤是否取消事件. 然后low低优先度监听器会检查是否覆盖最低优先度的事件. 最后,它会发送到监视器,此时不改会事件的结果.
监视器用来查看事件的结果, 不会改变事件. 如果你安装了3个插件; 一个是基础的区域保护插件,一个是使用了告示牌的插件,最后一个是登录插件.保护插件监听Priority.LOWEST. 这款插件会发送 你无法在收保护的区域内放置方块' 的消息并取消放置方块的事件.
告示牌插件监听 Priority.NORMAL.发送 你无法在这里放置告示牌 并取消放置事件.
登录插件监听Priority.MONITOR. 登录插件会监听允许的事件并记录下来.
资源:
Event API 参考
http://bukkit.gamepedia.com/Event_API_Reference#Event_Priorities



与其他插件的兼容问题及如何修复
关于ChatControl常见的疑问就是修改聊天处理顺序. 你可以在配置内手动修改优先度.
你可以更改两种优先度. 位于settings.yml的Listener_Priority部分

Towny / Factions / Plots Squared
对于大多数服务器, 你需要尝试修改为适合的优先度 FactionsChat:
  1. Listener_Priority:
  2.   Formatter: LOWEST
复制代码

BanManager / Litebans
如果玩家可以被禁言时说话,也就意味着ChatControl 在禁言前就开始监听聊天时间.
已经有用户试验过把格式优先度调到HIGH 即可解决问题.
你可以尝试使用不同的优先度 (LOWEST, LOW, NORMAL, HIGH, HIGHEST 和 MONITOR) 并找到合适的组合.
Denizen
使用以下优先度来允许Denizen捕获聊天触发器来执行其脚本.
  1. Listener_Priority:
  2.   Formatter: HIGH
复制代码




作者: qsefthuopq    时间: 2019-5-25 19:23
聊天忽略

聊天忽略器这个名字并不好听,但它可以让玩家屏蔽掉他们不想看到的消息 (如脏话). 比如你想要玩家能否看到单词: '**' 和 'asshole'.

1) 创建匹配脏话的规则并将处理器命名为 'swear' 来便于处理.把规则放到rules.txt内.
  1. match **
  2. handle as swear

  3. match asshole
  4. handle as swear
复制代码

2) 在handlers.txt内创建适合的处理器
  1. swear:
  2.   Bypass_With_Permission: "chatcontrol.bypass.swear"   
  3.   Player_Warn_Message: "&cSwearing is prohibited on this server."
  4.   Ignore_Chatdisplay: swears
复制代码


3) 在settings.yml内启用聊天忽略器并能创建名为 'swears'的忽略器作为示例 (示例在下面).
  1. Chat_Ignorer:
  2.   Enabled: true
  3.   Sets:
  4.     swears:
  5.       Ignored_By_Default: false
复制代码

Chat_Ignorer.Sets.swears:忽略器名称.这个名称很重要, 可用于handlers.txt 或用于使用了 'ignore chatdisplay swears' 运算符的规则.
Ignored_By_Default:这个选项决定是否隐藏忽略器内的所有规则. 如果关闭,玩家看得到脏话规则除非玩家输入指令手动隐藏.
4) 进入游戏测试, 给予玩家权限 'chatcontrol.commands.ignore' 和 'chatcontrol.ignoreset.swears'.
玩家 1 尝试输入三句话中的一句.玩家2 暂时什么也不做 Player 2 ,之后如果关闭了'Ignored_By_Default'玩家会看到脏话.
Player 2 输入了执行: '/chc ignore swears'. 会出现一条消息告诉该玩家'swear'忽略组合内的详细已被隐藏.
Player 1 再次说脏话. 他可以看到自己说的话,但玩家 2 看不到 (除非玩家2再次输入指令或服务器重启).



作者: qsefthuopq    时间: 2019-5-25 19:25
本地化

在setting.yml内找到locale并修改为cn即可使用中文. 汉化配置注释可查看站内我的搬运帖
ChatControl支持多门语言! 插件作者欢迎来自世界各地的译者来翻译这款插件的大量消息.
可翻译的内容包括 "Please do not repeat the same (or similar) message" 或 "Please wait X seconds before your next message" 或 "/chc announce" 格式等.

可用语言更改语言文件
默认的语言文件为英语 (en).打开 settings.yml 并找到 Locale 即可更改语言.
编辑语言文件
只需几步你就可以创建新的语言文件.
1. 找到你的语言文件
打开 settings.yml 并找到 Locale .
2. 创建 'localization' 文件夹
打开你的 ChatControl/ 文件夹并创建名为localization的文件夹.
3. 开服
再次开启服务器.新的语言文件会被创建到该文件夹内.复制英语语言文件并重命名为你的语言缩写.

4. 完成!你可以开始翻译了.
你的语言文件里会应用插件的默认数值. 你可以随意修改. 语言文件可能会在插件更新时更新可翻译内容.控制台会发出更新记录.




作者: 58585800    时间: 2019-5-26 06:56
mcbbs有你更精彩