Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package de.lucas.nick;
- import java.lang.reflect.Field;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import org.bukkit.Bukkit;
- import org.bukkit.Material;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandExecutor;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.player.PlayerJoinEvent;
- import org.bukkit.event.player.PlayerQuitEvent;
- import org.bukkit.inventory.Inventory;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.meta.SkullMeta;
- import org.bukkit.scheduler.BukkitRunnable;
- import com.mojang.authlib.GameProfile;
- import de.lucas.main.Main;
- import de.lucas.nick.Nick.MySQL.DataType;
- public class Nick implements CommandExecutor, Listener {
- public String prefix = "§8[§eSystem§8] §7";
- public ArrayList<String> autonickers = new ArrayList<String>();
- public NickAPI api;
- public MySQL mysql;
- public Field nameField;
- public boolean isEnabled = false;
- public static Nick instance;
- public Nick() {
- instance = this;
- }
- public void nickOnEnable() {
- isEnabled = true;
- nameField = getField(GameProfile.class, "name");
- api = new NickAPI(Main.instance);
- if (!Main.lobbyServer) {
- Bukkit.getPluginManager().registerEvents(this, Main.instance);
- }
- initSQL();
- }
- private Field getField(Class<?> clazz, String name) {
- try {
- Field field = clazz.getDeclaredField(name);
- field.setAccessible(true);
- return field;
- } catch (NoSuchFieldException | SecurityException e) {
- e.printStackTrace();
- }
- return null;
- }
- @SuppressWarnings("unchecked")
- @EventHandler
- public void onJoin(PlayerJoinEvent e) {
- Player p = e.getPlayer();
- if(Main.lobbyServer)
- return;
- ArrayList<Integer> result = (ArrayList<Integer>) mysql
- .result("SELECT * FROM autonick WHERE username='" + p.getName() + "';", "autonick", DataType.INTEGER);
- if (result.size() > 0 && result.get(0) == 1) {
- api.nickSetzen(p);
- p.sendMessage("§8[§eSystem§8] §7Du bist nun genickt als §a" + p.getCustomName());
- p.sendMessage("§8[§eSystem§8] §7Nutze §c/nick §7um dich zu entnicken");
- }
- }
- @EventHandler
- public void onQuit(PlayerQuitEvent e) {
- Player p = e.getPlayer();
- if (api.isNicked(p))
- api.nickEntfernen(p);
- mysql.update(
- "UPDATE autonick SET isNicked=0, nickname='" + p.getName() + "' WHERE username='" + p.getName() + "';");
- }
- public List<String> cooldown = new ArrayList<>();
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (sender instanceof Player && sender.hasPermission("system.nick")) {
- Player p = (Player) sender;
- if (command.getName().equalsIgnoreCase("nick")) {
- if (api == null || Main.lobbyServer) {
- p.sendMessage("§8[§eSystem§8] §cDir §cwird §ces §cuntersagt §cdich §cauf §cdiesem §cServer §czu §cnicken§c.");
- return false;
- }
- if (cooldown.contains(p.getUniqueId().toString())) {
- p.sendMessage("§8[§eSystem§8] §cBitte warte einen Moment.");
- return false;
- }
- cooldown.add(p.getUniqueId().toString());
- new BukkitRunnable() {
- @Override
- public void run() {
- cooldown.remove(p.getUniqueId().toString());
- }
- }.runTaskLaterAsynchronously(Main.instance, 60);
- if (api.isNicked(p)) {
- api.nickEntfernen(p);
- p.sendMessage("§8[§eSystem§8] §cDu wurdest entnickt.");
- } else {
- api.nickSetzen(p);
- p.sendMessage(prefix + "§7Du bist nun genickt als §a" + p.getCustomName());
- p.sendMessage(prefix + "§7Nutze §c/nick §7um dich zu entnicken");
- }
- }
- if (command.getName().equalsIgnoreCase("nicklist")) {
- if (api == null || Main.lobbyServer) {
- p.sendMessage(prefix + "§8[§eSystem§8] §cDir §cwird §ces §cuntersagt §cdich §cauf §cdiesem §cServer §czu §cnicken§c.");
- return false;
- }
- Inventory inv = Bukkit.createInventory(null, 3 * 9, "§cNicklist");
- try {
- ResultSet rs = mysql.con.prepareStatement("SELECT * FROM autonick WHERE isNicked=1;")
- .executeQuery();
- while (rs.next()) {
- String nick = rs.getString("nickname");
- String real = rs.getString("username");
- if (Bukkit.getPlayer(nick) != null) {
- ItemStack i = new ItemStack(Material.SKULL_ITEM, 1, (byte) 3);
- SkullMeta m = (SkullMeta) i.getItemMeta();
- m.setDisplayName("§e" + nick);
- m.setLore(Arrays.asList("§aRealname:", "§a" + real));
- m.setOwner(nick);
- i.setItemMeta(m);
- inv.addItem(i);
- }
- }
- } catch (Exception ex) {
- }
- p.openInventory(inv);
- }
- }
- return true;
- }
- public void initSQL() {
- mysql = new MySQL("/*IP*\", 3306, "core", "core", "core");
- mysql.update(
- "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);");
- }
- public static class MySQL {
- public Connection con;
- public MySQL(String host, int port, String user, String pw, String db) {
- try {
- con = DriverManager.getConnection(
- "jdbc:mysql://" + host + ":" + port + "/" + db + "?autoReconnect=true", user, pw);
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- public void update(String sql) {
- try {
- con.prepareStatement(sql).executeUpdate();
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- @SuppressWarnings("unchecked")
- public ArrayList<?> result(String query, String column, DataType type) {
- try {
- ResultSet rs = con.prepareStatement(query).executeQuery();
- ArrayList<?> rslt = new ArrayList<>();
- while (rs.next())
- switch (type) {
- case STRING:
- ((ArrayList<String>) rslt).add(rs.getString(column));
- break;
- case INTEGER:
- ((ArrayList<Integer>) rslt).add(rs.getInt(column));
- break;
- case BOOLEAN:
- ((ArrayList<Boolean>) rslt).add(rs.getBoolean(column));
- break;
- }
- return rslt;
- } catch (Exception ex) {
- ex.printStackTrace();
- return new ArrayList<>();
- }
- }
- public static enum DataType {
- STRING, INTEGER, BOOLEAN;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement