WIKI的掉落表页面也出了,然后自己也尝试理解和解读了一下掉落表
于是来分享一下心得和翻译
以下资料和图片资源皆出自英文wiki Loot table页面
首先是掉落表于箱子和生物的指定方式
可参考这个新闻
箱子:
根标签├
└
箱子内容被访问时(/blockdata访问除外),这些标签将会被移除,并且产生物品(感谢5L修正)
生物:
├
└
箱子和实体的掉落表可以使用/entitydata和 /blockdata 来改变
掉落表标签
掉落表使用JSON格式来定义,具体格式如下:
└
└
├
│└
│ └
├
├
│├
│└
└
└
├
│└
│ └
├
├
│ └
│ ├
│ └
│ └
│ └
└
(根据个人经验来看被选中的几率应该为 物品权重/物品池中的总权重)
功能
掉落表使用不同的功能来施加一些特殊的行动于物品上,例如设定物品堆叠数量或设定附魔,下面是可用的功能列表和其使用的标签,这些标签将被放置在和function:同样的标签之下(也就是说,function填好名字之后,如果这个功能有附加标签的话那么就写在下面)[注:后面有实例说明]
enchant_with_levels – 决定了物品将拥有多少级的附魔(即等同于在附魔台里面使用多少级经验来产生附魔)
├
├
│ (即要么使用这个具体数量的标签,要么使用下方的范围标签,后文不再作解释)
└
├
└
furnace_smelt – 产生如同将物品放入熔炉熔炼的效果,例如用于将烧死的动物肉烤熟
looting_enchant – 决定了掠夺附魔对此物品产生的效果,如果不使用该功能的话掠夺附魔将不起效果
├
│ (个人理解是每一级附魔带来的额外掉落,例如这是1的话掠夺1将掉多1个,掠夺2将多2个)
└
├
└
set_count – 决定了物品的堆叠数量,如果不设定的话将默认为1个物品
├
└
├
└
set_data – 决定了物品的损害值(例如不同颜色的羊毛有不同的损害值)
├
└
├
└
set_nbt – 添加NBT标签到物品上
└
条件
掉落表可以向掉落物,物品池或者功能增加不同的条件,决定他们是否被使用。下面是一系列的可用条件,和功能一样,额外标签放置在和condition:一样的位置
entity_properties – 决定了该条件需求的特性(简单来说就是要符合某些条件啦)
├
│ (简单来说就是究竟是谁要满足条件)
└
└
(目前来说看来只有着火这一个,以后可能会有更多)
entity_scores – 检查实体的分数以决定是否掉落(这个应该不会是系统自带的条件,反而是方便地图制作者的条件)
├
└
├
│请注意在15w43b不能正常使用(mojang plz)
└
├
└
killed_by_player – 要求实体必须被玩家击杀
└
random_chance – 改变物品池被使用的几率(目前来说我还没找到这个条件哪里被使用了)
└
random_chance_with_looting – 基于掠夺附魔改变物品池被使用的几率(广泛应用于生物的稀有掉落物)
├
└
那么翻译就在这里,之后的一些实例分析等我晚上再做吧……
做这玩意差点没累死我……
分析见后页
那么在你能愉快玩JSON之前
强烈建议安装一个notepad++
不然系统自带笔记本会玩死你的
就这样
基础说明
掉落表看着很复杂,估计你已经被我吓傻了吧
不过其实呢,有时候也并没有那么复杂,仔细看的话光conditions自己已经重复3次了
并且一般情况下并不是全部标签都有的比如拿creeper的掉落表来说:

creeper掉落表代码:
这个是一个比较简单的掉落表,没有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,这功能可以让物品“烧过”
而且这个功能是有限定条件的:
必须是猪本身着火的时候死亡才启用这功能
这时候生猪扒就会被烤成熟猪扒
达到了动物烧死会掉落熟肉的效果
(未完待续)
[groupid=546]Command Block Logic[/groupid]



