Clean
[esp.git] / src / net / encode / wurmesp / feature / hook / HandleDevInput.java
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