This commit is contained in:
boybook
2025-12-01 20:59:16 +08:00
parent 12738a142c
commit 760c2dd9ad
5535 changed files with 21070 additions and 2021 deletions

View File

@@ -0,0 +1,23 @@
---
front:
hard: 进阶
time: 5分钟
---
# 更完善的自定义掉落物
#### 作者:境界
自定义掉落物不仅仅能掉落生物相关物品,在合理的配置与想象力的发挥下,开发者可以利用掉落物池、掉落物功能、掉落物条件、特殊的掉落物入口等方法实现多样的战利品系统。。本章将逐一拆解每个方法的细节。
#### 以下是自定义掉落物时,需要注意的几个点:
- 崩溃:当掉落物配置文件中带有错误的语法时,一旦在生成带有装备的生物、击杀生物、破坏自定义方块、打开被改动了战利品的奖励箱、钓鱼、与生物交互产生该文件的掉落物时,游戏会立即崩溃并且不提供任何错误提示。
- 装备战利品:只有原版的鞘翅、头盔、铠甲、护腿、鞋子、掠夺者旗帜可以被生物装备;无法设置生物装备生物头颅、自定义装备、雕刻过的南瓜;可以被玩家副手手持的物品例如:盾牌等,也可以被生物通过装备战利品副手持有。
- 附魔:设定掉落物附魔时,无法给予没有附魔能力的道具附魔。

View File

@@ -0,0 +1,65 @@
---
front: https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/2_1.eeeb242d.jpg
hard: 进阶
time: 15分钟
---
# 战利品池
#### 作者:境界
我们以原版僵尸的战利品池pools为例它与其他生物的战利品配置不同的是在战利品池中一共有两种组合。
![](./images/2_1.jpg)
#### rolls
rolls可以理解为投掷骰子的次数它接受整型数值和包含最小次数和最大次数的随机区间因此当次数等于1时可以从战利品入口处筛选一次战利品。若大于1次时可以筛选多次战利品。而当写成区间对象时则会在最小次数和最大次数之间取一个数值来筛选几次战利品。
#### type
type一共有三种参数item代表战利品为物品empty代表战利品为空loot_table则会将该战利品指向其他战利品配置文件中。
当type为item时可以通过name指定物品名称格式为命名空间标识符。weight是权重的意思。
当type为loot_tables时可以通过name指定战利品文件路径路径名一般以loot_tables开头。weight是权重的意思。
当入口存在多个战利品时权重越高的越容易中到。name在类型为empty下无效。
在每个战利品中依旧可以开启一个战利品池,当战利品配置表被游戏触发时,会依次从最头部的战利品池内筛选出一个战利品,紧接着若在战利品内还有一个战利品池,则会继续筛选下去。这种方法会在需要玩家生成某件物品时,若还要再生成另一件物品时会非常好用。
如果战利品池里有两次以上的筛选组合在没有加入条件前全部会根据rolls的数值执行次数。若在筛选组合内加入条件则必须满足条件后才可以筛选其中的战利品。
### 补充内容:
我的世界中国版自2.1版本增加玩家的幸运属性因此战利品表也同步支持quality和bonus_rolls两个字段如下图所示。
>此部分内容不在原版僵尸的战利品表内,需要开发者自行配置战利品表实现
![luck_bonusrolls_quality](./images/luck_bonusrolls_quality.png)
luck幸运值属性与Java版的幸运值类似属于玩家属性的一种能够配合战利品表的quality和bonus_rolls字段改变战利品池的投掷次数和每个物品的抽取权重最终实现幸运值越高掉落物品更丰富和宝贵的效果。
quality配合幸运值属性增加此物品的权重值只能为整数可以为负数计算公式如下
weight = weight + luck*quality
bonus_rolls配合幸运值属性增加战利品投掷的次数值可为浮点数可以为负数等同于在rolls的次数基础上增加额外的抽取次数。计算公式如下
最终投掷次数=rolls+luck*bonus_rolls结果向下取整若最终投掷次数≤0则不掉落
>注意事项1幸运属性的影响范围仅限被玩家击杀的生物和钓鱼的战利品表掉落表暂不支持自然生成的容器箱子破坏方块的掉落物猪灵的以物易物的战利品表。
>注意事项2钓鱼时的战利品还可以被海之眷顾的附魔效果影响但是这并不会提升玩家的幸运值属性
>注意事项3掠夺附魔效果额外得到的数量会受最终投掷次数影响而成倍增长例如受幸运值影响最终投掷次数为3则掠夺附魔效果会额外得到的数量基准为3附魔等级每增加一级将额外得到3个物品因此请避免将bonus_rolls值设置过大。

