sylqiuyifeng
本帖最后由 sylqiuyifeng 于 2015-10-23 18:11 编辑

WIKI的掉落表页面也出了,然后自己也尝试理解和解读了一下掉落表
于是来分享一下心得和翻译
以下资料和图片资源皆出自英文wiki Loot table页面


首先是掉落表于箱子和生物的指定方式
可参考这个新闻

箱子:
根标签
LootTable: 指定箱子使用哪个掉落表,如果这是一个双格箱子的话,那么只有被指定的一半会被这个标签影响
LootTableSeed: 用于掉落表的随机器种子,不写或者为0的时候将随机产生种子
箱子内容被访问时(/blockdata访问除外),这些标签将会被移除,并且产生物品(感谢5L修正)

生物:
根标签
DeathLootTable: 指定实体使用哪个掉落表
DeathLootTableSeed: 用于掉落表的随机器种子,不写或者为0的时候将随机产生种子。

箱子和实体的掉落表可以使用/entitydata和 /blockdata 来改变

掉落表标签
掉落表使用JSON格式来定义,具体格式如下:

根标签
pools: 物品池列表,每一个物品池都将从中随机抽取一些物品,具体取决于该物品池的rolls(你可以理解为掷骰)数目
   └一个物品池
      ├conditions: 决定了是否使用这个物品池的条件
      │└一个条件
      │   └condition: 条件名称,可用的条件请见下
      ├rolls: 决定了具体的rolls数目(即从物品池抽取多少次物品),和范围相对(即要么使用这个具体数量的标签,要么使用下方的范围标签)
      ├rolls: 决定了rolls的最小和最大值
      │├min: 最小值
      │└max: 最大值
      └items: 物品池中的物品列表
         └一个物品
            ├conditions: 决定了物品的掉落条件
            │└一个条件
            │   └condition: 条件名称,可用条件请见下方
            ├item: 物品ID,例如minecraft:diamond
            ├functions: 功能,设置一个施加于物品的特别行动(如附魔等),没有设定的functions将不会使用
            │ └一个功能
            │    ├function: 功能的名称,可用的功能见下方
            │    └conditions: 决定了使用该功能的条件
            │       └一个条件
            │          └condition: 条件名称,可用条件请见下方
            └weight: 决定了物品被选中的权重,越高权重的物品将越容易被选
                              (根据个人经验来看被选中的几率应该为 物品权重/物品池中的总权重)

功能
掉落表使用不同的功能来施加一些特殊的行动于物品上,例如设定物品堆叠数量或设定附魔,下面是可用的功能列表和其使用的标签,这些标签将被放置在和function:同样的标签之下(也就是说,function填好名字之后,如果这个功能有附加标签的话那么就写在下面)[注:后面有实例说明]

enchant_with_levels – 决定了物品将拥有多少级的附魔(即等同于在附魔台里面使用多少级经验来产生附魔)
treasure: 决定了物品是否可以使用“藏宝附魔”(即冰霜,修复这类不可透过附魔台获得的附魔)
levels: 具体使用多少级经验附魔,和下方的范围相对
│               (即要么使用这个具体数量的标签,要么使用下方的范围标签,后文不再作解释)
levels: 同上
   ├min: 最少使用多少级
   └max:最多使用多少级

furnace_smelt – 产生如同将物品放入熔炉熔炼的效果,例如用于将烧死的动物肉烤熟

looting_enchant – 决定了掠夺附魔对此物品产生的效果,如果不使用该功能的话掠夺附魔将不起效果
count: 决定了掠夺附魔将额外掉落多少该物品,和范围相对
│              (个人理解是每一级附魔带来的额外掉落,例如这是1的话掠夺1将掉多1个,掠夺2将多2个)
count: 决定了每一级掠夺附魔的额外掉落范围
   ├min: 最小增加数量
   └max: 最大增加数量

set_count – 决定了物品的堆叠数量,如果不设定的话将默认为1个物品
count: 决定具体数量,和范围相对
count: 同上
   ├min: 最小堆叠数量
   └max: 最大堆叠数量

