/
ClientPacketInScript.java
77 lines (66 loc) · 2.87 KB
/
ClientPacketInScript.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package net.gnomeffinway.depenizen.support.bungee.packets;
import com.google.common.io.ByteArrayDataInput;
import com.google.common.io.ByteStreams;
import net.aufdemrand.denizencore.scripts.ScriptEntry;
import net.aufdemrand.denizencore.utilities.debugging.dB;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ClientPacketInScript extends Packet {
private List<ScriptEntry> scriptEntries;
private Map<String, String> definitions;
public ClientPacketInScript() {
}
public List<ScriptEntry> getScriptEntries() {
return scriptEntries;
}
public Map<String, String> getDefinitions() {
return definitions;
}
@Override
public void deserialize(ByteArrayDataInput input) {
int scriptDataLength = input.readInt();
byte[] scriptData = new byte[scriptDataLength];
input.readFully(scriptData);
ByteArrayDataInput scriptInput = ByteStreams.newDataInput(scriptData);
List<ScriptEntry> scriptEntryList = new ArrayList<ScriptEntry>();
int commandCount = scriptInput.readInt();
for (int i = 0; i < commandCount; i++) {
int commandLength = scriptInput.readInt();
byte[] commandData = new byte[commandLength];
scriptInput.readFully(commandData);
String command = new String(commandData);
int argumentCount = scriptInput.readInt();
String[] arguments = new String[argumentCount];
for (int a = 0; a < argumentCount; a++) {
int argumentLength = scriptInput.readInt();
byte[] argumentData = new byte[argumentLength];
scriptInput.readFully(argumentData);
arguments[a] = new String(argumentData);
}
try {
scriptEntryList.add(new ScriptEntry(command, arguments, null));
} catch (Exception e) {
dB.echoError(e);
}
}
this.scriptEntries = scriptEntryList;
int definitionsDataLength = input.readInt();
byte[] definitionsData = new byte[definitionsDataLength];
input.readFully(definitionsData);
ByteArrayDataInput definitionsInput = ByteStreams.newDataInput(definitionsData);
Map<String, String> definitionsMap = new HashMap<String, String>();
int definitionsCount = definitionsInput.readInt();
for (int i = 0; i < definitionsCount; i++) {
int defLength = definitionsInput.readInt();
byte[] defData = new byte[defLength];
definitionsInput.readFully(defData);
int valLength = definitionsInput.readInt();
byte[] valData = new byte[valLength];
definitionsInput.readFully(valData);
definitionsMap.put(new String(defData), new String(valData));
}
this.definitions = definitionsMap;
}
}