距离显示结果还剩5票~
暂无日志..
暂无管理组..
暂无编辑组..
暂无开发组..
概述
这是一个小型模组,可让服务器管理员和整合包作者通过数据包来控制生物生成,主要的功能是允许根据已解锁或尚未解锁的进度来控制生物生成。如在玩家获得铁之前不会生成骷髅,这为欲增加强大怪物但不想早期的玩家被碾压的作者提供了很好的选择。
数据包编写方式
开始
首先需要制作一个数据包。在此数据包中,创建目录:
data/modid/abs/
注意,需将数据包的 id 填写在 modid 处。
从这里便可以开始编写控制生物生成的 JSON 文件。
这其中可以创建任意数量的 JSON 文件,这些文件可以包含任意数量的条目,尽管只需要一个文件即可执行大部分操作。这些文件可以命名为任意的名称,但出于方便维护的考虑,还是应当起一个合适的名称。
文件结构
此数据包中的文件含有许多字段,用于定义对于是否完成特定进度的玩家会发生什么。结构相当简单易懂,以下每个字段都是可选添加的。
Advancement
此字段控制生物生成规则中进度的文件路径。
如 minecraft:story/enter_the_end 指向 data/minecraft/advancements/story/enter_the_end.json。
优先级
定义出现冲突规则时规则的优先级,优先级高的会执行。
例如,一个允许僵尸生成,优先级为 50 的规则,会被阻止僵尸生成的 100 级规则覆盖。
如果未定义一个规则的优先级,则默认为 1000,即最大优先级。
优先级系统会自动处理规则冲突,其会将两个规则包含和排除的生物合并来创建一个新规则,这个合并规则的优先级与两个原规则中更高的优先级保持一致。
可以给规则添加强制使用优先级的字段:
"claim_priority": true
一个具有强制使用优先级字段的规则与其他规则合并时,会使用前者的优先级。但如果两个规则都强制使用优先级,将再次取两个规则中优先级较高的一个。
规则主体
以下的规则都需要添加一个有/无标记来给其一个启用和否定的判定,这也是通过进度控制生物生成的核心。“有”标记是“with”,“无”是“without”。对于“有”标记,如果最近的玩家具有这项成就,将会启用后续的规则。“无”标记同理。每项规则都需要设定至少一个此标记才能使规则生效。从技术上讲,不设定此标记不会导致程序出错,但也没有任何作用。
Include/Exclude
标签,控制可以生成和不会生成的生物。
Entities
一个 JSON 列表,包含在 Include/Exclude 中,在这里面填写一些生物。
Types
与 Entities 并列的另一个列表,在这里面填写一些以特定方式生成的生物标签,这些标签会应用在 Entities 中的每一项,如禁用苦力怕和骷髅的刷怪蛋生成。如果未定义这一项,模组将检查默认的生物标签,这涵盖大多数典型的标签:CHUNK_GENERATION,JOCKEY,NATURAL,REINFORCEMENT,PATROL。服务器和整合包没有必要限制从刷怪蛋或命令中可以生成的生物,玩家也有可能奇怪某些生物为何无法繁殖或从桶中倒出,如果禁用结构中生成的生物将导致这些结构轻松被掠夺。影响如此种种,因此应在设定时仔细斟酌。
所有的标签如下:
NATURAL- 从随机刻中生成的生物,即环境自然生成。
CHUNK_GENERATION - 在创建区块时生成的生物,例如远古守卫者。
SPAWNER - 从刷怪笼方块中生成的生物。
STRUCTURE - 在结构中生成的生物,例如守卫者。
BREEDING - 繁殖出的动物。
MOB_SUMMONED - 召唤出的支援生物,例如唤魔者召唤的恼鬼。
JOCKEY- 骑着其他生物的生物,例如僵尸鸡骑士。
EVENT- 从事件中生成的生物,例如袭击中的掠夺者。
CONVERSION - 正在转换的生物,例如僵尸村民转换为村民。
REINFORCEMENT - 为增援而生成的生物,例如僵尸生成更多僵尸。
TRIGGERED - 来自特定方块的生物,例如从幽匿尖啸体中生成的监守者。
BUCKET - 来自水桶的生物,例如鱼桶。
SPAWN_EGG - 刷怪蛋生成的生物。
COMMAND - 命令生成的生物,例如 /summon 指令。
DISPENSER - 发射器生成的生物,例如发射器掷出的鸡蛋。
PATROL - 掠夺者小队中的生物。
文件示例
这是一个权重为 1000 的规则。在玩家进入末地之前总是会允许蜘蛛生成并禁用骷髅刷怪笼的生成,进入之后则总是允许骷髅骑士生成并禁用苦力怕和骷髅在区块创建时的生成。
{
"minecraft:story/enter_the_end": {
"priority": 1000,
"with": {
"include": {
"entities": [
"minecraft:skeleton"
],
"types": [
"JOCKEY"
]
},
"exclude": {
"entities": [
"minecraft:creeper",
"minecraft:zombie"
],
"types": [
"CHUNK_GENERATION"
]
}
},
"without": {
"include": [
"minecraft:spider"
],
"exclude": {
"entities": [
"minecraft:skeleton"
],
"types": [
"SPAWNER"
]
}
}
}
}