Cat_Anchor 发表于 2023-1-13 08:10:46

附加包教程:13.战利品表

本帖最后由 Cat_Anchor 于 2024-6-25 10:20 编辑




前言


上期,我们学习了模型。接下来,我们即将学习战利品表。简单来说,战利品表就是在世界中掉落物品的一种方法。它存储了所有可能掉落的物品,会根据情况掉落一些其中的物品。战利品表可以很简单,但也可以很复杂。



https://klpbbs.com/static/image/hrline/line5.png


战利品表


打开行为包根目录,打开loot_tables文件夹,打开blocks文件夹。这里用于存放方块的战利品表。
我在下面放一些代码,简单地说明了战利品表的结构。
{
"pools": [ //这个数组里包含了若干个战利品池,会在这个池里随机抽取战利品。
    {
      "rolls": 1, //表示这个战利品池要从下面的数组里抽取战利品的次数。
      "entries": [ //这个数组包含了若干项战利品。
      { //一项战利品。
          "type": "item", //战利品的种类。item指物品,loot_table指另一个战利品表,empty指不掉落任何物品。
          "name": "supplementary:test_item", //物品名称或战利品表路径。
          "weight": 3, //权重,决定了这一项被抽取到的几率。这一项的几率的计算公式是这一项的weight值除以此战利品池中全部weight值之和。
          "functions": [ //这个数组里有若干个修饰这个物品的功能。
            { //一项功能。
            "function": "set_count", //功能名称。set_count是设置数量。
            "count": { //数量。
                "min": 1, //最小值,必须大于等于0
                "max": 1 //最大值,必须大于等于最小值
            }
            }
          ]
      },
      { //又一项战利品。
          "type": "item",
          "name": "minecraft:air", //设置空气表示不会掉落任何东西。也可以用"type": "empty"。
          "weight": 16,
          "functions": [
            {
            "function": "set_count", //功能有很多。
            "count": {
                "min": 0,
                "max": 1
            }
            }
          ]
      }
      ]
    }
]
}

战利品表还可以有条件,指定条件下掉落战利品。以后会再出一期已经研究清楚的功能和条件及它们的语法。(已经出了,点击这里前往新帖)这一期就先了解一下就可以了。



https://klpbbs.com/static/image/hrline/line1.png


总结



这一期,我们简单地了解了战利品表。如果你不想手写战利品表,可以自动生成一个。只需要按照它的流程操作即可,它也支持所有类型的条件和功能。下一期,我们将回到方块上,讲方块事件。





第十二期 第十三期 第十四期

巅疯狂魔 发表于 2023-1-13 10:00:00

感谢分享

HuaV 发表于 2023-1-17 22:00:19

本帖最后由 HuaV 于 2023-1-17 22:09 编辑

您好,我在尝试开发新的模组,其中包含了重要的新矿石和新物品,我想问一下,如果我想用钻石镐不能使方块掉落,但下界合金镐和我的自定义镐可以使其掉落,我尝试了很多办法,其中包括在矿石的战利品表下添加条件
{
                                        "condition": "match_tool",
                                        "item": "模组id:xxxx_pickaxe",
                                        "count": 1
                              },
                              {
                                        "condition": "match_tool",
                                        "item": "minecraft:netherite_pickaxe",
                                        "count": 1
                              }
但现在的情况是任何工具包括手都不能采集它,为什么,而如果要修复这个问题,我该怎么做呢?

Cat_Anchor 发表于 2023-1-18 08:08:59

HuaV 发表于 2023-1-17 22:00
您好,我在尝试开发新的模组,其中包含了重要的新矿石和新物品,我想问一下,如果我想用钻石镐不能使方块掉 ...

有3种情况,第一是你没有在自定义镐子的minecraft:digger组件里设置这个方块的挖掘速度,这种情况可能性小。设置即可。第二是你写错了格式,修改格式即可,例如:https://pic.imgdb.cn/item/63c73835be43e0d30e6a978b.jpg
还有一种可能,就是在行为包中minecraft:loot组件里写错了路径,一般是loot_tables/***.json之类的,如果这里写错路径就会什么都不掉落,修改即可。

HuaV 发表于 2023-1-18 12:47:43

Cat_Anchor 发表于 2023-1-18 08:08
有3种情况,第一是你没有在自定义镐子的minecraft:digger组件里设置这个方块的挖掘速度,这种情况可能性 ...

感激,还有一点问题,如果必须是方块的战利品表条件和镐的digger都要做相应的改动的话,香草原版的镐和剑等物品都是硬编码的,这是否说明我再也不能使得下界合金镐也能使我的矿石战利品表正常运作?其实此前我试过很多办法让我的块能够正常运作,其中有几次特别奇怪的是,钻石镐却能够使其正常掉落

奶糖也不是很甜 发表于 2023-2-16 01:40:41

HuaV 发表于 2023-1-18 12:47
感激,还有一点问题,如果必须是方块的战利品表条件和镐的digger都要做相应的改动的话,香草原版的镐和剑 ...

我不太明白你在说什么,但如果有需要的话可以去下载我的超级矿石addon,它支持原版稿子挖掘并掉落,你可以拆包查看原理。如果有帮助的话

Supre啊中 发表于 2023-3-4 04:34:02

234567899刚刚

刘文华 发表于 2023-8-25 21:24:13

感谢分享

MC平方 发表于 2024-10-3 08:46:21

我想修改原版地牢箱子的战利品,不知道哪里出错了,就是修改不成功。我想添加一个自定义物品进去,到测试的时候打开地牢的箱子没有任何的变化。

MC平方 发表于 2024-10-3 19:13:44

帮我看一下什么情况?
页: [1]2
查看完整版本: 附加包教程:13.战利品表