在我的世界服务器中,服主会希望为服务器添加金币系统,用来进行交易。
scoreboard记分板介绍
创建记分板:scoreboard objectives add <objective: string> dummy [displayName: string]
<objective: string>是记分板的名字,可以是中文、英文等。[displayName: string]是记分板的显示名字,如果未指定,默认为记分板的名字。
删除记分板:scoreboard objectives remove <objective: string>
显示记分板:scoreboard objectives setdisplay <list|sidebar> [objective: string] [ascending|descending]
list是显示在游戏暂停界面的右边。sidebar的显示在侧边栏。list与sidebar可以填写ascending(从小到大排列)或descending(从大到小排列)
操作两个记分板之间的数值:scoreboard players operation <player: target> <targetObjective: string> <operation: operator> <selector: target> <objective: string>
<player: target>、<selector: target>是目标选择器,<targetObjective: string>、<objective: string>是记分板名字,<operation: operator>是运算符。
创建虚拟金币
服务器的金币是用记分板来实现的。我们先创建一个名为money的记分板:
scoreboard objectives add money dummy
为了方便玩家获取自己的金币信息,我们可以将该记分板显示出来,这里演示为将记分板显示在侧边栏上:
scoreboard objectives setdisplay sidebar money descending
这样简单的金币系统就完成了,服主想为服务器添加商店可以参考这篇文章:https://mc.ziyueyoushang.com/minecraft-instruction-store-scoreboard-usage.html
但是服主也许会观察到:当玩家下线后,玩家的数据仍然会显示在记分板上。这样当服务器的玩家人数过多之后,玩家下线会很影响在线的玩家观察自己的金币数量。所以我们可以想办法消除记分板上的玩家下线。
原理介绍
我们可以创建另一个记分板,让这个记分板上玩家金币数等于本来记分板的金币数,移出这个记分板。一直重复这个过程,以实现刷新的效果。
指令实践
移出用来刷新的记分板。放置一个循环命令方块,无条件,保持开启。
scoreboard objectives remove money2
创建用来刷新的记分板。接着放置一个连锁命令方块,有条件,保持开启。
scoreboard objectives add money2 dummy 金币数
让该记分板显示在侧边栏。接着放置一个连锁命令方块,有条件,保持开启。
scoreboard objectives setdisplay sidebar money2 descending
让用来刷新的记分板数值等于金币数。接着放置一个连锁命令方块,有条件,保持开启。
execute as @a at @s run scoreboard players operation @s money2 = @s money
为了使这些命令方块能够在附近没有人的情况下继续允许,服主可以站在命令方块旁边输入以下指令将该区块变为常加载区块。
/tickingarea add circle ~ ~ ~ 1 money
服主可以输入以下指令手动启动该系统。
scoreboard objectives add money2 dummy 金币数
好了,以上就是我的世界服务器简单的金币系统的介绍了。