
认识公告指令的基本概念
作为一个从1.6版本就开始玩我的世界的老玩家,我深知公告指令对于服务器管理的重要性。公告指令主要指的是通过命令方块或指令行向所有玩家发送消息的功能,核心指令是/tellraw和/say。其中/tellraw支持JSON格式,可以自定义颜色、点击事件和悬停文本,而/say则简单直接。掌握这两个指令,你就能让服务器消息不再枯燥,还能实现玩家通知、活动提醒甚至广告展示。
基础指令用法与快速上手
先从最简单的/say开始。在聊天框输入/say 欢迎来到我的服务器,所有在线玩家都会收到一条白色文字的系统公告。这适合临时喊话,但无法控制颜色和格式。而/tellraw @a {"text":"欢迎","color":"gold"}则能发送金色字体的“欢迎”。注意@a代表所有玩家,你还可以用@p指定最近的玩家,用@r随机玩家。初次使用时,建议在命令方块里测试,避免输错格式导致显示失败。比如/tellraw @a {"text":"服务器重启倒计时10分钟,","color":"red"},{"text":"请及时退出","color":"yellow","bold":true}就能实现彩色加粗提示。
美化公告内容的高级技巧
想让公告更吸睛?核心在于JSON嵌套。你可以给文字添加点击事件,比如/tellraw @a {"text":"点击这里查看规则","clickEvent":{"action":"open_url","value":"https://你的规则链接"}},这样玩家一点击就能跳转网页。悬停事件也很实用:/tellraw @a {"text":"鼠标放在这里","hoverEvent":{"action":"show_text","value":"这是隐藏信息"}}。如果想同时使用多个效果,需要用数组包裹多个对象。例如/tellraw @a [{"text":"[点击领取]","color":"green","clickEvent":{"action":"run_command","value":"/give @s diamond 1"}},{"text":"每日奖励","color":"gold"}],点击立刻获得一颗钻石。注意每个动作的action值必须正确,run_command用于执行指令,suggest_command用于输入框中显示指令但不执行。
定时公告实现自动化通知
手动公告太麻烦,利用命令方块和红石循环就能实现全自动。建造一个循环命令方块,输入/tellraw @a {"text":"整点报时:现在是","color":"gray"},{"text":"新的一天","color":"aqua","bold":true},再连接一个红石时钟或使用/scoreboard触发器。更高级的做法是用计分板记录时间,比如建立一个虚拟计时器,每秒+1,当数值达到300时触发公告。用/scoreboard objectives add timer dummy,然后用/execute as @a[scores={timer=300}] run tellraw @a ... 最后重置分数。这种方法无需任何mod,纯原版就能实现整点、半点或自定义间隔的公告。如果你用插件服,还可以结合Essentials的自动广播,但原版指令玩法更纯净。
实战技巧与常见问题修复
很多新手容易犯错的是JSON括号和逗号位置。注意每个对象之间要有逗号,最后一个对象后不要加逗号。比如/tellraw @a [{"text":"A"},{"text":"B"}]是正确的,写成[{"text":"A"},{"text":"B"},]会报错。另外,中文双引号要使用英文半角引号,否则指令无效。如果想换行,可以在text中加入\n,比如{"text":"第一行\n第二行"}。颜色支持black、dark_blue、dark_green等16种标准色,还可以用十六进制颜色吗?原版1.16+支持,需要json格式{\"text\":\"测试\",\"color\":\"#FFAA00\"}。有时发出去的公告在玩家聊天栏里会被其他消息刷掉,建议使用/tellraw自带的高亮格式,比如加粗或斜体,或者将公告设置为标题格式(通过/title指令)。/title @a title {"text":"公告","color":"gold"}会中间显示大字,持续3秒。结合/subtitle能实现双层效果。我这里给出一个组合指令:/title @a title {"text":"服务器维护","color":"red"};/title @a subtitle {"text":"请保存进度","color":"yellow"}。注意要用分号连接,实际在命令方块里分别放两个命令方块依次激活即可。
多服务器同步公告的思路
如果你有多个子服务器,又想统一公告内容,可以用记分板或数据包实现。比如BungeeCord配合BungeeCord插件能跨服发送/tellraw,但原版指令受限于世界。一个取巧的方法是在每个服务器里放置命令方块,用红石信号同步触发。通过网线连接或利用玩家跨服时的事件,不过纯原版较难实现。推荐使用spigot服务器,安装CommandPulse插件,设定一个共享数据文件,所有服务器读取。但这属于插件范畴,如果你是生存服玩家,建议将公告写在命令方块里,通过/trigger指令让玩家自己手动打开查看。例如创建一个计分板变量,玩家用/trigger shout时执行tellraw展示公告列表。
利用公告指令构建交互功能
除了发通知,公告指令还能做成互动菜单。例如/tellraw @a [{"text":"[服务器商店]","color":"light_purple","clickEvent":{"action":"run_command","value":"/shop"}}],点击后立刻打开商店(如果有Shop插件)。或者制作一个每日签到按钮:/tellraw @a [{"text":"[点击签到]","color":"blue","clickEvent":{"action":"run_command","value":"/signin"}}]。但注意run_command的指令长度限制,太长会失败。如果玩家点击无反应,检查命令方块是否有权限,或是否在冒险模式下限制了指令。我建议在生存服里把这类按钮放在出生点,用循环命令方块不断发送,但注意频率别太高,否则玩家聊天栏会刷屏。更好的做法是用一个脉冲命令方块每5秒发送一次,或者在玩家进入服务器时只发一次。通过/tellraw @a[scores={login=1}] ... 结合计分板记录登录状态即可。
安全与权限控制要点
公告指令默认任何操作员都能使用,但如果你给非OP玩家/trigger权限,他们也能间接发送自定义内容?注意/tellraw本身是OP指令,但通过/trigger设置的反馈指令可以给普通玩家。比如设置一个计分板目标,玩家执行/trigger 发送公告时,通过命令方块执行/tellraw。这样普通玩家也能发公告,但内容受限于命令方块预设。如果你不希望玩家乱发,可以将命令方块权限设为仅管理员可编辑。另外,注意/tellraw执行的指令(run_command)会导致玩家执行对应指令,存在安全风险:比如恶意设置/tellraw @a {"clickEvent":{"action":"run_command","value":"/op 玩家名"}} 虽然需要OP权限才能创建该命令方块,但一旦创建,点击就会被执行。所以一定要限制命令方块的放置权限,只给信任的玩家。建议使用/scoreboard players tag @a[tag=admin] 来标记管理员,只有他们才能创建命令方块。
以上是我多年玩我的世界积累的公告指令经验,从基础到高级,从美化到自动化,希望能帮你把服务器消息变得井井有条。试试看吧,你会发现原版指令的魅力远超想象。
相关文章