本篇教程由作者设定使用 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个:

  1. layItem--鸡下什么东西(比如原版下鸡蛋)

    若使用了此参数则以此参数为准(IItemStacks)

  2. dropItem--鸡被杀了掉什么(IItemStacks)

  3. textureLocation--鸡的实体纹理路径【若不设置则为默认的contenttweaker:textures\entities\name.png】(name取决于鸡的注册名)

  4. spawnType--鸡的生成的类型【只能填四种:NORMAL,SNOW,NONE,HELL。NORMAL是正常生成,SNOW是雪地生成,NONE是不生成,HELL是地狱生成】(string)

  5. layCoefficient--下蛋速度(float)

  6. parentOne

  7. 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。