本篇教程由作者设定未经允许禁止转载。
模组已收录2年了,评论区依然有很多人提问怎么写,正好作者做整合包时经常使用该模组,于是就写下这篇经验分享,方便大家借鉴。
本教程只涉及config\incontrol文件夹中spawn.json、potentialspawn.json、loot.json的写法。
1.个人心得
眼神不好最好用vscode打开json,如果图方便用记事本编辑可能会忽略一些格式错误,比如多或少了逗号和括号会导致热重载失败和无法进入游戏,热重载指令为/ctrlreload,清除所有实体指令为/ctrlkill all,这两个指令都是经常使用的,作者特此写出以供复制。
2.spawn.json案例
修改生物生成条件的文件,部分功能需要配合potentialspawn.json实现。"maxlight"、"maxheight"等限制条件不写就默认没有,当你不加任何限制条件而又写相应内容在potentialspawn.json时,生物会如下雨般生成。使用该模组让生物生成非常简单,但重要的是控制它的生成,以下有几个例子帮助理解。
eg1.禁止寄生虫模组所有生物在多个维度生成,其中"dimension": [2,3,5,-2,-3],中括号内的数字是维度ID。
{
"dimension": [2,3,5,-2,-3],
"mod": "srparasites",
"result": "deny"
},
eg2.禁止AVP所有生物在维度5生成,其中"onjoin": true,表示刷怪蛋也无法生成该生物。
{
"dimension": 5,
"mod": "avp",
"onjoin": true,
"result": "deny"
},
eg3.禁止一种生物生成,可用于删除引起崩溃的实体。
{
"mob": "avp:marine",
"result": "deny"
},
eg4.在下面的实例里"healthmultiply": 1,改变了多种生物的生命倍数,在整合中使用是为了修正GUNSRPG的效果(敌对生物生命上限乘1到3),实际效果为这些生物生命上限仍会翻倍,但生成时的生命值锁定在翻倍前。注意,第二组大括号内的代码是必须加上的,否则将导致绝大部分生物不生成。
{
"mob": ["sevendaystomine:blind_zombie","sevendaystomine:zombie_soldier","sevendaystomine:zombie_wolf"],
"healthmultiply": 1,
"gamestage": "zmc0",
"maxlight": 6,
"result": "default",
"onjoin": true
},
{
"mob": ["sevendaystomine:blind_zombie","sevendaystomine:zombie_soldier","sevendaystomine:zombie_wolf"],
"result": "deny"
},
eg5.在失落之城限制hbm模组每区块生物生成上限为50,在失落之城生成FBI探员,只有拥有游戏阶段“r2且在4500~6000时间段才能出现在城里。值得一提的是,任何在111维度生成hbm生物的代码都必须写在限制生成代码(即案例上半段)下面,否则将导致生物如下雨般生成。
{
"dimension": 111,
"mod": "hbm",
"mincount": {
"amount": 50,
"mod": "hbm",
"perchunk": true
},
"result": "deny"
},
{
"mob": "hbm:entity_ntm_fbi",
"dimension": 111,
"gamestage": "r2",
"mintime": 4500,
"maxtime": 6000,
"instreet": true,
"onjoin": true,
"result": "allow"
},
{
"mob": "hbm:entity_ntm_fbi",
"result": "deny"
},
eg6.给小狗增加300生命上限,"onjoin": true,一定要加上,否则不生效,需要说明的是如果给未驯服的生物加生命时会出现多次增加生命的超级个体,如果是生命上限翻倍代码(healthmultiply大于1时)还会出现有指数爆炸级生命的怪物,当使用类似灵魂瓶的道具收放时可主动为其增加生命上限和生命值(也适用于驯服的生物),当生命上限超过某值时,该生物会消失。
{
"mob": "doggytalents:dog",
"healthadd": 300,
"onjoin": true,
"result": "default"
},
{
"mob": "doggytalents:dog",
"result": "deny"
},
eg7.当处于阶段zmc1时,在主世界的废土和火山群系生成伤害乘3、速度乘2、自带隐身的狂暴铁血战士,另外根据作者所见评论,其他模组添加的药水效果不生效(未求证)。
{
"dimension": 0,
"gamestage": "zmc1",
"mob": "avp:yautjaberserker",
"biome": ["Wasteland","volcano"],
"damagemultiply": 3,
"speedmultiply": 2,
"potion": "minecraft:invisibility,10000,1",
"result": "allow"
},
{
"dimension": 0,
"mob": "avp:yautjaberserker",
"result": "deny"
},
eg8.使铁血战士在主世界特定方块上生成,承接上文,会出现生命乘以2的n次方的个体。
{
"dimension": 0,
"mob": "avp:yautja",
"healthmultiply": 2,
"damagemultiply": 3,
"block": ["overlast:red_leaves","overlast:orange_leaves","overlast:blue_leaves","minecraft:snow_layer"],
"result": "allow"
},
{
"dimension": 0,
"mob": "avp:yautja",
"result": "deny"
},
eg9.使某生物在虚空维度的6~80高度与3~6亮度生成。
{
"dimension": -2,
"mob": "voidcraft:spectrechain",
"maxlight": 6,
"maxheight": 80,
"minlight": 3,
"result": "allow"
},
{
"dimension": -2,
"mob": "voidcraft:spectrechain",
"result": "deny"
},
eg10.限制111维度内每区块恶魂的数量,是的,想限制特定生物数量的写法跟限制全模组生物数量的写法几乎一致,如果"mob"和"mod"都没写,那么整段代码无用。作为例5的补充,在111维度生成恶魂的代码也要置于该代码下。
{
"dimension": 111,
"mob": "minecraft:ghast",
"mincount": {
"amount": 30,
"perchunk": true
},
"result": "deny"
},
3.potentialspawn.json
给维度设定生物的生成权重和一次出现的数量,如果只写了potentialspawn.json没有写spawn.json,生物会如下雨般出现,反之什么都不会发生。以下为一个完整的potentialspawn.json文件内容,可以想象如果使用记事本会很容易漏括号个人亲身经历。
[
{
"dimension": -1,
"mobs": [
{
"mob": "trumpetskeleton:trumpet_skeleton",
"weight": 30,
"groupcountmin": 1,
"groupcountmax": 1
},
{
"mob": "gunsrpg:explosive_skeleton",
"weight": 40,
"groupcountmin": 1,
"groupcountmax": 2
}
]
},
{
"dimension": -2,
"mobs": [
{
"mob": "voidcraft:wraith",
"weight": 50,
"groupcountmin": 1,
"groupcountmax": 2
},
{
"mob": "voidcraft:spectrechain",
"weight": 40,
"groupcountmin": 1,
"groupcountmax": 2
}
]
}
]
4.loot.json
作者懂的也不多,看看例子吧。第一组括号表示只有被玩家击杀才会掉落设置的物品,第二、三组括号也许可以合并优化一下,但作者未尝试。有个有趣的现象是舰娘MOD的升华怨念无法设置掉落,也许是敌对生物会掉落怨念导致的,也许是该功能无法支持部分物品导致的,无论是哪种,作者已没精力排查。
{
"mob": "voidcraft:hashalaq",
"player": true,
"item": "voidcraft:quorifragment"
},
{
"mob": "fat_cat:fat_cat",
"item": "sevendaystomine:cent"
},
{
"mob": "fat_cat:fat_cat",
"item": "shincolle:blockgrudgexp"
},