/
SubProtocol.java
176 lines (150 loc) · 8.18 KB
/
SubProtocol.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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
package net.ME1312.SubServers.Bungee.Network;
import net.ME1312.Galaxi.Library.Callback.Callback;
import net.ME1312.Galaxi.Library.Version.Version;
import net.ME1312.SubData.Server.SubDataProtocol;
import net.ME1312.SubData.Server.SubDataServer;
import net.ME1312.SubServers.Bungee.Event.SubNetworkConnectEvent;
import net.ME1312.SubServers.Bungee.Event.SubNetworkDisconnectEvent;
import net.ME1312.SubServers.Bungee.Event.SubNetworkLoginEvent;
import net.ME1312.SubServers.Bungee.Network.Packet.*;
import net.ME1312.SubServers.Bungee.SubAPI;
import net.ME1312.SubServers.Bungee.SubProxy;
import java.io.IOException;
import java.net.InetAddress;
import java.util.logging.Logger;
/**
* SubServers Protocol Class
*/
public class SubProtocol extends SubDataProtocol {
private static SubProtocol instance;
private static Logger log;
@SuppressWarnings("deprecation")
protected SubProtocol() {
SubProxy plugin = SubAPI.getInstance().getInternals();
setName("SubServers 2");
setVersion(new Version("2.16a+"));
// 00-0F: Object Link Packets
registerPacket(0x0000, PacketLinkProxy.class);
registerPacket(0x0001, PacketLinkExHost.class);
registerPacket(0x0002, PacketLinkServer.class);
registerPacket(0x0000, new PacketLinkProxy(plugin));
registerPacket(0x0001, new PacketLinkExHost(plugin));
registerPacket(0x0002, new PacketLinkServer(plugin));
// 10-2F: Download Packets
registerPacket(0x0010, PacketDownloadLang.class);
registerPacket(0x0011, PacketDownloadPlatformInfo.class);
registerPacket(0x0012, PacketDownloadProxyInfo.class);
registerPacket(0x0013, PacketDownloadHostInfo.class);
registerPacket(0x0014, PacketDownloadGroupInfo.class);
registerPacket(0x0015, PacketDownloadServerInfo.class);
registerPacket(0x0016, PacketDownloadPlayerInfo.class);
registerPacket(0x0017, PacketCheckPermission.class);
registerPacket(0x0018, PacketCheckPermissionResponse.class);
registerPacket(0x0010, new PacketDownloadLang(plugin));
registerPacket(0x0011, new PacketDownloadPlatformInfo(plugin));
registerPacket(0x0012, new PacketDownloadProxyInfo(plugin));
registerPacket(0x0013, new PacketDownloadHostInfo(plugin));
registerPacket(0x0014, new PacketDownloadGroupInfo(plugin));
registerPacket(0x0015, new PacketDownloadServerInfo(plugin));
registerPacket(0x0016, new PacketDownloadPlayerInfo(plugin));
registerPacket(0x0017, new PacketCheckPermission());
registerPacket(0x0018, new PacketCheckPermissionResponse());
// 30-4F: Control Packets
registerPacket(0x0030, PacketCreateServer.class);
registerPacket(0x0031, PacketAddServer.class);
registerPacket(0x0032, PacketStartServer.class);
registerPacket(0x0033, PacketUpdateServer.class);
registerPacket(0x0034, PacketEditServer.class);
registerPacket(0x0035, PacketRestartServer.class);
registerPacket(0x0036, PacketCommandServer.class);
registerPacket(0x0037, PacketStopServer.class);
registerPacket(0x0038, PacketRemoveServer.class);
registerPacket(0x0039, PacketDeleteServer.class);
//registerPacket(0x003A, PacketRestoreServer.class); // TODO
registerPacket(0x003B, PacketTransferPlayer.class);
registerPacket(0x003C, PacketDisconnectPlayer.class);
registerPacket(0x003D, PacketMessagePlayer.class);
registerPacket(0x0030, new PacketCreateServer(plugin));
registerPacket(0x0031, new PacketAddServer(plugin));
registerPacket(0x0032, new PacketStartServer(plugin));
registerPacket(0x0033, new PacketUpdateServer(plugin));
registerPacket(0x0034, new PacketEditServer(plugin));
registerPacket(0x0035, new PacketRestartServer(plugin));
registerPacket(0x0036, new PacketCommandServer(plugin));
registerPacket(0x0037, new PacketStopServer(plugin));
registerPacket(0x0038, new PacketRemoveServer(plugin));
registerPacket(0x0039, new PacketDeleteServer(plugin));
//registerPacket(0x003A, new PacketRestoreServer(plugin)); // TODO
registerPacket(0x003B, new PacketTransferPlayer());
registerPacket(0x003C, new PacketDisconnectPlayer());
registerPacket(0x003D, new PacketMessagePlayer());
// 50-6F: External Host Packets
registerPacket(0x0050, PacketExConfigureHost.class);
registerPacket(0x0051, PacketExUploadTemplates.class);
registerPacket(0x0052, PacketExDownloadTemplates.class);
//registerPacket(0x0053, PacketInExRequestQueue.class);
registerPacket(0x0054, PacketExCreateServer.class);
registerPacket(0x0055, PacketExAddServer.class);
registerPacket(0x0056, PacketExEditServer.class);
//registerPacket(0x0057, PacketInExLogMessage.class);
registerPacket(0x0058, PacketExRemoveServer.class);
registerPacket(0x0059, PacketExDeleteServer.class);
//registerPacket(0x005A, PacketExRestoreServer.class);
registerPacket(0x0050, new PacketExConfigureHost(plugin));
registerPacket(0x0051, new PacketExUploadTemplates(plugin));
registerPacket(0x0052, new PacketExDownloadTemplates(plugin));
registerPacket(0x0053, new PacketInExRequestQueue(plugin));
registerPacket(0x0054, new PacketExCreateServer(null));
registerPacket(0x0055, new PacketExAddServer());
registerPacket(0x0056, new PacketExEditServer(plugin));
registerPacket(0x0057, new PacketInExLogMessage());
registerPacket(0x0058, new PacketExRemoveServer());
registerPacket(0x0059, new PacketExDeleteServer());
//registerPacket(0x005A, new PacketExRestoreServer());
// 70-7F: External Sync Packets
registerPacket(0x0070, PacketOutExRunEvent.class);
registerPacket(0x0071, PacketOutExReset.class);
registerPacket(0x0072, PacketOutExReload.class);
registerPacket(0x0073, PacketOutExUpdateWhitelist.class);
registerPacket(0x0074, PacketExSyncPlayer.class);
registerPacket(0x0075, PacketExTransferPlayer.class);
registerPacket(0x0076, PacketExDisconnectPlayer.class);
registerPacket(0x0077, PacketExMessagePlayer.class);
//registerPacket(0x0070, new PacketOutRunEvent());
//registerPacket(0x0071, new PacketOutReset());
//registerPacket(0x0072, new PacketOutReload());
//registerPacket(0x0073, new PacketOutExUpdateWhitelist());
registerPacket(0x0074, new PacketExSyncPlayer(plugin));
registerPacket(0x0075, new PacketExTransferPlayer());
registerPacket(0x0076, new PacketExDisconnectPlayer());
registerPacket(0x0077, new PacketExMessagePlayer());
}
@SuppressWarnings("deprecation")
public static SubProtocol get() {
if (instance == null) {
instance = new SubProtocol();
log = net.ME1312.SubServers.Bungee.Library.Compatibility.Logger.get("SubData");
SubProxy plugin = SubAPI.getInstance().getInternals();
plugin.getPluginManager().registerListener(plugin.plugin, new PacketOutExRunEvent(plugin));
}
return instance;
}
@SuppressWarnings("deprecation")
@Override
public SubDataServer open(Callback<Runnable> scheduler, Logger logger, InetAddress address, int port, String cipher) throws IOException {
SubDataServer subdata = super.open(scheduler, logger, address, port, cipher);
SubProxy plugin = SubAPI.getInstance().getInternals();
subdata.on.closed(server -> plugin.subdata = null);
subdata.on.connect(client -> {
if (!plugin.getPluginManager().callEvent(new SubNetworkConnectEvent(client.getServer(), client)).isCancelled()) {
client.on.ready(c -> plugin.getPluginManager().callEvent(new SubNetworkLoginEvent(c.getServer(), c)));
client.on.closed(c -> plugin.getPluginManager().callEvent(new SubNetworkDisconnectEvent(c.value().getServer(), c.value(), c.key())));
return true;
} else return false;
});
return subdata;
}
public SubDataServer open(InetAddress address, int port, String cipher) throws IOException {
return open(log, address, port, cipher);
}
}