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) |
相关条目
- Gene Sample - 模板的填充物
- Genetic Replicator - 唯一要求完整模板的机器