139 lines
4.0 KiB
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());
|
|
}
|
|
} |