set_data – 决定了物品的损害值(例如不同颜色的羊毛有不同的损害值)
data: 具体的损害值,和范围相对
data: 同上
   ├min: 最小的损害值
   └max: 最大的损害值

set_nbt – 添加NBT标签到物品上
tag: 需要添加的标签,和命令使用的Data tag相似,值得注意的是第一个括号需要书写(即最外面的{})并且里面的双引号需要用\转义(JSON书写规则)

条件
掉落表可以向掉落物,物品池或者功能增加不同的条件,决定他们是否被使用。下面是一系列的可用条件,和功能一样,额外标签放置在和condition:一样的位置

entity_properties – 决定了该条件需求的特性(简单来说就是要符合某些条件啦)
entity: 决定了被检查特性的实体,设置成this检查死亡的实体, killer检查杀死他的实体,killer_player检查杀死他的玩家
│              (简单来说就是究竟是谁要满足条件)
properties: 满足条件的特性
   └on_fire: 实体必须着火
(目前来说看来只有着火这一个,以后可能会有更多)

entity_scores – 检查实体的分数以决定是否掉落(这个应该不会是系统自带的条件,反而是方便地图制作者的条件)
entity: 同前
scores: 需要检查的分数
   ├A score: 键名为objective名(即前面标签名A score是一个objective的名称),值则为一个具体分数,和范围相对
   │请注意在15w43b不能正常使用(mojang plz)   
   └A score:同上
      ├min: 最小的分数
      └max: 最大的分数

killed_by_player – 要求实体必须被玩家击杀
inverse: 反转条件需求,物品只在实体不是被玩家击杀的时候掉落

random_chance – 改变物品池被使用的几率(目前来说我还没找到这个条件哪里被使用了)
chance: 决定了这个物品掉落的几率

random_chance_with_looting – 基于掠夺附魔改变物品池被使用的几率(广泛应用于生物的稀有掉落物)
chance: 基础掉落几率
looting_multiplier: 每一级掠夺附魔增加的几率

那么翻译就在这里,之后的一些实例分析等我晚上再做吧……
做这玩意差点没累死我……
分析见后页

2021.12 数据,可能有更多内容WIKI的掉落表页面也出了,然后自己也尝试理解和解读了一下掉落表
于是来分享一下心得和翻译
以下资料和图片资源皆出自英文wiki Loot table页面


首先是掉落表于箱子和生物的指定方式
可参考这个新闻


箱子:
根标签
LootTable: 指定箱子使用哪个掉落表,如果这是一个双格箱子的话,那么只有被指定的一半会被这个标签影响
LootTableSeed: 用于掉落表的随机器种子,不写或者为0的时候将随机产生种子
箱子内容被访问时(/blockdata访问除外),这些标签将会被移除,并且产生物品(感谢5L修正)


生物:
根标签
DeathLootTable: 指定实体使用哪个掉落表
DeathLootTableSeed: 用于掉落表的随机器种子,不写或者为0的时候将随机产生种子。


箱子和实体的掉落表可以使用/entitydata和 /blockdata 来改变

掉落表标签
掉落表使用JSON格式来定义,具体格式如下:


根标签
pools: 物品池列表,每一个物品池都将从中随机抽取一些物品,具体取决于该物品池的rolls(你可以理解为掷骰)数目
   └
一个物品池
   ├
conditions: 决定了是否使用这个物品池的条件
   │└
一个条件
   │   └
condition: 条件名称,可用的条件请见下
   ├
rolls: 决定了具体的rolls数目(即从物品池抽取多少次物品),和范围相对(即要么使用这个具体数量的标签,要么使用下方的范围标签)
   ├
rolls: 决定了rolls的最小和最大值
   │├
min: 最小值
   │└
max: 最大值
   └
items: 物品池中的物品列表
   └
一个物品
   ├
conditions: 决定了物品的掉落条件
   │└
一个条件
   │   └
condition: 条件名称,可用条件请见下方
   ├
item: 物品ID,例如minecraft:diamond
   ├
