Core/src/eu/univento/core/listeners/JoinQuit.java

139 lines
4.0 KiB
Java

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());
}
}