UID82897性别保密经验 EP铁粒 粒回帖0主题精华在线时间 小时注册时间2021-7-23最后登录1970-1-1
| 本帖最后由 Cat_Anchor 于 2024-11-9 17:44 编辑
前言
| 在第 13 期中,我简单介绍了战利品表。这一期,我将列举所有已知的战利品表功能(Functions)和条件(Conditions)。
| | 战利品表
| 打开行为包根目录,打开loot_tables文件夹,这里用于存放战利品表。当然,其他地方也能放战利品表,保证引用时的路径正确即可。
下面是一段简略的代码,展示了简单战利品表的结构。
- {
- "pools": [
- {
- "conditions": [ //条件,满足指定条件时才会从下面的项中抽取战利品。
- {
- "condition": "match_tool", //匹配工具属性
- "enchantments": [ //匹配附魔
- {
- "enchantment": "fortune", //时运
- "levels": {
- "range_min": 1, //最小1级
- "range_max": 1 //最大1级
- }
- }
- ]
- } //这个条件会匹配所有附有“时运Ⅰ”的工具。假设这是方块的掉落物战利品表,用这种工具挖掘才会掉落下面指定的物品——钻石。
- ],
- "rolls": 1,
- "entries": [
- {
- "type": "item",
- "name": "minecraft:diamond",
- "weight": 2,
- "quality": 2, //基于玩家的幸运值的权重
- "functions": [ //若干个修饰此物品的功能。
- {
- "function": "set_count", //功能名称。set_count是设置数量。
- "count": {
- "min": 1, //最小值,必须大于等于0
- "max": 1 //最大值,必须大于等于最小值
- }
- }
- ]
- },
- ...
- ]
- }
- ]
- }
复制代码 | | 功能
| 以下是已知的功能,可以用于战利品表和村民交易表。
set_count 设置物品数量
- {
- "function": "set_count",
- "count": {
- "min": 2,
- "max": 4
- }
- }
复制代码
指定物品的数量,count可以填写整数,或者填写一个对象,会在最小值和最大值之间随机选择一个数值。
没有物品堆叠数量的限制,如果指定数量大于最大堆叠数量,那么会像/give一样生成多个物品实体,或占用箱子的多个格子。
这个功能不能用于村民交易,请用quantity字段设置交易物品的数量。 |
set_name 设置物品名称
- {
- "function": "set_name",
- "name": "§r名称\n第二行"
- }
复制代码
指定物品的名称,在物品栏中显示。如果不用§重置格式,物品名称是斜体的。可以使用§改变颜色或重置格式。不支持原始JSON格式,支持用\n表示换行。
如果用在交易表中的wants字段表示交易需要的物品,那么这个功能无效。 |
set_lore 设置物品附加描述
- {
- "function": "set_lore",
- "lore": [
- "第一段话",
- "第二段话"
- ]
- }
复制代码
指定物品的附加描述。它会出现在物品名称及属性下方,可以填写字符串或内含多个字符串的数组(一个字符串代表一行)。填写的内容默认以紫色斜体出现,支持用§改变颜色和格式。支持用\n换行。似乎不支持本地化(在.lang文件中翻译)。
如果用在交易表中的wants字段表示交易需要的物品,那么这个功能无效。 |
set_data 设置方块和物品的数据值
- {
- "function": "set_data",
- "data": 2
- }
复制代码
主要指定物品的数据值,可以填写数值或一个对象。这个字段不等于damage,不能设置物品耐久值。也可以设置方块的数据值,但此功能已弃用并被方块状态代替。 |
set_potion 设置物品的药水类型
- {
- "function": "set_potion",
- "id": "water"
- }
复制代码
指定物品的药水类型,这个功能可以用于药水、喷溅型药水、滞留型药水和药箭。所有可以在id中填写的值如下。
值 含义
water 水瓶
mundane 平凡的药水
long_mundane 平凡的药水(延长版)
thick 浓稠的药水
awkward 粗制的药水
nightvision 夜视药水
long_nightvision 夜视药水(延长版)
invisibility 隐身药水
long_invisibility 隐身药水(延长版)
leaping 跳跃药水
long_leaping 跳跃药水(延长版)
strong_leaping 跳跃药水 Ⅱ
fire_resistance 抗火药水
long_fire_resistance 抗火药水(延长版)
swiftness 迅捷药水
long_swiftness 迅捷药水(延长版)
strong_swiftness 迅捷药水 Ⅱ
slowness 缓慢药水
long_slowness 缓慢药水(延长版)
strong_slowness 缓慢药水 Ⅱ
water_breathing 水肺药水
long_water_breathing 水肺药水(延长版)
healing 瞬间治疗药水
strong_healing 瞬间治疗药水 Ⅱ
harming 瞬间伤害药水
strong_harming 瞬间伤害药水 Ⅱ
poison 剧毒药水
long_poison 剧毒药水(延长版)
strong_poison 剧毒药水 Ⅱ
regeneration 再生药水
long_regeneration 再生药水(延长版)
strong_regeneration 再生药水 Ⅱ
strength 力量药水
long_strength 力量药水(延长版)
strong_strength 力量药水 Ⅱ
weakness 虚弱药水
long_weakness 虚弱药水(延长版)
wither 衰变药水
turtle_master 神龟药水
long_turtle_master 神龟药水(延长版)
strong_turtle_master 神龟药水 Ⅱ
slow_falling 缓降药水
long_slow_falling 缓降药水(延长版)
wind_charged 蓄风药水
weaving 盘丝药水
oozing 渗浆药水
infested 虫蚀药水 |
random_block_state 设置整型方块状态
- {
- "function": "random_block_state",
- "block_state": "supplementary:count",
- "values": 3
- }
复制代码
指定方块的状态,需要在block_state字段填写方块状态的名称,并在values字段填写整数或一个对象。似乎只能设置整数类型的方块状态。 |
random_aux_value 设置物品数据值
- {
- "function": "random_aux_value",
- "values": {
- "min": 2,
- "max": 4
- }
- }
复制代码
指定物品的数据值,可以填写整数或对象。这个字段不等于damage,不能设置物品耐久值。会覆写物品名称中提供的数据值,例如minecraft:xxx:2。也可以设置方块的数据值,但此功能已弃用并被方块状态代替。 |
set_damage 设置物品耐久值
- {
- "function": "set_damage",
- "damage": {
- "min": 0.5,
- "max": 1
- }
- }
复制代码
指定物品的耐久值,可以填写小数或对象,表示百分比。例如 0.5 是 50% ,损坏一半耐久。
如果用在交易表中的wants字段表示交易需要的物品,那么这个功能无效。 |
furnace_smelt 烧炼物品
- {
- "function": "furnace_smelt"
- }
复制代码
指定掉落此物品被烧炼后的产物。只能用在实体掉落物上。会提取物品ID,在配方文件中寻找原料为此ID的烧炼配方,然后掉落配方输出的物品。 |
set_book_contents 设置书的内容
- {
- "function": "set_book_contents",
- "title": "",
- "author": "",
- "pages": [
- "",
- ""
- ]
- }
复制代码
物品ID为书与笔或成书的ID时,指定书的内容。title字段填写标题,author字段填写作者,pages字段是一个数组,其中每一个字符串都代表一页。pages数组中的字符串可以是rawtext,rawtext以这种形式存在时需要转义例如 " \ 这样的字符。每页最多有 798 个字符。最多有 50 页。整本书最多有 12800 字。可以使用§改变颜色和格式,可以使用\n换行,不能用\t或制表符。
如果用在交易表中的wants字段表示交易需要的物品,那么这个功能无效。 |
exploration_map 设置探险者地图
- {
- "function": "exploration_map",
- "destination": "village"
- }
复制代码
指定物品为探险者地图,也就是指向最近的一个结构的地图。可以填写所有结构ID,例如末地城、下界要塞和远古城市。在交易表中时,只有海底神殿、林地府邸、试炼密室和各种村庄有用。
其他情形时,必须在合理维度打开对应地图,才能找到对应结构,否则只会得到没有目的地标记的使用横纹标识地形的探险者地图。 |
set_banner_details 设置灾厄旗帜
- {
- "function": "set_banner_details",
- "type": 1
- }
复制代码
type字段值为1时,指定物品为灾厄旗帜,否则不起作用。 |
random_dye 设置随机染色
- {
- "function": "random_dye"
- }
复制代码
给皮革盔甲和皮革马凯染随机颜色,不能给羊毛染色,只是生成一个随机RGB值。
如果用在交易表中的wants字段表示交易需要的物品,那么这个功能无效。 |
set_actor_id 设置刷怪蛋实体
- {
- "function": "set_actor_id"
- "id": ""
- }
复制代码
在交易表中,如果忽略id字段,那么默认指定卖物品的实体的刷怪蛋。也可以提供实体ID作为参数,这样就是那个实体的刷怪蛋。 |
fill_container 设置容器的战利品表
- {
- "function": "fill_container",
- "loot_table": "loot_tables/chests/dungeon.json"
- }
复制代码
指定容器的内容物。比如为一个箱子物品使用这个功能,那么就是用战利品表设置箱子里的东西。这个箱子被玩家获得、放下并打开后,里面就会出现战利品表里指定的物品。箱子里的物品是打开的一瞬间生成的,所以这种箱子与普通箱子在物品栏中的外观上并无不同。
如果用在交易表中的wants字段表示交易需要的物品,那么这个功能无效。 |
enchant_book_for_trading 设置交易附魔书
- {
- "function": "enchant_book_for_trading",
- "base_cost": 4,
- "base_random_cost": 12,
- "per_level_cost": 4,
- "per_level_random_cost": 8
- }
复制代码
指定一个随机的交易用附魔书的价格。一般地,这个功能仅用于物品ID为书的情况。如果用于其他可附魔物品,那么附魔有可能失败,因为这个功能会尝试附魔所有魔咒,失败后物品不会有任何附魔。目前参数是硬编码的,修改后没有效果。 |
enchant_with_levels 设置等级附魔书
- {
- "function": "enchant_with_levels",
- "levels": {
- "min": 15,
- "max": 21
- },
- "treasure": true
- }
复制代码
假定一个玩家拥有的经验等级(与附魔台不同,不局限于30级及以下,也就是说高等级的结果可能会很夸张)并使用附魔台的机制附魔一本书。如果treasure布尔值为false,那么不能附魔到经验修补、绑定诅咒等等宝藏附魔。如果为true,则可以。 |
enchant_randomly 设置随机附魔
- {
- "function": "enchant_randomly",
- "treasure": true
- }
复制代码
指定一个物品拥有随机的附魔和等级。如果treasure布尔值为false,那么不能附魔到经验修补、绑定诅咒等等宝藏附魔。如果为true,则可以。 |
enchant_random_gear 设置随机附魔装备
- {
- "function": "enchant_random_gear",
- "chance": 0.4
- }
复制代码
指定一件装备的随机附魔,chance是附魔的几率,只能是 0 或正数,这里是 40% 。似乎不能附魔到宝藏附魔。似乎不能附魔出工具的魔咒,只能附魔装备可附魔的魔咒,因此对工具无效。在和平和简单难度下,实际几率总是 0 。在普通难度下,实际几率大约是填写的几率的 2/3 。在困难难度下,实际几率就是填写的几率。高于 1 的值可以提高普通难度下的实际几率。 |
specific_enchants 设置特定附魔
- {
- "function": "specific_enchants",
- "enchants": [
- {
- "id": "unbreaking",
- "level": [
- 1,
- 3
- ]
- }
- ]
- }
复制代码
指定一个物品拥有特定魔咒。enchants字段是含有字符串或对象的数组。
数组中可以同时含有字符串和对象,字符串指定了魔咒的ID,对象中id字段指定了魔咒ID。level字段指定魔咒等级,可以是整数或数组,默认为 1 。数组中包含两个整数,分别指定了最小和最大等级。此等级不能超过魔咒的最大等级。魔咒可以被附魔在通常不能附魔的物品上。 |
looting_enchant 设置抢夺魔咒增益
- {
- "function": "looting_enchant",
- "count": {
- "min": 0,
- "max": 1
- }
- }
复制代码
指定使用带抢夺魔咒的武器时,增加的额外掉落物的数量。count字段可以是整数或一个对象。只能用于实体掉落的战利品表。 |
explosion_decay 设置方块炸毁掉落几率
- {
- "function": "explosion_decay"
- }
复制代码
根据爆炸源与这个方块的距离指定方块是否掉落,默认会掉落。只能用于方块掉落物战利品表。 |
set_data_from_color_index 根据颜色值设置数据值
- {
- "function": "set_data_from_color_index"
- }
复制代码
将掉落物的数据值设为实体的minecraft:color组件的值,例如设置不同颜色羊毛的掉落。仅能用于实体掉落物战利品表。 |
trader_material_type 根据标记变种值设置数据值
- {
- "function": "trader_material_type"
- }
复制代码
根据交易实体的minecraft:mark_variant组件的值设定物品的数据值。只能用于交易表中。就像方块形状(Block Shape),它不能用于附加包,只能用于原版。因此,在附加包新增的交易表里,它没有任何功能。 |
| | 条件
| 以下是已知的条件,可以用于战利品表,解释可能非常不准确。
random_difficulty_chance 根据难度设定几率
- {
- "condition": "random_difficulty_chance",
- "default_chance": 0.5,
- "peaceful": 0,
- "hard": 0.6
- }
复制代码
default_chance字段指定默认几率,这里是 50% 。peaceful指定和平模式下掉落的几率,hard则是困难难度下的。 |
killed_by_player_or_pets 判断被玩家或宠物杀死
- {
- "condition": "killed_by_player_or_pets"
- }
复制代码
被玩家或玩家的宠物(例如狼)杀死后才会掉落。 |
killed_by_player 判断被玩家杀死
- {
- "condition": "killed_by_player"
- }
复制代码
被玩家杀死后才会掉落。 |
entity_properties 判断实体属性
- {
- "condition": "entity_properties",
- "entity": "this",
- "properties": {
- "on_fire": true
- }
- }
复制代码
entity字段指定实体,this是目前上下文涉及到的实体,properties指定要判断的属性,on_fire是属性名称(判断是否着火)。 |
killed_by_entity 判断被特定实体杀死
- {
- "condition": "killed_by_entity",
- "entity_type": "minecraft:skeleton"
- }
复制代码
被entity_type字段指定的实体杀死后才会掉落。 |
random_chance_with_looting 设定几率和抢夺魔咒的增益
- {
- "condition": "random_chance_with_looting",
- "chance": 0.11,
- "looting_multiplier": 0.02
- }
复制代码
chance为基础几率,这里是 11% ,looting_multiplier指定抢夺魔咒增加的几率。 |
random_chance 设定几率
- {
- "condition": "random_chance",
- "chance": 0.08
- }
复制代码
chance为掉落的几率,这里是 8% 。 |
has_variant 判断变种值
- {
- "condition": "has_variant",
- "value": 2
- }
复制代码
实体的minecraft:variant组件的值等于value指定的值才会掉落。 |
has_mark_variant 判断标记变种值
- {
- "condition": "has_mark_variant",
- "value": 3
- }
复制代码
实体的minecraft:mark_variant组件的值等于value指定的值才会掉落。 |
random_regional_difficulty_chance 根据区域难度设定几率
- {
- "condition": "random_regional_difficulty_chance",
- "max_chance": 0.15
- }
复制代码
区域难度越大,几率越大,最大可以到达max_chance指定的几率,这里是 15% 。 |
match_tool 判断工具
- {
- "condition": "match_tool",
- "item": "minecraft:iron_pickaxe",
- "count": {
- "range_min": 1,
- "range_max": 1
- },
- "durability": {
- "range_min": 20,
- "range_max": 140
- },
- "enchantments": [
- {
- "enchantment": "fortune",
- "levels": {
- "range_min": 1,
- "range_max": 1
- }
- }
- ]
- }
复制代码
item是要判断的工具的物品ID。count是物品数量,durability是物品耐久,既可以写成对象,又可以写成数值。enchantments是一个含有对象的数组,指定多个条件。每个对象中,enchantment指定要判断的魔咒ID,range_min是最小等级,range_max是最大等级。
以上示例的意思是,如果玩家拿着一把附魔时运Ⅰ的耐久在[20, 140]范围内的铁镐挖掘方块触发了这个战利品表,则掉落指定物品。 |
| | 总结
| 这一期,我们列举了所有已知的战利品表功能和条件。它们中的一些解释可能有误,或者不完善,欢迎指出错误。
|
|
评分查看全部评分
|