/loot

/loot

来源:Commands/loot;原文修订 ID:3885680。

权限等级:Java 版为 2,基岩版为 1;基岩版需要启用作弊。

将指定战利品表产生的物品放入指定物品栏,或掉落到世界中。

语法

两版本的基本形式均为 loot <TARGET> <SOURCE>。

Java 版 TARGET

TARGET 行为
give <players> 向玩家分配物品,忽略空物品堆叠
insert <targetPos> 向容器方块分配物品,忽略空物品堆叠
spawn <targetPos> 生成物品实体;空物品堆叠也会生成,但会立即消失
replace block <targetPos> <slot> 按顺序将物品堆叠替换到连续槽位;SOURCE 产生的空堆叠会清空一个槽位
replace entity <entities> <slot> 同上,目标为实体
replace block <targetPos> <slot> <count> 先清空若干连续槽位,再按顺序放入物品堆叠(包括空堆叠);SOURCE 的堆叠数超过槽位数时忽略超出部分
replace entity <entities> <slot> <count> 同上,目标为实体

Java 版 SOURCE

SOURCE 行为
fish <loot_table> <pos> [<tool>|mainhand|offhand] 模拟在指定位置使用指定工具钓鱼
loot <loot_table> 直接调用战利品表
kill <target> 模拟杀死指定实体
mine <pos> [<tool>|mainhand|offhand] 模拟在指定位置使用指定工具挖掘方块

各 SOURCE 提供的战利品上下文如下:

SOURCE 上下文参数
fish this 实体:执行者实体(若执行者是实体);原点:指定位置的方块中心;工具:指定物品
kill this 实体:指定实体;原点:命令执行位置;伤害来源:magic 伤害类型;attacker 与 direct_attacker:执行者实体(若为实体);attacking_player:执行者玩家(若为玩家)
loot this 实体:执行者实体(若为实体);原点:命令执行位置
mine this 实体:执行者实体(若为实体);原点:指定方块中心;工具:指定物品;方块状态:指定方块;方块实体:若方块是方块实体,则为其方块实体数据

基岩版 TARGET

TARGET 行为
give <player: target> 给予玩家物品,忽略空堆叠
insert <position: x y z> 向容器方块分配物品,忽略空堆叠
spawn <position: x y z> 生成物品实体,忽略空堆叠
replace block <position: x y z> slot.container <slotId: int> 按顺序替换到连续槽位,SOURCE 产生的空堆叠会清空槽位
replace entity <entity: target> <slotType: EntityEquipmentSlot> <slotId: int> 同上,目标为实体
replace block <position: x y z> slot.container <slotId: int> [count: int] 清空连续槽位,再依次放入包括空堆叠在内的物品;超出槽位数的堆叠忽略
replace entity <entity: target> <slotType: EntityEquipmentSlot> <slotId: int> [count: int] 同上,目标为实体

要清空并放入物品,目标实体或容器必须拥有全部指定连续槽位。

基岩版 SOURCE

  • kill <entity: target> ["<tool>|mainhand|offhand": string]:模拟用指定工具杀死指定实体。
  • loot <loot_table: string> ["<tool>|mainhand|offhand": string]:用指定工具调用战利品表。
  • mine <TargetBlockPosition: x y z> ["<tool>|mainhand|offhand": string]:模拟用指定工具挖掘指定位置的方块。

参数

  • Java 版 loot_table(loot_table)/基岩版 loot_table: string(basic_string):使用哪个战利品表。基岩版引用路径 loot_tables/<loot_table: string>.json。
  • 仅 Java 版 tool(item_stack):模拟挖掘或钓鱼的工具。
  • 仅基岩版 "<tool>|mainhand|offhand": string(basic_string):模拟击杀或获取战利品的工具。可为 mainhand、offhand,其他值表示物品 ID。
  • kill 来源的 target(entity)/entity: target(CommandSelector<Actor>):模拟杀死的单个实体。
  • players(entity)/player: target(CommandSelector<Player>):要给予物品的一个或多个玩家。
  • Java 版 pos、targetPos(block_pos)/基岩版 position: x y z(CommandPositionFloat):replace block 和 insert 模式的方块位置。
  • spawn 模式的 targetPos/position: x y z:物品实体掉落位置;原文将 Java 参数列为 block_pos,但说明模板使用 vec3,此处保留该差异。
  • entities(entity)/entity: target(CommandSelector<Actor>):要修改的一个或多个实体。
  • count(integer)/count: int:要清空的连续槽位数量,整数;Java 版不小于 0。
  • Java 版 slot(item_slot)/基岩版 slotType: EntityEquipmentSlot、slot.container 与 slotId: int:要修改的物品栏槽位。

结果

条件 Java 版 基岩版
命令不完整或任意参数不正确 无法解析 无法解析
fish 或 mine 的位置未载入或超出世界 失败 失败
使用 mainhand/offhand,执行者不是活体实体 失败 不适用
使用 mainhand/offhand,执行者不是实体 失败 失败
kill 目标无法解析为单个实体(指定玩家必须在线) 失败 失败
kill 目标不是活体实体 失败 不适用
kill 目标没有战利品表 不适用 失败
基岩版 loot_table: string 无效 不适用(Java 版视为参数不正确,无法解析) 失败
replace entity 目标无法解析到一个或多个实体 失败 失败
replace entity 取得了至少一个堆叠,但全部实体没有指定槽位;带 count 时没有全部连续槽位 成功 失败
give 目标无法解析到在线玩家 失败 失败
insert/replace block 的目标位置未载入、超出世界或不是容器 失败 失败
replace block 的容器没有指定槽位 失败 失败
不带 count 的 replace block:来源堆叠数加起始槽位 ID 超过容器总槽位数 异常 成功
带 count 的 replace block:count 加起始槽位 ID 超过容器总槽位数 异常 失败
其他情况 成功 成功

输出

Java 版失败时成功次数、success、result 均为 0。所有成功形式成功次数和 success 均为 1,result 如下:

Java 版命令 result
/loot spawn ... 从战利品获得的物品堆叠数量
/loot give ... 成功分配给各玩家的堆叠总数
/loot insert ... 成功分配至容器的堆叠数
/loot replace block ... 成功分配至容器的堆叠数
/loot replace entity ... 成功分配给各实体的堆叠总数

Java 版 replace block 和 replace entity 发生错误时,成功次数为 0,success 和 result 不变。

基岩版失败时成功次数为 0;loot give ... 成功输出原文仍需测试;loot spawn ... 和 loot insert ... 成功次数为 1。不带 count 的 replace entity:来源为零堆叠时输出 1,否则输出拥有指定槽位的目标实体数;带 count 时:来源为零堆叠时输出 1,否则输出拥有全部指定连续槽位的目标实体数。

另见

  • /give:不指定战利品表,直接给玩家指定物品。
  • Java 版 /item:修改实体或容器的指定槽位。
  • 基岩版 /replaceitem:修改实体或容器的指定槽位。

外部链接


中文翻译/改编自 Minecraft Wiki 原条目,原文作者可由页面历史查看;译文遵循 CC BY-NC-SA 3.0(署名、非商业性使用、相同方式共享)。