functions: 功能,设置一个施加于物品的特别行动(如附魔等),没有设定的functions将不会使用
   │ └
一个功能
   │    ├
function: 功能的名称,可用的功能见下方
   │    └
conditions: 决定了使用该功能的条件
   │    └
一个条件
   │    └
condition: 条件名称,可用条件请见下方
   └
weight: 决定了物品被选中的权重,越高权重的物品将越容易被选
   (根据个人经验来看被选中的几率应该为 物品权重/物品池中的总权重)

功能
掉落表使用不同的功能来施加一些特殊的行动于物品上,例如设定物品堆叠数量或设定附魔,下面是可用的功能列表和其使用的标签,这些标签将被放置在和function:同样的标签之下(也就是说,function填好名字之后,如果这个功能有附加标签的话那么就写在下面)[注:后面有实例说明]

enchant_with_levels – 决定了物品将拥有多少级的附魔(即等同于在附魔台里面使用多少级经验来产生附魔)
treasure: 决定了物品是否可以使用“藏宝附魔”(即冰霜,修复这类不可透过附魔台获得的附魔)
levels: 具体使用多少级经验附魔,和下方的范围相对
│   (即要么使用这个具体数量的标签,要么使用下方的范围标签,后文不再作解释)
levels: 同上
   ├
min: 最少使用多少级
   └
max:最多使用多少级

furnace_smelt – 产生如同将物品放入熔炉熔炼的效果,例如用于将烧死的动物肉烤熟

looting_enchant – 决定了掠夺附魔对此物品产生的效果,如果不使用该功能的话掠夺附魔将不起效果
count: 决定了掠夺附魔将额外掉落多少该物品,和范围相对
│  (个人理解是每一级附魔带来的额外掉落,例如这是1的话掠夺1将掉多1个,掠夺2将多2个)
count: 决定了每一级掠夺附魔的额外掉落范围
   ├
min: 最小增加数量
   └
max: 最大增加数量

set_count – 决定了物品的堆叠数量,如果不设定的话将默认为1个物品
count: 决定具体数量,和范围相对
count: 同上
   ├
min: 最小堆叠数量
   └
max: 最大堆叠数量

set_data – 决定了物品的损害值(例如不同颜色的羊毛有不同的损害值)
data: 具体的损害值,和范围相对
data: 同上
   ├
min: 最小的损害值
   └
max: 最大的损害值

set_nbt – 添加NBT标签到物品上
tag: 需要添加的标签,和命令使用的Data tag相似,值得注意的是第一个括号需要书写(即最外面的{})并且里面的双引号需要用\转义(JSON书写规则)

条件
掉落表可以向掉落物,物品池或者功能增加不同的条件,决定他们是否被使用。下面是一系列的可用条件,和功能一样,额外标签放置在和condition:一样的位置

entity_properties – 决定了该条件需求的特性(简单来说就是要符合某些条件啦)
entity: 决定了被检查特性的实体,设置成this检查死亡的实体, killer检查杀死他的实体,killer_player检查杀死他的玩家
│  (简单来说就是究竟是谁要满足条件)
properties: 满足条件的特性
   └
on_fire: 实体必须着火
(目前来说看来只有着火这一个,以后可能会有更多)

entity_scores – 检查实体的分数以决定是否掉落(这个应该不会是系统自带的条件,反而是方便地图制作者的条件)
entity: 同前
scores: 需要检查的分数
   ├
A score: 键名为objective名(即前面标签名A score是一个objective的名称),值则为一个具体分数,和范围相对
   │请注意在15w43b不能正常使用(mojang plz)   
   └
A score:同上
   ├
min: 最小的分数
   └
max: 最大的分数

killed_by_player – 要求实体必须被玩家击杀
inverse: 反转条件需求,物品只在实体不是被玩家击杀的时候掉落

random_chance – 改变物品池被使用的几率(目前来说我还没找到这个条件哪里被使用了)
chance: 决定了这个物品掉落的几率

