Clean
[esp.git] / src / net / encode / wurmesp / feature / hook / CmdShowDeedPlan.java
1 package net.encode.wurmesp.feature.hook;
2
3 import com.wurmonline.client.comm.SimpleServerConnectionClass;
4 import java.lang.reflect.Method;
5 import java.nio.ByteBuffer;
6 import java.util.logging.Level;
7 import net.encode.wurmesp.WurmEspMod;
8
9 public class CmdShowDeedPlan
10 extends Hook {
11 public CmdShowDeedPlan() {
12 this.prepareHook("com.wurmonline.client.comm.SimpleServerConnectionClass", "reallyHandleCmdShowDeedPlan", "(Ljava/nio/ByteBuffer;)V", () -> (proxy, method, args) -> {
13 if (WurmEspMod.deedsize) {
14 ByteBuffer bb = (ByteBuffer)args[0];
15 byte type = bb.get();
16 switch (type) {
17 case 0: {
18 int qId = bb.getInt();
19 SimpleServerConnectionClass simpleServerConnectionClass = (SimpleServerConnectionClass)proxy;
20 Method readStringByteLengthMethod = simpleServerConnectionClass.getClass().getDeclaredMethod("readStringByteLength", ByteBuffer.class);
21 readStringByteLengthMethod.setAccessible(true);
22 Object[] readStringByteLengthArgs = new Object[]{bb};
23 String deedName = (String)readStringByteLengthMethod.invoke(simpleServerConnectionClass, readStringByteLengthArgs);
24 int tokenX = bb.getInt();
25 int tokenY = bb.getInt();
26 int startX = bb.getInt();
27 int startY = bb.getInt();
28 int endX = bb.getInt();
29 int endY = bb.getInt();
30 int perimSize = bb.getInt();
31 WurmEspMod.tilesHighlightManager.addData(startX, startY, endX, endY);
32 WurmEspMod.tileshighlight = true;
33 }
34 }
35 } else {
36 method.invoke(proxy, args);
37 }
38 return null;
39 });
40 WurmEspMod.logger.log(Level.INFO, "[WurmEspMod] SimpleServerConnectionClass.reallyHandleCmdShowDeedPlan hooked");
41 }
42 }
43