| 1 | /* |
| 2 | * Decompiled with CFR 0.151. |
| 3 | * |
| 4 | * Could not load the following classes: |
| 5 | * com.wurmonline.client.game.World |
| 6 | * com.wurmonline.client.renderer.PickRenderer |
| 7 | * com.wurmonline.client.renderer.backend.Queue |
| 8 | * org.gotti.wurmunlimited.modloader.ReflectionUtil |
| 9 | */ |
| 10 | package net.encode.wurmesp.feature.hook; |
| 11 | |
| 12 | import java.lang.reflect.Field; |
| 13 | import java.util.logging.Level; |
| 14 | |
| 15 | import org.gotti.wurmunlimited.modloader.ReflectionUtil; |
| 16 | |
| 17 | import com.wurmonline.client.game.World; |
| 18 | import com.wurmonline.client.renderer.PickRenderer; |
| 19 | import com.wurmonline.client.renderer.backend.Queue; |
| 20 | |
| 21 | import net.encode.wurmesp.WurmEspMod; |
| 22 | |
| 23 | public class RenderPickedItem |
| 24 | extends Hook { |
| 25 | |
| 26 | public RenderPickedItem() { |
| 27 | this.prepareHook("com.wurmonline.client.renderer.WorldRender", "renderPickedItem", "(Lcom/wurmonline/client/renderer/backend/Queue;)V", () -> (proxy, method, args) -> { |
| 28 | method.invoke(proxy, args); |
| 29 | Class<?> cls = proxy.getClass(); |
| 30 | World world = (World)ReflectionUtil.getPrivateField((Object)proxy, (Field)ReflectionUtil.getField(cls, (String)"world")); |
| 31 | WurmEspMod._pickRenderer = (PickRenderer)ReflectionUtil.getPrivateField((Object)proxy, (Field)ReflectionUtil.getField(cls, (String)"pickRenderer")); |
| 32 | Queue queuePick = (Queue)ReflectionUtil.getPrivateField((Object)proxy, (Field)ReflectionUtil.getField(cls, (String)"queuePick")); |
| 33 | WurmEspMod.pickableUnits.stream().filter(unit -> WurmEspMod.players && unit.isPlayer() || WurmEspMod.uniques && unit.isUnique() || WurmEspMod.conditioned && unit.isConditioned() || WurmEspMod.animals && (unit.isMob() && !unit.isAggroMob()) || WurmEspMod.mobs && unit.isAggroMob() || WurmEspMod.specials && unit.isSpecial() || WurmEspMod.items && unit.isSpotted()).forEachOrdered(unit -> { |
| 34 | if (unit.isConditioned() && WurmEspMod.conditioned || unit.isConditioned() && WurmEspMod.conditionedcolorsallways || unit.isChampion() && WurmEspMod.championmcoloralways) { |
| 35 | unit.renderUnit(queuePick, true); |
| 36 | } else { |
| 37 | unit.renderUnit(queuePick, false); |
| 38 | } |
| 39 | }); |
| 40 | if (WurmEspMod.tileshighlight) { |
| 41 | WurmEspMod.tilesHighlightManager.setWorldQueue(world, queuePick); |
| 42 | if (WurmEspMod.tilesHighlightManager.first) { |
| 43 | WurmEspMod.tilesHighlightManager.refresh(); |
| 44 | WurmEspMod.tilesHighlightManager.first = false; |
| 45 | } else if (WurmEspMod.tilesHighlightCronoManager.hasEnded()) { |
| 46 | WurmEspMod.tilesHighlightManager.refresh(); |
| 47 | WurmEspMod.tilesHighlightCronoManager.restart(5000L); |
| 48 | } |
| 49 | Thread tilesHighlightThread = new Thread(() -> WurmEspMod.tilesHighlightManager.queue()); |
| 50 | tilesHighlightThread.setPriority(10); |
| 51 | tilesHighlightThread.start(); |
| 52 | } else { |
| 53 | WurmEspMod.tilesHighlightManager.setWorld(world); |
| 54 | } |
| 55 | if (WurmEspMod.tilescloseby && world.getPlayer().getPos().getLayer() >= 0) { |
| 56 | WurmEspMod.tilesCloseByManager.setWorldQueue(world, queuePick); |
| 57 | if (WurmEspMod.tilesCloseByManager.first) { |
| 58 | WurmEspMod.tilesCloseByManager.refresh(); |
| 59 | WurmEspMod.tilesCloseByManager.first = false; |
| 60 | } else if (WurmEspMod.tilesCloseByCronoManager.hasEnded()) { |
| 61 | WurmEspMod.tilesCloseByManager.refresh(); |
| 62 | WurmEspMod.tilesCloseByCronoManager.restart(1000L); |
| 63 | } |
| 64 | Thread tilesThread = new Thread(() -> WurmEspMod.tilesCloseByManager.queue()); |
| 65 | tilesThread.setPriority(10); |
| 66 | tilesThread.start(); |
| 67 | } |
| 68 | if (WurmEspMod.tilesclosebynotrideable && world.getPlayer().getPos().getLayer() >= 0) { |
| 69 | WurmEspMod.tilesCloseByWalkableManager.setWorldQueue(world, queuePick); |
| 70 | if (WurmEspMod.tilesCloseByWalkableManager.first) { |
| 71 | WurmEspMod.tilesCloseByWalkableManager.refresh(); |
| 72 | WurmEspMod.tilesCloseByWalkableManager.first = false; |
| 73 | } else if (WurmEspMod.tilesCloseByWalkableCronoManager.hasEnded()) { |
| 74 | WurmEspMod.tilesCloseByWalkableManager.refresh(); |
| 75 | WurmEspMod.tilesCloseByWalkableCronoManager.restart(1000L); |
| 76 | } |
| 77 | Thread tilesWalkableThread = new Thread(() -> WurmEspMod.tilesCloseByWalkableManager.queue()); |
| 78 | tilesWalkableThread.setPriority(10); |
| 79 | tilesWalkableThread.start(); |
| 80 | } |
| 81 | if (WurmEspMod.tilesFlower && world.getPlayer().getPos().getLayer() >= 0) { |
| 82 | WurmEspMod.tilesFlowerManager.setWorldQueue(world, queuePick); |
| 83 | if (WurmEspMod.tilesFlowerManager.first) { |
| 84 | WurmEspMod.tilesFlowerManager.refresh(); |
| 85 | WurmEspMod.tilesFlowerManager.first = false; |
| 86 | } else if (WurmEspMod.tilesFlowerCronoManager.hasEnded()) { |
| 87 | WurmEspMod.tilesFlowerManager.refresh(); |
| 88 | WurmEspMod.tilesFlowerCronoManager.restart(1000L); |
| 89 | } |
| 90 | Thread tilesFlowerThread = new Thread(() -> WurmEspMod.tilesFlowerManager.queue()); |
| 91 | tilesFlowerThread.setPriority(10); |
| 92 | tilesFlowerThread.start(); |
| 93 | } |
| 94 | if (WurmEspMod.xray && world.getPlayer().getPos().getLayer() < 0) { |
| 95 | Thread refreshThread; |
| 96 | WurmEspMod.xrayManager.setWorldQueue(world, queuePick); |
| 97 | if (WurmEspMod.xrayManager.first) { |
| 98 | if (WurmEspMod.xrayrefreshthread) { |
| 99 | refreshThread = new Thread(() -> WurmEspMod.xrayManager.refresh()); |
| 100 | refreshThread.setPriority(10); |
| 101 | refreshThread.start(); |
| 102 | } else { |
| 103 | WurmEspMod.xrayManager.refresh(); |
| 104 | } |
| 105 | WurmEspMod.xrayManager.first = false; |
| 106 | } else if (WurmEspMod.xrayCronoManager.hasEnded()) { |
| 107 | if (WurmEspMod.xrayrefreshthread) { |
| 108 | refreshThread = new Thread(() -> WurmEspMod.xrayManager.refresh()); |
| 109 | refreshThread.setPriority(10); |
| 110 | refreshThread.start(); |
| 111 | } else { |
| 112 | WurmEspMod.xrayManager.refresh(); |
| 113 | } |
| 114 | WurmEspMod.xrayCronoManager.restart(WurmEspMod.xrayrefreshrate * 1000); |
| 115 | } |
| 116 | if (WurmEspMod.xraythread) { |
| 117 | Thread xrayThread = new Thread(() -> WurmEspMod.xrayManager.queue()); |
| 118 | xrayThread.setPriority(10); |
| 119 | xrayThread.start(); |
| 120 | } else { |
| 121 | WurmEspMod.xrayManager.queue(); |
| 122 | } |
| 123 | } |
| 124 | return null; |
| 125 | }); |
| 126 | WurmEspMod.logger.log(Level.INFO, "[WurmEspMod] WorldRender.renderPickedItem hooked"); |
| 127 | } |
| 128 | } |
| 129 | |