附加包教程:45.战利品表(二)
本帖最后由 Cat_Anchor 于 2024-11-9 17:44 编辑前言
在第 13 期中,我简单介绍了战利品表。这一期,我将列举所有已知的战利品表功能(Functions)和条件(Conditions)。
https://klpbbs.com/static/image/hrline/line5.png
战利品表
打开行为包根目录,打开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 //最大值,必须大于等于最小值
}
}
]
},
...
]
}
]
}
https://klpbbs.com/static/image/hrline/line3.png
功能
以下是已知的功能,可以用于战利品表和村民交易表。
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),它不能用于附加包,只能用于原版。因此,在附加包新增的交易表里,它没有任何功能。
https://klpbbs.com/static/image/hrline/line7.png
条件
以下是已知的条件,可以用于战利品表,解释可能非常不准确。
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是最大等级。
以上示例的意思是,如果玩家拿着一把附魔时运Ⅰ的耐久在范围内的铁镐挖掘方块触发了这个战利品表,则掉落指定物品。
https://klpbbs.com/static/image/hrline/line1.png
总结
这一期,我们列举了所有已知的战利品表功能和条件。它们中的一些解释可能有误,或者不完善,欢迎指出错误。
第四十四期 第四十五期 第四十六期 感谢大佬 看不懂[抖音_525]
页: [1]