View File

@@ -0,0 +1,252 @@
---
front: https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/3_1.ea877fdd.jpg
hard: 进阶
time: 20分钟
---
# 战利品功能
#### 作者:境界
![](./images/3_1.jpg)
战利品功能可以赋予战利品更加强大的能力以僵尸正常掉落战利品的情况为例functions内定义了两个功能set_count和looting_enchant前者是设置掉落腐肉时的数量后者是被抢夺附魔赋予的额外数量。min是最小值而max是最大值数量会在这区间内随机产生。
除此之外,原版还有非常多的功能以供选择。
#### 与附魔相关的有:
enchant_with_levels通过附魔等级给予附魔。可以设置为附魔等级设置固定数值或随机区间。
```json
{
"function": "enchant_with_levels", //功能名称
"treasure": false, //若为真,则赋予稀有的附魔
"levels": 1 //附魔等级
}
```
```json
{
"function": "enchant_with_levels", //功能名称
"treasure": false,//若为真,则赋予稀有的附魔
"levels": {"min":1, "max": 2}//附魔等级
}
```
enchant_randomly随机附魔。
```json
{
"function": "enchant_randomly",//功能名称
"treasure": false,//若为真,则赋予稀有的附魔
}
```
enchant_random_gear给予随机的护甲附魔。
```json
{
"function": "enchant_random_gear", //功能名称
"chance": 0 //概率0.0~1.0区间1.0=100%
}
```
specific_enchants指定附魔和等级等级可以超过原版上限但游戏内只会显示原版的最高等级
```json
{
"function": "specific_enchants",
"enchants": [
{
"id": "aqua_affinity",
"level": 1
}
]
}
```
#### 与物品相关的有:
set_data//指定物品附加值如羊毛附加值15为黑色羊毛。
```json
{
"function": "set_data",
"data": 15
}
```
set_damage指定物品百分比耐久度1=100%的剩余耐久度0为没有剩余耐久度取值在0.0~1.0之间。
```json
{
"function": "set_damage",
"damage": 1
}
```
set_data_from_color_index根据minecraft:color行为设置对应的附加值原版使用minecraft:color行为的生物有羊因此会根据羊的羊毛颜色掉落对应的羊毛。
```json
{
"function": "set_data_from_color_index"
}
```
random_aux_value会给予一个非方块物品随机的附加值。
```json
{
"function": "random_aux_value",
"values": {
"min": 2,
"max": 9
}
}
```
set_book_contents会给予一本写好的书书名、作者、以及书本内容。
```json
{
"function": "set_book_contents",
"title": "1",
"author": "1",
"pages": [
"1111",
"2222"
]
}
```
fill_container会掉落或者给予一个箱子方块、发射器方块、漏斗方块一个自定义的战利品配置表。
```json
{
"function": "fill_container",
"loot_table": "loot_tables/table.json"
}
```
furnace_smelt会掉落一个带有熔炉配方的道具的配方结果如牛肉变烤牛肉条件目前只有on_fire着火和on_ground着地两种。
```json
{
"function": "furnace_smelt",
"conditions": [
{
"condition": "entity_properties",
"entity": "this",
"properties": {
"on_fire": true
}
}
]
}
```
set_banner_details设置旗帜的细节。
```json
{
"function": "set_banner_details",
"conditions": [
{
"condition": "entity_properties",
"type": 1
}
]
}
```
exploration_map设置地图变为探险家地图其中destination的目标值为原版/locate指令的参数包括 "monument", "mansion", "village", "stronghold", "temple", "ruins", "shipwreck", "pillageroutpost", "buriedtreasure", "mineshaft", "endcity", "fortress", "ruinedportal", "bastionremnant"。
```json
{
"function": "exploration_map",
"destination": "monument"
}
```
random_block_state随机选取一个block state值当设置的物品为方块物品且含有该值的话如 "coral_color", "flower_type", "sapling_type"更多blockstate请参考[官方文档](https://learn.microsoft.com/en-us/minecraft/creator/reference/content/blockreference/examples/intrinsicblockstateslist?view=minecraft-bedrock-stable)。
```json
{
"function": "random_block_state",
"values": {
"min": 1,
"max": 1
}
}
```
set_lore设置物品词缀。
```json
{
"function": "set_lore",
"lore": [ "111" ]
}
```
set_name设置物品名称。
```json
{
"function": "set_name",
"name": "design"
}
```
set_actor_id设置生物蛋物品的生物ID会掉落该生物的生物蛋。
```json
{
"function": "set_actor_id",
"id": "minecraft:zombie"
}
```

View File

@@ -0,0 +1,61 @@
---
front: https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/3_1.ea877fdd.jpg
hard: 进阶
time: 20分钟
---
# 战利品条件
#### 作者:境界
![](./images/4_1.jpg)
当开发者希望筛选组合必须满足条件时才会掉落战利品,可以使用战利品条件功能。
```json
{
"conditions": [
{
"condition": "has_mark_variant",//当该生物的minecraft:mark_variant值为几时条件通过可以筛选
"value": 1
},
{
"condition": "entity_properties",//当该生物因着火或者落地而被击败时
"value": {
"on_ground": false,
"on_fire": false
}
},
{
"condition": "killed_by_player",//当该生物是被玩家击败的
},
{
"condition": "killed_by_player_or_pets",//当该生物是被玩家或玩家的宠物击败的
},
{
"condition": "random_chance_with_looting",//当随机值满足时且掠夺附魔会增加随机概率取值范围在0.0~1.0
"chance": 0.0,
"looting_multiplier": 0.0
},
{
"condition": "random_difficulty_chance",//当难度为下列某一难度时值越大越容易被筛选到取值范围在0.0~1.0
"default_chance": 0, //若没有设置游戏难度,则此段生效
"peaceful": 0,//若游戏难度为和平难度
"easy": 0,//若游戏难度为简单难度
"normal": 0,//若游戏难度为正常难度
"hard": 0//若游戏难度为困难难度
},
{
"condition": "random_regional_difficulty_chance", //将最大区域难度随机机会满足指定值时取值范围在0.0~1.0
max_chance: 0.0
}
]
}
```

View File

@@ -0,0 +1,57 @@
---
front: https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/4_1.af85ce66.jpg
hard: 进阶
time: 10分钟
---
# 简易教学①:自定义掉落一种颜色的羊毛
#### 作者:境界
![](./images/5_1.jpg)
1创建一个在行为包主目录中loot_tables文件夹下的战利品配置文件。
2根据内容格式写入
```
{
"pools": [
{
"rolls": 1,
"entries": []
}
]
}
```
由于只掉落一种颜色的羊毛筛选次数写1即可
3插入战利品内容
```
{
"pools": [
{
"rolls": 1,
"entries": [
{“type”: "item", "name": "minecraft:wool","function": [{"function": "set_data","data":15}]}
]
}
]
}
```
将战利品类型设置为物品将物品名称设置为minecraft:wool最后再加入战利品功能设置物品附加值为15这样就会在战利品出现时出现一个黑色羊毛。

View File

@@ -0,0 +1,72 @@
---
front: https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/6_1.b9815060.jpg
hard: 进阶
time: 10分钟
---
# 简易教学②:自定义多次筛选同个奖励池
#### 作者:境界
![](./images/6_1.jpg)
1创建一个在行为包主目录中loot_tables文件夹下的战利品配置文件。
2根据内容格式写入
```
{
"pools": [
{
"rolls": {
"min":1,
"max":2
},
"entries": []
}
]
}
```
由于我们希望多次筛选同一个战利品池但希望是在一个随机的区间里因此筛选次数最小值填1最大次数填2则最终筛选次数会在1~2次之间。
3插入战利品内容
```
{
"pools":[
{
"rolls":{
"min":1,
"max":2
},
"entries":[
{
"type":"item",
"name":"minecraft:diamond_sword",
"weight":1
},
{
"type":"item",
"name":"minecraft:stone",
"weight":4
}
]
}
]
}
```
投放两个物品类型的战利品将物品名称设置为minecraft:diamond_sword钻石剑和minecraft:stone圆石。同时更加昂贵的钻石剑的权重被设置为了1普通的圆石设置为4这样单次抽取战利品的概率里钻石剑抽中的概率为1/ (1 + 4) * 100% = 25%。