1 package net
.encode
.wurmesp
.feature
.hook
;
3 import java
.lang
.reflect
.Field
;
5 import java
.util
.logging
.Level
;
7 import org
.gotti
.wurmunlimited
.modloader
.ReflectionUtil
;
9 import com
.wurmonline
.client
.renderer
.gui
.HeadsUpDisplay
;
10 import com
.wurmonline
.client
.renderer
.gui
.MainMenu
;
11 import com
.wurmonline
.client
.renderer
.gui
.WindowSerializer
;
12 import com
.wurmonline
.client
.renderer
.gui
.WurmComponent
;
13 import com
.wurmonline
.client
.renderer
.gui
.WurmEspWindow
;
14 import com
.wurmonline
.client
.settings
.SavePosManager
;
16 import net
.encode
.wurmesp
.WurmEspMod
;
18 public class HeadsUpDisplayInit
20 public HeadsUpDisplayInit() {
21 this.prepareHook("com.wurmonline.client.renderer.gui.HeadsUpDisplay", "init", "(II)V", () -> (proxy
, method
, args
) -> {
22 method
.invoke(proxy
, args
);
23 WurmEspMod
.hud
= (HeadsUpDisplay
)proxy
;
27 WurmEspMod
.logger
.log(Level
.INFO
, "[WurmEspMod] HeadsUpDisplay.init hooked");
30 private void initEspWR() {
32 WurmEspWindow wurmEspWindow
= new WurmEspWindow();
33 MainMenu mainMenu
= (MainMenu
)ReflectionUtil
.getPrivateField((Object
)WurmEspMod
.hud
, (Field
)ReflectionUtil
.getField(WurmEspMod
.hud
.getClass(), (String
)"mainMenu"));
34 mainMenu
.registerComponent("Esp", (WurmComponent
)wurmEspWindow
);
35 @SuppressWarnings("unchecked")
36 List
<WurmEspWindow
> components
= (List
<WurmEspWindow
>)ReflectionUtil
.getPrivateField((Object
)WurmEspMod
.hud
, (Field
)ReflectionUtil
.getField(WurmEspMod
.hud
.getClass(), (String
)"components"));
37 components
.add(wurmEspWindow
);
38 SavePosManager savePosManager
= (SavePosManager
)ReflectionUtil
.getPrivateField((Object
)WurmEspMod
.hud
, (Field
)ReflectionUtil
.getField(WurmEspMod
.hud
.getClass(), (String
)"savePosManager"));
39 savePosManager
.registerAndRefresh((WindowSerializer
)wurmEspWindow
, "wurmespwindow");
41 catch (ClassCastException
| IllegalAccessException
| IllegalArgumentException
| NoSuchFieldException e
) {
42 throw new RuntimeException(e
);