EntityPlayerMixin
基本信息
| 属性 | 值 |
|---|---|
| 目标类 | net.minecraft.entity.player.EntityPlayer |
| Mixin 阶段 | EARLY |
| 注入数 | 5 |
| 注入方法 | <init>、setItemInUse、getItemInUseDuration、onLivingUpdate、damageEntity |
| 注册于 | Mixins.MINECRAFT(common mixin) |
| 启用版本 | Minecraft 1.7.10 |
功能
本 mod 注入最多的 Mixin。承担三件事:接入 EntityPlayerExt duck 接口、派发和平难度回血事件、把受伤改走消耗值通道。
| 注入方法 | 作用 |
|---|---|
<init> |
构造末尾调用 AppleCoreAPI.registry / accessor 初始化相关逻辑 |
setItemInUse |
使用物品状态变化时维护使用时长 |
getItemInUseDuration |
实现 duck 接口的 getItemInUseMaxDuration() |
onLivingUpdate |
派发 HealthRegenEvent.PeacefulRegen |
damageEntity |
派发 ExhaustionEvent.ExhaustFromHurt |
实现要点
onLivingUpdate注入中构造PeacefulRegen事件, 读取其可写的deltaHealth(初值1f)作为回血量, 并按isCanceled()决定是否跳过——这是实现「和平难度也能回血」 或「和平难度禁止回血」的唯一入口。damageEntity注入中构造ExhaustFromHurt事件, 其source与damage两个字段非 final,监听器可改写; 之后按isCanceled()决定是否继续扣血。getItemInUseDuration注入实现 EntityPlayerExt 的getItemInUseMaxDuration(),供外部读取使用中物品的最大持续时间。- 该 Mixin 同时挂载了 duck 接口,因此类上除注入外还有接口声明。
相关条目
- EntityPlayerExt - 本 Mixin 挂载的 duck 接口
- ExhaustionEvent -
ExhaustFromHurt的定义 - HealthRegenEvent -
PeacefulRegen的定义 - FoodStatsMixin - 兄弟 Mixin,承担其余事件
- BlockCactusMixin - 另一个
ExhaustFromHurt调用方 - Mixins - 注册处