package eu.univento.core.listeners; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Timestamp; import java.util.Date; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerQuitEvent; import eu.univento.core.Core; import eu.univento.core.api.Messages; import eu.univento.core.api.MySQL; import eu.univento.core.api.Utils; import eu.univento.core.api.player.CustomPlayer; import eu.univento.core.api.player.NickName; import eu.univento.core.api.player.Perms; import eu.univento.core.api.player.Perms.Ranks; import eu.univento.core.commands.Vanish; /** * @author joethei * @version 1.0 */ public class JoinQuit implements Listener{ /** * Handles JoinMessage and vanished players * @param e event */ @SuppressWarnings("deprecation") @EventHandler public void onJoin(PlayerJoinEvent e) { CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer().getName()); if(!p.hasPlayedBefore()) { createPlayer(p); p.sendMessage(Messages.PREFIX + "§aHerzlich willkommen auf univento.eu"); p.sendMessage(Messages.PREFIX + "§6Dem Netzwerk mit Style"); for(int i = 0; i >= 15; i++) { Utils.randomFireworks(p.getEyeLocation()); } } e.setJoinMessage(null); Perms.getRanks().put(p, p.getRankFresh()); p.getTeam().addPlayer(p); p.setScoreboard(Bukkit.getScoreboardManager().getMainScoreboard()); try { setup(p, p.getRank()); } catch (SQLException e1) { e1.printStackTrace(); } for(Player players : Bukkit.getOnlinePlayers()) { if(Vanish.getPlayers().contains(players)) { p.hidePlayer(players); } } if(p.isNicked()) { p.setDisplayName(p.getNick()); } } /** * Handles QuitMessage and other needed stuff * @param e event */ @SuppressWarnings("deprecation") @EventHandler public void onQuit(PlayerQuitEvent e) { CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer().getName()); NickName.remove(p); Perms.getRanks().remove(p); p.getTeam().removePlayer(p); p.onLeave(); e.setQuitMessage(null); } /** * creates player in database * @param p CustomPlayer */ private static void createPlayer(CustomPlayer p) { Date date = new Date(); Timestamp time = new Timestamp(date.getTime()); String uuid = p.getUniqueId().toString(); try { MySQL sql = Core.returnSQL(); sql.openConnection(); ResultSet res = Core.returnSQL().getConnection().createStatement().executeQuery("SELECT player_uuid FROM PlayerData WHERE player_uuid ='" + uuid + "';"); if (!res.next()) Core.returnSQL().getConnection().createStatement().execute("INSERT INTO PlayerData (player_uuid, FirstJoin, Coins, mute, Rank, nick, FastMenu, teleport) VALUES ('" + uuid + "','" + time + "', '0', '0', '" + Perms.Ranks.Spieler.toString() + "', '0', '0', '1');"); sql.closeConnection(); } catch (SQLException | ClassNotFoundException e) { e.printStackTrace(); } } /** * sets up the player * @param p CustomPlayer * @param r Ranks * @throws SQLException Database not available */ private void setup(CustomPlayer p, Ranks r) throws SQLException { if (p.isNicked()) { Core.nicks.put(p, NickName.getNicks()); setName(p, Core.nicks.get(p)); } else { setName(p, p.getName()); } } /** * sets DisplayName of Player * @param p CustomPlayer * @param name name to set */ private void setName(CustomPlayer p, String name) { p.setDisplayName(name); p.setPlayerListName(p.getColor() + name); } /** * Handles KickMessage * @param e event */ @EventHandler(priority=EventPriority.HIGHEST) public void onKick(PlayerKickEvent e) { e.setLeaveMessage(null); NickName.remove(e.getPlayer()); } }