各位玩MC基岩版的服主、地图创作者们,是不是还停留在用计分板简单做个侧边栏在线人数、金币显示的阶段?今天给大家带来实打实的基岩版计分板进阶命令教程,都是1.20版本实测可用的,没有虚的,看完你就能把之前要十几个命令方块的逻辑压缩到两三条指令搞定。
首先要讲的是最基础的进阶前置,就是隐藏存储目标的搭建,很多人不知道基岩版支持#前缀的隐藏计分板目标,你输入/scoreboard objectives add #玩家数据 dummy 这个,加了#的目标不会在指令补全里显示,玩家就算拿到权限也查不到你后台存的内容,特别适合做核心数据存储,比你用命令方块存NBT安全还方便。
接下来是分数筛选的进阶用法,之前很多人要筛选某个分数段的玩家,还要用testfor循环检测,其实现在基岩版的选择器直接支持scores参数,比如你要给所有金币大于等于100的玩家发力量效果,直接输入/effect give @a[scores={#玩家数据=100..}] minecraft:strength 5 0 true 就行,这里的参数是支持范围写法的,比如100..就是大于等于100,..50就是小于等于50,10..50就是10到50之间,不用写多个testfor,省好多服务器性能。
然后讲自动同步的内置类型,很多人做实时血量、经验显示,还要每tick循环给玩家赋值,其实计分板本身就带自动同步的类型,比如你建个目标叫#实时血量,类型选minecraft:health,这个会自动同步所有玩家的当前血量,不用你写任何循环命令,要显示在侧边栏直接输入/scoreboard objectives setsidebar #实时血量 就可以,数值是实时刷新的,比你自己写的循环命令延迟低还准确。
接下来是数值运算的进阶用法,基岩版现在支持完整的计分板operation操作,可以直接用虚拟假人当常量,不用刷实体盔甲架占加载块,比如你要把所有玩家的金币乘以2,先输入/scoreboard players set 常量 #玩家数据 2,这里的“常量”是虚拟假人,不会生成实体也不会被玩家看到,然后再输入/scoreboard players operation @a #玩家数据 *= 常量 #玩家数据,就能一键完成所有玩家的金币翻倍,除了乘法,还支持加减、取模、赋值这些操作,做小游戏服的数值计算特别方便。
最后给大家举个实用的落地例子,比如做在线时长奖励,先建个#游玩时长目标,类型选minecraft.playtime,自动统计玩家的秒数,然后你要给游玩满1小时也就是3600秒的玩家发奖励,直接输入/give @a[scores={#游玩时长=3600..,has_tag=已发奖}!] diamond 10,然后再给这个玩家加上已发奖的标签,就不会重复发奖励了,整个逻辑只要两条命令,比你之前搭一堆命令方块省太多事。大家可以先在创造模式里试几次,搞懂了operation和选择器参数的用法,基本大部分的数值需求都能搞定,有啥问题可以在楼里交流。