Advertisement
Guest User

Untitled

a guest
Jan 30th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.36 KB | None | 0 0
  1. package de.lucas.nick;
  2.  
  3. import java.lang.reflect.Field;
  4. import java.sql.Connection;
  5. import java.sql.DriverManager;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8. import java.util.ArrayList;
  9. import java.util.Arrays;
  10. import java.util.List;
  11.  
  12. import org.bukkit.Bukkit;
  13. import org.bukkit.Material;
  14. import org.bukkit.command.Command;
  15. import org.bukkit.command.CommandExecutor;
  16. import org.bukkit.command.CommandSender;
  17. import org.bukkit.entity.Player;
  18. import org.bukkit.event.EventHandler;
  19. import org.bukkit.event.Listener;
  20. import org.bukkit.event.player.PlayerJoinEvent;
  21. import org.bukkit.event.player.PlayerQuitEvent;
  22. import org.bukkit.inventory.Inventory;
  23. import org.bukkit.inventory.ItemStack;
  24. import org.bukkit.inventory.meta.SkullMeta;
  25. import org.bukkit.scheduler.BukkitRunnable;
  26.  
  27. import com.mojang.authlib.GameProfile;
  28.  
  29. import de.lucas.main.Main;
  30. import de.lucas.nick.Nick.MySQL.DataType;
  31.  
  32. public class Nick implements CommandExecutor, Listener {
  33.  
  34. public String prefix = "§8[§eSystem§8] §7";
  35. public ArrayList<String> autonickers = new ArrayList<String>();
  36. public NickAPI api;
  37. public MySQL mysql;
  38. public Field nameField;
  39. public boolean isEnabled = false;
  40. public static Nick instance;
  41.  
  42. public Nick() {
  43. instance = this;
  44. }
  45.  
  46. public void nickOnEnable() {
  47. isEnabled = true;
  48. nameField = getField(GameProfile.class, "name");
  49. api = new NickAPI(Main.instance);
  50. if (!Main.lobbyServer) {
  51. Bukkit.getPluginManager().registerEvents(this, Main.instance);
  52. }
  53. initSQL();
  54. }
  55.  
  56. private Field getField(Class<?> clazz, String name) {
  57. try {
  58. Field field = clazz.getDeclaredField(name);
  59. field.setAccessible(true);
  60. return field;
  61. } catch (NoSuchFieldException | SecurityException e) {
  62. e.printStackTrace();
  63. }
  64. return null;
  65. }
  66.  
  67. @SuppressWarnings("unchecked")
  68. @EventHandler
  69. public void onJoin(PlayerJoinEvent e) {
  70. Player p = e.getPlayer();
  71. if(Main.lobbyServer)
  72. return;
  73. ArrayList<Integer> result = (ArrayList<Integer>) mysql
  74. .result("SELECT * FROM autonick WHERE username='" + p.getName() + "';", "autonick", DataType.INTEGER);
  75.  
  76. if (result.size() > 0 && result.get(0) == 1) {
  77. api.nickSetzen(p);
  78. p.sendMessage("§8[§eSystem§8] §7Du bist nun genickt als §a" + p.getCustomName());
  79. p.sendMessage("§8[§eSystem§8] §7Nutze §c/nick §7um dich zu entnicken");
  80. }
  81. }
  82.  
  83. @EventHandler
  84. public void onQuit(PlayerQuitEvent e) {
  85. Player p = e.getPlayer();
  86. if (api.isNicked(p))
  87. api.nickEntfernen(p);
  88. mysql.update(
  89. "UPDATE autonick SET isNicked=0, nickname='" + p.getName() + "' WHERE username='" + p.getName() + "';");
  90. }
  91.  
  92. public List<String> cooldown = new ArrayList<>();
  93.  
  94. @Override
  95. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  96. if (sender instanceof Player && sender.hasPermission("system.nick")) {
  97. Player p = (Player) sender;
  98. if (command.getName().equalsIgnoreCase("nick")) {
  99. if (api == null || Main.lobbyServer) {
  100. p.sendMessage("§8[§eSystem§8] §cDir §cwird §ces §cuntersagt §cdich §cauf §cdiesem §cServer §czu §cnicken§c.");
  101. return false;
  102. }
  103. if (cooldown.contains(p.getUniqueId().toString())) {
  104. p.sendMessage("§8[§eSystem§8] §cBitte warte einen Moment.");
  105. return false;
  106. }
  107. cooldown.add(p.getUniqueId().toString());
  108. new BukkitRunnable() {
  109. @Override
  110. public void run() {
  111. cooldown.remove(p.getUniqueId().toString());
  112. }
  113. }.runTaskLaterAsynchronously(Main.instance, 60);
  114. if (api.isNicked(p)) {
  115. api.nickEntfernen(p);
  116. p.sendMessage("§8[§eSystem§8] §cDu wurdest entnickt.");
  117. } else {
  118. api.nickSetzen(p);
  119. p.sendMessage(prefix + "§7Du bist nun genickt als §a" + p.getCustomName());
  120. p.sendMessage(prefix + "§7Nutze §c/nick §7um dich zu entnicken");
  121. }
  122. }
  123. if (command.getName().equalsIgnoreCase("nicklist")) {
  124. if (api == null || Main.lobbyServer) {
  125. p.sendMessage(prefix + "§8[§eSystem§8] §cDir §cwird §ces §cuntersagt §cdich §cauf §cdiesem §cServer §czu §cnicken§c.");
  126. return false;
  127. }
  128. Inventory inv = Bukkit.createInventory(null, 3 * 9, "§cNicklist");
  129. try {
  130. ResultSet rs = mysql.con.prepareStatement("SELECT * FROM autonick WHERE isNicked=1;")
  131. .executeQuery();
  132.  
  133. while (rs.next()) {
  134. String nick = rs.getString("nickname");
  135. String real = rs.getString("username");
  136. if (Bukkit.getPlayer(nick) != null) {
  137. ItemStack i = new ItemStack(Material.SKULL_ITEM, 1, (byte) 3);
  138. SkullMeta m = (SkullMeta) i.getItemMeta();
  139. m.setDisplayName("§e" + nick);
  140. m.setLore(Arrays.asList("§aRealname:", "§a" + real));
  141. m.setOwner(nick);
  142. i.setItemMeta(m);
  143. inv.addItem(i);
  144. }
  145. }
  146. } catch (Exception ex) {
  147. }
  148.  
  149. p.openInventory(inv);
  150. }
  151. }
  152. return true;
  153. }
  154.  
  155. public void initSQL() {
  156. mysql = new MySQL("/*IP*\", 3306, "core", "core", "core");
  157. mysql.update(
  158. "CREATE TABLE IF NOT EXISTS autonick (username VARCHAR(32) NOT NULL, autonick INT(2) NOT NULL, isNicked INT(2) NOT NULL, nickname VARCHAR(32) NOT NULL);");
  159. }
  160.  
  161. public static class MySQL {
  162.  
  163. public Connection con;
  164.  
  165. public MySQL(String host, int port, String user, String pw, String db) {
  166. try {
  167. con = DriverManager.getConnection(
  168. "jdbc:mysql://" + host + ":" + port + "/" + db + "?autoReconnect=true", user, pw);
  169. } catch (SQLException e) {
  170. e.printStackTrace();
  171. }
  172. }
  173.  
  174. public void update(String sql) {
  175. try {
  176. con.prepareStatement(sql).executeUpdate();
  177. } catch (Exception ex) {
  178. ex.printStackTrace();
  179. }
  180. }
  181.  
  182. @SuppressWarnings("unchecked")
  183. public ArrayList<?> result(String query, String column, DataType type) {
  184. try {
  185. ResultSet rs = con.prepareStatement(query).executeQuery();
  186. ArrayList<?> rslt = new ArrayList<>();
  187. while (rs.next())
  188. switch (type) {
  189. case STRING:
  190. ((ArrayList<String>) rslt).add(rs.getString(column));
  191. break;
  192. case INTEGER:
  193. ((ArrayList<Integer>) rslt).add(rs.getInt(column));
  194. break;
  195. case BOOLEAN:
  196. ((ArrayList<Boolean>) rslt).add(rs.getBoolean(column));
  197. break;
  198. }
  199. return rslt;
  200. } catch (Exception ex) {
  201. ex.printStackTrace();
  202. return new ArrayList<>();
  203. }
  204. }
  205.  
  206. public static enum DataType {
  207. STRING, INTEGER, BOOLEAN;
  208. }
  209.  
  210. }
  211.  
  212. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement