PowerNukkitX / PowerNukkitX-Legacy

GNU General Public License v3.0
7 stars 4 forks source link

为目标选择器添加hasitem参数 #19

Open xinchenxpc opened 1 year ago

xinchenxpc commented 1 year ago

❇ 特性请求

在PNX中为指令的目标选择器添加hasitem参数

以下来自中文Minecraft Wiki

[hasitem={<参数1>=<值1>,<参数2>=<值2>,...}] — 根据指定目标的物品栏过滤目标。 [hasitem=[{<参数A>=<值A>,...},{<参数B>=<值B>,...}]] — 选择所有物品栏满足项目A条件和项目B条件的目标。 根据指定目标的物品栏是否满足条件过滤目标。hasitem参数在一个目标选择器中不能重复使用,但可以在参数中指定多个条件项目。 hasitem给定的值必须用{}框起来,如果条件项目多余一个则必须用,将各个项目隔开,并用[]框起来。 条件项目中可以重复使用相同的参数,但后来添加的参数会覆盖掉之前的,所以它只会使用最后一个参数中的值。 条件项目中所有可用参数:

item 指定要检测的物品,此参数的值必须填入一个有效的物品ID,或一个存在物品形态的有效的方块ID。此参数为必要参数。如果未定义,命令将执行失败。

data 可选,指定要检测的物品的数据值,此参数的值必须是0至32767之间(包含)的整数。如果填入的值无效,可能造成游戏崩溃,如果未定义,则默认为0。 目前不适用于方块类物品。对于方块类物品,data参数的值始终为默认值0,且搜索到的方块类物品的数据值也会自动转换为0。

quantity 可选,限制范围内的所有槽位中符合条件的物品的总和数量,此参数支持使用范围及不等式(=!)。如果未定义,则默认为1..。 当此参数的值为0,则选择所有没有符合条件的物品的目标。当此参数的值为0..,则当前条件项目不做过滤。 物品栏中空气的数量始终是0个。

location 可选,指定要检测的物品栏,此参数的值必须是一个有效的物品栏。如果未定义,则检测目标的所有物品栏。 即便指定目标没有指定的物品栏,当前条件项目仍然会对该目标进行过滤。这意味着如果quantity的值的范围包括0,该目标将被当前条件项目选中。

slot 可选,使用时必须使用location参数,用于指定要检测的槽位范围,此参数支持使用范围及不等式(=!)。如果未定义则默认为slot=0..。

示例: @e[hasitem={item=apple}] — 选择所有拥有苹果的实体。 @a[hasitem={item=stone,quantity=192,location=slot.hotbar,slot=0..2}] — 选择所有工具栏前3格填满石头的玩家。 @a[hasitem=[{item=diamond,quantity=3..},{item=stick,quantity=2..}]] — 选择所有同时拥有至少3颗钻石和2根木棍的玩家。

📸 截图 / 视频

image

💬 你知道的其他信息

https://www.bilibili.com/read/cv21341805?from=search&spm_id_from=333.337.0.0&jump_opus=1