FoodValues
基本信息
| 属性 | 值 |
|---|---|
| 类名 | squeek.applecore.api.food.FoodValues |
| 类型 | class,2 个 public final 字段 + 9 个方法 |
| 启用版本 | Minecraft 1.7.10 |
功能
不可变的食物数值载体,表示「回复多少饥饿值」与「饱和度修正系数」。
public final int hunger;
public final float saturationModifier;
| 方法 | 说明 |
|---|---|
FoodValues(int, float) |
主构造器 |
FoodValues(FoodValues) |
拷贝构造器 |
getSaturationIncrement() |
返回 Math.min(20, hunger * saturationModifier * 2f) |
getUnmodified(ItemStack) |
静态:取未覆写的原始数值 |
get(ItemStack) |
静态:取覆写后的数值 |
get(ItemStack, EntityPlayer) |
静态:取对特定玩家覆写后的数值 |
equals / hashCode / toString |
值语义实现 |
实现要点
- 两个字段是
final,数值对象本身不可改。要改变数值必须 构造新的FoodValues并在GetFoodValues事件里替换foodValues字段。 getSaturationIncrement()的公式里20是硬编码上限, 意味着单次进食的饱和度增量最多 20 点,与原版FoodStats行为一致。- 三个静态取值方法全部经由
AppleCoreAPI.accessor转发, 因此会触发对应的事件;getUnmodified不会。 - TooltipOverlayHandler 用
defaultFoodValues.equals(modifiedFoodValues)判断是否需要绘制提示条。
相关条目
- FoodEvent - 承载本类实例的 4 个事件
- IAppleCoreAccessor - 三个静态方法的下游
- TooltipOverlayHandler - 比对本类两次数值的客户端逻辑
- HUDOverlayHandler - 用本类数值绘制饥饿条叠加