First Commit
[esp.git] / src / net / encode / wurmesp / feature / hook / HeadsUpDisplayInit.java
CommitLineData
82327c1d 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 */
12package net.encode.wurmesp.feature.hook;
13
14import java.lang.reflect.Field;
15import java.util.List;
16import java.util.logging.Level;
17
18import org.gotti.wurmunlimited.modloader.ReflectionUtil;
19
20import com.wurmonline.client.renderer.gui.HeadsUpDisplay;
21import com.wurmonline.client.renderer.gui.MainMenu;
22import com.wurmonline.client.renderer.gui.WindowSerializer;
23import com.wurmonline.client.renderer.gui.WurmComponent;
24import com.wurmonline.client.renderer.gui.WurmEspWindow;
25import com.wurmonline.client.settings.SavePosManager;
26
27import net.encode.wurmesp.WurmEspMod;
28
29public class HeadsUpDisplayInit
30extends 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