diff --git a/.idea/libraries/waterfall_1_18_475.xml b/.idea/libraries/waterfall_1_18_475.xml new file mode 100644 index 0000000..e36750a --- /dev/null +++ b/.idea/libraries/waterfall_1_18_475.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/LaunchServer/LaunchServer.iml b/LaunchServer/LaunchServer.iml index 3ca6abe..9a90a6f 100644 --- a/LaunchServer/LaunchServer.iml +++ b/LaunchServer/LaunchServer.iml @@ -1,5 +1,14 @@ + + + + + WATERFALL + + + + @@ -84,5 +93,6 @@ + \ No newline at end of file diff --git a/LaunchServer/resources/bungee.yml b/LaunchServer/resources/bungee.yml new file mode 100644 index 0000000..f44894d --- /dev/null +++ b/LaunchServer/resources/bungee.yml @@ -0,0 +1,8 @@ +name: LaunchServer +description: "KeeperJerry's Launcher Server" +version: 1.7.5.0 + +author: "KeeperJerry & sashok724" +website: 'https://launcher.keeperjerry.ru/' + +main: launchserver.plugin.bungee.PluginBungee \ No newline at end of file diff --git a/LaunchServer/source/plugin/PluginBridge.java b/LaunchServer/source/plugin/PluginBridge.java new file mode 100644 index 0000000..f43f361 --- /dev/null +++ b/LaunchServer/source/plugin/PluginBridge.java @@ -0,0 +1,46 @@ +package launchserver.plugin; + +import java.nio.file.Path; + +import launcher.helper.JVMHelper; +import launcher.helper.LogHelper; +import launchserver.LaunchServer; + +public final class PluginBridge implements Runnable, AutoCloseable +{ + private final LaunchServer server; + + public PluginBridge(Path dir) throws Throwable + { + LogHelper.addOutput(dir.resolve("LaunchServer.log")); + LogHelper.printVersion("LaunchServer"); + + long start = System.currentTimeMillis(); + try { + server = new LaunchServer(dir, true); + } catch (Throwable exc) { + LogHelper.error(exc); + throw exc; + } + long end = System.currentTimeMillis(); + LogHelper.debug("LaunchServer started in %dms", end - start); + } + + @Override + public void close() { + server.close(); + } + + @Override + public void run() { + server.run(); + } + + public void eval(String... command) { + server.commandHandler.eval(command, false); + } + + static { + JVMHelper.verifySystemProperties(LaunchServer.class, false); + } +} \ No newline at end of file diff --git a/LaunchServer/source/plugin/bungee/CommandBungee.java b/LaunchServer/source/plugin/bungee/CommandBungee.java new file mode 100644 index 0000000..8d3ae3b --- /dev/null +++ b/LaunchServer/source/plugin/bungee/CommandBungee.java @@ -0,0 +1,45 @@ +package launchserver.plugin.bungee; + +import launchserver.plugin.PluginBridge; +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.chat.BaseComponent; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.plugin.Command; +import net.md_5.bungee.command.ConsoleCommandSender; + +public final class CommandBungee extends Command +{ + private static final BaseComponent[] NOT_CONSOLE_MESSAGE = TextComponent.fromLegacyText(ChatColor.RED + "This command can only be used from the console!"); + private static final BaseComponent[] NOT_INITIALIZED_MESSAGE = TextComponent.fromLegacyText(ChatColor.RED + "LaunchServer was not fully loaded!"); + + // Instance + public final PluginBungee plugin; + + public CommandBungee(PluginBungee plugin) + { + super("launchserver", "launchserver.admin", "launcher", "ls", "l"); + this.plugin = plugin; + } + + @Override + public void execute(CommandSender sender, String... args) + { + if (!(sender instanceof ConsoleCommandSender)) + { + sender.sendMessage(NOT_CONSOLE_MESSAGE); + return; + } + + // Eval command + PluginBridge bridge = plugin.bridge; + if (bridge == null) + { + sender.sendMessage(NOT_INITIALIZED_MESSAGE); + } + else + { + bridge.eval(args); + } + } +} \ No newline at end of file diff --git a/LaunchServer/source/plugin/bungee/PluginBungee.java b/LaunchServer/source/plugin/bungee/PluginBungee.java new file mode 100644 index 0000000..8bd4775 --- /dev/null +++ b/LaunchServer/source/plugin/bungee/PluginBungee.java @@ -0,0 +1,38 @@ +package launchserver.plugin.bungee; + +import launcher.helper.CommonHelper; +import launchserver.plugin.PluginBridge; +import net.md_5.bungee.api.plugin.Plugin; + +public final class PluginBungee extends Plugin +{ + public volatile PluginBridge bridge = null; + + @Override + public void onDisable() + { + super.onDisable(); + if (bridge != null) + { + bridge.close(); + bridge = null; + } + } + + @Override + public void onEnable() + { + super.onEnable(); + + // Initialize LaunchServer + try { + bridge = new PluginBridge(getDataFolder().toPath()); + } catch (Throwable exc) { + exc.printStackTrace(); + } + + // Register command + CommonHelper.newThread("LaunchServer Thread", true, bridge).start(); + getProxy().getPluginManager().registerCommand(this, new CommandBungee(this)); + } +} \ No newline at end of file diff --git a/build/plugins/waterfall-1.18-475.jar b/build/plugins/waterfall-1.18-475.jar new file mode 100644 index 0000000..7b78675 --- /dev/null +++ b/build/plugins/waterfall-1.18-475.jar Binary files differ diff --git a/buildnumber b/buildnumber index c52e519..5c580d7 100644 --- a/buildnumber +++ b/buildnumber @@ -1 +1 @@ -584, 08.01.2022 \ No newline at end of file +585, 27.01.2022 \ No newline at end of file