First Commit
[esp.git] / src / net / encode / wurmesp / feature / hook / HeadsUpDisplayInit.java
1 /*
2 * Decompiled with CFR 0.151.
3 *
4 * Could not load the following classes:
5 * com.wurmonline.client.renderer.gui.HeadsUpDisplay
6 * com.wurmonline.client.renderer.gui.MainMenu
7 * com.wurmonline.client.renderer.gui.WindowSerializer
8 * com.wurmonline.client.renderer.gui.WurmComponent
9 * com.wurmonline.client.settings.SavePosManager
10 * org.gotti.wurmunlimited.modloader.ReflectionUtil
11 */
12 package net.encode.wurmesp.feature.hook;
13
14 import java.lang.reflect.Field;
15 import java.util.List;
16 import java.util.logging.Level;
17
18 import org.gotti.wurmunlimited.modloader.ReflectionUtil;
19
20 import com.wurmonline.client.renderer.gui.HeadsUpDisplay;
21 import com.wurmonline.client.renderer.gui.MainMenu;
22 import com.wurmonline.client.renderer.gui.WindowSerializer;
23 import com.wurmonline.client.renderer.gui.WurmComponent;
24 import com.wurmonline.client.renderer.gui.WurmEspWindow;
25 import com.wurmonline.client.settings.SavePosManager;
26
27 import net.encode.wurmesp.WurmEspMod;
28
29 public class HeadsUpDisplayInit
30 extends Hook {
31 public HeadsUpDisplayInit() {
32 this.prepareHook("com.wurmonline.client.renderer.gui.HeadsUpDisplay", "init", "(II)V", () -> (proxy, method, args) -> {
33 method.invoke(proxy, args);
34 WurmEspMod.hud = (HeadsUpDisplay)proxy;
35 this.initEspWR();
36 return null;
37 });
38 WurmEspMod.logger.log(Level.INFO, "[WurmEspMod] HeadsUpDisplay.init hooked");
39 }
40
41 private void initEspWR() {
42 try {
43 WurmEspWindow wurmEspWindow = new WurmEspWindow();
44 MainMenu mainMenu = (MainMenu)ReflectionUtil.getPrivateField((Object)WurmEspMod.hud, (Field)ReflectionUtil.getField(WurmEspMod.hud.getClass(), (String)"mainMenu"));
45 mainMenu.registerComponent("Esp", (WurmComponent)wurmEspWindow);
46 @SuppressWarnings("unchecked")
47 List<WurmEspWindow> components = (List<WurmEspWindow>)ReflectionUtil.getPrivateField((Object)WurmEspMod.hud, (Field)ReflectionUtil.getField(WurmEspMod.hud.getClass(), (String)"components"));
48 components.add(wurmEspWindow);
49 SavePosManager savePosManager = (SavePosManager)ReflectionUtil.getPrivateField((Object)WurmEspMod.hud, (Field)ReflectionUtil.getField(WurmEspMod.hud.getClass(), (String)"savePosManager"));
50 savePosManager.registerAndRefresh((WindowSerializer)wurmEspWindow, "wurmespwindow");
51 }
52 catch (ClassCastException | IllegalAccessException | IllegalArgumentException | NoSuchFieldException e) {
53 throw new RuntimeException(e);
54 }
55 }
56 }
57