WaypointsIngameRendererMixin
LATE:Xaero 游戏内路点
基本信息
| 属性 | 值 |
|---|---|
| 路径 | com.gtnewhorizons.navigator.mixins.late.xaerosminimap.WaypointsIngameRendererMixin |
| 行数 | 50 |
| 注解 | @Mixin(value = WaypointsIngameRenderer.class, remap = false)(:21) |
| 构建器 | Mixins 的 XAEROS_MINIMAP_WAYPOINT |
唯一的 @Inject(:24-30)—— 最复杂的 @At
@Inject(
method = "render",
at = @At(
value = "INVOKE",
target = "Lxaero/common/minimap/waypoints/render/WaypointsIngameRenderer;renderWaypointsList(Ljava/util/Collection;DDDLnet/minecraft/entity/Entity;Lnet/minecraft/client/renderer/Tessellator;DDDDFFDIFFLnet/minecraft/util/Vec3;D)V",
from = @At(...)),
...)
目标描述符(:28)逐段拆解
Lxaero/common/minimap/waypoints/render/WaypointsIngameRenderer;
renderWaypointsList(
Ljava/util/Collection; ← Collection 路点集合
DDD ← 3 个 double(x, y, z)
Lnet/minecraft/entity/Entity; ← 玩家实体
Lnet/minecraft/client/renderer/Tessellator; ← 渲染器
DDDD ← 4 个 double(旋转/缩放)
FFD ← 2 个 float + 1 个 double
IFF ← int + 2 个 float
Lnet/minecraft/util/Vec3; ← 向量
D ← 1 个 double
)V
⚠️ from = @At(...)(:30) —— 这是本 mod 里唯一使用
@At(from = ...) 的地方。
@At(from = ...) 与 @At(target = ...) 的区别:
target= 在调用该方法之前注入from= 在该方法被调用之后注入
⚠️ 实际上 from 通常与 target 配对使用(@At(value="INVOKE", target=X, from=Y)),
表示「在 X 被调用的紧邻位置,且在 Y 之后」。
这里是单用 from(:30 的参数列表里有 from,而 target 在 :28)——
即同时指定了 target(:28)与 from(:30)。
⚠️ method = "render" 是极短名(无描述符),
而 target 用了完整描述符 —— 两者精度不一致。
单模组要求
Mixins 的 XAEROS_MINIMAP_WAYPOINT(:44-48)
只调 1 次 addRequiredMod(TargetedMod.XAEROMINIMAP) ——
与 MinimapRendererMixin 的双模组要求不同。
所以只装 Xaero Minimap(不装 World Map)时本类会应用。
与 MapChatMixin 的 @At 对比
| mixin | from 参数 |
|---|---|
| 本类 | 有(:30) |
| MapChatMixin | 无 |
| TextureCacheMixin | 无 |
| MinimapRendererMixin | 无 |
⚠️ 本类是全 mod 唯一用 from 的 —— 说明它需要在
「Xaero 画完它自己的路点之后」再插 Navigator 的路点。
相关
- Mixins -
XAEROS_MINIMAP_WAYPOINT构建器 - MinimapRendererMixin - 同包的双模组 mixin
- Waypoint / XaeroWaypointManager - 路点侧