Advertisement
Guest User

Untitled

a guest
Jan 31st, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.26 KB | None | 0 0
  1. package nl.RamonPeek;
  2.  
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.DataOutputStream;
  5. import java.sql.Connection;
  6. import java.sql.DriverManager;
  7. import java.sql.PreparedStatement;
  8. import java.sql.ResultSet;
  9. import java.sql.SQLException;
  10. import java.util.ArrayList;
  11. import java.util.Iterator;
  12. import java.util.List;
  13. import net.md_5.bungee.api.ChatColor;
  14. import org.bukkit.Bukkit;
  15. import org.bukkit.Server;
  16. import org.bukkit.command.Command;
  17. import org.bukkit.command.CommandSender;
  18. import org.bukkit.entity.Player;
  19. import org.bukkit.event.Listener;
  20. import org.bukkit.plugin.PluginManager;
  21. import org.bukkit.plugin.java.JavaPlugin;
  22.  
  23. public class Main extends JavaPlugin implements Listener
  24. {
  25. private static Connection connection;
  26.  
  27. public Main() {}
  28.  
  29. private static String IP = "62.210.168.132";
  30. private static String PORT = "3306";
  31. private static String DATABASE = "realmsdb";
  32. private static String USER = "realmsdb";
  33. private static String PASSWORD = "realmsww";
  34.  
  35. public void onEnable() {
  36. PluginManager manager = Bukkit.getServer().getPluginManager();
  37. manager.registerEvents(new Events(this), this);
  38.  
  39. Bukkit.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
  40. }
  41.  
  42. public void onDisable() {
  43. try {
  44. if ((connection != null) && (connection.isClosed()))
  45. connection.close();
  46. } catch (SQLException e) {
  47. e.printStackTrace();
  48. }
  49. }
  50.  
  51. public void sendToServer(Player p, String targetServer) {
  52. ByteArrayOutputStream b = new ByteArrayOutputStream();
  53. DataOutputStream out = new DataOutputStream(b);
  54. try {
  55. out.writeUTF("Connect");
  56. out.writeUTF(targetServer);
  57. } catch (Exception e) {
  58. e.printStackTrace();
  59. }
  60. p.sendPluginMessage(this, "BungeeCord", b.toByteArray());
  61. }
  62.  
  63. public static synchronized void openConnection()
  64. {
  65. try
  66. {
  67. connection = DriverManager.getConnection("jdbc:mysql://" + IP + ":" + PORT + "/" + DATABASE + "?user=" + USER + "&password=" + PASSWORD + "&autoReconnect=true");
  68. } catch (Exception e) {
  69. e.printStackTrace();
  70. }
  71. }
  72.  
  73. public static synchronized void closeConnection() {
  74. try {
  75. connection.close();
  76. } catch (Exception e) {
  77. e.printStackTrace();
  78. }
  79. }
  80.  
  81. public static synchronized boolean dbContainsServer(String name) {
  82. try {
  83. PreparedStatement sql = connection.prepareStatement("SELECT * FROM `" + DATABASE + "` WHERE servername=?;");
  84. sql.setString(1, name);
  85. ResultSet resultSet = sql.executeQuery();
  86. boolean containsServer = resultSet.next();
  87. sql.close();
  88. resultSet.close();
  89.  
  90. return containsServer;
  91. } catch (Exception e) {
  92. e.printStackTrace(); }
  93. return false;
  94. }
  95.  
  96. public String getType(String servername)
  97. {
  98. openConnection();
  99. String type = "";
  100. try {
  101. if (dbContainsServer(servername)) {
  102. PreparedStatement sql = connection.prepareStatement("SELECT servertype FROM `" + DATABASE + "` WHERE servername=?;");
  103. sql.setString(1, servername);
  104. ResultSet result = sql.executeQuery();
  105. result.next();
  106.  
  107. type = result.getString("servertype");
  108. sql.close();
  109. result.close();
  110. return type;
  111. }
  112. return null;
  113. }
  114. catch (Exception e) {
  115. e.printStackTrace();
  116. } finally {
  117. closeConnection();
  118. }
  119. return null;
  120. }
  121.  
  122. public List<String> getServers() {
  123.  
  124. try {
  125. PreparedStatement sql = connection.prepareStatement("SELECT servername FROM `" + DATABASE + "` WHERE servertype=?;");
  126. sql.setString(1, "server");
  127. ResultSet result = sql.executeQuery();
  128. List<String> servers = new ArrayList();
  129.  
  130. while (result.next()) {
  131. String sname = result.getString(1);
  132. servers.add(sname);
  133. }
  134.  
  135. sql.close();
  136. result.close();
  137. return servers;
  138. } catch (Exception e) {
  139. e.printStackTrace();
  140. } finally {
  141. closeConnection();
  142. }
  143. return null;
  144. }
  145.  
  146. public List<String> getRealms() {
  147.  
  148. try {
  149. PreparedStatement sql = connection.prepareStatement("SELECT servername FROM `" + DATABASE + "` WHERE servertype=?;");
  150. sql.setString(1, "realm");
  151. ResultSet result = sql.executeQuery();
  152. List<String> servers = new ArrayList();
  153.  
  154. while (result.next()) {
  155. String sname = result.getString(1);
  156. servers.add(sname);
  157. }
  158.  
  159. sql.close();
  160. result.close();
  161. return servers;
  162. } catch (Exception e) {
  163. e.printStackTrace();
  164. } finally {
  165. closeConnection();
  166. }
  167. return null;
  168. }
  169.  
  170. public void setType(String servername, String servertype) {
  171.  
  172. try {
  173. if (dbContainsServer(servername)) {
  174. PreparedStatement typeUpdate = connection.prepareStatement("UPDATE `" + DATABASE + "` SET servertype=? WHERE servername=?");
  175. typeUpdate.setString(1, servertype);
  176. typeUpdate.setString(2, servername);
  177. typeUpdate.executeUpdate();
  178. typeUpdate.close();
  179. } else {
  180. PreparedStatement typeUpdate = connection.prepareStatement("INSERT INTO `" + DATABASE + "` (`servername`, `servertype`) VALUES (?, ?)");
  181. typeUpdate.setString(1, servername);
  182. typeUpdate.setString(2, servertype);
  183. typeUpdate.executeUpdate();
  184. typeUpdate.close();
  185. }
  186. } catch (Exception e) {
  187. e.printStackTrace();
  188. } finally {
  189. closeConnection();
  190. }
  191. }
  192.  
  193. public void remove(String servername)
  194. {
  195.  
  196. try {
  197. PreparedStatement typeUpdate = connection.prepareStatement("DELETE FROM `" + DATABASE + "` WHERE `servername`=?");
  198. typeUpdate.setString(1, servername);
  199. typeUpdate.executeUpdate();
  200. typeUpdate.close();
  201. } catch (Exception e) {
  202. e.printStackTrace();
  203. } finally {
  204. closeConnection();
  205. }
  206. }
  207.  
  208. public boolean onCommand(CommandSender sender, Command cmd, String alias, String[] args) {
  209. if ((sender instanceof Player)) {
  210. Player p = (Player)sender;
  211. if ((cmd.getName().equalsIgnoreCase("MBR")) || (cmd.getName().equalsIgnoreCase("MinebayRealms"))) {
  212. if (args.length == 0) {
  213. p.sendMessage(ChatColor.RED + "Wrong structure, please use: /MBR <SetServer|RemoveServer|SetRealm|RemoveRealm>!");
  214. } else if (args.length == 1) {
  215. if (args[0].equalsIgnoreCase("SetServer")) {
  216. if (p.hasPermission("MBR.SETSERVER")) {
  217. p.sendMessage(ChatColor.RED + "Invalid arguments, please use: /MBR SetServer <Name>!");
  218. } else {
  219. p.sendMessage(ChatColor.RED + "You don't have enough permissions to perform this command.");
  220. }
  221. } else if (args[0].equalsIgnoreCase("RemoveServer")) {
  222. if (p.hasPermission("MBR.REMOVESERVER")) {
  223. p.sendMessage(ChatColor.RED + "Invalid arguments, please use: /MBR RemoveServer <Name>!");
  224. } else {
  225. p.sendMessage(ChatColor.RED + "You don't have enough permissions to perform this command.");
  226. }
  227. } else if (args[0].equalsIgnoreCase("SetRealm")) {
  228. if (p.hasPermission("MBR.SETREALM")) {
  229. p.sendMessage(ChatColor.RED + "Invalid arguments, please use: /MBR SetRealm <Name>!");
  230. } else {
  231. p.sendMessage(ChatColor.RED + "You don't have enough permissions to perform this command.");
  232. }
  233. } else if (args[0].equalsIgnoreCase("RemoveRealm")) {
  234. if (p.hasPermission("MBR.REMOVEREALM")) {
  235. p.sendMessage(ChatColor.RED + "Invalid arguments, please use: /MBR RemoveRealm <Name>!");
  236. } else {
  237. p.sendMessage(ChatColor.RED + "You don't have enough permissions to perform this command.");
  238. }
  239. }
  240. } else if (args.length == 2)
  241. if (args[0].equalsIgnoreCase("SetServer")) {
  242. if (p.hasPermission("MBR.SETSERVER")) {
  243. setType(args[1], "server");
  244. p.sendMessage(ChatColor.GREEN + "You have succesfully added: " + args[1] + " to the serverlist in the database.");
  245. } else {
  246. p.sendMessage(ChatColor.RED + "You don't have enough permissions to perform this command.");
  247. }
  248. } else if (args[0].equalsIgnoreCase("RemoveServer")) {
  249. if (p.hasPermission("MBR.REMOVESERVER")) {
  250. if (getType(args[1]) == null) {
  251. p.sendMessage(ChatColor.RED + "There is no realm found with that name!");
  252. return false;
  253. }
  254. if (getType(args[1]).equalsIgnoreCase("server")) {
  255. remove(args[1]);
  256. p.sendMessage(ChatColor.GREEN + "You have succesfully removed: " + args[1] + " from the serverlist in the database.");
  257. } else {
  258. p.sendMessage(ChatColor.RED + "There is no server found with that name!");
  259. }
  260. } else {
  261. p.sendMessage(ChatColor.RED + "You don't have enough permissions to perform this command.");
  262. }
  263. } else if (args[0].equalsIgnoreCase("SetRealm")) {
  264. if (p.hasPermission("MBR.SETREALM")) {
  265. setType(args[1], "realm");
  266. p.sendMessage(ChatColor.GREEN + "You have succesfully added: " + args[1] + " to the realmslist in the database.");
  267. } else {
  268. p.sendMessage(ChatColor.RED + "You don't have enough permissions to perform this command.");
  269. }
  270. } else if (args[0].equalsIgnoreCase("RemoveRealm"))
  271. if (p.hasPermission("MBR.SETREALM")) {
  272. if (getType(args[1]) == null) {
  273. p.sendMessage(ChatColor.RED + "There is no realm found with that name!");
  274. return false;
  275. }
  276. if (getType(args[1]).equalsIgnoreCase("realm")) {
  277. remove(args[1]);
  278. p.sendMessage(ChatColor.GREEN + "You have succesfully removed: " + args[1] + " from the realmslist in the database.");
  279. } else {
  280. p.sendMessage(ChatColor.RED + "There is no realm found with that name!");
  281. }
  282. } else {
  283. p.sendMessage(ChatColor.RED + "You don't have enough permissions to perform this command.");
  284. }
  285. } else { Iterator localIterator2;
  286. Object rs;
  287. if (cmd.getName().equalsIgnoreCase("Server")) {
  288. if (args.length == 0) {
  289. p.sendMessage(ChatColor.RED + "No server specified, please use: /Server List!");
  290. } else if (args.length == 1) {
  291. for (String s : getServers()) {
  292. if (args[0].equalsIgnoreCase(s)) {
  293. sendToServer(p, args[0]);
  294. }
  295. }
  296. if (args[0].equalsIgnoreCase("List")) {
  297. String servers = "";
  298. for (localIterator2 = getServers().iterator(); localIterator2.hasNext();) { rs = (String)localIterator2.next();
  299. servers = servers + (String)rs + ", ";
  300. }
  301. p.sendMessage(ChatColor.YELLOW + "Available servers: " + servers);
  302. } else {
  303. p.sendMessage(ChatColor.RED + "No server found with that name! Please use /Server List!");
  304. }
  305. }
  306. } else if ((cmd.getName().equalsIgnoreCase("Realm")) || (cmd.getName().equalsIgnoreCase("Realms"))) {
  307. if (args.length == 0) {
  308. p.sendMessage(ChatColor.RED + "No realm specified, please use: /Realms List!");
  309. } else if (args.length == 1) {
  310. for (rs = getRealms().iterator(); ((Iterator)rs).hasNext();) { String s = (String)((Iterator)rs).next();
  311. if (args[0].equalsIgnoreCase(s)) {
  312. sendToServer(p, args[0]);
  313. }
  314. }
  315. if (args[0].equalsIgnoreCase("List")) {
  316. String realms = "";
  317. for (String rs : getRealms()) {
  318. realms = realms + rs + ", ";
  319. }
  320. p.sendMessage(ChatColor.YELLOW + "Available realms: " + realms);
  321. } else {
  322. p.sendMessage(ChatColor.RED + "No realm found with that name! Please use /Realms List!");
  323. }
  324. }
  325. }
  326. }
  327. }
  328.  
  329. return false;
  330. }
  331. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement