mirror of
https://github.com/ME1312/SubServers-2.git
synced 2025-03-02 10:31:05 +01:00
Allow ungrouped servers to be listed
This commit is contained in:
parent
34c9effa6f
commit
51e83f4fb0
@ -318,7 +318,7 @@ public class ConfigUpdater {
|
||||
|
||||
existing = updated.clone();
|
||||
i++;
|
||||
} if (was.compareTo(new Version("20w34c")) <= 0) {
|
||||
} if (was.compareTo(new Version("21w24h")) <= 0) {
|
||||
|
||||
//existing = updated.clone();
|
||||
i++;
|
||||
@ -498,9 +498,10 @@ public class ConfigUpdater {
|
||||
def.put("Interface.Host-SubServer.Title", "Host/$str$/SubServers");
|
||||
def.put("Interface.Group-Menu.Title", "Group Menu");
|
||||
def.put("Interface.Group-Menu.Group-Server-Count", "&9$int$ Server(s)");
|
||||
def.put("Interface.Group-Menu.No-Groups", "&c&oThere are No Groups");
|
||||
def.put("Interface.Group-Menu.Ungrouped", "&7(ungrouped)");
|
||||
def.put("Interface.Group-Menu.Server-Menu", "&a&lView All Servers");
|
||||
def.put("Interface.Group-SubServer.Title", "Group/$str$/Servers");
|
||||
def.put("Interface.Group-SubServer.Title-Ungrouped", "Ungrouped Server Menu");
|
||||
def.put("Interface.Server-Menu.Title", "Server Menu");
|
||||
def.put("Interface.Server-Menu.Server-Player-Count", "&2$int$ Player(s) Online");
|
||||
def.put("Interface.Server-Menu.Server-External", "&7External Server");
|
||||
|
@ -8,10 +8,7 @@ import net.ME1312.SubData.Server.SubDataClient;
|
||||
import net.ME1312.SubServers.Bungee.Host.Server;
|
||||
import net.ME1312.SubServers.Bungee.SubProxy;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Download Group Info Packet
|
||||
@ -55,17 +52,27 @@ public class PacketDownloadGroupInfo implements PacketObjectIn<Integer>, PacketO
|
||||
ObjectMap<Integer> data = new ObjectMap<Integer>();
|
||||
if (tracker != null) data.set(0x0000, tracker);
|
||||
|
||||
ObjectMap<String> groups = new ObjectMap<String>();
|
||||
for (Map.Entry<String, List<Server>> group : plugin.api.getGroups().entrySet()) {
|
||||
if (this.groups == null || this.groups.length <= 0 || Arrays.binarySearch(this.groups, group.getKey().toLowerCase()) >= 0) {
|
||||
ObjectMap<String> servers = new ObjectMap<String>();
|
||||
for (Server server : group.getValue()) {
|
||||
servers.set(server.getName(), server.forSubData());
|
||||
if (this.groups == null || this.groups.length > 0) {
|
||||
ObjectMap<String> groups = new ObjectMap<String>();
|
||||
for (Map.Entry<String, List<Server>> group : plugin.api.getGroups().entrySet()) {
|
||||
if (this.groups == null || Arrays.binarySearch(this.groups, group.getKey().toLowerCase()) >= 0) {
|
||||
ObjectMap<String> servers = new ObjectMap<String>();
|
||||
for (Server server : group.getValue()) {
|
||||
servers.set(server.getName(), server.forSubData());
|
||||
}
|
||||
groups.set(group.getKey(), servers);
|
||||
}
|
||||
groups.set(group.getKey(), servers);
|
||||
}
|
||||
data.set(0x0001, groups);
|
||||
} else {
|
||||
ObjectMap<String> ungrouped = new ObjectMap<String>();
|
||||
for (Server server : plugin.api.getServers().values()) {
|
||||
if (server.getGroups().size() <= 0) ungrouped.set(server.getName(), server.forSubData());
|
||||
}
|
||||
|
||||
data.set(0x0001, Collections.emptyMap());
|
||||
data.set(0x0002, ungrouped);
|
||||
}
|
||||
data.set(0x0001, groups);
|
||||
return data;
|
||||
}
|
||||
|
||||
|
@ -61,7 +61,9 @@ public class PacketDownloadProxyInfo implements PacketObjectIn<Integer>, PacketO
|
||||
}
|
||||
}
|
||||
data.set(0x0001, proxies);
|
||||
if (this.proxies != null && plugin.api.getMasterProxy() != null && (this.proxies.length <= 0 || Arrays.binarySearch(this.proxies, plugin.api.getMasterProxy().getName().toLowerCase()) >= 0)) data.set(0x0002, plugin.api.getMasterProxy().forSubData());
|
||||
if (this.proxies != null && plugin.api.getMasterProxy() != null && (this.proxies.length <= 0 || Arrays.binarySearch(this.proxies, plugin.api.getMasterProxy().getName().toLowerCase()) >= 0)) {
|
||||
data.set(0x0002, plugin.api.getMasterProxy().forSubData());
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
|
@ -321,7 +321,7 @@ public final class SubAPI implements BungeeAPI {
|
||||
} else {
|
||||
conflitresolver.put(name.toLowerCase(), name);
|
||||
}
|
||||
List<Server> list = (groups.keySet().contains(group))?groups.get(group):new ArrayList<Server>();
|
||||
List<Server> list = (groups.keySet().contains(group))?groups.get(group):new LinkedList<Server>();
|
||||
list.add(server);
|
||||
groups.put(group, list);
|
||||
}
|
||||
|
@ -241,7 +241,7 @@ public class DefaultUIHandler implements UIHandler, Listener {
|
||||
}
|
||||
}
|
||||
|
||||
} else if (title.equals(plugin.api.getLang("SubServers", "Interface.Group-Menu.Title"))) { // Host Menu
|
||||
} else if (title.equals(plugin.api.getLang("SubServers", "Interface.Group-Menu.Title"))) { // Group Menu
|
||||
if (event.getCurrentItem() != null && event.getCurrentItem().getType() != Material.AIR && event.getCurrentItem().hasItemMeta()) {
|
||||
String item = event.getCurrentItem().getItemMeta().getDisplayName();
|
||||
|
||||
@ -254,7 +254,10 @@ public class DefaultUIHandler implements UIHandler, Listener {
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.Group-Menu.Server-Menu"))) {
|
||||
player.closeInventory();
|
||||
gui.serverMenu(1, null, null);
|
||||
} else if ((item.length() != 0 && !item.equals(ChatColor.RESET.toString())) && !item.equals(plugin.api.getLang("SubServers", "Interface.Group-Menu.No-Groups"))) {
|
||||
} else if (item.equals(plugin.api.getLang("SubServers", "Interface.Group-Menu.Ungrouped"))) {
|
||||
player.closeInventory();
|
||||
gui.serverMenu(1, null, "");
|
||||
} else if (item.length() != 0 && !item.equals(ChatColor.RESET.toString())) {
|
||||
player.closeInventory();
|
||||
gui.serverMenu(1, null, ChatColor.stripColor(item));
|
||||
}
|
||||
@ -265,7 +268,8 @@ public class DefaultUIHandler implements UIHandler, Listener {
|
||||
title.endsWith(plugin.api.getLang("SubServers", "Interface.Host-SubServer.Title").split("\\$str\\$")[1])) ||
|
||||
title.startsWith(plugin.api.getLang("SubServers", "Interface.Group-SubServer.Title").split("\\$str\\$")[0]) &&
|
||||
(plugin.api.getLang("SubServers", "Interface.Group-SubServer.Title").split("\\$str\\$").length == 1 ||
|
||||
title.endsWith(plugin.api.getLang("SubServers", "Interface.Group-SubServer.Title").split("\\$str\\$")[1]))) {
|
||||
title.endsWith(plugin.api.getLang("SubServers", "Interface.Group-SubServer.Title").split("\\$str\\$")[1])) ||
|
||||
title.equals(plugin.api.getLang("SubServers", "Interface.Group-SubServer.Title-Ungrouped"))) {
|
||||
if (event.getCurrentItem() != null && event.getCurrentItem().getType() != Material.AIR && event.getCurrentItem().hasItemMeta()) {
|
||||
String item = event.getCurrentItem().getItemMeta().getDisplayName();
|
||||
|
||||
|
@ -2,7 +2,6 @@ package net.ME1312.SubServers.Client.Bukkit.Graphic;
|
||||
|
||||
import net.ME1312.Galaxi.Library.Container.Container;
|
||||
import net.ME1312.Galaxi.Library.Container.Value;
|
||||
import net.ME1312.Galaxi.Library.Version.Version;
|
||||
import net.ME1312.SubServers.Client.Bukkit.SubPlugin;
|
||||
import net.ME1312.SubServers.Client.Common.Network.API.Host;
|
||||
import net.ME1312.SubServers.Client.Common.Network.API.Server;
|
||||
@ -695,13 +694,39 @@ public class DefaultUIRenderer extends UIRenderer {
|
||||
|
||||
public void groupMenu(final int page) {
|
||||
setDownloading(ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.Group-Menu.Title")));
|
||||
plugin.api.getGroups(groups -> {
|
||||
plugin.api.getServers(servers -> {
|
||||
setDownloading(null);
|
||||
lastVisitedObjects[0] = null;
|
||||
lastPage = page;
|
||||
lastMenu = () -> groupMenu(1);
|
||||
windowHistory.add(() -> groupMenu(page));
|
||||
|
||||
TreeMap<String, List<Server>> groups = new TreeMap<String, List<Server>>();
|
||||
List<Server> ungrouped = new ArrayList<Server>();
|
||||
{
|
||||
HashMap<String, String> conflitresolver = new HashMap<String, String>();
|
||||
for (Server server : servers.values()) {
|
||||
List<String> sgl = server.getGroups();
|
||||
if (sgl.size() == 0) {
|
||||
ungrouped.add(server);
|
||||
} else {
|
||||
for (String name : sgl) {
|
||||
String group = name;
|
||||
if (conflitresolver.keySet().contains(name.toLowerCase())) {
|
||||
group = conflitresolver.get(name.toLowerCase());
|
||||
} else {
|
||||
conflitresolver.put(name.toLowerCase(), name);
|
||||
}
|
||||
List<Server> list = (groups.keySet().contains(group))? groups.get(group) : new ArrayList<Server>();
|
||||
list.add(server);
|
||||
groups.put(group, list);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<String> index = new LinkedList<String>();
|
||||
if (ungrouped.size() != 0) index.add(null);
|
||||
index.addAll(groups.keySet());
|
||||
|
||||
ItemStack block;
|
||||
@ -737,9 +762,16 @@ public class DefaultUIRenderer extends UIRenderer {
|
||||
|
||||
block = color(color);
|
||||
blockMeta = block.getItemMeta();
|
||||
blockMeta.setDisplayName(ChatColor.GOLD + group);
|
||||
int size;
|
||||
if (group == null) {
|
||||
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Group-Menu.Ungrouped"));
|
||||
size = ungrouped.size();
|
||||
} else {
|
||||
blockMeta.setDisplayName(ChatColor.GOLD + group);
|
||||
size = groups.get(group).size();
|
||||
}
|
||||
LinkedList<String> lore = new LinkedList<String>();
|
||||
lore.add(plugin.api.getLang("SubServers", "Interface.Group-Menu.Group-Server-Count").replace("$int$", new DecimalFormat("#,###").format(groups.get(group).size())));
|
||||
lore.add(plugin.api.getLang("SubServers", "Interface.Group-Menu.Group-Server-Count").replace("$int$", new DecimalFormat("#,###").format(size)));
|
||||
blockMeta.setLore(lore);
|
||||
block.setItemMeta(blockMeta);
|
||||
inv.setItem(i, block);
|
||||
@ -754,16 +786,6 @@ public class DefaultUIRenderer extends UIRenderer {
|
||||
}
|
||||
}
|
||||
|
||||
if (index.size() == 0) {
|
||||
block = color(14);
|
||||
blockMeta = block.getItemMeta();
|
||||
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Group-Menu.No-Groups"));
|
||||
block.setItemMeta(blockMeta);
|
||||
inv.setItem(12, block);
|
||||
inv.setItem(13, block);
|
||||
inv.setItem(14, block);
|
||||
}
|
||||
|
||||
i = inv.getSize() - 18;
|
||||
while (i < inv.getSize()) {
|
||||
inv.setItem(i, div);
|
||||
@ -803,7 +825,7 @@ public class DefaultUIRenderer extends UIRenderer {
|
||||
}
|
||||
|
||||
public void serverMenu(final int page, final String host, final String group) {
|
||||
setDownloading(ChatColor.stripColor((host == null)?((group == null)?plugin.api.getLang("SubServers", "Interface.Server-Menu.Title"):plugin.api.getLang("SubServers", "Interface.Group-SubServer.Title").replace("$str$", group)):plugin.api.getLang("SubServers", "Interface.Host-SubServer.Title").replace("$str$", host)));
|
||||
setDownloading(ChatColor.stripColor((host == null)?((group == null)?plugin.api.getLang("SubServers", "Interface.Server-Menu.Title"):((group.length() == 0)?plugin.api.getLang("SubServers", "Interface.Group-SubServer.Title-Ungrouped"):plugin.api.getLang("SubServers", "Interface.Group-SubServer.Title").replace("$str$", group))):plugin.api.getLang("SubServers", "Interface.Host-SubServer.Title").replace("$str$", host)));
|
||||
Value<String> hostname = new Container<String>(host);
|
||||
Value<List<Server>> servercontainer = new Container<List<Server>>(new LinkedList<Server>());
|
||||
Runnable renderer = () -> {
|
||||
@ -828,7 +850,7 @@ public class DefaultUIRenderer extends UIRenderer {
|
||||
int count = (servers.size() == 0)?27:((servers.size() - min >= max)?36:servers.size() - min);
|
||||
int area = (count % 9 == 0) ? count : ((count / 9) + 1) * 9;
|
||||
|
||||
Inventory inv = Bukkit.createInventory(null, 18 + area, (host == null)?((group == null)?plugin.api.getLang("SubServers", "Interface.Server-Menu.Title"):plugin.api.getLang("SubServers", "Interface.Group-SubServer.Title").replace("$str$", group)):plugin.api.getLang("SubServers", "Interface.Host-SubServer.Title").replace("$str$", hostname.value()));
|
||||
Inventory inv = Bukkit.createInventory(null, 18 + area, (host == null)?((group == null)?plugin.api.getLang("SubServers", "Interface.Server-Menu.Title"):((group.length() == 0)?plugin.api.getLang("SubServers", "Interface.Group-SubServer.Title-Ungrouped"):plugin.api.getLang("SubServers", "Interface.Group-SubServer.Title").replace("$str$", group))):plugin.api.getLang("SubServers", "Interface.Host-SubServer.Title").replace("$str$", hostname.value()));
|
||||
block = color(7);
|
||||
block.setItemMeta(divMeta);
|
||||
while (i < area) {
|
||||
@ -977,8 +999,8 @@ public class DefaultUIRenderer extends UIRenderer {
|
||||
renderer.run();
|
||||
}
|
||||
});
|
||||
} else if (group != null && group.length() > 0) {
|
||||
plugin.api.getGroup(group, servers -> {
|
||||
} else if (group != null) {
|
||||
plugin.api.getGroup((group.length() == 0)?null:group, servers -> {
|
||||
if (servers == null) {
|
||||
if (hasHistory()) back();
|
||||
} else {
|
||||
|
@ -130,13 +130,13 @@ public final class SimplifiedData {
|
||||
* @param callback a Server Group
|
||||
*/
|
||||
public static void requestGroup(DataClient client, String name, Callback<Pair<String, List<Server>>> callback) {
|
||||
if (Util.isNull(name, callback)) throw new NullPointerException();
|
||||
if (Util.isNull(callback)) throw new NullPointerException();
|
||||
StackTraceElement[] origin = new Exception().getStackTrace();
|
||||
client(client).sendPacket(new PacketDownloadGroupInfo(Collections.singletonList(name), data -> {
|
||||
client(client).sendPacket(new PacketDownloadGroupInfo((name == null)?Collections.emptyList():Collections.singletonList(name), data -> {
|
||||
Pair<String, List<Server>> group = null;
|
||||
if (data.getKeys().size() > 0) {
|
||||
String key = new LinkedList<String>(data.getKeys()).getFirst();
|
||||
List<Server> servers = new ArrayList<Server>();
|
||||
List<Server> servers = new LinkedList<Server>();
|
||||
for (String server : data.getMap(key).getKeys()) {
|
||||
if (data.getMap(key).getMap(server).getRawString("type", "Server").equals("SubServer")) {
|
||||
servers.add(new SubServer(client, data.getMap(key).getMap(server)));
|
||||
|
@ -50,7 +50,13 @@ public class PacketDownloadGroupInfo implements PacketObjectIn<Integer>, PacketO
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void receive(SubDataSender client, ObjectMap<Integer> data) {
|
||||
for (Callback<ObjectMap<String>> callback : callbacks.get(data.getUUID(0x0000))) callback.run(new ObjectMap<String>((Map<String, ?>) data.getObject(0x0001)));
|
||||
for (Callback<ObjectMap<String>> callback : callbacks.get(data.getUUID(0x0000))) {
|
||||
ObjectMap<String> map = new ObjectMap<String>((Map<String, ?>) data.getObject(0x0001));
|
||||
ObjectMap<String> ungrouped = (data.contains(0x0002))?new ObjectMap<String>((Map<String, ?>) data.getObject(0x0002)):null;
|
||||
|
||||
if (ungrouped != null) map.set("", ungrouped);
|
||||
callback.run(map);
|
||||
}
|
||||
callbacks.remove(data.getUUID(0x0000));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user