Crop Sticks(作物 Stick)

基本信息

属性 值
Block 类 BlockCropSticks
父类 BlockContainerCropsNH
TileEntity TileEntityCropSticks
材质 Material.plants(植物音效)
硬度 0.8F / 0.2F
注册名 cropSticks

功能

Crop Sticks 是 CropsNH 的核心方块,负责承载作物生长。每个 Stick 上方可以种植一株作物,作物在该方块上进行生长、变异、收割。

种植与生长

  • 种植:右键点击空 Stick,手持种子可种植(需要下方是注册的土壤方块)
  • 生长 Tick:每 128 刻(TileEntityCropSticks.TICK_RATE)作物尝试生长一次
  • 生长要素:作物需要光照、水分、化肥、土壤才能正常生长;缺水/缺肥会减速,杂草会降低产量
  • 变异:两株相邻(同种类/不同种类)作物有机会在生长过程中触发 cross-breed,产生新种子

交互处理

BlockCropSticks 通过 onBlockActivated / onBlockClicked 将交互委托给 ICropStickTile:

// 右键:优先检查 ICropRightClickHandler(如 ItemCropRightClick)
// 再调用 crop.onRightClick(player, heldItem)
onBlockActivated → ICropRightClickHandler → ICropStickTile.onRightClick()

// 左键:优先检查 ICropLeftClickHandler(如 ItemSpadeNH 铲平)
// 再调用 crop.onLeftClick(player, heldItem)
onBlockClicked → ICropLeftClickHandler → ICropStickTile.onLeftClick()

收割与掉落

  • 作物成熟后右键收割,掉落 getBreakItems():包含 Stick 本身(不破坏)+ 作物掉落物
  • 破坏 Stick 时若上有作物,也会触发收割逻辑并掉落

相邻方块变化检测

  • onNeighborBlockChange 检测下方土壤是否被移除,若作物无法在新土壤上生长则转化为迁居者(Migrator)作物

渲染

  • renderAsNormalBlock() = false,使用自定义 RenderCrop 渲染器
  • 无碰撞箱(getCollisionBoundingBoxFromPool = null),允许实体通过

摆放要求

  • 下方必须有注册的土壤:SoilRegistry.instance.isRegistered(blockBelow, metaBelow)
  • 土壤类型变更时作物会转为 Migrator(杂草化)
  • 不需要光照即可放置(但作物生长需要光照)

TileEntityCropSticks 关键方法

方法 功能
plantSeed(EntityPlayer, ItemStack) 种植种子
onRightClick(EntityPlayer, ItemStack) 右键交互:收割/查看信息
onLeftClick(EntityPlayer, ItemStack) 左键交互:拔除作物
harvest() 触发收割,返回掉落物列表
cross(ICropStickTile other) 与相邻 Stick 上的作物进行变异
getNeighbours() 获取相邻的 ICropStickTile
getSeed() 获取当前作物种子数据 ISeedData
hasCrop() 是否有作物
getBreakItems() 获取破坏时的掉落物
onInvalidSoilDetected() 检测到无效土壤,转化为 Migrator
onEntityCollision(Entity) 实体碰撞回调(如肥料效果)

核心注册表

注册表 作用
CropRegistry 注册所有作物类型(ICropCard)
MutationRegistry 注册作物变异规则(亲本A + 亲本B → 子代)
SoilRegistry 注册可用土壤方块
FertilizerRegistry 化肥效率修正
HydrationRegistry 水分需求与容量
WeedEXRegistry 杂草-EX 效果注册
BootProtectionRegistry 保护作物不被踩踏损坏

第三方集成

集成 Mod 集成类型 功能
GregTech 核心依赖 GTNH 核心依赖,所有配方和物品类均依赖 GregTech API
NEI 配方显示 NEI 配方处理器和数据导出器
Waila 工具提示 作物生长进度和状态显示
Forestry 多农场兼容 Forestry 多农场作物支持
IC2 物品/效果 IC2 辐射药水降低和物品引用
Thaumcraft 要素/作物卡片 TC 要素注册和 TC 作物卡片
TinkerConstruct 收成处理 Tinkers’ 工具收成处理和矿石浆果
StructureLib 结构通道 结构通道注册
ExtraUtilities 浇水交互 ExtraUtilities 浇水壶对作物的作用
FindIt 过滤器 FindIt 物品/方块过滤器
BetterBuildersWands 魔杖交互 魔杖与 crop stick 的交互映射
Backhand 副手拦截 副手交互事件拦截
MCLib 音效 MCLib 音效事件注册
ForbiddenMagic TC 扩展要素 Forbidden Magic 额外 Thaumcraft 要素