| 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 | |