random_chance_with_looting – 基于掠夺附魔改变物品池被使用的几率(广泛应用于生物的稀有掉落物)
chance
: 基础掉落几率
looting_multiplier: 每一级掠夺附魔增加的几率


那么翻译就在这里,之后的一些实例分析等我晚上再做吧……
做这玩意差点没累死我……
分析见后页

那么在你能愉快玩JSON之前
强烈建议安装一个notepad++
不然系统自带笔记本会玩死你的
就这样

基础说明
掉落表看着很复杂,估计你已经被我吓傻了吧
不过其实呢,有时候也并没有那么复杂,仔细看的话光conditions自己已经重复3次了
并且一般情况下并不是全部标签都有的比如拿creeper的掉落表来说:

creeper掉落表代码:

代码:


  1. {
  2.     "pools": [
  3.   {
  4.    "rolls": 1,
  5.    "items": [
  6.     {
  7.   "item": "minecraft:gunpowder",
  8.   "weight": 1,
  9.   "functions": [
  10.    {
  11.     "function": "set_count",
  12.     "count": {
  13.   "min": 0,
  14.   "max": 2
  15.     }
  16.    },
  17.    {
  18.     "function": "looting_enchant",
  19.     "count": {
  20.   "min": 0,
  21.   "max": 1
  22.     }
  23.    }
  24.   ]
  25.     }
  26.    ]
  27.   }
  28.     ]
  29. }



这个是一个比较简单的掉落表,没有conditions的出现
  • 首先最外层的括号就是根标签了
  • 然后是pools,代表creeper的物品池,这次只有一个
  • rolls采用的是指定数量那个,代表每次在这个物品池里面抽取一次
    说起物品池,你可能会不太明白这个概念
    说白了就是我现在有一个抽奖箱,里面有一个个球球,代表一种物品
    我roll一次,就是我伸手进去抽一次
  • 物品池里面也只有gunpowder(火药)这个掉落物,因为creeper只会掉这个
  • 然后这个物品具有两个functions,set count和looting enchant
  • 前者是用于设置creeper掉落的火药数量,这里是0~1,代表每次要么不掉,要么掉一个
  • 后者是用于和掠夺标签互动的,这代表我每级掠夺能额外掉落多少火药,这里的数值是0~1,要么不多掉要么多掉一个

例如我有掠夺1,我击杀了creeper,那么系统开始判定
首先从物品池里面抽一次,这里只有一个物品,于是我们摸出了火药“球球”
这个球球本身是代表随机数量的火药(setcount 0~1)
我们运气不好,摸到了0
然后掠夺1再次进行判断,结果我们脸太黑,额外掉落出了0(looting enchant 0~1)
于是没有火药


但是如果我们运气好,第一次随机到了1
掠夺判定也随机到了1
于是我们会获得2个火药


但运气一般的话,第一次随机到了0,但附魔判定出了1的话
那么我们会有一个火药


更高等级的附魔情况一样,不过每一级附魔都要进行一次判定,II级就2次,III级就3次
如此类推,这就是为什么如果自定义一个等级非常非常高的掠夺会卡死你
因为一次掉落太多火药了……
functions补充
然后想补充说明一下functions
看到functions开头的说明你可能不太明白这些标签将放置在同样的标签下是什么意思
这里就是最好的例子
功能名称当然就是set count和looting enchant,我们填了下去
但是我们想要设定范围,于是我们就在下面跟着添加了count这个compound
其他功能的操作也是一样的


物品池conditions



然后是conditions,其实就是是否启动物品池/物品/功能的条件判断
这是烈焰人的掉落表,可见和creeper的差不多
唯一的区别是在物品池中有了conditions,条件为killed_by_player
就是说,烈焰人一定是要系统判断为玩家击杀,才会掉落物品
不然被什么其他意外搞死的话是不会出烈焰棒的


功能的conditions



这是猪的掉落表
set count和looting_enchant我们都很熟悉了
唯独是furnace_smelt,这功能可以让物品“烧过”
而且这个功能是有限定条件的:
必须是猪本身着火的时候死亡才启用这功能
这时候生猪扒就会被烤成熟猪扒
达到了动物烧死会掉落熟肉的效果
(未完待续)



