/
PacketInExRunEvent.java
143 lines (137 loc) · 7.4 KB
/
PacketInExRunEvent.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
package net.ME1312.SubServers.Velocity.Network.Packet;
import net.ME1312.Galaxi.Library.Container.ContainedPair;
import net.ME1312.Galaxi.Library.Map.ObjectMap;
import net.ME1312.SubData.Client.Protocol.PacketObjectIn;
import net.ME1312.SubData.Client.SubDataSender;
import net.ME1312.SubServers.Velocity.Event.*;
import net.ME1312.SubServers.Velocity.ExProxy;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
/**
* Run Event Packet
*/
public class PacketInExRunEvent implements PacketObjectIn<Integer> {
private static HashMap<String, List<Consumer<ObjectMap<String>>>> callbacks = new HashMap<String, List<Consumer<ObjectMap<String>>>>();
/**
* New PacketInExRunEvent
*/
public PacketInExRunEvent(ExProxy plugin) {
callback("SubAddHostEvent", new Consumer<ObjectMap<String>>() {
@Override
public void accept(ObjectMap<String> data) {
ExProxy.getInstance().getEventManager().fire(new SubAddHostEvent((data.contains("player"))?data.getUUID("player"):null, data.getString("host")));
callback("SubAddHostEvent", this);
}
});
callback("SubAddProxyEvent", new Consumer<ObjectMap<String>>() {
@Override
public void accept(ObjectMap<String> data) {
ExProxy.getInstance().getEventManager().fire(new SubAddProxyEvent(data.getString("proxy")));
callback("SubAddProxyEvent", this);
}
});
callback("SubAddServerEvent", new Consumer<ObjectMap<String>>() {
@Override
public void accept(ObjectMap<String> data) {
ExProxy.getInstance().getEventManager().fire(new SubAddServerEvent((data.contains("player"))?data.getUUID("player"):null, (data.contains("host"))?data.getString("host"):null, data.getString("server")));
callback("SubAddServerEvent", this);
}
});
callback("SubCreateEvent", new Consumer<ObjectMap<String>>() {
@Override
public void accept(ObjectMap<String> data) {
ExProxy.getInstance().getEventManager().fire(new SubCreateEvent((data.contains("player"))?data.getUUID("player"):null, data.getString("host"), data.getString("name"),
data.getString("template"), data.getVersion("version"), data.getInt("port"), data.getBoolean("update")));
callback("SubCreateEvent", this);
}
});
callback("SubCreatedEvent", new Consumer<ObjectMap<String>>() {
@Override
public void accept(ObjectMap<String> data) {
ExProxy.getInstance().getEventManager().fire(new SubCreatedEvent((data.contains("player"))?data.getUUID("player"):null, data.getString("host"), data.getString("name"),
data.getString("template"), data.getVersion("version"), data.getInt("port"), data.getBoolean("update"), data.getBoolean("success")));
callback("SubCreatedEvent", this);
}
});
callback("SubSendCommandEvent", new Consumer<ObjectMap<String>>() {
@Override
public void accept(ObjectMap<String> data) {
ExProxy.getInstance().getEventManager().fire(new SubSendCommandEvent((data.contains("player"))?data.getUUID("player"):null, data.getString("server"), data.getString("command"), (data.contains("target"))?data.getUUID("target"):null));
callback("SubSendCommandEvent", this);
}
});
callback("SubEditServerEvent", new Consumer<ObjectMap<String>>() {
@Override
public void accept(ObjectMap<String> data) {
ExProxy.getInstance().getEventManager().fire(new SubEditServerEvent((data.contains("player"))?data.getUUID("player"):null, data.getString("server"), new ContainedPair<String, Object>(data.getString("edit"), data.get("value"))));
callback("SubEditServerEvent", this);
}
});
callback("SubStartEvent", new Consumer<ObjectMap<String>>() {
@Override
public void accept(ObjectMap<String> data) {
ExProxy.getInstance().getEventManager().fire(new SubStartEvent((data.contains("player"))?data.getUUID("player"):null, data.getString("server")));
callback("SubStartEvent", this);
}
});
callback("SubStartedEvent", new Consumer<ObjectMap<String>>() {
@Override
public void accept(ObjectMap<String> data) {
ExProxy.getInstance().getEventManager().fire(new SubStartedEvent(data.getString("server")));
callback("SubStartedEvent", this);
}
});
callback("SubStopEvent", new Consumer<ObjectMap<String>>() {
@Override
public void accept(ObjectMap<String> data) {
ExProxy.getInstance().getEventManager().fire(new SubStopEvent((data.contains("player"))?data.getUUID("player"):null, data.getString("server"), data.getBoolean("force")));
callback("SubStopEvent", this);
}
});
callback("SubStoppedEvent", new Consumer<ObjectMap<String>>() {
@Override
public void accept(ObjectMap<String> data) {
ExProxy.getInstance().getEventManager().fire(new SubStoppedEvent(data.getString("server")));
callback("SubStoppedEvent", this);
}
});
callback("SubRemoveServerEvent", new Consumer<ObjectMap<String>>() {
@Override
public void accept(ObjectMap<String> data) {
ExProxy.getInstance().getEventManager().fire(new SubRemoveServerEvent((data.contains("player"))?data.getUUID("player"):null, (data.contains("host"))?data.getString("host"):null, data.getString("server")));
callback("SubRemoveServerEvent", this);
}
});
callback("SubRemoveProxyEvent", new Consumer<ObjectMap<String>>() {
@Override
public void accept(ObjectMap<String> data) {
ExProxy.getInstance().getEventManager().fire(new SubAddProxyEvent(data.getString("proxy")));
callback("SubRemoveProxyEvent", this);
}
});
callback("SubRemoveHostEvent", new Consumer<ObjectMap<String>>() {
@Override
public void accept(ObjectMap<String> data) {
ExProxy.getInstance().getEventManager().fire(new SubRemoveHostEvent((data.contains("player"))?data.getUUID("player"):null, data.getString("host")));
callback("SubRemoveHostEvent", this);
}
});
}
@SuppressWarnings("unchecked")
@Override
public void receive(SubDataSender client, ObjectMap<Integer> data) {
if (callbacks.keySet().contains(data.getString(0x0000))) {
for (Consumer<ObjectMap<String>> callback : PacketInExRunEvent.callbacks.remove(data.getString(0x0000))) {
callback.accept(new ObjectMap<>((Map<String, ?>) data.getObject(0x0001)));
}
}
}
public static void callback(String event, Consumer<ObjectMap<String>> callback) {
List<Consumer<ObjectMap<String>>> callbacks = (PacketInExRunEvent.callbacks.keySet().contains(event))? PacketInExRunEvent.callbacks.get(event):new ArrayList<Consumer<ObjectMap<String>>>();
callbacks.add(callback);
PacketInExRunEvent.callbacks.put(event, callbacks);
}
}