本篇教程由作者设定使用 CC BY-NC-SA 协议。
自定义鸡
先来个wiki:ChickenFactory - CraftTweaker Documentation (blamejared.com)
ChickenRepresentation - CraftTweaker Documentation (blamejared.com)
本文认定读者拥有zs基础,且使用过cot。
鸡加工厂(ChickenFactory)
首先在zs开头加上预加载器
#loader contenttweaker
#modloaded chickens
然后导包
import mods.contenttweaker.ChickenFactory;
import mods.contenttweaker.Color;
再创建鸡~
ChickenFactory.createChicken(String name, CTColor color, IItemStack item);
参数讲解
String name--鸡的注册名
CTColor color--鸡的颜色虽然我也不知道有什么用
IItemStack item--鸡下什么东西(比如原版下鸡蛋)
完整例子:
#loader contenttweaker
#modloaded chickens
import mods.contenttweaker.ChickenFactory;
import mods.contenttweaker.Color;
val chickenRepresentation = ChickenFactory.createChicken("bedrocked_chicken", Color.fromInt(0xffffff), <item:minecraft:bedrock>);
chickenRepresentation.setForegroundColor(Color.fromInt(0xabcdef));
chickenRepresentation.register();
好了,你兴冲冲的打开了游戏,却发现出现了一只马赛克鸡,你百思不得其解。
请看下面分解~
鸡表现{相当于游戏内的行为}(ChickenRepresentation)
本处需要有贴图,若甘愿看马赛克鸡的可不看此处
上面你创建了一只鸡,而现在便是给鸡加上更多细节。
导包:
import mods.contenttweaker.Chicken;
此处拥有10个参数,仅讲解有用的7个:
layItem--鸡下什么东西(比如原版下鸡蛋)
若使用了此参数则以此参数为准(IItemStacks)
dropItem--鸡被杀了掉什么(IItemStacks)
textureLocation--鸡的实体纹理路径【若不设置则为默认的contenttweaker:textures\entities\name.png】(name取决于鸡的注册名)
spawnType--鸡的生成的类型【只能填四种:NORMAL,SNOW,NONE,HELL。NORMAL是正常生成,SNOW是雪地生成,NONE是不生成,HELL是地狱生成】(string)
layCoefficient--下蛋速度(float)
parentOne
parentTwo--以上两个必须同时存在,否则游戏中会很奇怪,parentOne和parentTwo意为这只鸡能通过哪两种鸡杂交生成(比如钻石鸡要通过金鸡与玻璃鸡杂交得到)(例子:chickens:waterchicken)
附上我整合包的一个例子:
//后面是我的注释
#loader contenttweaker
#modloaded chickens
#ignoreBracketErrors//忽略尖括号错误,没啥用
import mods.contenttweaker.ChickenFactory;
import mods.contenttweaker.Color;
import mods.contenttweaker.Chicken;
import mods.contenttweaker.ResourceLocation;//四个导包一个也不能少
val chickenRepresentation = ChickenFactory.createChicken("netherite_scrap_chicken", Color.fromInt(0xffffff), <item:minecraft:bedrock>);,
chickenRepresentation.setForegroundColor(Color.fromInt(0xabcdef));//不知道干啥的
chickenRepresentation.setBackgroundColor(Color.fromInt(0x584a2e));//不知道干啥的
chickenRepresentation.layItem = <item:additions:mznetherite_pieces>;//我的自定义物品,由于我此处重新定义了下什么,于是由上方的下基岩改为下这个物品
chickenRepresentation.dropItem = <item:minecraft:ghast_tear>;//鸡死了的掉落
chickenRepresentation.spawnType = "NONE";//鸡的生成类型
chickenRepresentation.register();
当有鸡窝模组时
本处需要有贴图,若甘愿看物品马赛克鸡的可不看此处
若安装了鸡窝模组,你会发现鸡的物品形式,还是马赛克。。。
由于cot仅仅对鸡模组有支持,不支持鸡窝模组,所以只能使用材质包的形式添加贴图。
此处不对材质包的结构进行讲解,若有需要请前往站内的他人教程
创建一个名为roost的文件夹,再在里面创建一个名为textures的文件夹,再在里面创建一个名为items的文件夹,再在里面创建一个名为chicken的文件夹,接着把你的贴图放进去(name.png)[name取决于鸡的注册名]
然后将整个roost文件夹扔进材质包的assets文件夹,进游戏,加载材质包,好了你的鸡的物品形式就拥有了贴图!
参考的文档
cot源码:CraftTweaker/ContentTweaker at release/1.12 (github.com)
cotwiki:就开头的那两玩意
UT额外补充
本人在今日(2023.3.18)在UT的github看到一个合并请求,作者在3天前已合并至UT模组
此合并处理了CT鸡与roost模组的问题
CT鸡是在init环节注册,而roost则是在preInit识别,所以如果ContentTweaker添加了任何鸡,Roost 会在loadComplete时强制刷新所有资源,此环节将耗费更多时间
因此在UT的下个版本,应该就能够解决这个问题
需要注意的是,要使其正常工作,由于加载顺序问题添加鸡的zs 脚本必须使用 #loader preinit而不是#loader contenttweaker。