| SignBoard 告示牌 | |
|---|---|
| |
将不限数量的文本行附加到标志和活动实体,并在单击它们时运行命令! |
| 作 者 | Ebaldino |
| 发布时间 | 2016年9月6日 |
| 支持核心 | Spigot | 原生版本 |
| 支持版本 | 1.8,1.9,1.10,1.11,1.12,1.13,1.14,1.15,1.16,1.17,1.18,1.19 |
插件详细介绍
SignBoard是一款Spigot/Paper/Bukkit插件,允许你将无限量的文本附加到告示牌或生物实体上(包括盔甲架、村民、怪物和Citizens2 NPC!)。它还支持在玩家查看告示牌/实体时给予书籍,并在玩家查看/离开/点击告示牌或攻击/杀死实体时执行命令。SignBoard还支持多语言显示,可以根据玩家的语言或职业显示不同的内容。
厌倦了告示牌上拥挤的空间?现在,你可以使用 SignBoard 来展示无限量的文本!你甚至可以将文本附加到生物实体上!而且,你还可以为告示牌和实体附加命令,以便在不同的时间运行!
使用 SignBoard,你可以创建文本“面板”,并将这些面板附加到告示牌或生物实体。每个面板最多可以容纳 15 行文本(每个面板总共 600 个字符)。你还可以将多个面板组合成一个“集合”,并将该集合用作单个文本主体。
当玩家查看告示牌或实体时,排行榜区域会用于向他们展示面板上的文本。它非常适合在游戏中交流任何内容。管理员可以向玩家提供说明,玩家可以向访客展示有关其建筑的详细信息,RPG 游戏可以在队伍进入房间时提供详细的背景故事……没有限制。
与将面板附加到告示牌的方式非常相似,SignBoard 允许你将面板或集合附加到生物实体!例如,你可以将面板或集合附加到村民或 NPC,每当玩家查看 NPC 时,就会显示文本。(盔甲架也可以用作生物实体)。
当向玩家展示一组面板时,一次只会显示一个面板。玩家可以通过右键或左键单击告示牌/实体来在面板之间来回切换。这样,一个集合就像书中的页面一样。
你还可以将命令附加到告示牌和实体,并控制这些命令的运行时间。命令可以在玩家查看告示牌/实体、离开告示牌/实体、单击告示牌或攻击/杀死实体时运行。
作为额外的好处,SignBoard 还允许你编辑告示牌上的文本,而无需破坏告示牌并从头开始编写所有内容 - 只需查看你创建的告示牌并使用命令 /sb sign lineX text(见下文)。
SignBoard v1.6.3 及更高版本支持从 1.13.3 到 1.19.3 的所有 Bukkit/Spigot/Paper 版本。SignBoard v1.6.2 支持从 1.8.7 到 1.16.1 的所有 Bukkit/Spigot/Paper 版本。
(Signboard 有自己的集合变量,并支持 Placeholder API)
从 1.6.6 版本开始,SignBoard 支持其界面(菜单和消息)的不同语言。这允许用户选择自己的语言偏好并以该语言使用插件。现在它有英语(美国)、葡萄牙语(巴西)和西班牙语(哥伦比亚)选项,但你可以将区域设置文件翻译成其他语言 - 只需与我们分享,我们就会将其包含在 SignBoard 的未来版本中!
查看 /sb locale 命令。
新面板的默认文本也已移至区域设置文件。因此,现在创建一个新面板时,每个玩家都会以他们(选择的)首选语言看到其默认文本。
实际上。每个面板上的每一行都会被处理以进行翻译。因此,如果你要在区域设置文件中添加一行,内容为“This is a board line”:“Esta é uma linha de placa”,则每个包含“This is a board line”的面板都会根据每个玩家的首选区域设置显示来自相应区域设置文件的翻译版本。
只需将 jar 文件放入插件文件夹并重新启动服务器。
SignBoard 的工作方式是让你创建“面板”,然后将这些“面板”附加到一个或多个告示牌或实体 - 动物、村民、怪物、盔甲架、NPC 甚至真实玩家(只有 OP 才能将面板附加到玩家)。
你可以使用 /sb set 命令将面板分组到集合中。然后,一个集合的行为类似于单个文本主体,并且它包含的各种面板将按顺序显示,玩家可以右键或左键单击来切换面板。
你可以使用 /sb sign attach 和 /sb sign detach 命令来附加或从告示牌移除面板或集合。
使用命令 /sb entity attach 和 /sb entity detach 从生物实体附加和分离面板或集合。
面板的内容显示在记分卡区域中,因此每个面板最多可以有 15 行,每行 40 个字符。
你可以使用 Minecraft 中常用的所有文本颜色和格式标记(&0 = 黑色;&1 = 深蓝色;&2 = 深绿色;&3 = 深青色;&4 = 深红色;&5 = 深紫色;&6 = 金色;&7 = 灰色;&8 = 深灰色;&9 = 蓝色;&a = 绿色;&b = 青色;&c = 红色;&d = 浅紫色;&e = 黄色;&f = 白色;&k = 魔法;&l = 粗体;&m = 删除线;&n = 下划线;&o = 斜体;&r = 重置)。
/sb board new [boardname] 创建一个面板。/sb sign attach [boardname] 将面板附加到它。/sb entity attach [boardname]。/sb board [boardname] lineX [text] 编辑面板(你不需要看着告示牌/实体)。/sb set 命令将多个面板分组到集合中。然后使用 /sb sign attach 和 /sb entity attach 将集合附加到告示牌或实体。当你看着告示牌/实体时,将显示集合中的第一个面板;通过右键或左键单击告示牌/实体来循环浏览其他面板。/sb sign lineX text 编辑告示牌。当你创建一个新面板时,它带有默认内容。你可以通过三种不同的方式编辑任何面板上的行:
/sb board [boardname] lineX [content] - 直接更改行 X 的内容。/sb board [boardname] lineX-Y [content] - 更改行 X 到 Y 的内容(例如 1-3 或 3-1 - 顺序很重要)。/sb board [boardname] linepushX [content] - 更改从 lineX 开始的行的内容,并将任何现有行向下推。[content] 可以是任何文本,在最后两个命令中,它甚至可以跨越多行 - 只要你使用 \n 来指示换行符。
例如,内容文本 4\n text 3\n text 2 包含两个换行符,因此它包含三行的文本。如果你使用命令
/sb board [boardname] line4-3 text 4\n text 3\n text 2
你将使用“text 4”替换第 4 行的内容,并使用“text 3”替换第 3 行的内容;“text 2”将被忽略,因为你只指定了要更新的两行(4-3)。
同样,如果你使用命令
/sb board [boardname] linepush4 text 4\n text 3
你将使用“text 4”替换第 4 行的内容,使用“text 3”替换第 3 行的内容,并且旧的第 4, 3, 2, 1 行的内容将被“向下推”,因为插入了新内容,导致第 2 行以第 4 行的旧内容结束,第 1 行以第 3 行的旧内容结束。
需要记住的几件事:
从 1.3.2 版本开始,SignBoard 允许你在玩家查看告示牌或生物实体时向他们显示多个面板。这是通过将多个面板分组到一个集合中来实现的。
使用 /sb set 命令创建、删除和列出现有集合。以与附加/分离面板相同的方式使用 /sb sign 和 /sb entity 的附加和分离命令附加和分离告示牌和实体的集合。
附加集合后,当玩家查看告示牌/实体时,将显示集合中的第一个面板。然后,玩家可以通过左键和右键单击来循环浏览不同的面板。集合可以包含任意数量的面板。
关于附加了集合的实体的几点说明:
"/sb entity onattack" 命令仍然有效,但实体不会受到任何损坏。当玩家查看告示牌或实体时,你可以选择在屏幕上显示面板文本或将文本作为书籍提供给玩家 - 或者两者都提供,或者两者都不提供。命令 /sb sign show_board 和 /sb entity show_board 切换在屏幕上显示面板的文本。如果你更愿意给玩家一本带有文本的书籍,则命令 /sb sign give_book 和 /sb entity give_book 切换该功能。你也可以使用这些命令既在屏幕上显示面板,又提供书籍,或者既不显示面板也不提供书籍。
使用 /sb sign status 和 /sb entity status 检查所有已定义选项的状态。
从 1.6.12 版本开始,命令 /sb board give_as_book [boardname] [playername] 可用于立即将某个面板的内容作为书籍提供给玩家。例如,可以在告示牌或实体的“run”命令中使用此命令,以便仅在单击告示牌或实体时才发放相应的书籍,而不是在玩家查看时才发放。
SignBoard 会自动转换你的面板文本,以将其放置在书籍中(当启用 show_book 时)。由于书籍和记分卡上的行大小差异很大,并且书籍有分页符,SignBoard 会尝试整齐地断行和分页,但可能需要进行一些微调。
以下是一些可以帮助你的提示:
就像你将面板附加到告示牌和实体一样,你也可以附加将在特定时间运行的命令。这些可以是管理员可以在游戏中发出的任何命令。命令将以玩家的名义发出,并且就像玩家具有管理员权限一样。这些命令接受变量替换,就像任何 SignBoard 命令一样。
命令被指定为一个序列,用竖线分隔,例如 <cmd1> | <cmd2> | ... | <cmdn>。
从 1.3.3 版本开始,你还可以在序列中插入延迟,语法为 [Tu],其中 T 是一个大于 0 的整数,u 是一个时间单位:'s'、'm' 或 'h'。例如,序列 [5s] | <cmd1> | [2m] | <cmd2> 在执行时,将在运行 <cmd1> 之前等待 5 秒,然后在运行 <cmd2> 之前额外等待 2 分钟。谨慎使用延迟;即使玩家不再查看告示牌/实体,甚至离开了服务器,延迟命令也会执行。
某些命令只能从服务器控制台运行。从 1.6.13 版本开始,你可以在命令前加上 _rfc_ 以告诉 SignBoard 从服务器控制台运行该命令。如下所示:/sb sign before _rfc_ tell Ebaldino hi。
以下 SignBoard 命令控制着发生什么以及何时发生:
/sb sign before 和 /sb entity before - 允许你指定一个命令列表,以便在每次玩家查看告示牌或实体时运行,就在显示面板文本之前。(如果 show_board 选项关闭,命令仍然运行)。/sb sign after 和 /sb entity after - 允许你指定一个命令列表,以便在每次玩家离开告示牌或实体时运行,就在隐藏面板文本之后。(如果 show_board 选项关闭,命令仍然运行)。/sb sign onclick - 允许你指定一个命令列表,以便在玩家单击告示牌时运行。/sb sign onrightclick - 允许你指定一个命令列表,以便在玩家右键单击告示牌时运行。/sb sign onshiftclick 和 /sb sign onrightshiftclick - 允许你指定一个命令列表,以便在玩家分别按住 Shift 键单击或右键单击告示牌时运行。/sb entity onattack - 允许你指定一个命令列表,以便在每次实体受到攻击时运行。/sb entity onkill - 允许你指定一个命令列表,以便在实体被杀死时运行。使用 /sb sign status 和 /sb entity status 检查所有已定义选项的状态。
在你的面板中的任何位置使用以下任何变量。确保包含“{”和“}”。
当面板显示给玩家时,变量将被替换为它们的实时值。
Placeholder API 支持从 Signboard 1.1.8 版本开始。这允许你使用来自许多其他插件的变量(“占位符”),以及大量的“本机”Placeholder API 变量。
要使用 Placeholder API,请下载插件,将其放入插件文件夹并重新启动服务器。在游戏中,发出命令 /papi ecloud list all 并查找你想要的占位符组。然后单击它并接受下载命令。然后你要做的就是像变量一样在你的面板上使用占位符,并用“%”括起来(%placeholder%)。
Placeholder API 本机变量及其组在此处列出:Placeholder API 本机变量列表
从 1.4.9 版本开始,SignBoard 使用 FeatherBoard API 进行开箱即用的兼容性。特别感谢 jamisen10 让我注意到 FB API。
在 1.4.8 版本之前,SignBoard 实施了一种基于命令的 FeatherBoard 兼容性解决方法。它检测到 FB 的存在,然后在向用户显示面板之前发出 "/fb off -s"(为该用户关闭 FB),并在用户移开时发出 "/fb on -s"(重新打开 FB)。
如果你有另一个记分卡插件阻止 SignBoard 正确显示其面板,并且该插件具有如上所述的“off”和“on”命令,则可以使用 config.yml 中的“cmd_before”和“cmd_after”选项来实施与 FeatherBoard 相同的“off/on”机制。或者你可以使用面板命令对单个面板执行相同的操作。特别感谢 gmalone 帮助我解决了这个解决方案!
分类允许你向不同的玩家群体传达不同的内容。
这是一个非常强大的功能,可以让你做一些有趣的事情,例如:
它不仅仅适用于语言或类别!分类也适用于你可以想到的任何其他玩家群体!
它是如何工作的?这取决于你是否在服务器上使用权限:
就是这样。每当具有 lang.ptbr 权限的玩家查看附加了 signboard 面板的告示牌/实体时,将显示 signboard^lang.ptbr 面板。
只需将所有当前存在的面板视为属于一个空白的“默认”类别即可。你可以创建任何你喜欢的新类别。
重要提示:请记住,OP 玩家具有所有权限,因此他们将始终看到类别面板,就好像他们已被授予该权限一样。为了设置和测试此功能,最好使用未被 OP 的玩家。
如果不使用权限,则需要创建类别,将其分配给玩家,然后创建类别面板。
就是这样。每当具有 lang.ptbr 类别的玩家查看附加了 signboard 面板的告示牌/实体时,将显示 signboard^lang.ptbr 面板。
只需将所有当前存在的面板视为属于一个空白的“默认”类别即可。你可以创建任何你喜欢的新类别。
SignBoard 的标准根命令是 /sb。由于其他插件也可能使用 /sb,SignBoard 支持四个命令别名。但是,仅仅拥有别名并不能阻止 SignBoard 在你每次尝试使用其他插件时都做出响应。因此,SignBoard 允许你选择它将响应哪些根命令别名。
SignBoard 可以响应以下五个根命令中的任何一个:/sb /signboard /sbd /sbrd /signbd。
config.yml 中的 active_aliases 参数控制实际使用哪些别名。例如,以下配置行将使 SignBoard 接受所有 5 个根命令:
active_aliases: sb signboard sbd sbrd signbd
默认情况下,只有三个选项处于活动状态(sb sbd signboard),但是你可以根据需要混合和匹配,以确保与服务器中的其他插件兼容。列表中的第一个选项将是在 SignBoard 的所有帮助文本中显示的选项(通常为“/sb”)。
/sb help - 显示插件描述和命令。/sb howto - SignBoard 的分步说明。/sb variables - 列出所有可用的变量以及如何使用它们。/sb board new [boardname] - 创建一个新面板以用于告示牌。/sb board list - 列出你的所有面板 - 以及它们的附件。/sb board list [boardname] - 列出特定面板的内容。/sb board clear [boardname] - 清除面板的内容。/sb board copy [boardname] [newname] - 将面板“boardname”复制到“newname”。/sb board delete [boardname] - 删除名为“boardname”的面板。/sb board rename [boardname] [newname] - 将面板“boardname”重命名为“newname”。/sb board [boardname] lineX text - 编辑面板上的第 X 行,将其替换为“text”。/sb board [boardname] lineX-Y text - 将第 X 行到第 Y 行的内容替换为文本中的行(使用 \n 指示换行符)。/sb board [boardname] linepushX text - 将“text”中的任何行(用 \n 分隔)插入到面板中,从第 X 行开始并将现有内容向下推。/sb board give_as_book [boardname] [playername] - 将面板的文本作为书籍提供给指定的玩家。/sb set new [setname] = [board1] [board2] ... [board n] - 创建一个新的面板集合。/sb set delete [setname] - 删除名为“setname”的集合。/sb set list - 列出你的所有集合。/sb set list [setname] - 列出构成特定集合的面板。/sb sign lineX text - 编辑你正在查看的告示牌,将第“X”行 (1-4) 替换为“text”。/sb sign attach [boardname] - 将面板附加到告示牌。/sb sign detach [boardname] - 从告示牌分离任何面板。/sb sign status - 显示告示牌选项的当前状态。/sb sign show_board - 切换附加到告示牌的屏幕上的面板。/sb sign give_book - 是否应将面板文本作为书籍提供(切换)。/sb sign before <cmd|cmd> - 当玩家查看告示牌时要运行的命令列表。/sb sign after <cmd|cmd> - 当玩家离开告示牌时要运行的命令列表。/sb sign onclick <cmd|cmd> - 当玩家单击告示牌时要运行的命令列表。/sb sign onshiftclick <cmd|cmd> - 当玩家按住 Shift 键单击告示牌时要运行的命令列表。/sb sign onrightclick <cmd|cmd> - 当玩家右键单击告示牌时要运行的命令列表。/sb sign onrightshiftclick <cmd|cmd> - 当玩家按住 Shift 键右键单击告示牌时要运行的命令列表。/sb entity attach [boardname] - 将面板附加到(非玩家)生物实体。/sb entity detach [boardname] - 从生物实体分离任何面板。/sb entity status - 显示实体选项的当前状态。/sb entity show_board - 切换附加到实体的屏幕上的面板。/sb entity give_book - 是否应将面板文本作为书籍提供(切换)。/sb entity nametag [ignore|hide|show]- 确定当玩家显示面板时,附加了面板的实体的名称标签是否可见。/sb entity before <cmd|cmd> - 当玩家查看实体时要运行的命令列表。/sb entity after <cmd|cmd> - 当玩家离开实体时要运行的命令列表。/sb entity onattack <cmd|cmd> - 当玩家攻击实体时要运行的命令列表。/sb entity onkill <cmd|cmd> - 当玩家杀死实体时要运行的命令列表。/isp locale list - 显示插件界面可用的语言。/isp locale set <lang> - 将用户的首选语言设置为 <lang>。/isp locale clear – 清除用户的区域设置偏好(恢复为默认设置)。/sb cat new [categoryname] - 创建新类别。/sb cat delete [categoryname] - 删除类别。/sb cat assigncat [playername] [categoryname1] [categoryname2] ... [categorynameN] - 将多个类别分配给玩家。/sb cat assignplr [categoryname] [playername1] [playername2] ... [playernameN] - 将多个玩家分配给类别。/sb cat unassign [categoryname] [playername] - 从类别中取消分配玩家。/sb cat list - 列出现有类别(非权限)。/sb cat status [categoryname] - 显示类别的状态。/sb cat [playername] - 显示玩家的类别(非权限)。/sb board list all - 列出所有玩家的面板名称/sb set list all - 列出所有玩家的所有集合/sb reload - 重新加载 config.yml 设置/sb version <nbr> - 显示运行的 SignBoard 版本或显示版本的更改历史记录(即 /sb version 1.6.5)/sb cleanup - 清理 signs.yml 和 attachments.yml 中在 SignBoard 未运行时在游戏中删除的任何告示牌。除非你确定 yml 文件中有“死”告示牌,否则不要使用此命令。备份你的 signs.yml 和 attachments.yml,并确保在运行此命令之前加载了所有世界。/isp locale listplayers - 显示所有玩家的区域设置首选项。/isp locale list <lang> - 显示语言 <lang> 的所有翻译字符串。默认情况下,SignBoard 将在服务器重新启动或重新加载时自动下载并安装新更新。
你可以通过更改 config.yml 中的 updates: 选项来控制此功能。
updates: 的有效值为:
auto(自动下载并安装新版本);check(仅检查是否有新版本可用);off(完全关闭更新)。更新检查消息将始终显示在控制台上。
更新后,OP 会收到一条一次性消息,告诉他们有关新版本的信息。他们可以使用命令 /sb version <nbr> 检查版本历史记录。
无需更新 config.yml 中的首选设置!!
下载并安装新版本后,SignBoard 将自动更新 config.yml 文件,并保留你的自定义设置。
以下是 config.yml 中的默认设置:
#-----:-------------------------------------------------------------------------------------------------------------------------
# SignBoard config.yml
# If auto update is active for SignBoard, the config.yml file will be automatically updated as well
# When config.yml is updated, all changes you made to the VALUES of the settings will be PRESERVED and copied over to the new config.yml
# ... however, any changes you made to the COMMENTS in this file will be overwritten by the default comment.
#-----:-------------------------------------------------------------------------------------------------------------------------
# Auto updates:
# Possible values for updates:
# auto (downloads and installs new versions automatically);
# check (only checks if a new version is available);
# off (turns off updates completely).
updates: auto
# Config.yml version - if this is lower than the actual SignBoard version (use /sb version), it means you probably should do a manual merge of config.new and config.yml. Also, you should manually get the new locale files from the jar and manually merge those as well. Really, it's A LOT EASIER to