From 9cac4c6dcd23825e3c01d00d4b4bc0d12a2a1a04 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Sun, 10 Mar 2019 19:42:48 +0100 Subject: [PATCH] Adding serverSwitcher --- pom.xml | 19 +++++- src/de/warking/bungeecore/BungeeCore.java | 65 ++++++++++++++++++- .../bungeecore/ServerSwitchCommand.java | 30 +++++++++ src/de/warking/bungeecore/sql.java | 51 +++++++++++++++ src/plugin.yml | 4 ++ 5 files changed, 167 insertions(+), 2 deletions(-) create mode 100644 src/de/warking/bungeecore/ServerSwitchCommand.java create mode 100644 src/de/warking/bungeecore/sql.java create mode 100644 src/plugin.yml diff --git a/pom.xml b/pom.xml index 4efe43f..ce9d7cb 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,14 @@ de.warking BungeeCore - 1.0-SNAPSHOT + 1.0 + jar + BungeeCore + https://maven.apache.org + + + UTF-8 + @@ -16,6 +23,16 @@ + src + + + src + + **/*.java + **/*.kt + + + org.apache.maven.plugins diff --git a/src/de/warking/bungeecore/BungeeCore.java b/src/de/warking/bungeecore/BungeeCore.java index ed5746f..13854b5 100644 --- a/src/de/warking/bungeecore/BungeeCore.java +++ b/src/de/warking/bungeecore/BungeeCore.java @@ -1,4 +1,67 @@ package de.warking.bungeecore; -public class BungeeCore { +import net.md_5.bungee.api.plugin.Command; +import net.md_5.bungee.api.plugin.Plugin; +import net.md_5.bungee.config.Configuration; +import net.md_5.bungee.config.ConfigurationProvider; +import net.md_5.bungee.config.YamlConfiguration; + +import java.io.File; +import java.io.IOException; + +public class BungeeCore extends Plugin { + + private Configuration config; + public static String ChatPrefix; + + @Override + public void onEnable(){ + try{ + if(!getDataFolder().exists()){ + getDataFolder().mkdir(); + } + File configFile = new File(getDataFolder().getPath(), "config.yml"); + if(!configFile.exists()){ + configFile.createNewFile(); + config = ConfigurationProvider.getProvider(YamlConfiguration.class).load(configFile); + config.set("prefix", "[WarKing] "); + config.set("db.url", "jdbc:mysql://127.0.0.1:3306/core"); + config.set("db.username", "root"); + config.set("db.password", "$password"); + config.set("servers.l.server", "HunjyLobby"); + config.set("servers.l.permission", "bungeecore.server.user"); + ConfigurationProvider.getProvider(YamlConfiguration.class).save(config, configFile); + } + config = ConfigurationProvider.getProvider(YamlConfiguration.class).load(configFile); + }catch(IOException e){ + System.err.println("Error not create/load config.yml, Aborting!"); + return; + } + + ChatPrefix = config.getString("prefix"); + sql.connect( + config.getString("db.url"), + config.getString("db.username"), + config.getString("db.password") + ); + + final Configuration servers = config.getSection("servers"); + for(final String cmd : servers.getKeys()){ + final Configuration server = servers.getSection(cmd); + addCmd(new ServerSwitchCommand( + cmd, + server.getString("server"), + server.getString("permission") + )); + } + } + + @Override + public void onDisable(){ + sql.close(); + } + + private void addCmd(Command cmd){ + getProxy().getPluginManager().registerCommand(this, cmd); + } } diff --git a/src/de/warking/bungeecore/ServerSwitchCommand.java b/src/de/warking/bungeecore/ServerSwitchCommand.java new file mode 100644 index 0000000..a0c2a76 --- /dev/null +++ b/src/de/warking/bungeecore/ServerSwitchCommand.java @@ -0,0 +1,30 @@ +package de.warking.bungeecore; + +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.config.ServerInfo; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import net.md_5.bungee.api.plugin.Command; + +public class ServerSwitchCommand extends Command { + + private String serverName; + + public ServerSwitchCommand(String cmd, String name, String permission, String... aliases) { + super(cmd, permission, aliases); + serverName = name; + } + + @Override + public void execute(CommandSender sender, String[] strings) { + if(sender instanceof ProxiedPlayer){ + ProxiedPlayer player = (ProxiedPlayer) sender; + if(!player.getServer().getInfo().getName().equalsIgnoreCase(serverName)){ + ServerInfo target = ProxyServer.getInstance().getServerInfo(serverName); + player.connect(target); + }else{ + player.sendMessage(BungeeCore.ChatPrefix + "§cDu bist bereits auf diesem Server!"); + } + } + } +} diff --git a/src/de/warking/bungeecore/sql.java b/src/de/warking/bungeecore/sql.java new file mode 100644 index 0000000..6d48879 --- /dev/null +++ b/src/de/warking/bungeecore/sql.java @@ -0,0 +1,51 @@ +package de.warking.bungeecore; + + import java.sql.Connection; + import java.sql.DriverManager; + import java.sql.PreparedStatement; + import java.sql.ResultSet; + import java.sql.SQLException; + + +public class sql { + private static Connection con; + + + public static void connect(String url, String user, String password) { + try { + con = DriverManager.getConnection(url + "?autoreconnect=true", user, password); + }catch (SQLException e) { + e.printStackTrace(); + } + } + + public static void close() { + try { + if(con != null) + con.close(); + }catch (SQLException e) { + e.printStackTrace(); + } + } + + public static void update(String qry) { + try { + PreparedStatement st = con.prepareStatement(qry); + st.executeUpdate(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public static ResultSet select(String qry) { + + try { + PreparedStatement st = con.prepareStatement(qry); + return st.executeQuery(); + } catch (SQLException e) { + e.printStackTrace(); + } + + return null; + } +} diff --git a/src/plugin.yml b/src/plugin.yml new file mode 100644 index 0000000..ff5e537 --- /dev/null +++ b/src/plugin.yml @@ -0,0 +1,4 @@ +name: BungeeCore +main: de.warking.bungeecore.BungeeCore +version: 1.0 +author: Lixfel \ No newline at end of file