mirror of
https://github.com/ME1312/SubServers-2.git
synced 2025-01-26 17:41:20 +01:00
Create a more straightforward way for interacting with unstable methods
This commit is contained in:
parent
ae1a9b990d
commit
319618fe71
@ -150,6 +150,7 @@ public abstract class SubCreator {
|
||||
public String toString() {
|
||||
YAMLSection tinfo = new YAMLSection();
|
||||
tinfo.set("enabled", isEnabled());
|
||||
tinfo.set("name", getName());
|
||||
tinfo.set("display", getDisplayName());
|
||||
tinfo.set("icon", getIcon());
|
||||
tinfo.set("type", getType().toString());
|
||||
|
@ -26,8 +26,7 @@ public final class Launch {
|
||||
public static void main(String[] args) throws Exception {
|
||||
System.setProperty("apple.laf.useScreenMenuBar", "true");
|
||||
|
||||
Container<Boolean> bungee = new Container<Boolean>(false);
|
||||
if (Util.isException(() -> bungee.set(Class.forName("net.md_5.bungee.BungeeCord") != null)) && !bungee.get()) {
|
||||
if (Util.getDespiteException(() -> Class.forName("net.md_5.bungee.BungeeCord") != null, false)) {
|
||||
System.out.println("");
|
||||
System.out.println("*******************************************");
|
||||
System.out.println("*** Error: BungeeCord.jar Doesn't Exist ***");
|
||||
@ -100,8 +99,7 @@ public final class Launch {
|
||||
|
||||
if (!options.has("noconsole")) {
|
||||
try {
|
||||
Container<Boolean> proprietary = new Container<Boolean>(false);
|
||||
if (!Util.isException(() -> proprietary.set(Class.forName("io.github.waterfallmc.waterfall.console.WaterfallConsole") != null)) && proprietary.get()) {
|
||||
if (!Util.getDespiteException(() -> Class.forName("io.github.waterfallmc.waterfall.console.WaterfallConsole") != null, false)) {
|
||||
Class.forName("io.github.waterfallmc.waterfall.console.WaterfallConsole").getMethod("readCommands").invoke(null);
|
||||
} else {
|
||||
plugin.canSudo = true;
|
||||
|
@ -11,6 +11,9 @@ import java.util.zip.ZipOutputStream;
|
||||
*/
|
||||
public final class Util {
|
||||
private Util(){}
|
||||
public interface ExceptionReturnRunnable<R> {
|
||||
R run() throws Throwable;
|
||||
}
|
||||
public interface ExceptionRunnable {
|
||||
void run() throws Throwable;
|
||||
}
|
||||
@ -128,6 +131,22 @@ public final class Util {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a variable from a method which may throw an exception
|
||||
*
|
||||
* @param runnable Runnable
|
||||
* @param def Default value when an exception is thrown
|
||||
* @param <R> Variable Type
|
||||
* @return Returns value or default depending on if an exception is thrown
|
||||
*/
|
||||
public static <R> R getDespiteException(ExceptionReturnRunnable<R> runnable, R def) {
|
||||
try {
|
||||
return runnable.run();
|
||||
} catch (Throwable e) {
|
||||
return def;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if an Exception will occur
|
||||
*
|
||||
|
@ -675,15 +675,14 @@ public final class SubAPI {
|
||||
*/
|
||||
public Version[] getGameVersion() {
|
||||
if (GAME_VERSION == null) {
|
||||
Container<Boolean> valid = new Container<Boolean>(false);
|
||||
if (System.getProperty("subservers.minecraft.version", "").length() > 0) {
|
||||
return new Version[]{new Version(System.getProperty("subservers.minecraft.version"))};
|
||||
} else if (!Util.isException(() -> valid.set(ProtocolConstants.SUPPORTED_VERSIONS != null)) && valid.get()) {
|
||||
} else if (!Util.getDespiteException(() -> ProtocolConstants.SUPPORTED_VERSIONS != null, false)) {
|
||||
List<Version> versions = new LinkedList<Version>();
|
||||
for (String version : ProtocolConstants.SUPPORTED_VERSIONS) versions.add(new Version(version));
|
||||
Collections.sort(versions);
|
||||
return versions.toArray(new Version[versions.size()]);
|
||||
} else if (!Util.isException(() -> valid.set(plugin.getGameVersion() != null)) && valid.get()) {
|
||||
} else if (!Util.getDespiteException(() -> plugin.getGameVersion() != null, false)) {
|
||||
String raw = plugin.getGameVersion();
|
||||
if (raw.contains("-") || raw.contains(",")) {
|
||||
List<Version> versions = new LinkedList<Version>();
|
||||
|
@ -8,6 +8,9 @@ import java.util.*;
|
||||
*/
|
||||
public final class Util {
|
||||
private Util(){}
|
||||
public interface ExceptionReturnRunnable<R> {
|
||||
R run() throws Throwable;
|
||||
}
|
||||
public interface ExceptionRunnable {
|
||||
void run() throws Throwable;
|
||||
}
|
||||
@ -125,6 +128,22 @@ public final class Util {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a variable from a method which may throw an exception
|
||||
*
|
||||
* @param runnable Runnable
|
||||
* @param def Default value when an exception is thrown
|
||||
* @param <R> Variable Type
|
||||
* @return Returns value or default depending on if an exception is thrown
|
||||
*/
|
||||
public static <R> R getDespiteException(ExceptionReturnRunnable<R> runnable, R def) {
|
||||
try {
|
||||
return runnable.run();
|
||||
} catch (Throwable e) {
|
||||
return def;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if an Exception will occur
|
||||
*
|
||||
@ -140,8 +159,6 @@ public final class Util {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Delete a Directory
|
||||
*
|
||||
|
@ -37,7 +37,7 @@ public class SubCreator {
|
||||
private YAMLSection raw;
|
||||
private ServerType type;
|
||||
|
||||
private ServerTemplate(YAMLSection raw) {
|
||||
public ServerTemplate(YAMLSection raw) {
|
||||
this.raw = raw;
|
||||
this.type = (Util.isException(() -> ServerType.valueOf(raw.getRawString("type").toUpperCase())))?ServerType.valueOf(raw.getRawString("type").toUpperCase()):ServerType.CUSTOM;
|
||||
}
|
||||
@ -91,6 +91,7 @@ public class SubCreator {
|
||||
public String toString() {
|
||||
YAMLSection tinfo = new YAMLSection();
|
||||
tinfo.set("enabled", isEnabled());
|
||||
tinfo.set("name", getName());
|
||||
tinfo.set("display", getDisplayName());
|
||||
tinfo.set("icon", getIcon());
|
||||
tinfo.set("type", getType().toString());
|
||||
|
@ -92,10 +92,7 @@ public final class SubCommand implements CommandExecutor {
|
||||
plugin.subdata.sendPacket(new PacketDownloadServerList(null, null, data -> {
|
||||
int i = 0;
|
||||
boolean sent = false;
|
||||
Container<Boolean> spigot = new Container<Boolean>(false);
|
||||
if (!Util.isException(() -> {
|
||||
if (Class.forName("org.spigotmc.SpigotConfig") != null) spigot.set(true);
|
||||
}) && spigot.get() && sender instanceof Player) {
|
||||
if (!Util.getDespiteException(() -> Class.forName("org.spigotmc.SpigotConfig") != null, false) && sender instanceof Player) {
|
||||
net.md_5.bungee.api.chat.TextComponent div = new net.md_5.bungee.api.chat.TextComponent(plugin.api.getLang("SubServers", "Command.List.Divider"));
|
||||
if (data.getSection("groups").getKeys().size() > 0) {
|
||||
sender.sendMessage(plugin.api.getLang("SubServers", "Command.List.Group-Header"));
|
||||
|
@ -8,6 +8,9 @@ import java.util.*;
|
||||
*/
|
||||
public final class Util {
|
||||
private Util(){}
|
||||
public interface ExceptionReturnRunnable<R> {
|
||||
R run() throws Throwable;
|
||||
}
|
||||
public interface ExceptionRunnable {
|
||||
void run() throws Throwable;
|
||||
}
|
||||
@ -125,6 +128,22 @@ public final class Util {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a variable from a method which may throw an exception
|
||||
*
|
||||
* @param runnable Runnable
|
||||
* @param def Default value when an exception is thrown
|
||||
* @param <R> Variable Type
|
||||
* @return Returns value or default depending on if an exception is thrown
|
||||
*/
|
||||
public static <R> R getDespiteException(ExceptionReturnRunnable<R> runnable, R def) {
|
||||
try {
|
||||
return runnable.run();
|
||||
} catch (Throwable e) {
|
||||
return def;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if an Exception will occur
|
||||
*
|
||||
@ -140,8 +159,6 @@ public final class Util {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Delete a Directory
|
||||
*
|
||||
|
@ -36,7 +36,7 @@ public class SubCreator {
|
||||
private YAMLSection raw;
|
||||
private ServerType type;
|
||||
|
||||
private ServerTemplate(YAMLSection raw) {
|
||||
public ServerTemplate(YAMLSection raw) {
|
||||
this.raw = raw;
|
||||
this.type = (Util.isException(() -> ServerType.valueOf(raw.getRawString("type").toUpperCase())))?ServerType.valueOf(raw.getRawString("type").toUpperCase()):ServerType.CUSTOM;
|
||||
}
|
||||
@ -90,6 +90,7 @@ public class SubCreator {
|
||||
public String toString() {
|
||||
YAMLSection tinfo = new YAMLSection();
|
||||
tinfo.set("enabled", isEnabled());
|
||||
tinfo.set("name", getName());
|
||||
tinfo.set("display", getDisplayName());
|
||||
tinfo.set("icon", getIcon());
|
||||
tinfo.set("type", getType().toString());
|
||||
|
@ -9,6 +9,7 @@ import net.ME1312.SubServers.Host.Library.NamedContainer;
|
||||
import net.ME1312.SubServers.Host.Library.UniversalFile;
|
||||
import net.ME1312.SubServers.Host.Library.Util;
|
||||
import net.ME1312.SubServers.Host.Library.Version.Version;
|
||||
import net.ME1312.SubServers.Host.Network.API.SubCreator.ServerType;
|
||||
import net.ME1312.SubServers.Host.Network.Packet.PacketExCreateServer;
|
||||
import net.ME1312.SubServers.Host.Network.Packet.PacketOutExLogMessage;
|
||||
import net.ME1312.SubServers.Host.ExHost;
|
||||
@ -23,7 +24,6 @@ import java.io.*;
|
||||
import java.net.URL;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.*;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* Internal SubCreator Class
|
||||
@ -32,7 +32,7 @@ public class SubCreator {
|
||||
private ExHost host;
|
||||
private TreeMap<String, NamedContainer<Thread, NamedContainer<SubLogger, Process>>> thread;
|
||||
|
||||
public static class ServerTemplate {
|
||||
public static class ServerTemplate extends net.ME1312.SubServers.Host.Network.API.SubCreator.ServerTemplate {
|
||||
private String name;
|
||||
private String nick = null;
|
||||
private boolean enabled;
|
||||
@ -51,7 +51,7 @@ public class SubCreator {
|
||||
* @param options Configuration Options
|
||||
*/
|
||||
public ServerTemplate(String name, boolean enabled, String icon, File directory, YAMLSection build, YAMLSection options) {
|
||||
if (Util.isNull(name, enabled, directory, build, options)) throw new NullPointerException();
|
||||
super(toRaw(name, enabled, icon, directory, build, options));
|
||||
if (name.contains(" ")) throw new InvalidTemplateException("Template names cannot have spaces: " + name);
|
||||
this.name = name;
|
||||
this.enabled = enabled;
|
||||
@ -165,17 +165,16 @@ public class SubCreator {
|
||||
public YAMLSection getConfigOptions() {
|
||||
return options;
|
||||
}
|
||||
}
|
||||
public enum ServerType {
|
||||
SPIGOT,
|
||||
VANILLA,
|
||||
FORGE,
|
||||
SPONGE,
|
||||
CUSTOM;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return super.toString().substring(0, 1).toUpperCase()+super.toString().substring(1).toLowerCase();
|
||||
private static YAMLSection toRaw(String name, boolean enabled, String icon, File directory, YAMLSection build, YAMLSection options) {
|
||||
if (Util.isNull(name, enabled, directory, build, options)) throw new NullPointerException();
|
||||
YAMLSection tinfo = new YAMLSection();
|
||||
tinfo.set("enabled", enabled);
|
||||
tinfo.set("name", name);
|
||||
tinfo.set("display", name);
|
||||
tinfo.set("icon", icon);
|
||||
tinfo.set("type", (build.contains("Server-Type"))?ServerType.valueOf(build.getRawString("Server-Type").toUpperCase()):ServerType.CUSTOM);
|
||||
return tinfo;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -11,6 +11,9 @@ import java.util.zip.ZipOutputStream;
|
||||
*/
|
||||
public final class Util {
|
||||
private Util(){}
|
||||
public interface ExceptionReturnRunnable<R> {
|
||||
R run() throws Throwable;
|
||||
}
|
||||
public interface ExceptionRunnable {
|
||||
void run() throws Throwable;
|
||||
}
|
||||
@ -128,6 +131,22 @@ public final class Util {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a variable from a method which may throw an exception
|
||||
*
|
||||
* @param runnable Runnable
|
||||
* @param def Default value when an exception is thrown
|
||||
* @param <R> Variable Type
|
||||
* @return Returns value or default depending on if an exception is thrown
|
||||
*/
|
||||
public static <R> R getDespiteException(ExceptionReturnRunnable<R> runnable, R def) {
|
||||
try {
|
||||
return runnable.run();
|
||||
} catch (Throwable e) {
|
||||
return def;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if an Exception will occur
|
||||
*
|
||||
|
@ -36,7 +36,7 @@ public class SubCreator {
|
||||
private YAMLSection raw;
|
||||
private ServerType type;
|
||||
|
||||
private ServerTemplate(YAMLSection raw) {
|
||||
public ServerTemplate(YAMLSection raw) {
|
||||
this.raw = raw;
|
||||
this.type = (Util.isException(() -> ServerType.valueOf(raw.getRawString("type").toUpperCase())))? ServerType.valueOf(raw.getRawString("type").toUpperCase()): ServerType.CUSTOM;
|
||||
}
|
||||
@ -90,6 +90,7 @@ public class SubCreator {
|
||||
public String toString() {
|
||||
YAMLSection tinfo = new YAMLSection();
|
||||
tinfo.set("enabled", isEnabled());
|
||||
tinfo.set("name", getName());
|
||||
tinfo.set("display", getDisplayName());
|
||||
tinfo.set("icon", getIcon());
|
||||
tinfo.set("type", getType().toString());
|
||||
|
@ -26,8 +26,7 @@ public final class Launch {
|
||||
public static void main(String[] args) throws Exception {
|
||||
System.setProperty("apple.laf.useScreenMenuBar", "true");
|
||||
|
||||
Container<Boolean> bungee = new Container<Boolean>(false);
|
||||
if (Util.isException(() -> bungee.set(Class.forName("net.md_5.bungee.BungeeCord") != null)) && !bungee.get()) {
|
||||
if (Util.getDespiteException(() -> Class.forName("net.md_5.bungee.BungeeCord") != null, false)) {
|
||||
System.out.println("");
|
||||
System.out.println("*******************************************");
|
||||
System.out.println("*** Error: BungeeCord.jar Doesn't Exist ***");
|
||||
@ -100,8 +99,7 @@ public final class Launch {
|
||||
|
||||
if (!options.has("noconsole")) {
|
||||
try {
|
||||
Container<Boolean> proprietary = new Container<Boolean>(false);
|
||||
if (!Util.isException(() -> proprietary.set(Class.forName("io.github.waterfallmc.waterfall.console.WaterfallConsole") != null)) && proprietary.get()) {
|
||||
if (!Util.getDespiteException(() -> Class.forName("io.github.waterfallmc.waterfall.console.WaterfallConsole") != null, false)) {
|
||||
Class.forName("io.github.waterfallmc.waterfall.console.WaterfallConsole").getMethod("readCommands").invoke(null);
|
||||
} else {
|
||||
String line;
|
||||
|
@ -8,7 +8,10 @@ import java.util.*;
|
||||
*/
|
||||
public final class Util {
|
||||
private Util(){}
|
||||
public interface ExceptionRunnable {
|
||||
public interface ExceptionReturnRunnable<R> {
|
||||
R run() throws Throwable;
|
||||
}
|
||||
public interface ExceptionRunnable<R> {
|
||||
void run() throws Throwable;
|
||||
}
|
||||
public interface ReturnRunnable<R> {
|
||||
@ -125,6 +128,22 @@ public final class Util {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a variable from a method which may throw an exception
|
||||
*
|
||||
* @param runnable Runnable
|
||||
* @param def Default value when an exception is thrown
|
||||
* @param <R> Variable Type
|
||||
* @return Returns value or default depending on if an exception is thrown
|
||||
*/
|
||||
public static <R> R getDespiteException(ExceptionReturnRunnable<R> runnable, R def) {
|
||||
try {
|
||||
return runnable.run();
|
||||
} catch (Throwable e) {
|
||||
return def;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if an Exception will occur
|
||||
*
|
||||
|
@ -36,7 +36,7 @@ public class SubCreator {
|
||||
private YAMLSection raw;
|
||||
private ServerType type;
|
||||
|
||||
private ServerTemplate(YAMLSection raw) {
|
||||
public ServerTemplate(YAMLSection raw) {
|
||||
this.raw = raw;
|
||||
this.type = (Util.isException(() -> ServerType.valueOf(raw.getRawString("type").toUpperCase())))? ServerType.valueOf(raw.getRawString("type").toUpperCase()): ServerType.CUSTOM;
|
||||
}
|
||||
@ -90,6 +90,7 @@ public class SubCreator {
|
||||
public String toString() {
|
||||
YAMLSection tinfo = new YAMLSection();
|
||||
tinfo.set("enabled", isEnabled());
|
||||
tinfo.set("name", getName());
|
||||
tinfo.set("display", getDisplayName());
|
||||
tinfo.set("icon", getIcon());
|
||||
tinfo.set("type", getType().toString());
|
||||
|
@ -357,15 +357,14 @@ public final class SubAPI {
|
||||
*/
|
||||
public Version[] getGameVersion() {
|
||||
if (GAME_VERSION == null) {
|
||||
Container<Boolean> valid = new Container<Boolean>(false);
|
||||
if (System.getProperty("subservers.minecraft.version", "").length() > 0) {
|
||||
return new Version[]{new Version(System.getProperty("subservers.minecraft.version"))};
|
||||
} else if (!Util.isException(() -> valid.set(ProtocolConstants.SUPPORTED_VERSIONS != null)) && valid.get()) {
|
||||
} else if (!Util.getDespiteException(() -> ProtocolConstants.SUPPORTED_VERSIONS != null, false)) {
|
||||
List<Version> versions = new LinkedList<Version>();
|
||||
for (String version : ProtocolConstants.SUPPORTED_VERSIONS) versions.add(new Version(version));
|
||||
Collections.sort(versions);
|
||||
return versions.toArray(new Version[versions.size()]);
|
||||
} else if (!Util.isException(() -> valid.set(plugin.getGameVersion() != null)) && valid.get()) {
|
||||
} else if (!Util.getDespiteException(() -> plugin.getGameVersion() != null, false)) {
|
||||
String raw = plugin.getGameVersion();
|
||||
if (raw.contains("-") || raw.contains(",")) {
|
||||
List<Version> versions = new LinkedList<Version>();
|
||||
|
Loading…
Reference in New Issue
Block a user