#31 Add environment variables to SubCreator scripts
This commit is contained in:
parent
6218b873ca
commit
9b01aebd87
|
@ -54,7 +54,7 @@ public class ExternalSubCreator extends SubCreator {
|
|||
templates.clear();
|
||||
if (new UniversalFile(host.plugin.dir, "SubServers:Templates").exists()) for (File file : new UniversalFile(host.plugin.dir, "SubServers:Templates").listFiles()) {
|
||||
try {
|
||||
if (file.isDirectory()) {
|
||||
if (file.isDirectory() && !file.getName().endsWith(".x")) {
|
||||
YAMLSection config = (new UniversalFile(file, "template.yml").exists())?new YAMLConfig(new UniversalFile(file, "template.yml")).get().getSection("Template", new YAMLSection()):new YAMLSection();
|
||||
ServerTemplate template = new ServerTemplate(file.getName(), config.getBoolean("Enabled", true), config.getRawString("Icon", "::NULL::"), file, config.getSection("Build", new YAMLSection()), config.getSection("Settings", new YAMLSection()));
|
||||
templates.put(file.getName().toLowerCase(), template);
|
||||
|
|
|
@ -62,7 +62,7 @@ public class InternalSubCreator extends SubCreator {
|
|||
private YAMLSection build(File dir, ServerTemplate template, List<ServerTemplate> history) throws SubCreatorException {
|
||||
YAMLSection server = new YAMLSection();
|
||||
Version version = this.version;
|
||||
List<String> args = new LinkedList<String>();
|
||||
HashMap<String, String> var = new HashMap<String, String>();
|
||||
boolean error = false;
|
||||
if (history.contains(template)) throw new IllegalStateException("Template Import loop detected");
|
||||
history.add(template);
|
||||
|
@ -86,6 +86,11 @@ public class InternalSubCreator extends SubCreator {
|
|||
try {
|
||||
System.out.println(name + File.separator + "Creator > Loading Template: " + template.getDisplayName());
|
||||
Util.copyDirectory(template.getDirectory(), dir);
|
||||
var.put("name", name);
|
||||
var.put("template", template.getName());
|
||||
var.put("type", template.getType().toString().toUpperCase());
|
||||
var.put("version", version.toString());
|
||||
var.put("port", Integer.toString(port));
|
||||
switch (template.getType()) {
|
||||
case SPONGE:
|
||||
case FORGE:
|
||||
|
@ -108,12 +113,10 @@ public class InternalSubCreator extends SubCreator {
|
|||
Version mcfversion = new Version(spprofile.getSection("dependencies").getRawString("minecraft") + '-' + spprofile.getSection("dependencies").getRawString("forge"));
|
||||
System.out.println(name + File.separator + "Creator > Found \"forge-" + mcfversion.toString() + '"');
|
||||
|
||||
args.add(mcfversion.toString());
|
||||
var.put("mcf_version", mcfversion.toString());
|
||||
}
|
||||
args.add(spversion.toString());
|
||||
var.put("sp_version", spversion.toString());
|
||||
break;
|
||||
default:
|
||||
args.add(version.toString());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
|
@ -124,14 +127,11 @@ public class InternalSubCreator extends SubCreator {
|
|||
if (template.getBuildOptions().getBoolean("Use-Cache", true)) {
|
||||
cache = new UniversalFile(host.plugin.dir, "SubServers:Cache:Templates:" + template.getName());
|
||||
cache.mkdirs();
|
||||
args.add('\"' + cache.toString().replace(File.separatorChar, '/') + '\"');
|
||||
var.put("cache", cache.toString().replace(File.separatorChar, '/'));
|
||||
} else {
|
||||
cache = null;
|
||||
}
|
||||
|
||||
String command = "bash \"" + template.getBuildOptions().getRawString("Shell-Location") + '\"';
|
||||
for (String arg : args) command += ' ' + arg;
|
||||
|
||||
if (!System.getProperty("os.name").toLowerCase().startsWith("windows") && template.getBuildOptions().contains("Permission")) {
|
||||
try {
|
||||
Process process = Runtime.getRuntime().exec("chmod " + template.getBuildOptions().getRawString("Permission") + ' ' + template.getBuildOptions().getRawString("Shell-Location"), null, dir);
|
||||
|
@ -147,7 +147,9 @@ public class InternalSubCreator extends SubCreator {
|
|||
|
||||
try {
|
||||
System.out.println(name + File.separator + "Creator > Launching " + template.getBuildOptions().getRawString("Shell-Location"));
|
||||
process = Runtime.getRuntime().exec(Executable.parse(gitBash, command), null, dir);
|
||||
ProcessBuilder pb = new ProcessBuilder().command(Executable.parse(gitBash, "bash \"" + template.getBuildOptions().getRawString("Shell-Location") + '\"')).directory(dir);
|
||||
pb.environment().putAll(var);
|
||||
process = pb.start();
|
||||
log.file = new File(dir, "SubCreator-" + template.getName() + "-" + version.toString() + ".log");
|
||||
log.process = process;
|
||||
log.start();
|
||||
|
@ -292,7 +294,7 @@ public class InternalSubCreator extends SubCreator {
|
|||
if (new UniversalFile(host.plugin.dir, "SubServers:Templates").exists())
|
||||
for (File file : new UniversalFile(host.plugin.dir, "SubServers:Templates").listFiles()) {
|
||||
try {
|
||||
if (file.isDirectory()) {
|
||||
if (file.isDirectory() && !file.getName().endsWith(".x")) {
|
||||
YAMLSection config = (new UniversalFile(file, "template.yml").exists()) ? new YAMLConfig(new UniversalFile(file, "template.yml")).get().getSection("Template", new YAMLSection()) : new YAMLSection();
|
||||
ServerTemplate template = new ServerTemplate(file.getName(), config.getBoolean("Enabled", true), config.getRawString("Icon", "::NULL::"), file, config.getSection("Build", new YAMLSection()), config.getSection("Settings", new YAMLSection()));
|
||||
templates.put(file.getName().toLowerCase(), template);
|
||||
|
|
|
@ -177,8 +177,10 @@ public class InternalSubLogger extends SubLogger {
|
|||
int l = (int) Math.floor((("---------- LOG START \u2014 " + name + " ----------").length() - 9) / 2);
|
||||
String s = "";
|
||||
while (s.length() < l) s += '-';
|
||||
writer.println(s + " LOG END " + s);
|
||||
writer.close();
|
||||
if (writer != null) {
|
||||
writer.println(s + " LOG END " + s);
|
||||
writer.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@ import net.ME1312.SubServers.Bungee.Library.ExtraDataHandler;
|
|||
import net.ME1312.SubServers.Bungee.Library.NamedContainer;
|
||||
import net.ME1312.SubServers.Bungee.Network.ClientHandler;
|
||||
import net.md_5.bungee.api.config.ServerInfo;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
@ -106,14 +105,6 @@ public interface Server extends ServerInfo, ClientHandler, ExtraDataHandler {
|
|||
*/
|
||||
Collection<UUID> getWhitelist();
|
||||
|
||||
/**
|
||||
* See if a player is whitelisted
|
||||
*
|
||||
* @param player Player to check
|
||||
* @return Whitelisted Status
|
||||
*/
|
||||
boolean isWhitelisted(ProxiedPlayer player);
|
||||
|
||||
/**
|
||||
* See if a player is whitelisted
|
||||
*
|
||||
|
@ -122,13 +113,6 @@ public interface Server extends ServerInfo, ClientHandler, ExtraDataHandler {
|
|||
*/
|
||||
boolean isWhitelisted(UUID player);
|
||||
|
||||
/**
|
||||
* Add a player to the whitelist (for use with restricted servers)
|
||||
*
|
||||
* @param player Player to add
|
||||
*/
|
||||
void whitelist(ProxiedPlayer player);
|
||||
|
||||
/**
|
||||
* Add a player to the whitelist (for use with restricted servers)
|
||||
*
|
||||
|
@ -136,13 +120,6 @@ public interface Server extends ServerInfo, ClientHandler, ExtraDataHandler {
|
|||
*/
|
||||
void whitelist(UUID player);
|
||||
|
||||
/**
|
||||
* Remove a player to the whitelist
|
||||
*
|
||||
* @param player Player to remove
|
||||
*/
|
||||
void unwhitelist(ProxiedPlayer player);
|
||||
|
||||
/**
|
||||
* Remove a player to the whitelist
|
||||
*
|
||||
|
|
|
@ -172,21 +172,11 @@ public class ServerContainer extends BungeeServerInfo implements Server {
|
|||
return (player instanceof ProxiedPlayer && whitelist.contains(((ProxiedPlayer) player).getUniqueId())) || super.canAccess(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWhitelisted(ProxiedPlayer player) {
|
||||
return isWhitelisted(player.getUniqueId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWhitelisted(UUID player) {
|
||||
return whitelist.contains(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void whitelist(ProxiedPlayer player) {
|
||||
whitelist(player.getUniqueId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void whitelist(UUID player) {
|
||||
if (Util.isNull(player)) throw new NullPointerException();
|
||||
|
@ -194,11 +184,6 @@ public class ServerContainer extends BungeeServerInfo implements Server {
|
|||
for (Proxy proxy : SubAPI.getInstance().getProxies().values()) if (proxy.getSubData() != null) proxy.getSubData().sendPacket(new PacketOutExUpdateWhitelist(getName(), true, player));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unwhitelist(ProxiedPlayer player) {
|
||||
unwhitelist(player.getUniqueId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unwhitelist(UUID player) {
|
||||
if (Util.isNull(player)) throw new NullPointerException();
|
||||
|
|
|
@ -4,6 +4,7 @@ import com.google.common.io.Resources;
|
|||
import net.ME1312.SubServers.Bungee.Library.UniversalFile;
|
||||
import net.ME1312.SubServers.Bungee.SubAPI;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
|
@ -51,16 +52,17 @@ public class JNA {
|
|||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (jna.exists()) {
|
||||
if (jna.exists() && platform.exists()) {
|
||||
if (announced) System.out.println(">> Loading JNA Library");
|
||||
try {
|
||||
JNA = new URLClassLoader(new URL[]{jna.toURI().toURL(), platform.toURI().toURL()});
|
||||
} catch (Throwable e) {
|
||||
System.out.println(">> Could not load JNA Library:");
|
||||
e.printStackTrace();
|
||||
throw new IllegalArgumentException("Could not load JNA Library");
|
||||
}
|
||||
} else {
|
||||
throw new IllegalArgumentException("Could not find JNA Library");
|
||||
System.out.println(">> Could not load JNA Library:");
|
||||
new FileNotFoundException().printStackTrace();
|
||||
}
|
||||
}
|
||||
return JNA;
|
||||
|
|
|
@ -919,12 +919,15 @@ public final class SubCommand extends CommandX {
|
|||
public NamedContainer<String, List<String>> suggestArguments(CommandSender sender, String[] args) {
|
||||
if (args.length <= 1) {
|
||||
String last = (args.length > 0)?args[args.length - 1].toLowerCase():"";
|
||||
List<String> list = new ArrayList<String>();
|
||||
if (last.length() == 0) {
|
||||
return new NamedContainer<>(null, new LinkedList<>(plugin.getServers().keySet()));
|
||||
for (Server server : plugin.api.getServers().values()) {
|
||||
if (!server.isHidden()) list.add(server.getName());
|
||||
}
|
||||
return new NamedContainer<>(null, new LinkedList<>(list));
|
||||
} else {
|
||||
List<String> list = new ArrayList<String>();
|
||||
for (String server : plugin.getServers().keySet()) {
|
||||
if (server.toLowerCase().startsWith(last)) list.add(server);
|
||||
for (Server server : plugin.api.getServers().values()) {
|
||||
if (server.getName().toLowerCase().startsWith(last) && !server.isHidden()) list.add(server.getName());
|
||||
}
|
||||
return new NamedContainer<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Bungee.Server.Invalid").replace("$str$", args[0]):null, list);
|
||||
}
|
||||
|
|
|
@ -121,23 +121,23 @@ public final class SubPlugin extends BungeeCord implements Listener {
|
|||
Util.unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/sponge.zip"), new UniversalFile(dir, "Templates"));
|
||||
System.out.println("SubServers > Created ~/SubServers/Templates/Sponge");
|
||||
} else {
|
||||
if (new UniversalFile(dir, "Templates:Vanilla:template.yml").exists() && (new Version((new YAMLConfig(new UniversalFile(dir, "Templates:Vanilla:template.yml"))).get().getString("Version", "0")).compareTo(new Version("2.13a/rv3+"))) != 0) {
|
||||
Files.move(new UniversalFile(dir, "Templates:Vanilla").toPath(), new UniversalFile(dir, "Templates:Vanilla.old" + Math.round(Math.random() * 100000)).toPath());
|
||||
if (new UniversalFile(dir, "Templates:Vanilla:template.yml").exists() && (new Version((new YAMLConfig(new UniversalFile(dir, "Templates:Vanilla:template.yml"))).get().getString("Version", "0")).compareTo(new Version("2.13.2c+"))) != 0) {
|
||||
Files.move(new UniversalFile(dir, "Templates:Vanilla").toPath(), new UniversalFile(dir, "Templates:Vanilla.old" + Math.round(Math.random() * 100000) + ".x").toPath());
|
||||
Util.unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/vanilla.zip"), new UniversalFile(dir, "Templates"));
|
||||
System.out.println("SubServers > Updated ~/SubServers/Templates/Vanilla");
|
||||
}
|
||||
if (new UniversalFile(dir, "Templates:Spigot:template.yml").exists() && (new Version((new YAMLConfig(new UniversalFile(dir, "Templates:Spigot:template.yml"))).get().getString("Version", "0")).compareTo(new Version("2.13a/rv2+"))) != 0) {
|
||||
Files.move(new UniversalFile(dir, "Templates:Spigot").toPath(), new UniversalFile(dir, "Templates:Spigot.old" + Math.round(Math.random() * 100000)).toPath());
|
||||
if (new UniversalFile(dir, "Templates:Spigot:template.yml").exists() && (new Version((new YAMLConfig(new UniversalFile(dir, "Templates:Spigot:template.yml"))).get().getString("Version", "0")).compareTo(new Version("2.13.2c+"))) != 0) {
|
||||
Files.move(new UniversalFile(dir, "Templates:Spigot").toPath(), new UniversalFile(dir, "Templates:Spigot.old" + Math.round(Math.random() * 100000) + ".x").toPath());
|
||||
Util.unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/spigot.zip"), new UniversalFile(dir, "Templates"));
|
||||
System.out.println("SubServers > Updated ~/SubServers/Templates/Spigot");
|
||||
}
|
||||
if (new UniversalFile(dir, "Templates:Forge:template.yml").exists() && (new Version((new YAMLConfig(new UniversalFile(dir, "Templates:Forge:template.yml"))).get().getString("Version", "0")).compareTo(new Version("2.13a/rv3+"))) != 0) {
|
||||
Files.move(new UniversalFile(dir, "Templates:Forge").toPath(), new UniversalFile(dir, "Templates:Forge.old" + Math.round(Math.random() * 100000)).toPath());
|
||||
if (new UniversalFile(dir, "Templates:Forge:template.yml").exists() && (new Version((new YAMLConfig(new UniversalFile(dir, "Templates:Forge:template.yml"))).get().getString("Version", "0")).compareTo(new Version("2.13.2c+"))) != 0) {
|
||||
Files.move(new UniversalFile(dir, "Templates:Forge").toPath(), new UniversalFile(dir, "Templates:Forge.old" + Math.round(Math.random() * 100000) + ".x").toPath());
|
||||
Util.unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/forge.zip"), new UniversalFile(dir, "Templates"));
|
||||
System.out.println("SubServers > Updated ~/SubServers/Templates/Forge");
|
||||
}
|
||||
if (new UniversalFile(dir, "Templates:Sponge:template.yml").exists() && (new Version((new YAMLConfig(new UniversalFile(dir, "Templates:Sponge:template.yml"))).get().getString("Version", "0")).compareTo(new Version("2.13a/rv3+"))) != 0) {
|
||||
Files.move(new UniversalFile(dir, "Templates:Sponge").toPath(), new UniversalFile(dir, "Templates:Sponge.old" + Math.round(Math.random() * 100000)).toPath());
|
||||
if (new UniversalFile(dir, "Templates:Sponge:template.yml").exists() && (new Version((new YAMLConfig(new UniversalFile(dir, "Templates:Sponge:template.yml"))).get().getString("Version", "0")).compareTo(new Version("2.13.2c+"))) != 0) {
|
||||
Files.move(new UniversalFile(dir, "Templates:Sponge").toPath(), new UniversalFile(dir, "Templates:Sponge.old" + Math.round(Math.random() * 100000) + ".x").toPath());
|
||||
Util.unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/sponge.zip"), new UniversalFile(dir, "Templates"));
|
||||
System.out.println("SubServers > Updated ~/SubServers/Templates/Sponge");
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@ import net.ME1312.SubServers.Client.Bukkit.Library.Config.YAMLSection;
|
|||
import net.ME1312.SubServers.Client.Bukkit.Library.NamedContainer;
|
||||
import net.ME1312.SubServers.Client.Bukkit.Network.Packet.PacketDownloadServerInfo;
|
||||
import net.ME1312.SubServers.Client.Bukkit.SubAPI;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.*;
|
||||
|
@ -133,16 +132,6 @@ public class Server {
|
|||
return raw.getUUIDList("whitelist");
|
||||
}
|
||||
|
||||
/**
|
||||
* See if a player is whitelisted
|
||||
*
|
||||
* @param player Player to check
|
||||
* @return Whitelisted Status
|
||||
*/
|
||||
public boolean isWhitelisted(OfflinePlayer player) {
|
||||
return isWhitelisted(player.getUniqueId());
|
||||
}
|
||||
|
||||
/**
|
||||
* See if a player is whitelisted
|
||||
*
|
||||
|
|
|
@ -4,7 +4,6 @@ import net.ME1312.SubServers.Client.Sponge.Library.Config.YAMLSection;
|
|||
import net.ME1312.SubServers.Client.Sponge.Library.NamedContainer;
|
||||
import net.ME1312.SubServers.Client.Sponge.Network.Packet.PacketDownloadServerInfo;
|
||||
import net.ME1312.SubServers.Client.Sponge.SubAPI;
|
||||
import org.spongepowered.api.entity.living.player.User;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.*;
|
||||
|
@ -133,16 +132,6 @@ public class Server {
|
|||
return raw.getUUIDList("whitelist");
|
||||
}
|
||||
|
||||
/**
|
||||
* See if a player is whitelisted
|
||||
*
|
||||
* @param player Player to check
|
||||
* @return Whitelisted Status
|
||||
*/
|
||||
public boolean isWhitelisted(User player) {
|
||||
return isWhitelisted(player.getUniqueId());
|
||||
}
|
||||
|
||||
/**
|
||||
* See if a player is whitelisted
|
||||
*
|
||||
|
|
|
@ -49,6 +49,7 @@ public final class ConsoleWindow implements SubLogFilter {
|
|||
private int fontSize = 12;
|
||||
private File file = null;
|
||||
private FileOutputStream filewriter = null;
|
||||
private List<Runnable> spost = new LinkedList<Runnable>();
|
||||
private ByteArrayOutputStream scache = new ByteArrayOutputStream();
|
||||
private AnsiUIOutputStream stream = AnsiUIOutputStream.wrap(new OutputStream() {
|
||||
|
||||
|
@ -63,16 +64,6 @@ public final class ConsoleWindow implements SubLogFilter {
|
|||
scache.write(b);
|
||||
if (b == '\n') {
|
||||
try {
|
||||
int lines;
|
||||
String content;
|
||||
while (log.getSelectionStart() == log.getSelectionEnd() && (lines = countLines(content = log.getDocument().getText(0, log.getDocument().getLength()))) > MAX_SCROLLBACK) {
|
||||
int lineBreak = 1;
|
||||
for (lines -= MAX_SCROLLBACK; lines > 0; lines--) lineBreak = content.indexOf('\n', lineBreak + 1);
|
||||
if (lineBreak >= 2 && log.getSelectionStart() == log.getSelectionEnd()) {
|
||||
log.getDocument().remove(2, lineBreak);
|
||||
} else break;
|
||||
}
|
||||
} catch (Exception e) {} try {
|
||||
HTMLEditorKit kit = (HTMLEditorKit) log.getEditorKit();
|
||||
HTMLDocument doc = (HTMLDocument) log.getDocument();
|
||||
kit.insertHTML(doc, doc.getLength() - 2, new String(scache.toByteArray(), "UTF-8"), 0, 0, null);
|
||||
|
@ -82,7 +73,21 @@ public final class ConsoleWindow implements SubLogFilter {
|
|||
hScroll();
|
||||
}
|
||||
});
|
||||
} catch (Exception e) {} try {
|
||||
int lines;
|
||||
String content;
|
||||
if (log.getSelectionStart() == log.getSelectionEnd() && (lines = countLines(content = log.getDocument().getText(0, log.getDocument().getLength()))) > MAX_SCROLLBACK + 2) {
|
||||
int lineBreak = 1;
|
||||
for (lines -= MAX_SCROLLBACK; lines > 0; lines--) lineBreak = content.indexOf('\n', lineBreak + 1);
|
||||
if (lineBreak <= log.getDocument().getLength() - 2 && log.getSelectionStart() == log.getSelectionEnd()) {
|
||||
log.getDocument().remove(0, lineBreak);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {}
|
||||
for (Runnable post : spost) try {
|
||||
post.run();
|
||||
} catch (Throwable e) {}
|
||||
spost.clear();
|
||||
scache = new ByteArrayOutputStream();
|
||||
}
|
||||
}
|
||||
|
@ -833,22 +838,32 @@ public final class ConsoleWindow implements SubLogFilter {
|
|||
|
||||
@Override
|
||||
protected void processEraseScreen(int mode) throws IOException {
|
||||
if (ansi) log.setText(RESET_VALUE);
|
||||
if (ansi) spost.add(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
log.setText(RESET_VALUE);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void processDeleteLine(int amount) throws IOException {
|
||||
if (ansi) try {
|
||||
String content = log.getDocument().getText(0, log.getDocument().getLength());
|
||||
while (amount > 0) {
|
||||
int lastLineBreak = content.lastIndexOf('\n');
|
||||
int length = log.getDocument().getLength() - lastLineBreak - 2;
|
||||
if (lastLineBreak >= 0 && length > 0) {
|
||||
log.getDocument().remove(lastLineBreak, length);
|
||||
}
|
||||
amount--;
|
||||
protected void processDeleteLine(final int amount) throws IOException {
|
||||
if (ansi) spost.add(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
String content = log.getDocument().getText(0, log.getDocument().getLength());
|
||||
int lineBreak = log.getDocument().getLength() - 2;
|
||||
for (int lines = 0; lines < amount; lines++) lineBreak = content.lastIndexOf('\n', lineBreak - 1);
|
||||
if (lineBreak < 2) lineBreak = 2;
|
||||
int length = log.getDocument().getLength() - lineBreak - 2;
|
||||
if (length > 0) {
|
||||
while (log.getSelectionStart() != log.getSelectionEnd()) Thread.sleep(100);
|
||||
log.getDocument().remove(lineBreak, length);
|
||||
}
|
||||
} catch (Exception e) {}
|
||||
}
|
||||
} catch (Exception e) {}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
# SubCreator Sponge Forge Build Script
|
||||
# Usage: "bash build.sh <forge version> <sponge version>"
|
||||
#
|
||||
#!/usr/bin/env bash
|
||||
if [ -z "$1" ] || [ -z "$2" ]
|
||||
if [ -z "$mcf_version" ] || [ -z "$sp_version" ]
|
||||
then
|
||||
echo ERROR: No Build Version Supplied
|
||||
rm -Rf "$0"
|
||||
|
@ -16,20 +15,20 @@ function __DL() {
|
|||
fi
|
||||
}
|
||||
echo Downloading the Minecraft Forge Installer...
|
||||
__DL "forge-$1-installer.jar" "http://files.minecraftforge.net/maven/net/minecraftforge/forge/$1/forge-$1-installer.jar"; __RETURN=$?
|
||||
__DL "forge-$mcf_version-installer.jar" "http://files.minecraftforge.net/maven/net/minecraftforge/forge/$mcf_version/forge-$mcf_version-installer.jar"; __RETURN=$?
|
||||
if [ $__RETURN -eq 0 ]; then
|
||||
echo Installing Minecraft Forge...
|
||||
java -jar "forge-$1-installer.jar" --installServer; __RETURN=$?
|
||||
java -jar "forge-$mcf_version-installer.jar" --installServer; __RETURN=$?
|
||||
if [ $__RETURN -eq 0 ]; then
|
||||
echo Cleaning Up...
|
||||
rm -Rf "forge-$1-installer.jar"
|
||||
rm -Rf "forge-$1-installer.jar.log"
|
||||
mv -f "forge-$1-universal.jar" Forge.jar
|
||||
rm -Rf "forge-$mcf_version-installer.jar"
|
||||
rm -Rf "forge-$mcf_version-installer.jar.log"
|
||||
mv -f "forge-$mcf_version-universal.jar" Forge.jar
|
||||
if [ ! -d "mods" ]; then
|
||||
mkdir mods
|
||||
fi
|
||||
echo Downloading SpongeForge...
|
||||
__DL mods/Sponge.jar "https://repo.spongepowered.org/maven/org/spongepowered/spongeforge/$2/spongeforge-$2.jar"; __RETURN=$?
|
||||
__DL mods/Sponge.jar "https://repo.spongepowered.org/maven/org/spongepowered/spongeforge/$sp_version/spongeforge-$sp_version.jar"; __RETURN=$?
|
||||
if [ $__RETURN -eq 0 ]; then
|
||||
echo Cleaning Up...
|
||||
rm -Rf "$0"
|
||||
|
@ -41,8 +40,8 @@ if [ $__RETURN -eq 0 ]; then
|
|||
fi
|
||||
else
|
||||
echo ERROR: The Installer exited with an error. Please try again
|
||||
rm -Rf "forge-$1-installer.jar"
|
||||
rm -Rf "forge-$1-installer.jar.log"
|
||||
rm -Rf "forge-$mcf_version-installer.jar"
|
||||
rm -Rf "forge-$mcf_version-installer.jar.log"
|
||||
rm -Rf "$0"
|
||||
exit 4
|
||||
fi
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Version: '2.13a/rv3+'
|
||||
Version: '2.13.2c+'
|
||||
Template:
|
||||
Enabled: true
|
||||
Icon: 'anvil'
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
# SubCreator Spigot Build Script
|
||||
# Usage: "bash build.sh <version> [cache]"
|
||||
#
|
||||
#!/usr/bin/env bash
|
||||
if [ -z "$1" ]
|
||||
if [ -z "$version" ]
|
||||
then
|
||||
echo ERROR: No Build Version Supplied
|
||||
rm -Rf "$0"
|
||||
|
@ -15,7 +14,7 @@ function __DL() {
|
|||
curl -o "$1" "$2"; return $?
|
||||
fi
|
||||
}
|
||||
if [ -z "$2" ] || [ ! -f "$2/Spigot-$1.jar" ]; then
|
||||
if [ -z "$cache" ] || [ ! -f "$cache/Spigot-$version.jar" ]; then
|
||||
echo Downloading Buildtools...
|
||||
__DL Buildtools.jar https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar; __RETURN=$?
|
||||
if [ $__RETURN -eq 0 ]; then
|
||||
|
@ -25,20 +24,20 @@ if [ -z "$2" ] || [ ! -f "$2/Spigot-$1.jar" ]; then
|
|||
mkdir Buildtools
|
||||
cd "Buildtools"
|
||||
echo Launching Buildtools
|
||||
if [ ! -z "$2" ] && [ -d "$2" ]; then
|
||||
if [ ! -z "$cache" ] && [ -d "$cache" ]; then
|
||||
export __HOME="$HOME"
|
||||
export HOME="$2"
|
||||
export HOME="$cache"
|
||||
fi
|
||||
export MAVEN_OPTS="-Xms2G"
|
||||
java -Xms2G -jar ../Buildtools.jar --rev "$1"; __RETURN=$?
|
||||
if [ ! -z "$2" ] && [ ! -z "$__HOME" ] && [ "$2" == "$HOME" ]; then
|
||||
java -Xms2G -jar ../Buildtools.jar --rev "$version"; __RETURN=$?
|
||||
if [ ! -z "$cache" ] && [ ! -z "$__HOME" ] && [ "$cache" == "$HOME" ]; then
|
||||
export HOME="$__HOME"
|
||||
fi
|
||||
cd ../
|
||||
if [ $__RETURN -eq 0 ]; then
|
||||
echo Copying Finished Jar...
|
||||
if [ ! -z "$2" ] && [ -d "$2" ]; then
|
||||
cp Buildtools/spigot-*.jar "$2/Spigot-$1.jar"
|
||||
if [ ! -z "$cache" ] && [ -d "$cache" ]; then
|
||||
cp Buildtools/spigot-*.jar "$cache/Spigot-$version.jar"
|
||||
fi
|
||||
cp Buildtools/spigot-*.jar Spigot.jar
|
||||
echo Cleaning Up...
|
||||
|
@ -60,7 +59,7 @@ if [ -z "$2" ] || [ ! -f "$2/Spigot-$1.jar" ]; then
|
|||
fi
|
||||
else
|
||||
echo Copying Cached Jar...
|
||||
cp "$2/Spigot-$1.jar" Spigot.jar
|
||||
cp "$cache/Spigot-$version.jar" Spigot.jar
|
||||
echo Cleaning Up...
|
||||
rm -Rf "$0"
|
||||
exit 0
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Version: '2.13a/rv2+'
|
||||
Version: '2.13.2c+'
|
||||
Template:
|
||||
Enabled: true
|
||||
Icon: 'lava_bucket'
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
# SubCreator Sponge Build Script
|
||||
# Usage: "bash build.sh <sponge version>"
|
||||
#
|
||||
#!/usr/bin/env bash
|
||||
if [ -z "$1" ]
|
||||
if [ -z "$sp_version" ]
|
||||
then
|
||||
echo ERROR: No Build Version Supplied
|
||||
rm -Rf "$0"
|
||||
|
@ -16,7 +15,7 @@ function __DL() {
|
|||
fi
|
||||
}
|
||||
echo Downloading SpongeVanilla...
|
||||
__DL Sponge.jar "https://repo.spongepowered.org/maven/org/spongepowered/spongevanilla/$1/spongevanilla-$1.jar"; __RETURN=$?
|
||||
__DL Sponge.jar "https://repo.spongepowered.org/maven/org/spongepowered/spongevanilla/$sp_version/spongevanilla-$sp_version.jar"; __RETURN=$?
|
||||
if [ $__RETURN -eq 0 ]; then
|
||||
echo Cleaning Up...
|
||||
rm -Rf "$0"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Version: '2.13a/rv3+'
|
||||
Version: '2.13.2c+'
|
||||
Template:
|
||||
Enabled: true
|
||||
Icon: 'sponge'
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
# SubCreator Vanilla Build Script
|
||||
# Usage: "bash build.sh <version> [cache]"
|
||||
#
|
||||
#!/usr/bin/env bash
|
||||
if [ -z "$1" ]
|
||||
if [ -z "$version" ]
|
||||
then
|
||||
echo ERROR: No Build Version Supplied
|
||||
rm -Rf "$0"
|
||||
|
@ -15,7 +14,7 @@ function __DL() {
|
|||
curl -o "$1" "$2"; return $?
|
||||
fi
|
||||
}
|
||||
if [ -z "$2" ] || [ ! -f "$2/Vanilla-$1.jar" ]; then
|
||||
if [ -z "$cache" ] || [ ! -f "$cache/Vanilla-$version.jar" ]; then
|
||||
if [ -d "VanillaCord" ]; then
|
||||
rm -Rf VanillaCord
|
||||
fi
|
||||
|
@ -25,14 +24,14 @@ if [ -z "$2" ] || [ ! -f "$2/Vanilla-$1.jar" ]; then
|
|||
if [ $__RETURN -eq 0 ]; then
|
||||
cd VanillaCord
|
||||
echo Launching VanillaCord
|
||||
java -jar VanillaCord.jar "$1"; __RETURN=$?;
|
||||
java -jar VanillaCord.jar "$version"; __RETURN=$?;
|
||||
if [ $__RETURN -eq 0 ]; then
|
||||
echo Copying Finished Jar...
|
||||
cd ../
|
||||
if [ ! -z "$2" ] && [ -d "$2" ]; then
|
||||
cp "VanillaCord/out/$1-bungee.jar" "$2/Vanilla-$1.jar"
|
||||
if [ ! -z "$cache" ] && [ -d "$cache" ]; then
|
||||
cp "VanillaCord/out/$version-bungee.jar" "$cache/Vanilla-$version.jar"
|
||||
fi
|
||||
cp "VanillaCord/out/$1-bungee.jar" Vanilla.jar
|
||||
cp "VanillaCord/out/$version-bungee.jar" Vanilla.jar
|
||||
echo Cleaning Up...
|
||||
rm -Rf VanillaCord
|
||||
rm -Rf "$0"
|
||||
|
@ -51,7 +50,7 @@ if [ -z "$2" ] || [ ! -f "$2/Vanilla-$1.jar" ]; then
|
|||
fi
|
||||
else
|
||||
echo Copying Cached Jar...
|
||||
cp "$2/Vanilla-$1.jar" Vanilla.jar
|
||||
cp "$cache/Vanilla-$version.jar" Vanilla.jar
|
||||
echo Cleaning Up...
|
||||
rm -Rf "$0"
|
||||
exit 0
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Version: '2.13a/rv3+'
|
||||
Version: '2.13.2c+'
|
||||
Template:
|
||||
Enabled: true
|
||||
Icon: 'bukkit:grass'
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
<dependency>
|
||||
<groupId>net.ME1312.Galaxi</groupId>
|
||||
<artifactId>GalaxiEngine</artifactId>
|
||||
<version>19w02e</version>
|
||||
<version>19w02f</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
|
|
@ -204,7 +204,7 @@ public class SubCreator {
|
|||
private YAMLSection build(File dir, ServerTemplate template, List<ServerTemplate> history) throws SubCreatorException {
|
||||
YAMLSection server = new YAMLSection();
|
||||
Version version = this.version;
|
||||
List<String> args = new LinkedList<String>();
|
||||
HashMap<String, String> var = new HashMap<String, String>();
|
||||
boolean error = false;
|
||||
if (history.contains(template)) throw new IllegalStateException("Template Import loop detected");
|
||||
history.add(template);
|
||||
|
@ -231,6 +231,11 @@ public class SubCreator {
|
|||
log.logger.info.println("Loading Template: " + template.getDisplayName());
|
||||
host.subdata.sendPacket(new PacketOutExLogMessage(address, "Loading Template: " + template.getDisplayName()));
|
||||
Util.copyDirectory(template.getDirectory(), dir);
|
||||
var.put("name", name);
|
||||
var.put("template", template.getName());
|
||||
var.put("type", template.getType().toString().toUpperCase());
|
||||
var.put("version", version.toString());
|
||||
var.put("port", Integer.toString(port));
|
||||
switch (template.getType()) {
|
||||
case SPONGE:
|
||||
case FORGE:
|
||||
|
@ -256,12 +261,10 @@ public class SubCreator {
|
|||
log.logger.info.println("Found \"forge-" + mcfversion.toString() + '"');
|
||||
host.subdata.sendPacket(new PacketOutExLogMessage(address, "Found \"forge-" + mcfversion.toString() + '"'));
|
||||
|
||||
args.add(mcfversion.toString());
|
||||
var.put("mcf_version", mcfversion.toString());
|
||||
}
|
||||
args.add(spversion.toString());
|
||||
var.put("sp_version", spversion.toString());
|
||||
break;
|
||||
default:
|
||||
args.add(version.toString());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.logger.error.println(e);
|
||||
|
@ -272,14 +275,11 @@ public class SubCreator {
|
|||
if (template.getBuildOptions().getBoolean("Use-Cache", true)) {
|
||||
cache = new UniversalFile(GalaxiEngine.getInstance().getRuntimeDirectory(), "Cache:Templates:" + template.getName());
|
||||
cache.mkdirs();
|
||||
args.add("\"" + cache.toString().replace(File.separatorChar, '/') + '\"');
|
||||
var.put("cache", cache.toString().replace(File.separatorChar, '/'));
|
||||
} else {
|
||||
cache = null;
|
||||
}
|
||||
|
||||
String command = "bash \"" + template.getBuildOptions().getRawString("Shell-Location") + '\"';
|
||||
for (String arg : args) command += ' ' + arg;
|
||||
|
||||
if (!System.getProperty("os.name").toLowerCase().startsWith("windows") && template.getBuildOptions().contains("Permission")) {
|
||||
try {
|
||||
Process process = Runtime.getRuntime().exec("chmod " + template.getBuildOptions().getRawString("Permission") + ' ' + template.getBuildOptions().getRawString("Shell-Location"), null, dir);
|
||||
|
@ -298,7 +298,9 @@ public class SubCreator {
|
|||
try {
|
||||
log.logger.info.println("Launching " + template.getBuildOptions().getRawString("Shell-Location"));
|
||||
host.subdata.sendPacket(new PacketOutExLogMessage(address, "Launching " + template.getBuildOptions().getRawString("Shell-Location")));
|
||||
process = Runtime.getRuntime().exec(Executable.parse(host.host.getRawString("Git-Bash"), command), null, dir);
|
||||
ProcessBuilder pb = new ProcessBuilder().command(Executable.parse(host.host.getRawString("Git-Bash"), "bash \"" + template.getBuildOptions().getRawString("Shell-Location") + '\"')).directory(dir);
|
||||
pb.environment().putAll(var);
|
||||
process = pb.start();
|
||||
log.file = new File(dir, "SubCreator-" + template.getName() + "-" + version.toString().replace(" ", "@") + ".log");
|
||||
log.process = process;
|
||||
log.start();
|
||||
|
|
|
@ -152,8 +152,10 @@ public class SubLogger {
|
|||
int l = (int) Math.floor((("---------- LOG START \u2014 " + name + " ----------").length() - 9) / 2);
|
||||
String s = "";
|
||||
while (s.length() < l) s += '-';
|
||||
writer.println(s + " LOG END " + s);
|
||||
writer.close();
|
||||
if (writer != null) {
|
||||
writer.println(s + " LOG END " + s);
|
||||
writer.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import net.ME1312.Galaxi.Galaxi;
|
|||
import net.ME1312.Galaxi.Library.Log.Logger;
|
||||
import net.ME1312.Galaxi.Library.UniversalFile;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
|
@ -54,16 +55,17 @@ public class JNA {
|
|||
log.error.println(e);
|
||||
}
|
||||
}
|
||||
if (jna.exists()) {
|
||||
if (jna.exists() && platform.exists()) {
|
||||
if (announced) log.info.println("Loading JNA Library");
|
||||
try {
|
||||
JNA = new URLClassLoader(new URL[]{jna.toURI().toURL(), platform.toURI().toURL()});
|
||||
} catch (Throwable e) {
|
||||
log.error.println("Could not load JNA Library:");
|
||||
log.error.println(e);
|
||||
throw new IllegalArgumentException("Could not load JNA Library");
|
||||
}
|
||||
} else {
|
||||
throw new IllegalArgumentException("Could not find JNA Library");
|
||||
log.error.println("Could not load JNA Library:");
|
||||
log.error.println(new FileNotFoundException());
|
||||
}
|
||||
}
|
||||
return JNA;
|
||||
|
|
|
@ -4,7 +4,6 @@ import net.ME1312.SubServers.Sync.Library.Config.YAMLSection;
|
|||
import net.ME1312.SubServers.Sync.Library.NamedContainer;
|
||||
import net.ME1312.SubServers.Sync.Network.Packet.PacketDownloadServerInfo;
|
||||
import net.ME1312.SubServers.Sync.SubAPI;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.*;
|
||||
|
@ -133,16 +132,6 @@ public class Server {
|
|||
return raw.getUUIDList("whitelist");
|
||||
}
|
||||
|
||||
/**
|
||||
* See if a player is whitelisted
|
||||
*
|
||||
* @param player Player to check
|
||||
* @return Whitelisted Status
|
||||
*/
|
||||
public boolean isWhitelisted(ProxiedPlayer player) {
|
||||
return isWhitelisted(player.getUniqueId());
|
||||
}
|
||||
|
||||
/**
|
||||
* See if a player is whitelisted
|
||||
*
|
||||
|
|
|
@ -918,12 +918,15 @@ public final class SubCommand extends CommandX {
|
|||
public NamedContainer<String, List<String>> suggestArguments(CommandSender sender, String[] args) {
|
||||
if (args.length <= 1) {
|
||||
String last = (args.length > 0)?args[args.length - 1].toLowerCase():"";
|
||||
List<String> list = new ArrayList<String>();
|
||||
if (last.length() == 0) {
|
||||
return new NamedContainer<>(null, new LinkedList<>(plugin.getServers().keySet()));
|
||||
for (ServerContainer server : plugin.servers.values()) {
|
||||
if (!server.isHidden()) list.add(server.getName());
|
||||
}
|
||||
return new NamedContainer<>(null, new LinkedList<>(list));
|
||||
} else {
|
||||
List<String> list = new ArrayList<String>();
|
||||
for (String server : plugin.getServers().keySet()) {
|
||||
if (server.toLowerCase().startsWith(last)) list.add(server);
|
||||
for (ServerContainer server : plugin.servers.values()) {
|
||||
if (server.getName().toLowerCase().startsWith(last) && !server.isHidden()) list.add(server.getName());
|
||||
}
|
||||
return new NamedContainer<>((list.size() <= 0)?plugin.api.getLang("SubServers", "Bungee.Server.Invalid").replace("$str$", args[0]):null, list);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue