本篇教程由作者设定使用 CC BY-NC-SA 协议。

 Gendustry(基因工业)自定义蜜蜂教程


Gendustry 作为 Forestry(林业)的扩展模组,与其他的扩展模组(如Binnie's Mods)的最大区别在于其自定义蜜蜂自定义蜂巢功能。本教程将着重讲解自定义蜜蜂方面的内容。

想要添加自定义蜜蜂需要如下几步:

  • 创建配置文件

  • 添加自定义分支

  • 添加自定义蜂窝或蜂蜜滴

  • 添加自定义采蜜对象

  • 添加自定义蜜蜂

  • 为你的自定义蜜蜂添加杂交路线

  • 添加离心机配方

  • 添加榨汁机配方

  • 添加本地化内容


这里有提供一个适用于Minecraft版本 1.7.10 和一个适用于Minecraft版本 1.10.2(及以上版本)的官方实例配置文件和本地化文件。观看下面的教程时建议配合实例文件查看。


1. 创建配置文件

在正式进行自定义蜜蜂前,你需要创建一个配置文件({minecraft}/config/gendustry/{name}.cfg)。打开 {name}.cfg 并在其中输入:

if HaveForestryModule Bees <<>>

之后所有的内容都需要添加在<< >>中。


2. 添加自定义分支

这里的分支实际上是添加自定义的,如果你是在已有的属上添加自定义蜜蜂,那么可以跳过这一步。

其语法如下:

cfg Branches {    cfg {name} { //该名称虽不被使用但其必须是唯一的        UID = {string} // 新分支的 UID,其必须是唯一的,格式应为“gendustry.{name}”        Parent = apidae // 父分支的 UID,作为蜜蜂其应该为“apidae”        Scientific = {string} //属名,会显示在游戏中的某些地方    }}

下面是一个例子:

cfg Branches {    cfg Test {        UID = "gendustry.test" // 该分支 UID 为 gendustry.test        Parent = apidae        Scientific = Testis // 该属名为 Testis    }}


3. 添加自定义蜂窝或蜂蜜滴

如果你的蜜蜂产物为已有的蜂窝或蜂蜜滴,那么可以跳过这一步。

其语法如下:

cfg HoneyCombs {    cfg {name} { // 本地化中所使用的名字,自定义物品(下文中有介绍)名字等        ID = {number} // 作为 metadata,必须是唯一的        PrimaryColor = {color} // 主要颜色,以 16 进制数表示颜色,同样可以用 0-1 之间的值来表示 RGB,如 RGB 色彩“142,165,68”可写作“0x8EA544”或者“142/255,165/255,68/255”        SecondaryColor = {color} // 次要颜色        }}cfg HoneyDrops { // 同上    cfg {name} {        ID = {number}        PrimaryColor = {color}        SecondaryColor = {color}    }}

下面是一个例子:

cfg HoneyCombs {    cfg test { // 其本地化名为 gendustry.honeycomb.test.name        ID = 13337 // 其 metadata 为 13337        PrimaryColor = 0xFF0000 // 主要颜色为红色 (255, 0, 0)        SecondaryColor = 0x0000FF // 次要颜色为蓝色 (0, 0, 255)    }}cfg HoneyDrops {    cfg test { // 其本地化名为 gendustry.honeydrop.test.name        ID = 13337        PrimaryColor = 0xFF0000        SecondaryColor = 0x0000FF    }}

自定义的蜂窝和蜂蜜滴能够以下面的格式作为自定义物品使用:

1.7.10版本下: 
S:gendustry:"HoneyComb.{name}" – 蜂窝 
S:gendustry:"HoneyDrop.{name}" – 蜂蜜滴
1.10.2版本下: 
HoneyComb:{name} – 蜂窝 
HoneyDrop:{name} – 蜂蜜滴


4. 添加自定义采蜜对象

如果你的蜜蜂的采蜜对象为已有采蜜对象,那么可以跳过这一步。

其语法如下:

FlowerAllele {name} { // 采蜜对象的 UID,举例说明:若 {name} 为 goldBlocks,则其 UID 为 gendustry.flowersGoldBlocks(注意大小写)    {string} // {string}为 Dominant(显性)或 Recessive(隐性)    Accepts {blockref}  // {blockref} 为一系列(不同方块用逗号隔开)可以作为“花”的方块,若为方块,则为“B[:{modid}]:{blockname} [ @{meta} ]”,若为矿物辞典方块,则为“OD:{oreDict}”,例如 B:Forestry:resources@1 即为林业的铜矿石,OD:blockGold 即为矿物辞典为“blockGold”的所有方块    Spread {blockref} {weitht} // 以某一权重随机扩散的一种方块}

下面是一个例子:

FlowerAllele goldBlocks { // 采蜜对象的 UID 为 gendustry.flowersGoldBlocks (注意大小写)    Dominant // 该性状为显性性状    Accepts OD:blockGold, OD:blockIron // 矿物辞典为“blockGold”和“blockIron”的方块均可作为“花”    Spread OD:oreGold 1.0 // 以 1.0 的权重随机扩散矿物辞典为“oreGold”的方块}


5. 添加自定义蜜蜂

其语法如下:

cfg Bees {    cfg {name} { //作为蜜蜂种类的 UID 的一部分,完整的 UID 为“gendustry.bee.{name}”,其将用于添加杂交路线和其他地方        Dominant = {Boolean} // {Boolean} 为 Yes 或 No,决定物种等位基因是否为显性        Glowing = {Boolean} // 决定图标是否发光        PrimaryColor =   {color} // 决定图标的轮廓颜色        SecondaryColor = {color} // 决定图标的内部颜色        Secret = {Boolean}  // 如果为 Yes,蜜蜂将不会出现在 NEI 或 JEI 或创造物品栏中,同时不会计入种的总数中        Humidity = {validvalue} // {validvalue} 为 Arid(干旱), Normal(普通)或 Damp(潮湿)        Temperature = {validvalue} // {validvalue} 为 Icy(严寒), Cold(寒冷), Normal(普通), Warm(温暖), Hot(炙热), Hellish(地狱)        Nocturnal = {Boolean} // 如果为 Yes,则蜜蜂只在夜间工作        Binominal = {string} // 种名,用于某些 GUI 中        Authority = {string} // 作者名,用于某些 GUI 中,它应该是你的名字        Branch = "{string}" // 分支的 UID        Products = DropsList( // 蜜蜂的普通产物            {chance}% {stackref} // {stackref} 若为物品,则为“I[:{modid}]:{blockname} [ @{meta} ]”,若为方块,则为“B[:{modid}]:{blockname} [ @{meta} ]”,例如 10% I:diamond 即为 10% 几率产生钻石,50% B:Forestry:resources@1 即为 50% 几率产生林业的铜矿石;如果括号内不写东西即为不产生物品        )        Specialty = DropsList( // 蜜蜂的专属产物(专长)            {chance}% {stackref}        )        cfg Traits { // 用于描述该种蜜蜂的基因,使用指令“/dumpalleles”可以导出所有的 {allele uid}(等位基因UID)            Base = "{allele uid}" // 必须填写,此处填写蜜蜂种类的 UID,以从该种蜜蜂上复制性状。选择适当的蜜蜂种类可以极大程度的减小工作量,可删除下述性状中无需修改的性状只保留某些需特定修改的形状进行修改            Speed = "{allele uid}" // 描述蜜蜂的工作速度            Lifespan = "{allele uid}" // 描述蜜蜂的寿命            Fertility = "{allele uid}" // 描述蜜蜂的生育能力            Temperature_Tolerance = "{allele uid}" // 描述蜜蜂的温度适应性            Nocturnal = "{allele uid}" // (适用于 Minecraft 版本 1.7.10)描述蜜蜂的夜行性            Never_Sleeps = "{allele uid}" // (适用于 Minecraft 版本 1.10.2 及以上版本)描述蜜蜂的夜行性            Humidity_Tolerance = "{allele uid}" // 描述蜜蜂的湿度适应性            Tolerant_Flyer = "{allele uid}" // 描述蜜蜂的耐雨飞行性            Cave_Dwelling = "{allele uid}" // 描述蜜蜂的穴居性            Flower_Provider = "{allele uid}" // 描述蜜蜂的采蜜对象            Flowering = "{allele uid}" // 描述蜜蜂的授粉速度            Territory = "{allele uid}" // 描述蜜蜂的活动范围            Effect = "{allele uid}" // 描述蜜蜂的特殊效果        }    }}

下面是一个例子(适用于 1.10.2 及以上版本,1.7.10 版本需根据上述语法做出稍许调整):

cfg Bees {    cfg Test { // 该种蜜蜂的 UID 为 gendustry.bee.Test        Dominant = Yes // 该种的等位基因为显性        Glowing = No // 图标不发光        PrimaryColor = 0xFF0000  // 轮廓颜色为红色 (255, 0, 0)        SecondaryColor = 0x0000FF // 内部颜色为蓝色 (0, 0, 255)        Secret = No // 不隐藏该种蜜蜂        Humidity = Normal  // 湿度为普通        Temperature = Normal //温度为普通        Nocturnal = No // 并不只在夜间工作        Binominal = Test // 种名为 Test        Authority = BDEW // 作者名为 BDEW        Branch = "gendustry.test" //  从属于 UID 为之前自定义的 gendustry.test 属        Products = DropsList( // 30% 的概率产生之前自定义的蜂窝 test 蜂窝            30% HoneyComb:test        )        Specialty = DropsList() // 无专属产物        cfg Traits {            Base = "forestry.speciesForest" // 复制森林蜂的性状并基于此进行修改            Never_Sleeps = "forestry.boolTrue" // 覆写了夜行性性状,并更改为具有夜行性            Flower_Provider = "gendustry.flowersGoldBlocks" // 以之前自定义的采蜜对象 goldBlocks 为采蜜对象        }    }}


6. 为你的自定义蜜蜂添加杂交路线

其语法如下:

[secret] mutation: {chance}% {parent} + {parent} => {child} {requirements}
  • 语法中的中括号仅代表可省略不代表此语法必须携带中括号

  • 如果指定此杂交路线为“secret”,则此杂交路线不会出现在任何GUI中

  • {parent}{child}为蜜蜂种类的UID

  • {requirements}可以不填或为如下内容: 
    Req Temperature {Icy|Cold|Normal|Warm|Hot|Hellish} (温度需求) 
    Req Humidity {Arid|Normal|Damp} (湿度需求) 
    Req Biome {biomename} (生物群系需求) 
    Req Block B[:{modid}]:{blockname} [ @{meta} ] (方块需要)


下面是一些例子:

mutation: 10% "forestry.speciesIndustrious" + "forestry.speciesDiligent" => "gendustry.bee.Test" Req Temperature Hot // 敬业蜂与勤奋蜂在炙热的温度下有 10% 的概率杂交出自定义的 Test 蜜蜂mutation: 10% "forestry.speciesIndustrious" + "forestry.speciesCommon" => "gendustry.bee.Test" Req Biome Hell // 敬业蜂与寻常蜂在地狱生物群系下有 10% 的概率杂交出自定义的 Test 蜜蜂mutation: 10% "forestry.speciesIndustrious" + "forestry.speciesCommon" => "gendustry.bee.Test" Req Block B:wool@1 // 敬业蜂与寻常蜂在周围有橙色羊毛的情况下有 10% 的概率杂交出自定义的 Test 蜜蜂


7. 添加离心机配方

其语法如下:

centrifuge: {stackref}, {num} cycles => [ {chance}% ] {stackref}
  • 语法中的中括号仅代表可省略不代表此语法必须携带中括号

  • 若省略{chance}%则默认为100%

下面是一个实例:

centrifuge: HoneyComb:test, 10 cycles => { // 输入之前自定义的 test 蜂窝,10 次工作周期,100% 产生之前自定义的 test 蜂蜜滴,30% 产生蜂蜜滴,50% 产生蜂蜡    100% HoneyDrop:test    30% I:Forestry:honeyDrop    50% I:Forestry:beeswax}


8. 添加榨汁机配方

其语法如下:

squeezer: {stackref}, {num} cycles => {fluidname} {millibuckets} mb [ + [ {chance}% ] {stackref} ]
  • 可以使用指令“/dumpregistry”可以查询到所有注册的流体

  • 语法中的中括号仅代表可省略不代表此语法必须携带中括号

  • 若省略{chance}% {stackref}则表示不产生副产物

  • 若省略{chance}% 则默认为 100%

下面是一个实例:

squeezer: I:gendustry:GeneSample, 1 cycles => liquiddna 50 mb + 90% I:gendustry:GeneSampleBlank


9. 添加本地化内容

所添加的本地化内容至少应有英语(美国)的本地化。你也可以添加其他语言的本地化。

本地化内容应该在 {minecraft}/config/gendustry/{name}.{code}.lang 中。{code} 的格式与 Minecraft 本地化相同,英语(美国)是“en_US”等。{name} 可以是任何东西,但是为了方便,应该匹配自定义内容的配置文件的名称。

本地化内容遵循标准的 {key}={value} 的格式,具体的{key}如下:

  • gendustry.honeycomb.{name}.name – 蜂窝名字

  • gendustry.honeydrop.{name}.name – 蜂蜜滴名字

  • gendustry.bees.species.{name} – 蜜蜂名字

  • gendustry.bees.species.{name}.description – 蜜蜂描述(显示在密封分析仪中)

  • gendustry.allele.flowers.{name} – 采蜜对象名字

下面是一个例子:

gendustry.bees.species.Test=Testgendustry.bees.species.Test.description=A curious species of bees, used to demonstrate the config systemgendustry.honeycomb.test.name=Test Combgendustry.honeydrop.test.name=Test Honey Dropgendustry.allele.flowers.goldBlocks=Gold Bocks

中文的本地化比较特殊,需要使用Unicode编码(老古董般的东西),具体的实现可以前往我的 GitHub 上查看实例。


总结

Gendustry 虽然与一些同类模组相比略显不平衡,但正因其强大的自定义蜜蜂功能而依然会被诸如 FTB Infinity Evolved 等热门整合所使用。希望整合包作者们能够灵活使用自定义蜜蜂功能,化不平衡为平衡,也希望这篇教程能够真正意义上的帮到你。如果文章中有什么写的不清晰的地方,欢迎在底下进行评论,提出修改意见,如果有什么不懂的地方也可以在底下评论进行询问,我也是会尽我所能去解答。