Skip to content

Commit

Permalink
Mirror changes in SubServers.Sync
Browse files Browse the repository at this point in the history
  • Loading branch information
ME1312 committed May 14, 2019
1 parent 61ee89c commit 185b6b8
Show file tree
Hide file tree
Showing 96 changed files with 3,249 additions and 5,311 deletions.
4 changes: 2 additions & 2 deletions SubServers.Bungee/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@
<dependency>
<groupId>net.ME1312.Galaxi</groupId>
<artifactId>GalaxiUtil</artifactId>
<version>19w20a</version>
<version>19w20b</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>net.ME1312.SubData</groupId>
<artifactId>Server</artifactId>
<version>19w20f</version>
<version>19w20g</version>
<scope>compile</scope>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public ExternalHost(SubPlugin plugin, String name, boolean enabled, Range<Intege
this.queue = new LinkedList<PacketObjectOut>();
this.clean = false;

setSubData(null, 0);
subdata.put(0, null);
}

@Override
Expand Down Expand Up @@ -365,4 +365,13 @@ public boolean forceDeleteSubServer(UUID player, String name) throws Interrupted
}));
return true;
}

@Override
public ObjectMap<String> forSubData() {
ObjectMap<String> hinfo = super.forSubData();
ObjectMap<Integer> subdata = new ObjectMap<Integer>();
for (int channel : this.subdata.keySet()) subdata.set(channel, (this.subdata.get(channel) == null)?null:this.subdata.get(channel).getID());
hinfo.set("subdata", subdata);
return hinfo;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -450,11 +450,6 @@ public ObjectMap<String> forSubData() {
servers.set(server.getName(), server.forSubData());
}
hinfo.set("servers", servers);
if (this instanceof ClientHandler) {
LinkedList<UUID> subdata = new LinkedList<UUID>();
for (DataClient client : ((ClientHandler) this).getSubData()) subdata.add((client == null)?null:client.getID());
hinfo.set("subdata", subdata);
}
hinfo.set("signature", signature);
hinfo.set("extra", getExtra());
return hinfo;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public Proxy(String name) throws IllegalArgumentException {
this.name = name;
this.signature = SubAPI.getInstance().signAnonymousObject();

setSubData(null, 0);
subdata.put(0, null);
}

@Override
Expand All @@ -48,8 +48,7 @@ public DataClient[] getSubData() {
return channels.toArray(new DataClient[0]);
}

@SuppressWarnings("deprecation")
public void setSubData(DataClient client, int channel) {
public void setSubData(SubDataClient client, int channel) {
boolean update = false;
if (channel < 0) throw new IllegalArgumentException("Subchannel ID cannot be less than zero");
if (client != null || channel == 0) {
Expand Down Expand Up @@ -189,8 +188,8 @@ public ObjectMap<String> forSubData() {
}
info.set("players", players);
info.set("redis", isRedis());
LinkedList<UUID> subdata = new LinkedList<UUID>();
for (DataClient client : getSubData()) subdata.add((client == null)?null:client.getID());
ObjectMap<Integer> subdata = new ObjectMap<Integer>();
for (int channel : this.subdata.keySet()) subdata.set(channel, (this.subdata.get(channel) == null)?null:this.subdata.get(channel).getID());
info.set("subdata", subdata);
info.set("signature", signature);
info.set("extra", getExtra());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public ServerContainer(String name, InetSocketAddress address, String motd, bool
SubAPI.getInstance().getSubDataNetwork().getProtocol().whitelist(getAddress().getAddress().getHostAddress());
this.hidden = hidden;

setSubData(null, 0);
subdata.put(0, null);
}

@Override
Expand Down Expand Up @@ -71,7 +71,7 @@ public void setSubData(DataClient client, int channel) {
ObjectMap<String> args = new ObjectMap<String>();
args.set("server", getName());
args.set("channel", channel);
if (client != null) args.set("address", client.getAddress().toString());
if (client != null) args.set("id", client.getID());
((SubDataClient) proxy.getSubData()[0]).sendPacket(new PacketOutExRunEvent((client != null)?SubNetworkConnectEvent.class:SubNetworkDisconnectEvent.class, args));
}
}
Expand Down Expand Up @@ -259,8 +259,8 @@ public ObjectMap<String> forSubData() {
players.set(player.get().toString(), pinfo);
}
info.set("players", players);
LinkedList<UUID> subdata = new LinkedList<UUID>();
for (DataClient client : getSubData()) subdata.add((client == null)?null:client.getID());
ObjectMap<Integer> subdata = new ObjectMap<Integer>();
for (int channel : this.subdata.keySet()) subdata.set(channel, (this.subdata.get(channel) == null)?null:this.subdata.get(channel).getID());
info.set("subdata", subdata);
info.set("signature", signature);
info.set("extra", getExtra());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ public static void updateConfig(File file) throws IOException {
if (i > 0) {
YAMLSection settings = new YAMLSection();
settings.set("Version", ((now.compareTo(was) <= 0)?was:now).toString());
settings.set("Smart-Fallback", updated.getMap("Settings", new YAMLSection()).getBoolean("Smart-Fallback", true));
settings.set("Override-Bungee-Commands", updated.getMap("Settings", new YAMLSection()).getBoolean("Override-Bungee-Commands", true));

YAMLSection upnp = new YAMLSection();
Expand Down Expand Up @@ -164,7 +165,6 @@ public static void updateServers(File file) throws IOException {
if (i > 0) {
YAMLSection settings = new YAMLSection();
settings.set("Version", ((now.compareTo(was) <= 0)?was:now).toString());
settings.set("Smart-Fallback", updated.getMap("Settings", new YAMLSection()).getBoolean("Smart-Fallback", true));
settings.set("Run-On-Launch-Timeout", updated.getMap("Settings", new YAMLSection()).getInt("Run-On-Launch-Timeout", 0));

rewritten.set("Settings", settings);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,17 +61,20 @@ public void receive(SubDataClient client, ObjectMap<Integer> data) {
Map<String, Proxy> proxies = plugin.api.getProxies();
String name = ((data.contains(0x0000))?data.getRawString(0x0000):null);
Integer channel = data.getInt(0x0001);

boolean isnew = false;
Proxy proxy;
if (name != null && proxies.keySet().contains(name.toLowerCase())) {
proxy = proxies.get(name.toLowerCase());
} else {
proxy = new Proxy((name != null && !proxies.keySet().contains(name.toLowerCase()))?name:null);
plugin.getPluginManager().callEvent(new SubAddProxyEvent(proxy));
isnew = true;
plugin.proxies.put(proxy.getName().toLowerCase(), proxy);
}
HashMap<Integer, SubDataClient> subdata = Util.getDespiteException(() -> Util.reflect(Proxy.class.getDeclaredField("subdata"), proxy), null);
if (!subdata.keySet().contains(channel) || (channel == 0 && subdata.get(0) == null)) {
proxy.setSubData(client, channel);
if (isnew) plugin.getPluginManager().callEvent(new SubAddProxyEvent(proxy));
System.out.println("SubData > " + client.getAddress().toString() + " has been defined as Proxy: " + proxy.getName() + ((channel > 0)?" (Sub-"+channel+")":""));
client.sendPacket(new PacketLinkProxy(proxy.getName(), 0, null));
setReady(client, true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,18 +57,26 @@ public int version() {
}

private void broadcast(PacketOutExRunEvent packet) {
broadcast(null, packet);
}

private void broadcast(Object self, PacketOutExRunEvent packet) {
List<SubDataClient> clients = new LinkedList<SubDataClient>();
clients.addAll(plugin.subdata.getClients().values());
for (SubDataClient client : clients) {
client.sendPacket(packet);
if (client.getHandler() == null || client.getHandler() != self) { // Don't send events about yourself to yourself
if (client.getHandler() == null || client.getHandler().getSubData()[0] == client) { // Don't send events over subchannels
client.sendPacket(packet);
}
}
}
}

@EventHandler(priority = Byte.MAX_VALUE)
public void event(SubAddProxyEvent event) {
ObjectMap<String> args = new ObjectMap<String>();
args.set("proxy", event.getProxy().getName());
broadcast(new PacketOutExRunEvent(event.getClass(), args));
broadcast(event.getProxy(), new PacketOutExRunEvent(event.getClass(), args));
}

@EventHandler(priority = Byte.MAX_VALUE)
Expand All @@ -77,7 +85,7 @@ public void event(SubAddHostEvent event) {
ObjectMap<String> args = new ObjectMap<String>();
if (event.getPlayer() != null) args.set("player", event.getPlayer().toString());
args.set("host", event.getHost().getName());
broadcast(new PacketOutExRunEvent(event.getClass(), args));
broadcast(event.getHost(), new PacketOutExRunEvent(event.getClass(), args));
}
}

Expand All @@ -88,7 +96,7 @@ public void event(SubAddServerEvent event) {
if (event.getPlayer() != null) args.set("player", event.getPlayer().toString());
if (event.getHost() != null) args.set("host", event.getHost().getName());
args.set("server", event.getServer().getName());
broadcast(new PacketOutExRunEvent(event.getClass(), args));
broadcast(event.getServer(), new PacketOutExRunEvent(event.getClass(), args));
}
}

Expand Down Expand Up @@ -163,7 +171,7 @@ public void event(SubRemoveServerEvent event) {
if (event.getPlayer() != null) args.set("player", event.getPlayer().toString());
if (event.getHost() != null) args.set("host", event.getHost().getName());
args.set("server", event.getServer().getName());
broadcast(new PacketOutExRunEvent(event.getClass(), args));
broadcast(event.getServer(), new PacketOutExRunEvent(event.getClass(), args));
}
}

Expand All @@ -173,14 +181,14 @@ public void event(SubRemoveHostEvent event) {
ObjectMap<String> args = new ObjectMap<String>();
if (event.getPlayer() != null) args.set("player", event.getPlayer().toString());
args.set("host", event.getHost().getName());
broadcast(new PacketOutExRunEvent(event.getClass(), args));
broadcast(event.getHost(), new PacketOutExRunEvent(event.getClass(), args));
}
}

@EventHandler(priority = Byte.MAX_VALUE)
public void event(SubRemoveProxyEvent event) {
ObjectMap<String> args = new ObjectMap<String>();
args.set("proxy", event.getProxy().getName());
broadcast(new PacketOutExRunEvent(event.getClass(), args));
broadcast(event.getProxy(), new PacketOutExRunEvent(event.getClass(), args));
}
}
4 changes: 2 additions & 2 deletions SubServers.Client/Bukkit/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,13 @@
<dependency>
<groupId>net.ME1312.Galaxi</groupId>
<artifactId>GalaxiUtil</artifactId>
<version>19w20a</version>
<version>19w20b</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>net.ME1312.SubData</groupId>
<artifactId>Client</artifactId>
<version>19w20f</version>
<version>19w20g</version>
<scope>compile</scope>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,18 @@ public void refresh() {
*
* @return SubData Client Channel ID Array (may be empty if unsupported)
*/
@SuppressWarnings("unchecked")
public UUID[] getSubData() {
return raw.getUUIDList("subdata", Collections.emptyList()).toArray(new UUID[0]);
if (raw.contains("subdata")) {
ObjectMap<Integer> subdata = new ObjectMap<Integer>((Map<Integer, ?>) raw.getObject("subdata"));
LinkedList<Integer> keys = new LinkedList<Integer>(subdata.getKeys());
LinkedList<UUID> channels = new LinkedList<UUID>();
Collections.sort(keys);
for (Integer channel : keys) channels.add(subdata.getUUID(channel));
return channels.toArray(new UUID[0]);
} else {
return new UUID[0];
}
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,14 @@ public void refresh() {
*
* @return SubData Client Channel ID Array
*/
@SuppressWarnings("unchecked")
public UUID[] getSubData() {
return raw.getUUIDList("subdata", Collections.emptyList()).toArray(new UUID[0]);
ObjectMap<Integer> subdata = new ObjectMap<Integer>((Map<Integer, ?>) raw.getObject("subdata"));
LinkedList<Integer> keys = new LinkedList<Integer>(subdata.getKeys());
LinkedList<UUID> channels = new LinkedList<UUID>();
Collections.sort(keys);
for (Integer channel : keys) channels.add(subdata.getUUID(channel));
return channels.toArray(new UUID[0]);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,14 @@ public void refresh() {
*
* @return SubData Client Channel ID Array
*/
@SuppressWarnings("unchecked")
public UUID[] getSubData() {
return raw.getUUIDList("subdata", Collections.emptyList()).toArray(new UUID[0]);
ObjectMap<Integer> subdata = new ObjectMap<Integer>((Map<Integer, ?>) raw.getObject("subdata"));
LinkedList<Integer> keys = new LinkedList<Integer>(subdata.getKeys());
LinkedList<UUID> channels = new LinkedList<UUID>();
Collections.sort(keys);
for (Integer channel : keys) channels.add(subdata.getUUID(channel));
return channels.toArray(new UUID[0]);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions SubServers.Client/Sponge/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@
<dependency>
<groupId>net.ME1312.Galaxi</groupId>
<artifactId>GalaxiUtil</artifactId>
<version>19w20a</version>
<version>19w20b</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>net.ME1312.SubData</groupId>
<artifactId>Client</artifactId>
<version>19w20f</version>
<version>19w20g</version>
<scope>compile</scope>
</dependency>
</dependencies>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,18 @@ public void refresh() {
*
* @return SubData Client Channel ID Array (may be empty if unsupported)
*/
@SuppressWarnings("unchecked")
public UUID[] getSubData() {
return raw.getUUIDList("subdata", Collections.emptyList()).toArray(new UUID[0]);
if (raw.contains("subdata")) {
ObjectMap<Integer> subdata = new ObjectMap<Integer>((Map<Integer, ?>) raw.getObject("subdata"));
LinkedList<Integer> keys = new LinkedList<Integer>(subdata.getKeys());
LinkedList<UUID> channels = new LinkedList<UUID>();
Collections.sort(keys);
for (Integer channel : keys) channels.add(subdata.getUUID(channel));
return channels.toArray(new UUID[0]);
} else {
return new UUID[0];
}
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,14 @@ public void refresh() {
*
* @return SubData Client Channel ID Array
*/
@SuppressWarnings("unchecked")
public UUID[] getSubData() {
return raw.getUUIDList("subdata", Collections.emptyList()).toArray(new UUID[0]);
ObjectMap<Integer> subdata = new ObjectMap<Integer>((Map<Integer, ?>) raw.getObject("subdata"));
LinkedList<Integer> keys = new LinkedList<Integer>(subdata.getKeys());
LinkedList<UUID> channels = new LinkedList<UUID>();
Collections.sort(keys);
for (Integer channel : keys) channels.add(subdata.getUUID(channel));
return channels.toArray(new UUID[0]);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,14 @@ public void refresh() {
*
* @return SubData Client Channel ID Array
*/
@SuppressWarnings("unchecked")
public UUID[] getSubData() {
return raw.getUUIDList("subdata", Collections.emptyList()).toArray(new UUID[0]);
ObjectMap<Integer> subdata = new ObjectMap<Integer>((Map<Integer, ?>) raw.getObject("subdata"));
LinkedList<Integer> keys = new LinkedList<Integer>(subdata.getKeys());
LinkedList<UUID> channels = new LinkedList<UUID>();
Collections.sort(keys);
for (Integer channel : keys) channels.add(subdata.getUUID(channel));
return channels.toArray(new UUID[0]);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions SubServers.Host/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@
<dependency>
<groupId>net.ME1312.Galaxi</groupId>
<artifactId>GalaxiEngine</artifactId>
<version>19w20a</version>
<version>19w20b</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>net.ME1312.SubData</groupId>
<artifactId>Client</artifactId>
<version>19w20f</version>
<version>19w20g</version>
<scope>compile</scope>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,18 @@ public void refresh() {
*
* @return SubData Client Channel ID Array (may be empty if unsupported)
*/
@SuppressWarnings("unchecked")
public UUID[] getSubData() {
return raw.getUUIDList("subdata", Collections.emptyList()).toArray(new UUID[0]);
if (raw.contains("subdata")) {
ObjectMap<Integer> subdata = new ObjectMap<Integer>((Map<Integer, ?>) raw.getObject("subdata"));
LinkedList<Integer> keys = new LinkedList<Integer>(subdata.getKeys());
LinkedList<UUID> channels = new LinkedList<UUID>();
Collections.sort(keys);
for (Integer channel : keys) channels.add(subdata.getUUID(channel));
return channels.toArray(new UUID[0]);
} else {
return new UUID[0];
}
}

/**
Expand Down
Loading

0 comments on commit 185b6b8

Please sign in to comment.