IC2 作物集成(IC2Crops)
PluginIC2Crops 把 IndustrialCraft 2 的作物(Crop)方块数据重新暴露给 WAILA:作物名称与等级、生长阶段与百分比、能否继续生长 / 能否收获,以及扫仪(Scan Level)解锁后的作物属性、营养存量与环境读数。
基本信息
| 属性 | 值 |
|---|---|
| 插件类 | tterrag.wailaplugins.plugins.PluginIC2Crops |
| 目标 mod | IndustrialCraft 2(modid IC2) |
@Plugin 注解 |
name = "IC2Crops", deps = "IC2",order 未设置(默认 0) |
| 注册类型 | Body + NBT provider,目标类 ic2.api.crops.ICropTile |
| 挂钩的 API | ic2.api.crops.ICropTile、ic2.api.crops.CropCard、ic2.core.crop.TileEntityCrop |
| 默认启用 | 是([plugins] 段与 WAILA [modules] 段默认均为 true) |
| 生效前提 | 进程中存在 modid IC2,否则 PluginRegistrar 直接跳过本插件 |
WAILA 元数据键(NBT)
getNBTData 在服务端把以下键写入 WAILA 传给客户端的数据包:
| NBT 键 | 类型 | 来源 | 含义 |
|---|---|---|---|
canGrow |
boolean | crop.canGrow(tCrop) |
当前能否继续生长 |
canHarvest |
boolean | crop.canBeHarvested(tCrop) |
当前能否收获 |
optimalHarvest |
int | crop.getOptimalHavestSize(tCrop) |
最佳收获尺寸(-1 表示无作物) |
scanLevel |
byte | tCrop.getScanLevel() |
扫仪分析等级,决定显示多少信息 |
growth |
byte | tCrop.getGrowth() |
作物生长属性 |
gain |
byte | tCrop.getGain() |
作物收益属性 |
resistance |
byte | tCrop.getResistance() |
作物抗性属性 |
fertilizer |
int | tCrop.getNutrientStorage() |
肥料存量 |
water |
int | tCrop.getHydrationStorage() |
水分存量 |
weedex |
int | tCrop.getWeedExStorage() |
除草剂存量 |
nutrients |
int | tCrop.getNutrients() |
当前环境养分 |
humidity |
int | tCrop.getHumidity() |
当前环境湿度 |
airQuality |
int | tCrop.getAirQuality() |
当前环境空气质量 |
growthPoints |
int | TileEntityCrop.growthPoints |
生长点数;非 TileEntityCrop 时为 -1 |
此外末尾无条件调用 tile.writeToNBT(tag),作物方块自身的 NBT 会一并进入 WAILA 数据包(原文注释即如此,非本 mod 加工)。
显示内容
| 配置开关 | 显示行 | 附加条件 |
|---|---|---|
cropName |
<作物名> (Tier N) Can grow: Yes/No |
scanLevel > 0;满尺寸时 Can grow 换成绿色 Max Size;cropTier > 0 时才追加 Can Harvest: Yes/No,达到最佳尺寸则显示绿色 Optimal Harvest |
cropName |
Stage -- Size: <当前>/<最大> |
scanLevel > 0 |
cropName |
同上行的 Growth: N% |
仅在 当前尺寸 < 最大尺寸 时追加;百分比 = growthPoints / crop.growthDuration(tCrop) * 100(取整) |
cropName |
红色 WEED - [420 blaze it] |
scanLevel == 0 且 cropTier == 0,即杂草作物 |
cropStats |
Stats -- Growth: N Gain: N Resistance: N |
需 scanLevel >= 4;growth >= 24 时数值以红色显示(源码按 >= 24 着色) |
plantInfo |
Plant -- Fertilizer: N Water: N Weed-Ex: N |
需 scanLevel >= 4 |
envInfo |
Environ -- Nutrients: N Humidity: N Air-Quality: N |
需 scanLevel >= 4 |
颜色使用 WAILA 的 SpecialChars 常量 GREEN / RED / RESET;Yes / No 取自 WAILA 自带语言键。
分级可见性
本插件的显示量由作物方块的 scanLevel 门控,而非玩家手持物品:
scanLevel == 0:杂草显示红色警告,正常作物不显示任何行。scanLevel 1~3:显示作物名、等级、生长状态、尺寸与百分比。scanLevel >= 4:追加作物属性、肥料/水分/除草剂存量与环境读数。
因此玩家需先用 IC2 扫仪扫描作物方块,WAILA 才会逐步放出数据。
配置开关
4 个功能开关全部通过 PluginBase.addConfig(key) 注册(重载版本,默认值均为 true),在 WAILA 侧以 IC2Crops:<key> 为键、分组在 WAILA 配置的 IC2Crops 模块下:
| 开关 | 语言键 | 含义 |
|---|---|---|
cropName |
wp.config.IC2Crops.cropName |
显示作物名称 |
cropStats |
wp.config.IC2Crops.cropStats |
显示作物属性 |
plantInfo |
wp.config.IC2Crops.plantInfo |
显示作物信息(肥料/水/除草剂) |
envInfo |
wp.config.IC2Crops.envInfo |
显示环境信息(养分/湿度/空气质量) |
本插件另有 1 个插件级总开关 IC2Crops(enabled() 读取),关闭后上述 4 行与所有 NBT 采集一并停用。
相关条目
- 插件 API 与生命周期 -
@Plugin注解、ASM 扫描、注册顺序 - WAILA 模块开关 - 全部插件的总开关与功能开关总表
- Forge 流体桥接(IFluidHandler) - 同样按接口注册的通用插件
- 配置系统 - 本 mod 自己的
wailaplugins.cfg