82327c1d |
1 | package net.encode.wurmesp.feature.hook; |
2 | |
3 | import com.wurmonline.client.game.PlayerPosition; |
4 | import java.util.logging.Level; |
5 | import java.util.logging.Logger; |
6 | import javassist.CannotCompileException; |
7 | import javassist.ClassPool; |
8 | import javassist.CtClass; |
9 | import javassist.NotFoundException; |
10 | import net.encode.wurmesp.WurmEspMod; |
11 | import net.encode.wurmesp.util.ConfigUtils; |
12 | import org.gotti.wurmunlimited.modloader.classhooks.HookManager; |
13 | |
14 | public class HandleDevInput { |
15 | public HandleDevInput() { |
16 | try { |
17 | ClassPool classPool = HookManager.getInstance().getClassPool(); |
18 | CtClass ctWurmConsole = classPool.getCtClass("com.wurmonline.client.console.WurmConsole"); |
19 | ctWurmConsole.getMethod("handleDevInput", "(Ljava/lang/String;[Ljava/lang/String;)Z").insertBefore("if (net.encode.wurmesp.feature.hook.HandleDevInput.handleInput($1,$2)) return true;"); |
20 | WurmEspMod.logger.log(Level.INFO, "[WurmEspMod] Return inserted on handleDevInput"); |
21 | } |
22 | catch (CannotCompileException | NotFoundException ex) { |
23 | Logger.getLogger(HandleDevInput.class.getName()).log(Level.SEVERE, null, ex); |
24 | } |
25 | WurmEspMod.logger.log(Level.INFO, "[WurmEspMod] Return inserted on handleDevInput"); |
26 | } |
27 | |
28 | public static boolean handleInput(String cmd, String[] data) { |
29 | if (cmd.equals("esp")) { |
30 | if (data.length == 2) { |
31 | switch (data[1]) { |
32 | case "players": { |
33 | WurmEspMod.players = !WurmEspMod.players; |
34 | WurmEspMod.hud.consoleOutput("ESP players changed to: " + Boolean.toString(WurmEspMod.players)); |
35 | break; |
36 | } |
37 | case "mobs": { |
38 | WurmEspMod.mobs = !WurmEspMod.mobs; |
39 | WurmEspMod.hud.consoleOutput("ESP mobs changed to: " + Boolean.toString(WurmEspMod.mobs)); |
40 | break; |
41 | } |
42 | case "specials": { |
43 | WurmEspMod.specials = !WurmEspMod.specials; |
44 | WurmEspMod.hud.consoleOutput("ESP specials changed to: " + Boolean.toString(WurmEspMod.specials)); |
45 | break; |
46 | } |
47 | case "uniques": { |
48 | WurmEspMod.uniques = !WurmEspMod.uniques; |
49 | WurmEspMod.hud.consoleOutput("ESP uniques changed to: " + Boolean.toString(WurmEspMod.uniques)); |
50 | break; |
51 | } |
52 | case "conditioned": { |
53 | WurmEspMod.conditioned = !WurmEspMod.conditioned; |
54 | WurmEspMod.hud.consoleOutput("ESP champions changed to: " + Boolean.toString(WurmEspMod.conditioned)); |
55 | break; |
56 | } |
57 | case "xray": { |
58 | WurmEspMod.xray = !WurmEspMod.xray; |
59 | WurmEspMod.hud.consoleOutput("ESP xray changed to: " + Boolean.toString(WurmEspMod.xray)); |
60 | break; |
61 | } |
62 | case "tilescloseby": { |
63 | WurmEspMod.tilescloseby = !WurmEspMod.tilescloseby; |
64 | WurmEspMod.hud.consoleOutput("ESP tilescloseby changed to: " + Boolean.toString(WurmEspMod.tilescloseby)); |
65 | break; |
66 | } |
67 | case "deedsize": { |
68 | WurmEspMod.deedsize = !WurmEspMod.deedsize; |
69 | WurmEspMod.hud.consoleOutput("ESP deedsize changed to: " + Boolean.toString(WurmEspMod.deedsize)); |
70 | break; |
71 | } |
72 | case "search": { |
73 | WurmEspMod.hud.consoleOutput("Usage: esp search {h/m/hm/off} <name>"); |
74 | break; |
75 | } |
76 | case "planner": { |
77 | WurmEspMod.hud.consoleOutput("Usage: esp planner {n/s/e/w} <tiles> <times> <space>"); |
78 | WurmEspMod.hud.consoleOutput("Usage: esp planner square <startX> <startY> <endX> <endY>"); |
79 | WurmEspMod.hud.consoleOutput("Usage: esp planner square <radius>"); |
80 | WurmEspMod.hud.consoleOutput("Usage: esp planner tile <tileX> <tileY>"); |
81 | WurmEspMod.hud.consoleOutput("Usage: esp planner clear"); |
82 | break; |
83 | } |
84 | case "reload": { |
85 | ConfigUtils.loadProperties("wurmesp"); |
86 | ConfigUtils.DoConfig(WurmEspMod.modProperties); |
87 | WurmEspMod.hud.consoleOutput("[WurmEspMod] Config Reloaded"); |
88 | break; |
89 | } |
90 | default: { |
91 | WurmEspMod.hud.consoleOutput("Usage: esp {players|mobs|specials|uniques|conditioned|xray|tilescloseby|deedsize|reload}"); |
92 | } |
93 | } |
94 | return true; |
95 | } |
96 | if (data.length > 2) { |
97 | switch (data[1]) { |
98 | case "search": { |
99 | if (data[2].equals("h")) { |
100 | WurmEspMod.search = data[3]; |
101 | WurmEspMod.searchType = WurmEspMod.SEARCHTYPE.HOVER; |
102 | WurmEspMod.hud.consoleOutput("Searching for " + WurmEspMod.search + " in HoverName"); |
103 | break; |
104 | } |
105 | if (data[2].equals("m")) { |
106 | WurmEspMod.search = data[3]; |
107 | WurmEspMod.searchType = WurmEspMod.SEARCHTYPE.MODEL; |
108 | WurmEspMod.hud.consoleOutput("Searching for " + WurmEspMod.search + " in ModelName"); |
109 | break; |
110 | } |
111 | if (data[2].equals("hm")) { |
112 | WurmEspMod.search = data[3]; |
113 | WurmEspMod.searchType = WurmEspMod.SEARCHTYPE.BOTH; |
114 | WurmEspMod.hud.consoleOutput("Searching for " + WurmEspMod.search + " in HoverName and ModelName"); |
115 | break; |
116 | } |
117 | if (data[2].equals("off")) { |
118 | WurmEspMod.search = ""; |
119 | WurmEspMod.searchType = WurmEspMod.SEARCHTYPE.NONE; |
120 | WurmEspMod.hud.consoleOutput("Searching off"); |
121 | break; |
122 | } |
123 | WurmEspMod.hud.consoleOutput("Usage: esp search {h/m/hm/off} <name>"); |
124 | break; |
125 | } |
126 | case "planner": { |
127 | if (data.length == 3 && data[2].equals("clear")) { |
128 | WurmEspMod._tilesHighlightBase.clear(); |
129 | WurmEspMod.tileshighlight = false; |
130 | WurmEspMod.hud.consoleOutput("Planner data cleared."); |
131 | break; |
132 | } |
133 | if (data.length == 3 && data[2].equals("tile")) { |
134 | PlayerPosition pos = WurmEspMod.hud.getWorld().getPlayer().getPos(); |
135 | int tileX = pos.getTileX(); |
136 | int tileY = pos.getTileY(); |
137 | WurmEspMod.tilesHighlightManager.addData(tileX, tileY); |
138 | WurmEspMod.tileshighlight = true; |
139 | WurmEspMod.hud.consoleOutput("Added planner data. [TileX: " + String.valueOf(tileX) + "][tileY: " + String.valueOf(tileY) + "]"); |
140 | break; |
141 | } |
142 | if (data.length == 4 && data[2].equals("square")) { |
143 | int radius = Integer.parseInt(data[3]); |
144 | WurmEspMod.tilesHighlightManager.addData(radius); |
145 | WurmEspMod.tileshighlight = true; |
146 | WurmEspMod.hud.consoleOutput("Added planner data. [radius: " + data[3] + "]"); |
147 | break; |
148 | } |
149 | if (data.length == 5 && data[2].equals("tile")) { |
150 | int tileX = Integer.parseInt(data[3]); |
151 | int tileY = Integer.parseInt(data[4]); |
152 | WurmEspMod.tilesHighlightManager.addData(tileX, tileY); |
153 | WurmEspMod.tileshighlight = true; |
154 | WurmEspMod.hud.consoleOutput("Added planner data. [TileX: " + data[3] + "][tileY: " + data[4] + "]"); |
155 | break; |
156 | } |
157 | if (data.length == 6 && "nsew".contains(data[2])) { |
158 | String direction = data[2]; |
159 | int tiles = Integer.parseInt(data[3]); |
160 | int times = Integer.parseInt(data[4]); |
161 | int space = Integer.parseInt(data[5]); |
162 | WurmEspMod.tilesHighlightManager.addData(direction, tiles, times, space); |
163 | WurmEspMod.tileshighlight = true; |
164 | WurmEspMod.hud.consoleOutput("Added planner data. [direction: " + direction + "][tiles: " + data[3] + "][times: " + data[4] + "][space: " + data[5] + "]"); |
165 | break; |
166 | } |
167 | if (data.length == 7 && data[2].equals("square")) { |
168 | int startX = Integer.parseInt(data[3]); |
169 | int startY = Integer.parseInt(data[4]); |
170 | int endX = Integer.parseInt(data[5]); |
171 | int endY = Integer.parseInt(data[6]); |
172 | WurmEspMod.tilesHighlightManager.addData(startX, startY, endX, endY); |
173 | WurmEspMod.tileshighlight = true; |
174 | WurmEspMod.hud.consoleOutput("Added planner data. [startX: " + data[3] + "][startY: " + data[4] + "][endX: " + data[5] + "][endY: " + data[6] + "]"); |
175 | break; |
176 | } |
177 | WurmEspMod.hud.consoleOutput("Usage: esp planner {n/s/e/w} <tiles> <times> <space>"); |
178 | WurmEspMod.hud.consoleOutput("Usage: esp planner square <startX> <startY> <endX> <endY>"); |
179 | WurmEspMod.hud.consoleOutput("Usage: esp planner square <radius>"); |
180 | WurmEspMod.hud.consoleOutput("Usage: esp planner tile <tileX> <tileY>"); |
181 | WurmEspMod.hud.consoleOutput("Usage: esp planner clear"); |
182 | break; |
183 | } |
184 | default: { |
185 | WurmEspMod.hud.consoleOutput("Error."); |
186 | } |
187 | } |
188 | return true; |
189 | } |
190 | WurmEspMod.hud.consoleOutput("Error."); |
191 | return true; |
192 | } |
193 | return false; |
194 | } |
195 | } |
196 | |