Corrections to legacy formatting

This commit is contained in:
ME1312 2021-03-08 12:02:28 -05:00
parent 1c010ea9b2
commit 620db38e9b
No known key found for this signature in database
GPG Key ID: FEFFE2F698E88FA8
8 changed files with 220 additions and 371 deletions

View File

@ -1,56 +0,0 @@
package net.ME1312.SubServers.Bungee.Library.Compatibility;
import net.ME1312.Galaxi.Library.Container.Pair;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.plugin.TabExecutor;
import java.util.List;
/**
* Command Layout Class that implements all possible features (Base Version)
*/
public abstract class CommandX extends Command implements TabExecutor {
/**
* Create a Command
*
* @param name Command Name
*/
public CommandX(String name) {
super(name);
}
/**
* Create a Command
*
* @param name Command Name
* @param permission Command Permission
* @param aliases Command Aliases
*/
public CommandX(String name, String permission, String... aliases) {
super(name, permission, aliases);
}
/**
* Suggest Arguments
*
* @param sender Sender
* @param args Arguments (including the final unfinished one)
* @return An Error Message (if there was one, otherwise null) and a List of Suggestions
*/
public abstract Pair<String, List<String>> suggestArguments(CommandSender sender, String[] args);
/**
* Override the BungeeCord Method of {@link #suggestArguments(CommandSender, String[])}
*
* @param sender Sender
* @param args Arguments (including the final unfinished one)
* @return A Collection of Suggestions
*/
@Override
public Iterable<String> onTabComplete(CommandSender sender, String[] args) {
return suggestArguments(sender, args).value();
}
}

View File

@ -1,76 +0,0 @@
package net.ME1312.SubServers.Bungee.Library.Compatibility.mc1_13;
import net.ME1312.Galaxi.Library.Container.ContainedPair;
import net.ME1312.Galaxi.Library.Container.Pair;
import net.md_5.bungee.api.CommandSender;
import java.util.LinkedList;
import java.util.List;
/**
* Command Layout Class that implements all possible features (1.13 Version)
*/
public class CommandX extends net.ME1312.SubServers.Bungee.Library.Compatibility.CommandX/* implements TabValidator */ {
public final net.ME1312.SubServers.Bungee.Library.Compatibility.CommandX command;
/**
* Create a Command
*
* @param other CommandX from previous version
*/
public CommandX(net.ME1312.SubServers.Bungee.Library.Compatibility.CommandX other) {
super(other.getName());
command = other;
}
/**
* Override BungeeCord Method for the previously used one
*
* @param sender Sender
* @param args Arguments
*/
@Override
public void execute(CommandSender sender, String[] args) {
command.execute(sender, args);
}
@Override
public Pair<String, List<String>> suggestArguments(CommandSender sender, String[] args) {
return command.suggestArguments(sender, args);
}
/**
* Validate a Command (Override for custom)
*
* @param sender Sender
* @param command Command to validate
* @return Pair with a String error message and a Integer that represents where the command was deemed invalid
*/
public Pair<String, Integer> validateCommand(CommandSender sender, String command) {
List<Pair<String, Integer>> split = new LinkedList<Pair<String, Integer>>();
String cmd = command;
int i;
while ((i = cmd.indexOf((int) ' ')) < 0) {
i++;
String arg = cmd.substring(i);
split.add(new ContainedPair<>(arg.contains(" ")?arg.substring(0, arg.indexOf((int) ' ')):arg, i));
cmd = arg;
}
List<String> args = new LinkedList<String>();
Pair<String, Integer> response = null;
i = 0;
for (Pair<String, Integer> arg : split) {
if (i > 0) {
args.add(arg.key());
Pair<String, List<String>> suggestions = suggestArguments(sender, args.toArray(new String[args.size() - 1]));
if (suggestions.key() != null) response = new ContainedPair<>(suggestions.key(), arg.value());
}
i++;
}
return response;
}
// TODO Override the original validator method
}

View File

