Gene Template

基本信息

属性 值
注册名 gendustry:GeneTemplate
注册方式 Items.regItem(GeneTemplate)(Items.scala:35)
类 net.bdew.gendustry.items.GeneTemplate
最大堆叠 1(setMaxStackSize(1))
创造标签 GendustryCreativeTabs.main + GendustryCreativeTabs.templates
物品 NBT species(物种 UID 字符串)+ samples(NBT 列表,每项一个 GeneSampleInfo)

功能

基因模板是 Gene Sample 的聚合容器:绑定一个物种 UID,并持有该物种若干条染色体的等位基因。模板的完整性决定它能驱动哪台机器。

关键方法(GeneTemplate):

方法 作用
getSpecies(stack) 读 NBT 的 species 字符串,查回 ISpeciesRoot;无 NBT 时返回 null
getSamples(stack) 读 NBT 的 samples 列表,逐项 GeneSampleInfo.fromNBT
addSample(stack, sample) 写入一条样本。物种 UID 与模板不符时直接返回 false;同染色体已存在的旧样本会被覆盖
isComplete(stack) getRequiredChromosomes(sp)(GeneticsHelper.getCleanKaryotype 的键集)减去已填染色体,差集为空才为真
getRequiredChromosomes(sp) 该物种必须集齐的染色体序号集合

手工添加样本的规则写在语言文件 gendustry.label.template.crafting(en_US.lang):

Genetic Samples can be added to a Template. Combine them in any crafting table. Multiple samples can be added at once.

即任意工作台、无序合成、可一次加入多条。TemplateCraftingHandler(nei/TemplateCraftingHandler.scala)是这条无序配方的 NEI 处理器;GeneRecipe 本身通过 RecipeSorter.register("gendustry:GeneCopyRecipe", classOf[GeneRecipe], SHAPELESS, "") 注册(Gendustry.scala:107-113)。

模板类别的创造标签页会按 UID 排序列出所有注册物种的模板(getSubItems 遍历 AlleleManager.alleleRegistry.getRegisteredAlleles 中 IAlleleSpecies 且 getRoot.getTemplate(...) != null 的项),所以连 Gendustry 自己的 17 个蜂种模板都能直接拿来做压印与复制。

合成配方

RTR
TDT
RTR
字符 物品
T OD:ingotTin(锡锭)
R minecraft:redstone
D minecraft:diamond

熔炼丢弃 NBT 的配方:smelt: $t => $t,注释明确 “This will just discard the NBT tag” —— 熔掉模板只得一张空模板。

用途

用途 目标机器
定向压印 Genetic Imprinter(槽位 0)
批量复制个体 Genetic Replicator(槽位 0,要求 isComplete 为真)
烧录回单张样本 Genetic Transposer(槽位 2)

相关条目