跳到正文
烈焰甘蔗Wiki

Farm Multiblock

基本信息

属性 值
参与方块 Forestry:ffarm(BlockFarm,metadata 0-5)
控制器 虚拟控制器 FarmController,不对应任何特定方块;由检测到邻接的任意 TileFarm* 触发组装
TileEntity TileFarmPlain / TileFarmGearbox / TileFarmHatch / TileFarmValve / TileFarmControl
形成方式 自动检测邻接方块,组成矩形 multiblock
控制器类 FarmController extends RectangularMultiblockControllerBase(farming/multiblock/FarmController.java:79)

[!WARNING] 已订正(源码回核)

  1. 尺寸原文完全缺失/错误。原文写「无明确最小块数限制,但至少需要 BASIC + 至少一个功能 tile」「高度: 任意」。实际硬性限制见下表(FarmMultiblockSizeLimits)。
  2. 控制器原文写成「BASIC 方块为主体」 —— 错。FarmController 是 MultiblockLogicFarm.createNewController 动态创建的虚拟控制器(MultiblockLogicFarm.java:32),没有任何一块方块是「控制器方块」。
  3. 核心方块注册名原文写 forestry.farm —— 错,应为 Forestry:ffarm。
  4. 原文漏掉两条硬性校验规则:顶层必须是 TileFarmPlain、内部必须是 TileFarmPlain、且必须至少有一个 TileFarmGearbox。
  5. 原文「参与方块」表只列了 1 行(Farm/TileFarmPlain),与其自己正文矛盾。

结构要求

参数 值 证据
最小 X / Y / Z 3 / 4 / 3 FarmMultiblockSizeLimits.getMinimumXSize/YSize/ZSize
最大 X / Y / Z 5 / 4 / 5 FarmMultiblockSizeLimits.getMaximumXSize/YSize/ZSize
最小组装方块数 36(= 3×3×4) getMinimumNumberOfBlocksForAssembledMachine() = 3 * 3 * 4
控制器 虚拟 FarmController MultiblockLogicFarm.java:32
可否旋转 无旋转概念,矩形体积按实际邻接范围自适应(3~5 × 4 × 3~5) —
可否拆除 可。任意一格被破坏后 multiblock 立即解体(onMachineDisassembled 清空 targets,FarmController.java:228-232) FarmController.java:228-232

布局规则(逐格校验)

来自 FarmController.isGoodForExteriorLevel / isGoodForInterior / isMachineWhole:

位置 要求 错误提示键
顶层(level == 2) 必须是 TileFarmPlain for.multiblock.farm.error.needPlainBand
内部(不接触外表面,即 X/Y/Z 中心格) 必须是 TileFarmPlain for.multiblock.farm.error.needPlainInterior
整体 必须至少含 1 个 TileFarmGearbox,否则不成型 for.multiblock.farm.error.needGearbox
其他侧面/底层 任意合法 multiblock 部件即可(isGoodForExteriorLevel 只在 level==2 抛异常) —
非部件方块 一律不允许放在内部/侧面(isBlockGoodForInterior 默认直接抛异常,MultiblockControllerBase.java:487-514) for.multiblock.error.invalid.interior

参与方块

方块 注册名 Metadata TileEntity 角色
Farm Plain Forestry:ffarm 0 / 1 TileFarmPlain 唯一允许出现在顶层与内部的填充方块
Farm Gearbox Forestry:ffarm 2 TileFarmGearbox 动力源,必需至少 1 个
Farm Hatch Forestry:ffarm 3 TileFarmHatch 输入/输出接口
Farm Valve Forestry:ffarm 4 TileFarmValve 流体阀
Farm Control Forestry:ffarm 5 TileFarmControl 电路板插槽

功能

Farm 是自动化农业多方块结构,控制器按四个方向(FarmDirection)各挂载一个 IFarmLogic,负责种植、施肥、灌溉、收获。

Farm Logic 类型(PluginFarming.preInit 注册的 Farmables)

Farmable 作物 Farmable 类
Arboreal 原生树苗 + Forestry GE 树苗 FarmableVanillaSapling, FarmableGE
Orchard 小麦/土豆/胡萝卜(果实) FarmableBasicFruit(Blocks.wheat/potatoes/carrots, 7)
Shroom 红/棕蘑菇 FarmableVanillaMushroom
Wheat 小麦 FarmableGenericCrop(wheat_seeds → wheat, 7)
Gourd 南瓜/西瓜 FarmableGourd
Infernal 下界疣 FarmableGenericCrop(nether_wart → nether_wart, 3)
Poales 甘蔗 FarmableStacked(Blocks.reeds, 3, 0)
Succulentes 仙人掌 FarmableStacked(Blocks.cactus, 3, 0)
Vegetable 胡萝卜/土豆 FarmableGenericCrop
Peat 泥炭 由 Energy 模块的泥炭引擎关联

原文中「Succulent | 仙人掌」对应的枚举实际名为 Succulentes(PluginFarming.java 中 FarmableReference.Succulentes)。另外 Vegetable / Peat 的具体 Farmable 绑定见 PluginFarming.preInit,IC2 作物由 PluginIC2 追加 FarmableBasicIC2Crop。

电路板

  • Managed 插槽:插入电路板后自动管理对应类型作物
  • Manual 插槽:半自动,需玩家手动触发
  • 电路板配方由 PluginFarming.java:350-403 通过 ChipsetManager.solderManager 注册

数值

数值 值 证据
灌溉水槽容量 10000 mB(水) new FilteredTank(Constants.PROCESSOR_TANK_CAPACITY, FluidRegistry.WATER)(FarmController.java:141)
控制器电路板槽 1 new InventoryAdapter(1, "sockets")(FarmController.java:135)
齿轮箱工作周期 4 周期 × 50 RF = 200 RF/次 TileFarmGearbox.WORK_CYCLES = 4、ENERGY_PER_OPERATION = WORK_CYCLES * 50(TileFarmGearbox.java:21-22)
内部耕地湿度阈值 由环境温度/湿度决定(FarmHydrationManager) —
肥料消耗 由 MultiblockManager.farmFertilizerRegistry 中注册的肥料决定 —

第三方 mod 集成

  • IC2:FarmLogicIC2Crops,电路板 Circuit.farmIC2CropsManaged/Manual(PluginIC2.java:340-354)
  • Arboriculture:GE 树苗通过 FarmableGE 集成

相关条目

  • Farm - 基础方块
浏览全部模组