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 要素 |