欢迎光临散文网 会员登陆 & 注册

【MCJE】如何使用命令完成物品交易

2023-05-24 23:26 作者:火昱Huoyu  | 我要投稿

所谓交易,或者说以物易物,在其中一方看来,其实包含两个部分:消耗物品,得到物品

因此就容易联想到这两个命令:

/give 目标 物品{物品数据标签} 数量

/clear 目标 物品{物品数据标签} 最大清除数量

/give可以给“目标”指定数量的指定物品

而/clear可以清除“目标”指定数量的指定物品

在进行交易的玩家视角,这就分别相当于得到和消耗的两个效果

因此只需要这两条命令就可以实现完成交易这一效果

(注:你需要先获得该“特殊绿宝石”用于交易:聊天框输入/give @s minecraft:emerald{tag:["A"]} 64即可)

完成交易:

clear @p emerald{tag:["A"]} 40

give @p diamond_sword{} 1

//*这两条命令在执行完成交易时依次执行

//完成“用40个带有标签tag:["A"]的绿宝石兑换一把普通钻石剑”

但还有一个问题是,这只是完成交易的部分,而完成交易之前,还需要先确认是否能交易

在很古老的时代曾看过基岩版玩家用条件制约使give命令在clear能成功清除时才执行,这样已经做到了一半,也就是在能交易时,才能得到物品,但这个办法是不好的,它无论在什么时候都会进行消耗物品

而无论是在最新的java版还是在最新的基岩版,都已经可以做到更好的检测了,我以java版举例:

scoreboard objectives add score dummy

//*初始化计分项,在一个存档内只需要执行一次(直接聊天框手打一次)

execute store result score #Count score run clear @p emerald{tag:["A"]} 0

//将背包中拥有的特殊绿宝石数量覆盖到“分 数”中

execute if score #Count score matches 40.. run clear @p emerald{tag:["A"]} 40

execute if score #Count score matches 40.. run give @p diamond_sword{} 1

//如果“分数”大于等于40(即背包中有足够的特殊绿宝石)就扣除40个特殊绿宝石,并给予一把普通钻石剑

//*连锁执行,在进行交易时执行(用脉冲连锁连起来,用按钮等激活脉冲命令方块以进行一次购买)

原理:

clear命令执行完会返回一段数值,当清除了物品时会返回清除的数量,而当clear后面的最大清除数量为0时便会返回身上所有的符合条件的物品数量

这一个返回的数值,又可以用execute命令store result储存到一个指定的位置,而这个位置,又可以是一个计分板分数

因此,便能将身上所有的某物品的数量,覆盖到一个分数中去(也就是那个#Count score)

而分数的值,又可以用于条件判断

if score #Count score matches 40..的意思便是在数值大于等于40时才执行

仔细看会发现,最后两条命令“run”前面的内容是完全一致的,这一部分包括一个判断的条件:

分数大于等于40 即背包中的这种绿宝石大于等于40个 时 执行后面的部分

因为条件完全一致,因此它们后面部分的命令会在这个条件达成时同时(或者说依次)执行

再仔细看一下,被执行的“后面这一部分”,其实就是前面完成交易的命令

所以,这一整大部分,就已经包含了“是否能交易”以及执行“完成交易”这两份内容了

于是,便能完成最终的效果

对于很少接触过命令的人,这份教程或许会很难以理解,想要了解其中使用的命令的可以再到以下页面中探索:

使用的四种命令:

命令/give - Minecraft Wiki_BWIKI_哔哩哔哩 (biligame.com)

命令/clear - Minecraft Wiki_BWIKI_哔哩哔哩 (biligame.com)

命令/execute - Minecraft Wiki_BWIKI_哔哩哔哩 (biligame.com)

命令/scoreboard - Minecraft Wiki_BWIKI_哔哩哔哩 (biligame.com)

nbt相关内容:

教程/NBT命令标签 - Minecraft Wiki_BWIKI_哔哩哔哩 (biligame.com)


【MCJE】如何使用命令完成物品交易的评论 (共 条)

分享到微博请遵守国家法律