@ -11,7 +11,6 @@ import net.ME1312.Galaxi.Library.Version.Version;
import net.ME1312.SubData.Server.ClientHandler;
import net.ME1312.SubData.Server.SubDataClient;
import net.ME1312.SubServers.Bungee.Host.*;
import net.ME1312.SubServers.Bungee.Library.Compatibility.CommandX;
import net.ME1312.SubServers.Bungee.Library.Compatibility.Galaxi.GalaxiInfo;
import net.ME1312.SubServers.Bungee.Library.Compatibility.Logger;
import net.ME1312.SubServers.Bungee.Network.Packet.PacketCheckPermission;
@ -26,6 +25,7 @@ import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.config.ServerInfo;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.plugin.TabExecutor;
import net.md_5.bungee.command.ConsoleCommandSender;
import java.io.BufferedReader;
@ -43,23 +43,13 @@ import static net.ME1312.SubServers.Bungee.Library.Compatibility.Galaxi.GalaxiCo
* Plugin Command Class
*/
@SuppressWarnings("deprecation")
public final class SubCommand extends CommandX {
public final class SubCommand extends Command implements TabExecutor {
static HashMap<UUID, HashMap<ServerInfo, Pair<Long, Boolean>>> players = new HashMap<UUID, HashMap<ServerInfo, Pair<Long, Boolean>>>();
private static Thread reload;
private SubProxy plugin;
private String label;
static Pair<SubCommand, CommandX> newInstance(SubProxy plugin, String command) {
Pair<SubCommand, CommandX> cmd = new ContainedPair<>(new SubCommand(plugin, command), null);
CommandX now = cmd.key();
//if (plugin.api.getGameVersion()[plugin.api.getGameVersion().length - 1].compareTo(new Version("1.13")) >= 0) { // TODO Future Command Validator API?
// now = new net.ME1312.SubServers.Bungee.Library.Compatibility.mc1_13.CommandX(cmd.name());
//}
cmd.value(now);
return cmd;
}
private SubCommand(SubProxy plugin, String command) {
SubCommand(SubProxy plugin, String command) {
super(command);
this.plugin = plugin;
this.label = '/' + command;
@ -869,7 +859,7 @@ public final class SubCommand extends CommandX {
* @return The validator's response and list of possible arguments
*/
@SuppressWarnings("unchecked")
public Pair<String, List<String>> suggestArguments(CommandSender sender, String[] args) {
public List<String> onTabComplete(CommandSender sender, String[] args) {
String Last = (args.length > 0)?args[args.length - 1]:"";
String last = Last.toLowerCase();
@ -893,7 +883,7 @@ public final class SubCommand extends CommandX {
}));
}
}
return new ContainedPair<>(null, Collections.emptyList());
return Collections.emptyList();
} else if (args.length <= 1) {
List<String> cmds = new ArrayList<>();
cmds.addAll(Arrays.asList("help", "list", "info", "status", "version", "start", "restart", "stop", "kill", "terminate", "cmd", "command", "create", "update", "upgrade"));
@ -902,7 +892,7 @@ public final class SubCommand extends CommandX {
for (String cmd : cmds) {
if (cmd.startsWith(last)) list.add(Last + cmd.substring(last.length()));
}
return new ContainedPair<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Command.Generic.Invalid-Subcommand").replace("$str$", args[0]):null, list);
return list;
} else {
if (args[0].equals("info") || args[0].equals("status")) {
ReturnRunnable<Collection<String>> getPlayers = () -> {
@ -949,7 +939,7 @@ public final class SubCommand extends CommandX {
if (!list.contains(player) && player.toLowerCase().startsWith(last))
list.add(Last + player.substring(last.length()));
}
return new ContainedPair<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Command.Info.Unknown").replace("$str$", args[0]):null, list);
return list;
} else if (args.length == 3) {
List<String> list = new ArrayList<String>();
@ -993,9 +983,9 @@ public final class SubCommand extends CommandX {
}
break;
}
return new ContainedPair<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Command.Info.Unknown").replace("$str$", args[0]):null, list);
return list;
} else {
return new ContainedPair<>(null, Collections.emptyList());
return Collections.emptyList();
}
} else if (!(sender instanceof ProxiedPlayer) && (args[0].equals("reload") || args[0].equals("restore"))) {
if (args[0].equals("reload")) {
@ -1005,15 +995,15 @@ public final class SubCommand extends CommandX {
for (String complete : completes) {
if (complete.toLowerCase().startsWith(last)) list.add(Last + complete.substring(last.length()));
}
return new ContainedPair<>(null, list);
return list;
} else {
return new ContainedPair<>(null, Collections.emptyList());
return Collections.emptyList();
}
} else /* if (args[0].equals("restore")) */ {
if (args.length == 2) {
return new ContainedPair<>(null, Collections.singletonList("<Subserver>"));
return Collections.singletonList("<Subserver>");
} else {
return new ContainedPair<>(null, Collections.emptyList());
return Collections.emptyList();
}
}
} else if (args[0].equals("start") ||
@ -1039,7 +1029,7 @@ public final class SubCommand extends CommandX {
if (Arrays.binarySearch(select.selection, name.toLowerCase()) < 0 && name.toLowerCase().startsWith(last)) list.add(Last + name.substring(last.length()));
}
}
return new ContainedPair<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Command.Generic.Unknown-Host").replace("$str$", select.last):null, list);
return list;
} else if (last.startsWith(":")) {
Map<String, List<Server>> groups = plugin.api.getGroups();
if (groups.size() > 0) {
@ -1050,7 +1040,7 @@ public final class SubCommand extends CommandX {
if (Arrays.binarySearch(select.selection, group.toLowerCase()) < 0 && group.toLowerCase().startsWith(last)) list.add(Last + group.substring(last.length()));
}
}
return new ContainedPair<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Command.Generic.Unknown-Group").replace("$str$", select.last):null, list);
return list;
} else {
Map<String, SubServer> subservers = plugin.api.getSubServers();
if (subservers.size() > 0) {
@ -1060,31 +1050,31 @@ public final class SubCommand extends CommandX {
if (Arrays.binarySearch(select.selection, server.getName().toLowerCase()) < 0 && server.getName().toLowerCase().startsWith(last)) list.add(Last + server.getName().substring(last.length()));
}
}
return new ContainedPair<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Command.Generic.Unknown-SubServer").replace("$str$", select.last):null, list);
return list;
}
} else if (args[0].equals("cmd") || args[0].equals("command")) {
if (select.args.length == 3) {
return new ContainedPair<>(null, Collections.singletonList("<Command>"));
return Collections.singletonList("<Command>");
} else {
return new ContainedPair<>(null, Collections.singletonList("[Args...]"));
return Collections.singletonList("[Args...]");
}
} else if (args[0].equals("update") || args[0].equals("upgrade")) {
if (select.args.length == 3) {
return new ContainedPair<>(null, Arrays.asList("[Template]", "[Version]"));
return Arrays.asList("[Template]", "[Version]");
} else if (select.args.length == 4) {
return new ContainedPair<>(null, Collections.singletonList("<Version>"));
return Collections.singletonList("<Version>");
}
}
return new ContainedPair<>(null, Collections.emptyList());
return Collections.emptyList();
} else if (args[0].equals("create")) {
if (args.length == 2) {
return new ContainedPair<>(null, Collections.singletonList("<Name>"));
return Collections.singletonList("<Name>");
} else if (args.length == 3) {
List<String> list = new ArrayList<String>();
for (Host host : plugin.api.getHosts().values()) {
if (host.getName().toLowerCase().startsWith(last)) list.add(Last + host.getName().substring(last.length()));
}
return new ContainedPair<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Command.Generic.Unknown-Host").replace("$str$", args[0]):null, list);
return list;
} else if (args.length == 4) {
List<String> list = new ArrayList<String>();
Map<String, Host> hosts = plugin.api.getHosts();
@ -1095,18 +1085,18 @@ public final class SubCommand extends CommandX {
if (template.getName().toLowerCase().startsWith(last)) list.add(Last + template.getName().substring(last.length()));
}
}
return new ContainedPair<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Command.Creator.Invalid-Template").replace("$str$", args[0]):null, list);
return list;
} else if (args.length == 5) {
return new ContainedPair<>(null, Collections.singletonList("[Version]"));
return Collections.singletonList("[Version]");
} else if (args.length == 6) {
if (last.length() > 0) {
if (Util.isException(() -> Integer.parseInt(last)) || Integer.parseInt(last) <= 0 || Integer.parseInt(last) > 65535) {
return new ContainedPair<>(plugin.api.getLang("SubServers", "Command.Creator.Invalid-Port"), Collections.emptyList());
return Collections.emptyList();
}
}
return new ContainedPair<>(null, Collections.singletonList("[Port]"));
return Collections.singletonList("[Port]");
} else {
return new ContainedPair<>(null, Collections.emptyList());
return Collections.emptyList();
}
} else if (sender instanceof ProxiedPlayer && (args[0].equals("tp") || args[0].equals("teleport"))) {
if (args.length == 2 || args.length == 3) {
@ -1135,12 +1125,12 @@ public final class SubCommand extends CommandX {
for (Server server : plugin.api.getServers().values()) {
if (server.getName().toLowerCase().startsWith(last)) list.add(Last + server.getName().substring(last.length()));
}
return new ContainedPair<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Command.Generic.Unknown-Server").replace("$str$", args[0]):null, list);
return list;
} else {
return new ContainedPair<>(null, Collections.emptyList());
return Collections.emptyList();
}
} else {
return new ContainedPair<>(plugin.api.getLang("SubServers", "Command.Generic.Invalid-Subcommand").replace("$str$", args[0]), Collections.emptyList());
return Collections.emptyList();
}
}
}
@ -1148,9 +1138,9 @@ public final class SubCommand extends CommandX {
/**
* BungeeCord /server
*/
public static final class BungeeServer extends CommandX {
public static final class BungeeServer extends Command implements TabExecutor {
private SubProxy plugin;
private BungeeServer(SubProxy plugin, String command) {
BungeeServer(SubProxy plugin, String command) {
super(command, "bungeecord.command.server");
this.plugin = plugin;
@ -1165,16 +1155,6 @@ public final class SubCommand extends CommandX {
);
}
static Pair<BungeeServer, CommandX> newInstance(SubProxy plugin, String command) {
Pair<BungeeServer, CommandX> cmd = new ContainedPair<>(new BungeeServer(plugin, command), null);
CommandX now = cmd.key();
//if (plugin.api.getGameVersion()[plugin.api.getGameVersion().length - 1].compareTo(new Version("1.13")) >= 0) { // TODO Future Command Validator API?
// now = new net.ME1312.SubServers.Bungee.Library.Compatibility.mc1_13.CommandX(cmd.name());
//}
cmd.value(now);
return cmd;
}
/**
* Override /server
*
@ -1227,16 +1207,16 @@ public final class SubCommand extends CommandX {
* @param args Arguments
* @return The validator's response and list of possible arguments
*/
public Pair<String, List<String>> suggestArguments(CommandSender sender, String[] args) {
public List<String> onTabComplete(CommandSender sender, String[] args) {
if (args.length <= 1) {
String last = (args.length > 0)?args[args.length - 1].toLowerCase():"";
List<String> list = new ArrayList<String>();
for (Server server : plugin.api.getServers().values()) {
if (server.getName().toLowerCase().startsWith(last) && !server.isHidden()) list.add(server.getName());
}
return new ContainedPair<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Bungee.Server.Invalid").replace("$str$", args[0]):null, list);
return list;
} else {
return new ContainedPair<>(null, Collections.emptyList());
return Collections.emptyList();
}
}
}

View File

@ -695,13 +695,13 @@ public final class SubProxy extends BungeeCommon implements Listener {
private void post() {
if (!config.get().getMap("Settings").getRawStringList("Disabled-Overrides", Collections.emptyList()).contains("/server"))
getPluginManager().registerCommand(plugin, SubCommand.BungeeServer.newInstance(this, "server").value());
getPluginManager().registerCommand(plugin, new SubCommand.BungeeServer(this, "server"));
if (!config.get().getMap("Settings").getRawStringList("Disabled-Overrides", Collections.emptyList()).contains("/glist"))
getPluginManager().registerCommand(plugin, new SubCommand.BungeeList(this, "glist"));
getPluginManager().registerCommand(plugin, SubCommand.newInstance(this, "subservers").value());
getPluginManager().registerCommand(plugin, SubCommand.newInstance(this, "subserver").value());
getPluginManager().registerCommand(plugin, SubCommand.newInstance(this, "sub").value());
getPluginManager().registerCommand(plugin, new SubCommand(this, "subservers"));
getPluginManager().registerCommand(plugin, new SubCommand(this, "subserver"));
getPluginManager().registerCommand(plugin, new SubCommand(this, "sub"));
GalaxiCommand.group(SubCommand.class);
if (getReconnectHandler() != null && getReconnectHandler().getClass().equals(SmartFallback.class))

View File

@ -1,8 +1,6 @@
package net.ME1312.SubServers.Client.Bukkit.Graphic;
import net.ME1312.Galaxi.Library.Container.ContainedPair;
import net.ME1312.Galaxi.Library.Container.Container;
import net.ME1312.Galaxi.Library.Container.Pair;
import net.ME1312.Galaxi.Library.Container.Value;
import net.ME1312.Galaxi.Library.Version.Version;
import net.ME1312.SubServers.Client.Bukkit.SubPlugin;
@ -70,14 +68,32 @@ public class DefaultUIRenderer extends UIRenderer {
windowHistory.remove(windowHistory.size() - 1);
reopen();
}
ItemStack createItem(String material, String name, short damage) {
/*
private static final String[] STAINED_GLASS_INDEX = new String[] {
"WHITE_STAINED_GLASS_PANE",
"ORANGE_STAINED_GLASS_PANE",
"MAGENTA_STAINED_GLASS_PANE",
"LIGHT_BLUE_STAINED_GLASS_PANE",
"YELLOW_STAINED_GLASS_PANE",
"LIME_STAINED_GLASS_PANE",
"PINK_STAINED_GLASS_PANE",
"GRAY_STAINED_GLASS_PANE",
"LIGHT_GRAY_STAINED_GLASS_PANE",
"CYAN_STAINED_GLASS_PANE",
"PURPLE_STAINED_GLASS_PANE",
"BLUE_STAINED_GLASS_PANE",
"BROWN_STAINED_GLASS_PANE",
"GREEN_STAINED_GLASS_PANE",
"RED_STAINED_GLASS_PANE",
"BLACK_STAINED_GLASS_PANE"
}; */
private ItemStack color(int color) {
try {
if (plugin.api.getGameVersion().compareTo(new Version("1.13")) < 0) {
return ItemStack.class.getConstructor(Material.class, int.class, short.class).newInstance(Material.valueOf(material), 1, damage);
} else {
return new ItemStack((Material) Material.class.getMethod("getMaterial", String.class, boolean.class).invoke(null, name, false), 1);
}
// if (plugin.api.getGameVersion().compareTo(new Version("1.13")) < 0) {
return new ItemStack(Material.STAINED_GLASS_PANE, 1, (short) color);
// } else {
// return new ItemStack((Material) Material.class.getMethod("getMaterial", String.class, boolean.class).invoke(null, STAINED_GLASS_INDEX[color], false), 1);
// }
} catch (Exception e) {
e.printStackTrace();
return null;
@ -97,7 +113,7 @@ public class DefaultUIRenderer extends UIRenderer {
ItemStack block;
ItemMeta blockMeta;
ItemStack div = createItem("STAINED_GLASS_PANE", "BLACK_STAINED_GLASS_PANE", (short) 15);
ItemStack div = color(15);
ItemMeta divMeta = div.getItemMeta();
divMeta.setDisplayName(ChatColor.RESET.toString());
div.setItemMeta(divMeta);
@ -109,7 +125,7 @@ public class DefaultUIRenderer extends UIRenderer {
int area = (count % 9 == 0) ? count : ((count / 9) + 1) * 9;
Inventory inv = Bukkit.createInventory(null, 18 + area, plugin.api.getLang("SubServers", "Interface.Host-Menu.Title"));
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block = color(7);
block.setItemMeta(divMeta);
while (i < area) {
inv.setItem(i, block);
@ -119,16 +135,16 @@ public class DefaultUIRenderer extends UIRenderer {
i = ((count < 9) ? ((9 - count) / 2) : 0);
boolean even = (count & 1) == 0 && count < 9;
Pair<String, Short> enabled, disabled;
int enabled, disabled;
for (Host host : index) {
if (index.indexOf(host) >= min && index.indexOf(host) <= max) {
if (even && (i == 4 || i == 13 || i == 22 || i == 31)) inv.setItem(i++, adiv);
enabled = (((i & 1) == 0) ? new ContainedPair<>("BLUE_STAINED_GLASS_PANE", (short) 3) : new ContainedPair<>("LIGHT_BLUE_STAINED_GLASS_PANE", (short) 11));
disabled = (((i & 1) == 0) ? new ContainedPair<>("MAGENTA_STAINED_GLASS_PANE", (short) 2) : new ContainedPair<>("RED_STAINED_GLASS_PANE", (short) 14));
enabled = (((i & 1) == 0)? 3 : 11);
disabled = (((i & 1) == 0)? 2 : 14);
if (host.isAvailable() && host.isEnabled()) {
block = createItem("STAINED_GLASS_PANE", enabled.key(), enabled.value());
block = color(enabled);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.AQUA + host.getDisplayName());
LinkedList<String> lore = new LinkedList<String>();
@ -138,7 +154,7 @@ public class DefaultUIRenderer extends UIRenderer {
if (plugin.config.get().getMap("Settings").getBoolean("Show-Addresses", false)) lore.add(ChatColor.WHITE + host.getAddress().getHostAddress());
blockMeta.setLore(lore);
} else {
block = createItem("STAINED_GLASS_PANE", disabled.key(), disabled.value());
block = color(disabled);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.RED + host.getDisplayName());
LinkedList<String> lore = new LinkedList<String>();
@ -163,7 +179,7 @@ public class DefaultUIRenderer extends UIRenderer {
}
if (index.size() == 0) {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
block = color(14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Host-Menu.No-Hosts"));
block.setItemMeta(blockMeta);
@ -180,7 +196,7 @@ public class DefaultUIRenderer extends UIRenderer {
i = inv.getSize() - 9;
if (min != 0) {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
block = color(4);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Back-Arrow"));
block.setItemMeta(blockMeta);
@ -189,11 +205,11 @@ public class DefaultUIRenderer extends UIRenderer {
} else i += 2;
i++;
if (groups.keySet().size() <= 0) {
block = createItem("STAINED_GLASS_PANE", "LIME_STAINED_GLASS_PANE", (short) 5);
block = color(5);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Host-Menu.Server-Menu"));
} else {
block = createItem("STAINED_GLASS_PANE", "ORANGE_STAINED_GLASS_PANE", (short) 1);
block = color(1);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Host-Menu.Group-Menu"));
}
@ -203,7 +219,7 @@ public class DefaultUIRenderer extends UIRenderer {
inv.setItem(i++, block);
i++;
if (index.size() - 1 > max) {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
block = color(4);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Next-Arrow"));
block.setItemMeta(blockMeta);
@ -228,7 +244,7 @@ public class DefaultUIRenderer extends UIRenderer {
ItemStack block;
ItemMeta blockMeta;
ItemStack div = createItem("STAINED_GLASS_PANE", "BLACK_STAINED_GLASS_PANE", (short) 15);
ItemStack div = color(15);
ItemMeta divMeta = div.getItemMeta();
divMeta.setDisplayName(ChatColor.RESET.toString());
div.setItemMeta(divMeta);
@ -243,16 +259,16 @@ public class DefaultUIRenderer extends UIRenderer {
Player player = Bukkit.getPlayer(this.player);
if (!(player.hasPermission("subservers.host.*.*") || player.hasPermission("subservers.host.*.create") || player.hasPermission("subservers.host." + name.toLowerCase() + ".*") || player.hasPermission("subservers.host." + name.toLowerCase() + ".create"))) {
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block = color(7);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GRAY+ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.Host-Admin.Creator")));
blockMeta.setLore(Arrays.asList(plugin.api.getLang("SubServers", "Interface.Generic.Invalid-Permission").replace("$str$", "subservers.host.create." + name.toLowerCase())));
} else if (!host.isAvailable() || !host.isEnabled()) {
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block = color(7);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GRAY+ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.Host-Admin.Creator")));
} else {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
block = color(4);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Host-Admin.Creator"));
}
@ -264,7 +280,7 @@ public class DefaultUIRenderer extends UIRenderer {
inv.setItem(11, block);
inv.setItem(12, block);
block = createItem("STAINED_GLASS_PANE", "BLUE_STAINED_GLASS_PANE", (short) 3);
block = color(3);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Host-Admin.SubServers"));
block.setItemMeta(blockMeta);
@ -278,7 +294,7 @@ public class DefaultUIRenderer extends UIRenderer {
if (!host.isAvailable() || !host.isEnabled() || hostPlugins.size() <= 0) {
block = div;
} else {
block = createItem("STAINED_GLASS_PANE", "BLUE_STAINED_GLASS_PANE", (short) 11);
block = color(11);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Host-Admin.Plugins"));
block.setItemMeta(blockMeta);
@ -287,7 +303,7 @@ public class DefaultUIRenderer extends UIRenderer {
inv.setItem(28, block);
if (host.isAvailable() && host.isEnabled()) {
block = createItem("STAINED_GLASS_PANE", "BLUE_STAINED_GLASS_PANE", (short) 11);
block = color(11);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.AQUA + host.getDisplayName());
LinkedList<String> lore = new LinkedList<String>();
@ -297,7 +313,7 @@ public class DefaultUIRenderer extends UIRenderer {
if (plugin.config.get().getMap("Settings").getBoolean("Show-Addresses", false)) lore.add(ChatColor.WHITE + host.getAddress().getHostAddress());
blockMeta.setLore(lore);
} else {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
block = color(14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.RED + host.getDisplayName());
LinkedList<String> lore = new LinkedList<String>();
@ -315,7 +331,7 @@ public class DefaultUIRenderer extends UIRenderer {
if (hasHistory()) {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
block = color(14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Back"));
block.setItemMeta(blockMeta);
@ -342,7 +358,7 @@ public class DefaultUIRenderer extends UIRenderer {
setDownloading(null);
ItemStack block;
ItemMeta blockMeta;
ItemStack div = createItem("STAINED_GLASS_PANE", "BLACK_STAINED_GLASS_PANE", (short) 15);
ItemStack div = color(15);
ItemMeta divMeta = div.getItemMeta();
divMeta.setDisplayName(ChatColor.RESET.toString());
div.setItemMeta(divMeta);
@ -356,11 +372,11 @@ public class DefaultUIRenderer extends UIRenderer {
}
if (options.getName() == null) {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
block = color(14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.RED + plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Name"));
} else {
block = createItem("STAINED_GLASS_PANE", "LIME_STAINED_GLASS_PANE", (short) 5);
block = color(5);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GREEN + plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Name"));
blockMeta.setLore(Arrays.asList(ChatColor.GRAY + options.getName()));
@ -370,7 +386,7 @@ public class DefaultUIRenderer extends UIRenderer {
inv.setItem(11, block);
inv.setItem(12, block);
block = createItem("STAINED_GLASS_PANE", "LIME_STAINED_GLASS_PANE", (short) 5);
block = color(5);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GREEN + plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Port"));
blockMeta.setLore(Arrays.asList(ChatColor.GRAY.toString() + ((options.getPort() == null)?"Auto Select":options.getPort())));
@ -380,11 +396,11 @@ public class DefaultUIRenderer extends UIRenderer {
inv.setItem(16, block);
if (options.getTemplate() == null) {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
block = color(14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.RED + plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Template"));
} else {
block = createItem("STAINED_GLASS_PANE", "LIME_STAINED_GLASS_PANE", (short) 5);
block = color(5);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GREEN + plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Template"));
blockMeta.setLore(Arrays.asList(ChatColor.GRAY + options.getTemplate()));
@ -395,11 +411,11 @@ public class DefaultUIRenderer extends UIRenderer {
inv.setItem(30, block);
if (options.getVersion() == null && (options.getTemplate() == null || host.getCreator().getTemplate(options.getTemplate()).requiresVersion())) {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
block = color(14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.RED + plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Version"));
} else {
block = createItem("STAINED_GLASS_PANE", "LIME_STAINED_GLASS_PANE", (short) 5);
block = color(5);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GREEN + plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Version"));
blockMeta.setLore(Arrays.asList(ChatColor.GRAY + ((options.getVersion() == null)?"Unspecified":"Minecraft "+options.getVersion().toString())));
@ -410,12 +426,12 @@ public class DefaultUIRenderer extends UIRenderer {
inv.setItem(34, block);
if (!options.hasHistory()) {
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block = color(7);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GRAY + ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.Generic.Undo")));
block.setItemMeta(blockMeta);
} else {
block = createItem("STAINED_GLASS_PANE", "ORANGE_STAINED_GLASS_PANE", (short) 1);
block = color(1);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Undo"));
block.setItemMeta(blockMeta);
@ -425,13 +441,13 @@ public class DefaultUIRenderer extends UIRenderer {
inv.setItem(46, block);
if (options.getName() == null || options.getTemplate() == null || (options.getVersion() == null && host.getCreator().getTemplate(options.getTemplate()).requiresVersion())) {
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block = color(7);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GRAY + ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.Host-Creator.Submit")));
blockMeta.setLore(Arrays.asList(plugin.api.getLang("SubServers", "Interface.Host-Creator.Form-Incomplete")));
block.setItemMeta(blockMeta);
} else {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
block = color(4);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Host-Creator.Submit"));
block.setItemMeta(blockMeta);
@ -442,7 +458,7 @@ public class DefaultUIRenderer extends UIRenderer {
inv.setItem(50, block);
if (hasHistory()) {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
block = color(14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Back"));
block.setItemMeta(blockMeta);
@ -474,7 +490,7 @@ public class DefaultUIRenderer extends UIRenderer {
ItemStack block;
ItemMeta blockMeta;
ItemStack div = createItem("STAINED_GLASS_PANE", "BLACK_STAINED_GLASS_PANE", (short) 15);
ItemStack div = color(15);
ItemMeta divMeta = div.getItemMeta();
divMeta.setDisplayName(ChatColor.RESET.toString());
div.setItemMeta(divMeta);
@ -486,7 +502,7 @@ public class DefaultUIRenderer extends UIRenderer {
int area = (count % 9 == 0)?count: ((count / 9) + 1) * 9;
Inventory inv = Bukkit.createInventory(null, 18 + area, plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Template.Title").replace("$str$", host.getDisplayName()));
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block = color(7);
block.setItemMeta(divMeta);
while (i < area) {
inv.setItem(i, block);
@ -521,7 +537,7 @@ public class DefaultUIRenderer extends UIRenderer {
}
if (index.size() == 0) {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
block = color(14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Host-Creator.Edit-Template.No-Templates"));
block.setItemMeta(blockMeta);
@ -538,7 +554,7 @@ public class DefaultUIRenderer extends UIRenderer {
i = inv.getSize() - 9;
if (min != 0) {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
block = color(4);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Back-Arrow"));
block.setItemMeta(blockMeta);
@ -546,7 +562,7 @@ public class DefaultUIRenderer extends UIRenderer {
inv.setItem(i++, block);
} else i += 2;
i++;
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
block = color(14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Back"));
block.setItemMeta(blockMeta);
@ -555,7 +571,7 @@ public class DefaultUIRenderer extends UIRenderer {
inv.setItem(i++, block);
i++;
if (index.size() - 1 > max) {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
block = color(4);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Next-Arrow"));
block.setItemMeta(blockMeta);
@ -587,7 +603,7 @@ public class DefaultUIRenderer extends UIRenderer {
ItemStack block;
ItemMeta blockMeta;
ItemStack div = createItem("STAINED_GLASS_PANE", "BLACK_STAINED_GLASS_PANE", (short) 15);
ItemStack div = color(15);
ItemMeta divMeta = div.getItemMeta();
divMeta.setDisplayName(ChatColor.RESET.toString());
div.setItemMeta(divMeta);
@ -599,7 +615,7 @@ public class DefaultUIRenderer extends UIRenderer {
int area = (count % 9 == 0) ? count : ((count / 9) + 1) * 9;
Inventory inv = Bukkit.createInventory(null, 18 + area, plugin.api.getLang("SubServers", "Interface.Host-Plugin.Title").replace("$str$", host.getDisplayName()));
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block = color(7);
block.setItemMeta(divMeta);
while (i < area) {
inv.setItem(i, block);
@ -627,7 +643,7 @@ public class DefaultUIRenderer extends UIRenderer {
}
if (renderers.size() == 0) {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
block = color(14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Host-Plugin.No-Plugins"));
block.setItemMeta(blockMeta);
@ -644,7 +660,7 @@ public class DefaultUIRenderer extends UIRenderer {
i = inv.getSize() - 9;
if (min != 0) {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
block = color(4);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Back-Arrow"));
block.setItemMeta(blockMeta);
@ -653,7 +669,7 @@ public class DefaultUIRenderer extends UIRenderer {
} else i += 2;
i++;
if (hasHistory()) {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
block = color(14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Back"));
block.setItemMeta(blockMeta);
@ -663,7 +679,7 @@ public class DefaultUIRenderer extends UIRenderer {
i++;
}
if (renderers.size() - 1 > max) {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
block = color(4);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Next-Arrow"));
block.setItemMeta(blockMeta);
@ -690,7 +706,7 @@ public class DefaultUIRenderer extends UIRenderer {
ItemStack block;
ItemMeta blockMeta;
ItemStack div = createItem("STAINED_GLASS_PANE", "BLACK_STAINED_GLASS_PANE", (short) 15);
ItemStack div = color(15);
ItemMeta divMeta = div.getItemMeta();
divMeta.setDisplayName(ChatColor.RESET.toString());
div.setItemMeta(divMeta);
@ -702,7 +718,7 @@ public class DefaultUIRenderer extends UIRenderer {
int area = (count % 9 == 0) ? count : ((count / 9) + 1) * 9;
Inventory inv = Bukkit.createInventory(null, 18 + area, plugin.api.getLang("SubServers", "Interface.Group-Menu.Title"));
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block = color(7);
block.setItemMeta(divMeta);
while (i < area) {
inv.setItem(i, block);
@ -712,14 +728,14 @@ public class DefaultUIRenderer extends UIRenderer {
i = ((count < 9) ? ((9 - count) / 2) : 0);
boolean even = (count & 1) == 0 && count < 9;
Pair<String, Short> color;
int color;
for (String group : index) {
if (index.indexOf(group) >= min && index.indexOf(group) <= max) {
if (even && (i == 4 || i == 13 || i == 22 || i == 31)) inv.setItem(i++, adiv);
color = (((i & 1) == 0) ? new ContainedPair<>("ORANGE_STAINED_GLASS_PANE", (short) 1) : new ContainedPair<>("YELLOW_STAINED_GLASS_PANE", (short) 4));
color = (((i & 1) == 0)? 1 : 4);
block = createItem("STAINED_GLASS_PANE", color.key(), color.value());
block = color(color);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GOLD + group);
LinkedList<String> lore = new LinkedList<String>();
@ -739,7 +755,7 @@ public class DefaultUIRenderer extends UIRenderer {
}
if (index.size() == 0) {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
block = color(14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Group-Menu.No-Groups"));
block.setItemMeta(blockMeta);
@ -756,7 +772,7 @@ public class DefaultUIRenderer extends UIRenderer {
i = inv.getSize() - 9;
if (min != 0) {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
block = color(4);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Back-Arrow"));
block.setItemMeta(blockMeta);
@ -764,7 +780,7 @@ public class DefaultUIRenderer extends UIRenderer {
inv.setItem(i++, block);
} else i += 2;
i++;
block = createItem("STAINED_GLASS_PANE", "LIME_STAINED_GLASS_PANE", (short) 5);
block = color(5);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Group-Menu.Server-Menu"));
block.setItemMeta(blockMeta);
@ -773,7 +789,7 @@ public class DefaultUIRenderer extends UIRenderer {
inv.setItem(i++, block);
i++;
if (index.size() - 1 > max) {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
block = color(4);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Next-Arrow"));
block.setItemMeta(blockMeta);
@ -801,7 +817,7 @@ public class DefaultUIRenderer extends UIRenderer {
ItemStack block;
ItemMeta blockMeta;
ItemStack div = createItem("STAINED_GLASS_PANE", "BLACK_STAINED_GLASS_PANE", (short) 15);
ItemStack div = color(15);
ItemMeta divMeta = div.getItemMeta();
divMeta.setDisplayName(ChatColor.RESET.toString());
div.setItemMeta(divMeta);
@ -813,7 +829,7 @@ public class DefaultUIRenderer extends UIRenderer {
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()));
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block = color(7);
block.setItemMeta(divMeta);
while (i < area) {
inv.setItem(i, block);
@ -823,19 +839,19 @@ public class DefaultUIRenderer extends UIRenderer {
i = ((count < 9) ? ((9 - count) / 2) : 0);
boolean even = (count & 1) == 0 && count < 9;
Pair<String, Short> external, online, temp, offline, disabled;
int external, online, temp, offline, disabled;
for (Server server : servers) {
if (servers.indexOf(server) >= min && servers.indexOf(server) <= max) {
if (even && (i == 4 || i == 13 || i == 22 || i == 31)) inv.setItem(i++, adiv);
external = (((i & 1) == 0) ? new ContainedPair<>("WHITE_STAINED_GLASS_PANE", (short) 0) : new ContainedPair<>("LIGHT_GRAY_STAINED_GLASS_PANE", (short) 8));
online = (((i & 1) == 0) ? new ContainedPair<>("LIME_STAINED_GLASS_PANE", (short) 5) : new ContainedPair<>("GREEN_STAINED_GLASS_PANE", (short) 13));
temp = (((i & 1) == 0) ? new ContainedPair<>("LIGHT_BLUE_STAINED_GLASS_PANE", (short) 3) : new ContainedPair<>("BLUE_STAINED_GLASS_PANE", (short) 11));
offline = (((i & 1) == 0) ? new ContainedPair<>("YELLOW_STAINED_GLASS_PANE", (short) 4) : new ContainedPair<>("ORANGE_STAINED_GLASS_PANE", (short) 1));
disabled = (((i & 1) == 0) ? new ContainedPair<>("MAGENTA_STAINED_GLASS_PANE", (short) 2) : new ContainedPair<>("RED_STAINED_GLASS_PANE", (short) 14));
external = (((i & 1) == 0)? 0 : 8);
online = (((i & 1) == 0)? 5 : 13);
temp = (((i & 1) == 0)? 3 : 11);
offline = (((i & 1) == 0)? 4 : 1);
disabled = (((i & 1) == 0)? 2 : 14);
if (!(server instanceof SubServer)) {
block = createItem("STAINED_GLASS_PANE", external.key(), external.value());
block = color(external);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.WHITE + server.getDisplayName());
LinkedList<String> lore = new LinkedList<String>();
@ -847,8 +863,8 @@ public class DefaultUIRenderer extends UIRenderer {
lore.add(ChatColor.WHITE + ((plugin.config.get().getMap("Settings").getBoolean("Show-Addresses", false))?server.getAddress().getAddress().getHostAddress()+':':"") + server.getAddress().getPort());
blockMeta.setLore(lore);
} else if (((SubServer) server).isRunning()) {
Pair<String, Short> blockinfo = (((SubServer) server).getStopAction() == SubServer.StopAction.REMOVE_SERVER || ((SubServer) server).getStopAction() == SubServer.StopAction.RECYCLE_SERVER || ((SubServer) server).getStopAction() == SubServer.StopAction.DELETE_SERVER)?temp:online;
block = createItem("STAINED_GLASS_PANE", blockinfo.key(), blockinfo.value());
int blocktype = (((SubServer) server).getStopAction() == SubServer.StopAction.REMOVE_SERVER || ((SubServer) server).getStopAction() == SubServer.StopAction.RECYCLE_SERVER || ((SubServer) server).getStopAction() == SubServer.StopAction.DELETE_SERVER)?temp:online;
block = color(blocktype);
blockMeta = block.getItemMeta();
LinkedList<String> lore = new LinkedList<String>();
if (!server.getName().equals(server.getDisplayName()))
@ -861,7 +877,7 @@ public class DefaultUIRenderer extends UIRenderer {
lore.add(ChatColor.WHITE + ((plugin.config.get().getMap("Settings").getBoolean("Show-Addresses", false))?server.getAddress().getAddress().getHostAddress()+':':"") + server.getAddress().getPort());
blockMeta.setLore(lore);
} else if (((SubServer) server).isAvailable() && ((SubServer) server).isEnabled() && ((SubServer) server).getCurrentIncompatibilities().size() == 0) {
block = createItem("STAINED_GLASS_PANE", offline.key(), offline.value());
block = color(offline);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.YELLOW + server.getDisplayName());
LinkedList<String> lore = new LinkedList<String>();
@ -871,7 +887,7 @@ public class DefaultUIRenderer extends UIRenderer {
lore.add(ChatColor.WHITE + ((plugin.config.get().getMap("Settings").getBoolean("Show-Addresses", false))?server.getAddress().getAddress().getHostAddress()+':':"") + server.getAddress().getPort());
blockMeta.setLore(lore);
} else {
block = createItem("STAINED_GLASS_PANE", disabled.key(), disabled.value());
block = color(disabled);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.RED + server.getDisplayName());
LinkedList<String> lore = new LinkedList<String>();
@ -903,7 +919,7 @@ public class DefaultUIRenderer extends UIRenderer {
}
if (servers.size() == 0) {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
block = color(14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Server-Menu.No-Servers"));
block.setItemMeta(blockMeta);
@ -920,7 +936,7 @@ public class DefaultUIRenderer extends UIRenderer {
i = inv.getSize() - 9;
if (min != 0) {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
block = color(4);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Back-Arrow"));
block.setItemMeta(blockMeta);
@ -929,7 +945,7 @@ public class DefaultUIRenderer extends UIRenderer {
} else i += 2;
i++;
if (host == null || group == null || hasHistory()) {
block = createItem("STAINED_GLASS_PANE", ((host == null && group == null)?"BLUE_STAINED_GLASS_PANE":"RED_STAINED_GLASS_PANE"), (short) ((host == null && group == null)?11:14));
block = color(((host == null && group == null)? 11 : 14));
blockMeta = block.getItemMeta();
blockMeta.setDisplayName((host == null && group == null)?plugin.api.getLang("SubServers", "Interface.Server-Menu.Host-Menu"):plugin.api.getLang("SubServers", "Interface.Generic.Back"));
block.setItemMeta(blockMeta);
@ -939,7 +955,7 @@ public class DefaultUIRenderer extends UIRenderer {
i++;
}
if (servers.size() - 1 > max) {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
block = color(4);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Next-Arrow"));
block.setItemMeta(blockMeta);
@ -992,7 +1008,7 @@ public class DefaultUIRenderer extends UIRenderer {
lastVisitedObjects[0] = subserver;
ItemStack block;
ItemMeta blockMeta;
ItemStack div = createItem("STAINED_GLASS_PANE", "BLACK_STAINED_GLASS_PANE", (short) 15);
ItemStack div = color(15);
ItemMeta divMeta = div.getItemMeta();
divMeta.setDisplayName(ChatColor.RESET.toString());
div.setItemMeta(divMeta);
@ -1009,12 +1025,12 @@ public class DefaultUIRenderer extends UIRenderer {
Player player = Bukkit.getPlayer(this.player);
if (subserver.isRunning()) {
if (!permits(subserver, player, "subservers.subserver.%.*", "subservers.subserver.%.terminate")) {
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block = color(7);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GRAY+ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Terminate")));
blockMeta.setLore(Arrays.asList(plugin.api.getLang("SubServers", "Interface.Generic.Invalid-Permission").replace("$str$", "subservers.subserver.terminate." + name.toLowerCase())));
} else {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
block = color(14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Terminate"));
}
@ -1024,12 +1040,12 @@ public class DefaultUIRenderer extends UIRenderer {
inv.setItem(10, block);
if (!permits(subserver, player, "subservers.subserver.%.*", "subservers.subserver.%.stop")) {
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block = color(7);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GRAY+ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Stop")));
blockMeta.setLore(Arrays.asList(plugin.api.getLang("SubServers", "Interface.Generic.Invalid-Permission").replace("$str$", "subservers.subserver.stop." + name.toLowerCase())));
} else {
block = createItem("STAINED_GLASS_PANE", "MAGENTA_STAINED_GLASS_PANE", (short) 2);
block = color(2);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Stop"));
}
@ -1040,12 +1056,12 @@ public class DefaultUIRenderer extends UIRenderer {
inv.setItem(12, block);
if (!permits(subserver, player, "subservers.subserver.%.*", "subservers.subserver.%.command")) {
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block = color(7);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GRAY+ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Command")));
blockMeta.setLore(Arrays.asList(plugin.api.getLang("SubServers", "Interface.Generic.Invalid-Permission").replace("$str$", "subservers.subserver.command." + name.toLowerCase())));
} else {
block = createItem("STAINED_GLASS_PANE", "BLUE_STAINED_GLASS_PANE", (short) 3);
block = color(3);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Command"));
}
@ -1058,16 +1074,16 @@ public class DefaultUIRenderer extends UIRenderer {
inv.setItem(16, block);
} else {
if (!permits(subserver, player, "subservers.subserver.%.*", "subservers.subserver.%.start")) {
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block = color(7);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GRAY+ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Start")));
blockMeta.setLore(Arrays.asList(plugin.api.getLang("SubServers", "Interface.Generic.Invalid-Permission").replace("$str$", "subservers.subserver.start." + name.toLowerCase())));
} else if (!host.isAvailable() || !host.isEnabled() || !subserver.isAvailable() || !subserver.isEnabled() || subserver.getCurrentIncompatibilities().size() != 0) {
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block = color(7);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GRAY+ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Start")));
} else {
block = createItem("STAINED_GLASS_PANE", "LIME_STAINED_GLASS_PANE", (short) 5);
block = color(5);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Start"));
}
@ -1089,16 +1105,16 @@ public class DefaultUIRenderer extends UIRenderer {
inv.setItem(12, block);
if (!permits(subserver, player, "subservers.subserver.%.*", "subservers.subserver.%.update")) {
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block = color(7);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GRAY+ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Update")));
blockMeta.setLore(Arrays.asList(plugin.api.getLang("SubServers", "Interface.Generic.Invalid-Permission").replace("$str$", "subservers.subserver.update." + name.toLowerCase())));
} else if (!host.isAvailable() || !host.isEnabled() || !subserver.isAvailable() || subserver.getCurrentIncompatibilities().size() != 0) {
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block = color(7);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GRAY+ChatColor.stripColor(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Update")));
} else {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
block = color(4);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Update"));
}
@ -1115,7 +1131,7 @@ public class DefaultUIRenderer extends UIRenderer {
if (!host.isAvailable() || !host.isEnabled() || !subserver.isAvailable() || !subserver.isEnabled() || subserverPlugins.size() <= 0) {
block = div;
} else {
block = createItem("STAINED_GLASS_PANE", "BLUE_STAINED_GLASS_PANE", (short) 11);
block = color(11);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.SubServer-Admin.Plugins"));
block.setItemMeta(blockMeta);
@ -1124,7 +1140,8 @@ public class DefaultUIRenderer extends UIRenderer {
inv.setItem(28, block);
if (subserver.isRunning()) {
block = (subserver.getStopAction() == SubServer.StopAction.REMOVE_SERVER || subserver.getStopAction() == SubServer.StopAction.RECYCLE_SERVER || subserver.getStopAction() == SubServer.StopAction.DELETE_SERVER)?createItem("STAINED_GLASS_PANE", "BLUE_STAINED_GLASS_PANE", (short) 11):createItem("STAINED_GLASS_PANE", "LIME_STAINED_GLASS_PANE", (short) 5);
int blocktype = (subserver.getStopAction() == SubServer.StopAction.REMOVE_SERVER || subserver.getStopAction() == SubServer.StopAction.RECYCLE_SERVER || subserver.getStopAction() == SubServer.StopAction.DELETE_SERVER)? 11 : 5;
block = color(blocktype);
blockMeta = block.getItemMeta();
LinkedList<String> lore = new LinkedList<String>();
if (!subserver.getName().equals(subserver.getDisplayName()))
@ -1137,7 +1154,7 @@ public class DefaultUIRenderer extends UIRenderer {
lore.add(ChatColor.WHITE + ((plugin.config.get().getMap("Settings").getBoolean("Show-Addresses", false))?subserver.getAddress().getAddress().getHostAddress()+':':"") + subserver.getAddress().getPort());
blockMeta.setLore(lore);
} else if (subserver.isAvailable() && subserver.isEnabled() && subserver.getCurrentIncompatibilities().size() == 0) {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
block = color(4);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.YELLOW + subserver.getDisplayName());
LinkedList<String> lore = new LinkedList<String>();
@ -1147,7 +1164,7 @@ public class DefaultUIRenderer extends UIRenderer {
lore.add(ChatColor.WHITE + ((plugin.config.get().getMap("Settings").getBoolean("Show-Addresses", false))?subserver.getAddress().getAddress().getHostAddress()+':':"") + subserver.getAddress().getPort());
blockMeta.setLore(lore);
} else {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
block = color(14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.RED + subserver.getDisplayName());
LinkedList<String> lore = new LinkedList<String>();
@ -1171,7 +1188,7 @@ public class DefaultUIRenderer extends UIRenderer {
inv.setItem(32, block);
if (hasHistory()) {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
block = color(14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Back"));
block.setItemMeta(blockMeta);
@ -1205,7 +1222,7 @@ public class DefaultUIRenderer extends UIRenderer {
ItemStack block;
ItemMeta blockMeta;
ItemStack div = createItem("STAINED_GLASS_PANE", "BLACK_STAINED_GLASS_PANE", (short) 15);
ItemStack div = color(15);
ItemMeta divMeta = div.getItemMeta();
divMeta.setDisplayName(ChatColor.RESET.toString());
div.setItemMeta(divMeta);
@ -1217,7 +1234,7 @@ public class DefaultUIRenderer extends UIRenderer {
int area = (count % 9 == 0) ? count : ((count / 9) + 1) * 9;
Inventory inv = Bukkit.createInventory(null, 18 + area, plugin.api.getLang("SubServers", "Interface.SubServer-Plugin.Title").replace("$str$", subserver.getDisplayName()));
block = createItem("STAINED_GLASS_PANE", "GRAY_STAINED_GLASS_PANE", (short) 7);
block = color(7);
block.setItemMeta(divMeta);
while (i < area) {
inv.setItem(i, block);
@ -1245,7 +1262,7 @@ public class DefaultUIRenderer extends UIRenderer {
}
if (renderers.size() == 0) {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
block = color(14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.SubServer-Plugin.No-Plugins"));
block.setItemMeta(blockMeta);
@ -1262,7 +1279,7 @@ public class DefaultUIRenderer extends UIRenderer {
i = inv.getSize() - 9;
if (min != 0) {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
block = color(4);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Back-Arrow"));
block.setItemMeta(blockMeta);
@ -1271,7 +1288,7 @@ public class DefaultUIRenderer extends UIRenderer {
} else i += 2;
i++;
if (hasHistory()) {
block = createItem("STAINED_GLASS_PANE", "RED_STAINED_GLASS_PANE", (short) 14);
block = color(14);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Back"));
block.setItemMeta(blockMeta);
@ -1281,7 +1298,7 @@ public class DefaultUIRenderer extends UIRenderer {
i++;
}
if (renderers.size() - 1 > max) {
block = createItem("STAINED_GLASS_PANE", "YELLOW_STAINED_GLASS_PANE", (short) 4);
block = color(4);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(plugin.api.getLang("SubServers", "Interface.Generic.Next-Arrow"));
block.setItemMeta(blockMeta);

View File

@ -215,6 +215,7 @@ public abstract class UIRenderer {
* @param def Default to return if unable to parse
* @return ItemStack
*/
@SuppressWarnings({"deprecation", "JavaReflectionMemberAccess"})
public ItemStack parseItem(String str, ItemStack def) {
final Value<String> item = new Container<String>(str);
if (plugin.api.getGameVersion().compareTo(new Version("1.13")) < 0) {
@ -222,37 +223,41 @@ public abstract class UIRenderer {
// int
Matcher matcher = Pattern.compile("(?i)^(\\d+)$").matcher(item.value());
if (matcher.find()) {
return ItemStack.class.getConstructor(int.class, int.class).newInstance(Integer.parseInt(matcher.group(1)), 1);
return new ItemStack(Integer.parseInt(matcher.group(1)), 1);
}
// int:int
matcher.reset();
matcher = Pattern.compile("(?i)^(\\d+):(\\d+)$").matcher(item.value());
if (matcher.find()) {
return ItemStack.class.getConstructor(int.class, int.class, short.class).newInstance(Integer.parseInt(matcher.group(1)), 1, Short.parseShort(matcher.group(2)));
return new ItemStack(Integer.parseInt(matcher.group(1)), 1, Short.parseShort(matcher.group(2)));
}
} catch (Exception e) {
return def;
}
}
// minecraft:name
if (item.value().toLowerCase().startsWith("minecraft:")) {
item.value(item.value().substring(10));
} else
// bukkit:name
if (item.value().toLowerCase().startsWith("bukkit:")) {
} else if (item.value().toLowerCase().startsWith("bukkit:")) {
item.value(item.value().substring(7));
if (!Util.isException(() -> Material.valueOf(item.value().toUpperCase()))) {
return new ItemStack(Material.valueOf(item.value().toUpperCase()), 1);
}
// Legacy Material Name
Matcher matcher = Pattern.compile("(?i)\\W(\\d+)$").matcher(item.value());
try {
if (matcher.find()) {
item.value(item.value().substring(0, item.value().length() - matcher.group().length()));
return new ItemStack(Material.valueOf(item.value().toUpperCase()), 1, Short.parseShort(matcher.group(1)));
} else {
return new ItemStack(Material.valueOf(item.value().toUpperCase()), 1);
}
} catch (IllegalArgumentException e) {}
}
// material name
// Material Name
if (plugin.api.getGameVersion().compareTo(new Version("1.13")) < 0) {
if (!Util.isException(() -> Material.valueOf(item.value().toUpperCase()))) {
try {
return new ItemStack(Material.valueOf(item.value().toUpperCase()), 1);
}
} catch (IllegalArgumentException e) {}
} else try {
if (Material.class.getMethod("getMaterial", String.class, boolean.class).invoke(null, item.value().toUpperCase(), false) != null) {
return new ItemStack((Material) Material.class.getMethod("getMaterial", String.class, boolean.class).invoke(null, item.value().toUpperCase(), false), 1);

View File

@ -250,13 +250,13 @@ public final class ExProxy extends BungeeCommon implements Listener {
private void post() {
if (!config.get().getMap("Settings").getRawStringList("Disabled-Overrides", Collections.emptyList()).contains("/server"))
getPluginManager().registerCommand(plugin, SubCommand.BungeeServer.newInstance(this, "server").value());
getPluginManager().registerCommand(plugin, new SubCommand.BungeeServer(this, "server"));
if (!config.get().getMap("Settings").getRawStringList("Disabled-Overrides", Collections.emptyList()).contains("/glist"))
getPluginManager().registerCommand(plugin, new SubCommand.BungeeList(this, "glist"));
getPluginManager().registerCommand(plugin, SubCommand.newInstance(this, "subservers").value());
getPluginManager().registerCommand(plugin, SubCommand.newInstance(this, "subserver").value());
getPluginManager().registerCommand(plugin, SubCommand.newInstance(this, "sub").value());
getPluginManager().registerCommand(plugin, new SubCommand(this, "subservers"));
getPluginManager().registerCommand(plugin, new SubCommand(this, "subserver"));
getPluginManager().registerCommand(plugin, new SubCommand(this, "sub"));
GalaxiCommand.group(SubCommand.class);
if (getReconnectHandler() != null && getReconnectHandler().getClass().equals(SmartFallback.class))

View File

@ -13,7 +13,6 @@ import net.ME1312.Galaxi.Library.Util;
import net.ME1312.Galaxi.Library.Version.Version;
import net.ME1312.SubData.Client.SubDataClient;
import net.ME1312.SubData.Client.SubDataSender;
import net.ME1312.SubServers.Bungee.Library.Compatibility.CommandX;
import net.ME1312.SubServers.Bungee.Library.Compatibility.Galaxi.GalaxiInfo;
import net.ME1312.SubServers.Client.Common.Network.API.*;
import net.ME1312.SubServers.Client.Common.Network.Packet.PacketCreateServer;
@ -34,6 +33,7 @@ import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.config.ServerInfo;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.plugin.TabExecutor;
import net.md_5.bungee.command.ConsoleCommandSender;
import java.io.BufferedReader;
@ -48,7 +48,7 @@ import static net.ME1312.SubServers.Bungee.Library.Compatibility.Galaxi.GalaxiCo
import static net.ME1312.SubServers.Bungee.Library.Compatibility.Galaxi.GalaxiCommand.help;
@SuppressWarnings("deprecation")
public final class SubCommand extends CommandX {
public final class SubCommand extends Command implements TabExecutor {
static HashMap<UUID, HashMap<ServerInfo, Pair<Long, Boolean>>> permitted = new HashMap<UUID, HashMap<ServerInfo, Pair<Long, Boolean>>>();
private TreeMap<String, Proxy> proxyCache = new TreeMap<String, Proxy>();
private TreeMap<String, Host> hostCache = new TreeMap<String, Host>();
@ -58,17 +58,7 @@ public final class SubCommand extends CommandX {
private ExProxy plugin;
private String label;
static Pair<SubCommand, CommandX> newInstance(ExProxy plugin, String command) {
Pair<SubCommand, CommandX> cmd = new ContainedPair<>(new SubCommand(plugin, command), null);
CommandX now = cmd.key();
//if (plugin.api.getGameVersion()[plugin.api.getGameVersion().length - 1].compareTo(new Version("1.13")) >= 0) { // TODO Future Command Validator API?
// now = new net.ME1312.SubServers.Sync.Library.Compatibility.mc1_13.CommandX(cmd.name());
//}
cmd.value(now);
return cmd;
}
private SubCommand(ExProxy plugin, String command) {
SubCommand(ExProxy plugin, String command) {
super(command);
this.plugin = plugin;
this.label = '/' + command;
@ -967,14 +957,14 @@ public final class SubCommand extends CommandX {
* @return The validator's response and list of possible arguments
*/
@SuppressWarnings("unchecked")
public Pair<String, List<String>> suggestArguments(CommandSender sender, String[] args) {
public List<String> onTabComplete(CommandSender sender, String[] args) {
String Last = (args.length > 0)?args[args.length - 1]:"";
String last = Last.toLowerCase();
if (plugin.api.getSubDataNetwork()[0] == null) {
if (sender instanceof ConsoleCommandSender)
new IllegalStateException("SubData is not connected").printStackTrace();
return new ContainedPair<>(null, Collections.emptyList());
return Collections.emptyList();
} else if (sender instanceof ProxiedPlayer && (!permitted.keySet().contains(((ProxiedPlayer) sender).getUniqueId()) || !permitted.get(((ProxiedPlayer) sender).getUniqueId()).keySet().contains(((ProxiedPlayer) sender).getServer().getInfo())
|| !permitted.get(((ProxiedPlayer) sender).getUniqueId()).get(((ProxiedPlayer) sender).getServer().getInfo()).value())) {
if (permitted.keySet().contains(((ProxiedPlayer) sender).getUniqueId()) && permitted.get(((ProxiedPlayer) sender).getUniqueId()).keySet().contains(((ProxiedPlayer) sender).getServer().getInfo())
@ -995,7 +985,7 @@ public final class SubCommand extends CommandX {
}));
}
}
return new ContainedPair<>(null, Collections.emptyList());
return Collections.emptyList();
} else if (args.length <= 1) {
List<String> cmds = new ArrayList<>();
cmds.addAll(Arrays.asList("help", "list", "info", "status", "version", "start", "restart", "stop", "kill", "terminate", "cmd", "command", "create", "update", "upgrade"));
@ -1007,7 +997,7 @@ public final class SubCommand extends CommandX {
for (String cmd : cmds) {
if (cmd.startsWith(last)) list.add(Last + cmd.substring(last.length()));
}
return new ContainedPair<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Command.Generic.Invalid-Subcommand").replace("$str$", args[0]):null, list);
return list;
} else {
if (args[0].equals("info") || args[0].equals("status")) {
ReturnRunnable<Collection<String>> getPlayers = () -> {
@ -1056,7 +1046,7 @@ public final class SubCommand extends CommandX {
if (!list.contains(player) && player.toLowerCase().startsWith(last))
list.add(Last + player.substring(last.length()));
}
return new ContainedPair<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Command.Info.Unknown").replace("$str$", args[0]):null, list);
return list;
} else if (args.length == 3) {
List<String> list = new ArrayList<String>();
@ -1100,16 +1090,16 @@ public final class SubCommand extends CommandX {
}
break;
}
return new ContainedPair<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Command.Info.Unknown").replace("$str$", args[0]):null, list);
return list;
} else {
return new ContainedPair<>(null, Collections.emptyList());
return Collections.emptyList();
}
} else if (!(sender instanceof ProxiedPlayer) && (args[0].equals("restore"))) {
/* if (args[0].equals("restore")) */ {
if (args.length == 2) {
return new ContainedPair<>(null, Collections.singletonList("<Subserver>"));
return Collections.singletonList("<Subserver>");
} else {
return new ContainedPair<>(null, Collections.emptyList());
return Collections.emptyList();
}
}
} else if (args[0].equals("start") ||
@ -1135,7 +1125,7 @@ public final class SubCommand extends CommandX {
if (Arrays.binarySearch(select.selection, name.toLowerCase()) < 0 && name.toLowerCase().startsWith(last)) list.add(Last + name.substring(last.length()));
}
}
return new ContainedPair<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Command.Generic.Unknown-Host").replace("$str$", select.last):null, list);
return list;
} else if (last.startsWith(":")) {
Map<String, List<Server>> groups = groupCache;
if (groups.size() > 0) {
@ -1146,7 +1136,7 @@ public final class SubCommand extends CommandX {
if (Arrays.binarySearch(select.selection, group.toLowerCase()) < 0 && group.toLowerCase().startsWith(last)) list.add(Last + group.substring(last.length()));
}
}
return new ContainedPair<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Command.Generic.Unknown-Group").replace("$str$", select.last):null, list);
return list;
} else {
Map<String, ServerImpl> subservers = plugin.servers;
if (subservers.size() > 0) {
@ -1156,32 +1146,32 @@ public final class SubCommand extends CommandX {
if (server instanceof SubServerImpl && Arrays.binarySearch(select.selection, server.getName().toLowerCase()) < 0 && server.getName().toLowerCase().startsWith(last)) list.add(Last + server.getName().substring(last.length()));
}
}
return new ContainedPair<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Command.Generic.Unknown-SubServer").replace("$str$", select.last):null, list);
return list;
}
} else if (args[0].equals("cmd") || args[0].equals("command")) {
if (select.args.length == 3) {
return new ContainedPair<>(null, Collections.singletonList("<Command>"));
return Collections.singletonList("<Command>");
} else {
return new ContainedPair<>(null, Collections.singletonList("[Args...]"));
return Collections.singletonList("[Args...]");
}
} else if (args[0].equals("update") || args[0].equals("upgrade")) {
if (select.args.length == 3) {
return new ContainedPair<>(null, Arrays.asList("[Template]", "[Version]"));
return Arrays.asList("[Template]", "[Version]");
} else if (select.args.length == 4) {
return new ContainedPair<>(null, Collections.singletonList("<Version>"));
return Collections.singletonList("<Version>");
}
}
return new ContainedPair<>(null, Collections.emptyList());
return Collections.emptyList();
} else if (args[0].equals("create")) {
updateCache();
if (args.length == 2) {
return new ContainedPair<>(null, Collections.singletonList("<Name>"));
return Collections.singletonList("<Name>");
} else if (args.length == 3) {
List<String> list = new ArrayList<String>();
for (Host host : hostCache.values()) {
if (host.getName().toLowerCase().startsWith(last)) list.add(Last + host.getName().substring(last.length()));
}
return new ContainedPair<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Command.Generic.Unknown-Host").replace("$str$", args[0]):null, list);
return list;
} else if (args.length == 4) {
List<String> list = new ArrayList<String>();
Map<String, Host> hosts = hostCache;
@ -1192,18 +1182,18 @@ public final class SubCommand extends CommandX {
if (template.getName().toLowerCase().startsWith(last)) list.add(Last + template.getName().substring(last.length()));
}
}
return new ContainedPair<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Command.Creator.Invalid-Template").replace("$str$", args[0]):null, list);
return list;
} else if (args.length == 5) {
return new ContainedPair<>(null, Collections.singletonList("[Version]"));
return Collections.singletonList("[Version]");
} else if (args.length == 6) {
if (last.length() > 0) {
if (Util.isException(() -> Integer.parseInt(last)) || Integer.parseInt(last) <= 0 || Integer.parseInt(last) > 65535) {
return new ContainedPair<>(plugin.api.getLang("SubServers", "Command.Creator.Invalid-Port"), Collections.emptyList());
return Collections.emptyList();
}
}
return new ContainedPair<>(null, Collections.singletonList("[Port]"));
return Collections.singletonList("[Port]");
} else {
return new ContainedPair<>(null, Collections.emptyList());
return Collections.emptyList();
}
} else if (sender instanceof ProxiedPlayer && (args[0].equals("tp") || args[0].equals("teleport"))) {
if (args.length == 2 || args.length == 3) {
@ -1232,12 +1222,12 @@ public final class SubCommand extends CommandX {
for (ServerImpl server : plugin.servers.values()) {
if (server.getName().toLowerCase().startsWith(last)) list.add(Last + server.getName().substring(last.length()));
}
return new ContainedPair<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Command.Generic.Unknown-Server").replace("$str$", args[0]):null, list);
return list;
} else {
return new ContainedPair<>(null, Collections.emptyList());
return Collections.emptyList();
}
} else {
return new ContainedPair<>(plugin.api.getLang("SubServers", "Command.Generic.Invalid-Subcommand").replace("$str$", args[0]), Collections.emptyList());
return Collections.emptyList();
}
}
}
@ -1427,9 +1417,9 @@ public final class SubCommand extends CommandX {
* BungeeCord /server
*/
@SuppressWarnings("unchecked")
public static final class BungeeServer extends CommandX {
public static final class BungeeServer extends Command implements TabExecutor {
private ExProxy plugin;
private BungeeServer(ExProxy plugin, String command) {
BungeeServer(ExProxy plugin, String command) {
super(command, "bungeecord.command.server");
this.plugin = plugin;
@ -1444,16 +1434,6 @@ public final class SubCommand extends CommandX {
);
}
static Pair<BungeeServer, CommandX> newInstance(ExProxy plugin, String command) {
Pair<BungeeServer, CommandX> cmd = new ContainedPair<>(new BungeeServer(plugin, command), null);
CommandX now = cmd.key();
//if (plugin.api.getGameVersion()[plugin.api.getGameVersion().length - 1].compareTo(new Version("1.13")) >= 0) { // TODO Future Command Validator API?
// now = new net.ME1312.SubServers.Sync.Library.Compatibility.mc1_13.CommandX(cmd.name());
//}
cmd.value(now);
return cmd;
}
/**
* Override /server
*
@ -1510,7 +1490,7 @@ public final class SubCommand extends CommandX {
* @param args Arguments
* @return The validator's response and list of possible arguments
*/
public Pair<String, List<String>> suggestArguments(CommandSender sender, String[] args) {
public List<String> onTabComplete(CommandSender sender, String[] args) {
if (plugin.lang != null && args.length <= 1) {
String last = (args.length > 0)?args[args.length - 1].toLowerCase():"";
List<String> list = new ArrayList<String>();
@ -1518,15 +1498,15 @@ public final class SubCommand extends CommandX {
for (ServerImpl server : plugin.servers.values()) {
if (!server.isHidden()) list.add(server.getName());
}
return new ContainedPair<>(null, new LinkedList<>(list));
return list;
} else {
for (ServerImpl server : plugin.servers.values()) {
if (server.getName().toLowerCase().startsWith(last) && !server.isHidden()) list.add(server.getName());
}
return new ContainedPair<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Bungee.Server.Invalid").replace("$str$", args[0]):null, list);
return list;
}
} else {
return new ContainedPair<>(null, Collections.emptyList());
return Collections.emptyList();
}
}
}
@ -1534,7 +1514,6 @@ public final class SubCommand extends CommandX {
/**
* BungeeCord /glist
*/
@SuppressWarnings("unchecked")
public static final class BungeeList extends Command {
private ExProxy plugin;
BungeeList(ExProxy plugin, String command) {