Skip to content

矿石战利品表

本页面镜像自
BedrockWiki

根据原始项目协议授权。本文经过AI翻译处理,如有内容遗漏,可以提交PR进行补充。

格式版本 1.20.30

本教程假设您已具备方块基础知识。 开始前请先查阅方块指南

实验性功能

需要启用假日创造者特性来触发事件。

本教程旨在展示一种通过战利品表创建自定义矿石方块的全新方法。使用minecraft:loot组件时将始终调用指定战利品表,而通过在战利品表中添加match_tool条件,可以逐池限定挖掘工具要求。

  • 特性:

    • 可使用指定工具挖掘(本教程以铁镐为例)
    • 可指定工具附魔等级
    • 经验值掉落支持
  • 限制:

    • 所有工具需逐个单独指定
    • 非玩家破坏方式(爆炸/指令等)不会触发掉落

方块JSON

以下方块行为文件可作为模板使用。记得通过terrain_texture.json设置方块纹理。

json
{
  "format_version": "1.20.30",
  "minecraft:block": {
    "description": {
      "identifier": "wiki:silver_ore",
      "menu_category": {
        "category": "nature",
        "group": "itemGroup.name.ore"
      }
    },
    "components": {
      ...
      // 触发加载带有经验奖励结构的事件
      "minecraft:on_player_destroyed": {
        "event": "wiki:xp_reward"
      },
      "minecraft:loot": "loot_tables/blocks/silver_ore.json" // 使用精准采集时不会掉落
    },
    "events": {
      "wiki:xp_reward": {
        "run_command": {
          "command": [
            "structure load ore_xp_reward ~~~" // 需下载下方预存经验球的结构文件
          ]
        }
      }
    }
  }
}

战利品表

以下示例展示了必需组件

json
{
  "pools": [
    {
      "rolls": 1,
      "conditions": [
        {
          "condition": "match_tool",
          "item": "minecraft:iron_pickaxe",
          "count": 1
        }
      ],
      "entries": [
        {
          "type": "item",
          "name": "wiki:raw_silver"
        }
      ]
    }
  ]
}

附魔等级限定

可通过添加enchantments区间限定附魔等级。注意每组工具及其等级需独立成池。

目前兼容检测1级和2级附魔。

json
"conditions": [
  {
    "condition": "match_tool",
    "item": "minecraft:iron_pickaxe",
    "count": 1,
    "enchantments": [
      {
        "fortune": {
          "level": 1
        }
      }
    ]
  }
]

非实验性方案

若不想通过方块事件触发经验奖励,可选用以下替代方案。

请从此处下载内含经验球的ore_xp_reward结构文件。

方案一:虚拟物品与循环函数

步骤1:为需要掉落经验的方块创建战利品表。以"minecraft:redstone"为例:

json
{
  "pools": [
    {
      "rolls": 1,
      "entries": [
        {
          "type": "item",
          "name": "minecraft:redstone"
        }
      ]
    },
    {
      "rolls": 1,
      "entries": [
        {
          "type": "item",
          "name": "minecraft:barrier" // 虚拟物品
        }
      ]
    }
  ]
}

此处添加已有物品"minecraft:barrier"作为触发经验掉落的虚拟物品,也可创建专用虚拟物品。

步骤2:创建循环函数处理掉落物品。需在BP/functions/tick.json中定义:

c
execute as @e[type=item, name="Barrier"] at @s run structure load ore_xp_reward ~~~
execute as @e[type=item, name="Barrier"] run kill

该函数会捕捉名为"Barrier"的掉落物,加载经验奖励结构后销毁虚拟物品。

方案二:纯函数循环

步骤1:创建基础战利品表。以"wiki:raw_silver"为例:

json
{
  "pools": [
    {
      "entries": [
        {
          "type": "item",
          "name": "wiki:raw_silver"
        }
      ]
    }
  ]
}

步骤2:创建标记处理函数。需在BP/functions/tick.json中定义:

c
execute as @e[type=item, name="Raw Silver", tag=!xp] at @s run structure load ore_xp_reward ~~~
execute as @e[type=item, name="Raw Silver", tag=!xp] run tag @s add xp

该函数为所有未标记"xp"的银矿掉落物加载经验结构,并通过标签防止重复触发。

请根据实际情况调整物品ID、标签等参数。

下载结构文件

下载MCSTRUCTURE

实际效果