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