无敌_WaveXT
看不懂。。

122qweswd
好厉害!支持!

chyx
conditions: 决定了是否使用这个物品池的条

忘了一个件

siiftun1857
当箱子被打开时这些标签将会被移除,并且物品才会生成

不止是打开时,还有被漏斗提取、放入物品时,和箱子被破坏时。
可总结为"箱子内容被访问时(/blockdata访问除外)"。

sylqiuyifeng
siiftun1857 发表于 2015-10-23 12:53
不止是打开时,还有被漏斗提取、放入物品时,和箱子被破坏时。
可总结为"箱子内容被访问时(/blockdata访问 ...


这点wiki到是没有提到
感谢修正

chyx
siiftun1857 发表于 2015-10-23 12:53
不止是打开时,还有被漏斗提取、放入物品时,和箱子被破坏时。
可总结为"箱子内容被访问时(/blockdata访问 ...

还有比较器探测你忘了
这些字段运输矿车漏斗矿车也能用

chyx
本帖最后由 chyx 于 2015-10-23 14:06 编辑
chyx 发表于 2015-10-23 13:48
还有比较器探测你忘了
这些字段运输矿车漏斗矿车也能用

我有一个问题 为何所有物品都有一个0~1级的附魔? assets.zip (66.52 KB, 下载次数: 2)




915633650
请问生物的根标签里的用于掉落表的随机器种子是啥意思

lzs1234
权重应该就是个体权重/总权重
因为刷怪笼也是这么用的
然而我觉得条件里面的killer并没有什么用,僵尸弄死这个村民也不会把村民掉的东西捡起来2333
等着猪骑的深夜研究

sylqiuyifeng
915633650 发表于 2015-10-23 14:40
请问生物的根标签里的用于掉落表的随机器种子是啥意思

应该就是用于计算由于物品权重不同时物品掉落几率用的
这个是技术方面的专业知识了
一般来说忽略就好

sylqiuyifeng
chyx 发表于 2015-10-23 13:59
我有一个问题 为何所有物品都有一个0~1级的附魔?

并没有吧?
我是没看到哪里有

915633650
sylqiuyifeng 发表于 2015-10-23 17:31
应该就是用于计算由于物品权重不同时物品掉落几率用的
这个是技术方面的专业知识了
一般来说忽略就好 ...

所以并不是打错字了是嘛   随机器种子

siiftun1857
chyx 发表于 2015-10-23 13:48
还有比较器探测你忘了
这些字段运输矿车漏斗矿车也能用

我干嘛要全说出来
还有漏斗矿车我当然知道

chyx
sylqiuyifeng 发表于 2015-10-23 17:32
并没有吧?
我是没看到哪里有

比如猪的肉就有

sylqiuyifeng
chyx 发表于 2015-10-23 20:26
比如猪的肉就有

然而那是looting_enchant
看我后面分析有说过

chyx
sylqiuyifeng 发表于 2015-10-23 20:34
然而那是looting_enchant
看我后面分析有说过

噢(捂脸)

chyx
新版本改了 快更新!

⭐✔️
https://jsfiddle.net/j9gfxeen/5/embedded/result/
编辑器

sylqiuyifeng
贰逼 发表于 2015-10-27 20:03
https://jsfiddle.net/j9gfxeen/5/embedded/result/
编辑器

然而俺们家pca也有我会说?

唔咩
我遇到一个问题,请问如何解决?
原代码是这样的:
  1.                 {"type":"item","name":"minecraft:leather_boots","weight":13,
  2.                         "functions":[
  3.                                 {"function":"set_nbt","tag":"{display:{Name:"弹跳鞋",Lore:["[脚部装备]","跳跃后获得跳跃提升"],color:7377883}}"}
  4.                                 ]}
复制代码

然而在箱子里变成了这样:

{:10_522:}求解决方法!

第一页 上一页 下一页 最后一页