Clean
[esp.git] / src / net / encode / wurmesp / feature / hook / HeadsUpDisplayInit.java
CommitLineData
82327c1d 1package net.encode.wurmesp.feature.hook;
2
3import java.lang.reflect.Field;
4import java.util.List;
5import java.util.logging.Level;
6
7import org.gotti.wurmunlimited.modloader.ReflectionUtil;
8
9import com.wurmonline.client.renderer.gui.HeadsUpDisplay;
10import com.wurmonline.client.renderer.gui.MainMenu;
11import com.wurmonline.client.renderer.gui.WindowSerializer;
12import com.wurmonline.client.renderer.gui.WurmComponent;
13import com.wurmonline.client.renderer.gui.WurmEspWindow;
14import com.wurmonline.client.settings.SavePosManager;
15
16import net.encode.wurmesp.WurmEspMod;
17
18public class HeadsUpDisplayInit
19extends Hook {
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;
24 this.initEspWR();
25 return null;
26 });
27 WurmEspMod.logger.log(Level.INFO, "[WurmEspMod] HeadsUpDisplay.init hooked");
28 }
29
30 private void initEspWR() {
31 try {
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");
40 }
41 catch (ClassCastException | IllegalAccessException | IllegalArgumentException | NoSuchFieldException e) {
42 throw new RuntimeException(e);
43 }
44 }
45}
46