我的世界Minecraft 1.19 Mod开发教程分享-04-增加合成表和方块破坏掉落物
Flandre芙兰
编辑于 2023年06月17日 06:59
收录于文集
共36篇

创建自定义合成表

创建data目录

在data下方创建modid的目录

在modid的目录下面创建loot_table

在创建repices以及物品合成表的json

在接下来的json文件中输入以下的内容:

代码块
JavaScript
自动换行
复制代码
{
  "type": "minecraft:crafting_shaped",
  "pattern": [
    "###",
    "###",
    "###"
  ],
  "key": {
    "#": {
      "item": "tutorialmod:zircon"
    }
  },
  "result": {
    "item": "tutorialmod:zircon_block"
  }
}
复制成功

type后面指出的合成方式,这里是用的是有序合成

pattern是合成台中的格子,使用#占位

key指明了站位的#是什么物品。这里指的是zircon,我们加入的物品

result表示合成的结果,item物品,合成一个我们加入的block

如果你其他的合成方式可以再原版的包中找到其他的合成方式。

在这个包的data/minecraft/recipes目录下,你可以看到原版的各种合成表。其他的图片模型资源同样在assets中可以看到。

其他的几个合成依次如下。

熔炉冶炼,时间100,经验0.7,所需的物品和输出的物品。

代码块
JavaScript
自动换行
复制代码
{
  "type": "minecraft:blasting",
  "cookingtime": 100,
  "experience": 0.7,
  "group": "zircon",
  "ingredient": {
    "item": "tutorialmod:raw_zircon"
  },
  "result": "tutorialmod:zircon"
}
复制成功

无需合成,所需的item和输出的item以及数量。

代码块
JavaScript
自动换行
复制代码
{
  "type": "minecraft:crafting_shapeless",
  "ingredients": [
    {
      "item": "tutorialmod:zircon_block"
    }
  ],
  "result": {
    "item": "tutorialmod:zircon",
    "count": 9
  }
}
复制成功

熔炉冶炼,时间,获得经验,所需的item以及结果

代码块
JavaScript
自动换行
复制代码
{
  "type": "minecraft:smelting",
  "cookingtime": 200,
  "experience": 0.7,
  "group": "zircon",
  "ingredient": {
    "item": "tutorialmod:raw_zircon"
  },
  "result": "tutorialmod:zircon"
}
复制成功

掉落物奖池

掉落物奖池包括挖到方块的掉落物。

创建如下的目录结构:

同样的你在原版包的loot_tables下面可以看到原版的掉落表。

在loot_table下面,这里用和上边一样的图。

创建一个json文件

输入如下的内容:

代码块
JavaScript
自动换行
复制代码

{
  "type": "minecraft:block",
  "pools": [
    {
      "rolls": 1,
      "entries": [
        {
          "type": "minecraft:item",
          "name": "tutorialmod:zircon_block"
        }
      ]
    }
  ]
}
复制成功

type指出了这个掉落奖池是一个方块破坏时候的掉落奖池

pools是掉落的奖池

rolls表示抽取几次

entries奖池奖品

        type指明奖品的类型是item

        name指明奖品的具体是什么

entries是一个数组,可以放入多个奖品。

在放入另外两个方块掉落的json文件,具体的规则掉落物的奖池设置可以看wiki介绍

> https://minecraft.fandom.com/wiki/Loot_table

这是个网站是一个在线GUI操作生成掉落物奖池得JSON

> https://misode.github.io/loot-table/

deepslate_zircon.json 里的内容

代码块
JavaScript
自动换行
复制代码
{
  "type": "minecraft:block",
  "pools": [
    {
      "rolls": 1.0,
      "bonus_rolls": 0.0,
      "entries": [
        {
          "type": "minecraft:alternatives",
          "children": [
            {
              "type": "minecraft:item",
              "conditions": [
                {
                  "condition": "minecraft:match_tool",
                  "predicate": {
                    "enchantments": [
                      {
                        "enchantment": "minecraft:silk_touch",
                        "levels": {
                          "min": 1
                        }
                      }
                    ]
                  }
                }
              ],
              "name": "tutorialmod:deepslate_zircon_ore"
            },
            {
              "type": "minecraft:item",
              "functions": [
                {
                  "function": "minecraft:set_count",
                  "count": {
                    "type": "minecraft:uniform",
                    "min": 2.0,
                    "max": 5.0
                  },
                  "add": false
                },
                {
                  "function": "minecraft:apply_bonus",
                  "enchantment": "minecraft:fortune",
                  "formula": "minecraft:ore_drops"
                },
                {
                  "function": "minecraft:explosion_decay"
                }
              ],
              "name": "tutorialmod:raw_zircon"
            }
          ]
        }
      ]
    }
  ]
}
复制成功

zircon_ore.json 的内容

代码块
JavaScript
自动换行
复制代码
{
  "type": "minecraft:block",
  "pools": [
    {
      "rolls": 1.0,
      "bonus_rolls": 0.0,
      "entries": [
        {
          "type": "minecraft:alternatives",
          "children": [
            {
              "type": "minecraft:item",
              "conditions": [
                {
                  "condition": "minecraft:match_tool",
                  "predicate": {
                    "enchantments": [
                      {
                        "enchantment": "minecraft:silk_touch",
                        "levels": {
                          "min": 1
                        }
                      }
                    ]
                  }
                }
              ],
              "name": "tutorialmod:zircon_ore"
            },
            {
              "type": "minecraft:item",
              "functions": [
                {
                  "function": "minecraft:set_count",
                  "count": {
                    "type": "minecraft:uniform",
                    "min": 2.0,
                    "max": 5.0
                  },
                  "add": false
                },
                {
                  "function": "minecraft:apply_bonus",
                  "enchantment": "minecraft:fortune",
                  "formula": "minecraft:ore_drops"
                },
                {
                  "function": "minecraft:explosion_decay"
                }
              ],
              "name": "tutorialmod:raw_zircon"
            }
          ]
        }
      ]
    }
  ]
}
复制成功

增加方块的所需要的tags

创建如下的目录

指定方块的破坏等级和使用的工具。

axe.json

代码块
JavaScript
自动换行
复制代码
{
  "replace": false,
  "values": [

  ]
}
复制成功

hoe.json

代码块
JavaScript
自动换行
复制代码
{
  "replace": false,
  "values": [

  ]
}
复制成功

pickaxe.json

代码块
JavaScript
自动换行
复制代码
{
  "replace": false,
  "values": [
    "tutorialmod:zircon_ore",
    "tutorialmod:zircon_block",
    "tutorialmod:deepslate_zircon_ore"
  ]
}
复制成功

shovel.json

代码块
JavaScript
自动换行
复制代码
{
  "replace": false,
  "values": [

  ]
}
复制成功

need_diamond_tool.json

代码块
JavaScript
自动换行
复制代码
{
  "replace": false,
  "values": [

  ]
}
复制成功

need_iron_tool.json

代码块
JavaScript
自动换行
复制代码
{
  "replace": false,
  "values": [
    "tutorialmod:zircon_ore",
    "tutorialmod:zircon_block",
    "tutorialmod:deepslate_zircon_ore"
  ]
}
复制成功

need_stone_tool.json

代码块
JavaScript
自动换行
复制代码
{
  "replace": false,
  "values": [

  ]
}
复制成功

其中replace指的是是否覆盖原版的内容。

还记得我们之前的写的代码吗,使用特定的工具才能获得掉落物。


测试

方块拆成9个物品

9个物品合成方块

掉落物

熔炉