194 lines
6.5 KiB
Java
194 lines
6.5 KiB
Java
package eu.univento.core.listeners;
|
|
|
|
import eu.univento.core.Core;
|
|
import eu.univento.core.api.Title;
|
|
import eu.univento.core.api.Utils;
|
|
import eu.univento.core.api.database.MySQL;
|
|
import eu.univento.core.api.languages.Messages;
|
|
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.Spectator;
|
|
import eu.univento.core.api.server.ServerSettings;
|
|
import eu.univento.core.commands.Build;
|
|
import eu.univento.core.commands.Vanish;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.Material;
|
|
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.PlayerLoginEvent;
|
|
import org.bukkit.event.player.PlayerQuitEvent;
|
|
import org.bukkit.inventory.Inventory;
|
|
import org.bukkit.inventory.ItemStack;
|
|
import org.bukkit.inventory.meta.ItemMeta;
|
|
|
|
import java.sql.PreparedStatement;
|
|
import java.sql.ResultSet;
|
|
import java.sql.SQLException;
|
|
import java.sql.Timestamp;
|
|
import java.util.Date;
|
|
|
|
/**
|
|
* @author joethei
|
|
* @version 1.0
|
|
*/
|
|
public class JoinQuit implements Listener{
|
|
|
|
/**
|
|
* Handles JoinMessage and vanished players
|
|
* @param e event
|
|
*/
|
|
@EventHandler
|
|
public void onJoin(PlayerJoinEvent e) {
|
|
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
|
|
Messages msgs = new Messages(p);
|
|
|
|
p.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard());
|
|
|
|
for(Player players : Bukkit.getOnlinePlayers()) {
|
|
CustomPlayer player = CustomPlayer.getPlayer(players);
|
|
if(Vanish.getPlayers().contains(player)) {
|
|
p.hidePlayer(player);
|
|
}
|
|
if(Spectator.is(player)) {
|
|
p.hidePlayer(player);
|
|
}
|
|
}
|
|
if(p.isNicked()) {
|
|
p.setDisplayName(p.getNick());
|
|
}
|
|
|
|
if(!p.isSetting("joined")) {
|
|
p.changeSetting("joined");
|
|
}
|
|
if(!p.hasPlayedBefore()) {
|
|
createPlayer(p);
|
|
Perms.getRanks().put(p, p.getFreshRank());
|
|
for(int i = 0; i >= 15; i++) {
|
|
Utils.randomFirework(p.getEyeLocation());
|
|
}
|
|
Title.sendTitle(p, 0, 100, 0, "§6Welcome", "§aPlease choose a language");
|
|
Bukkit.getScheduler().scheduleSyncDelayedTask(Core.getInstance(), () -> p.openInventory(getLanguageChooser(p)), 140L);
|
|
}
|
|
Perms.getRanks().put(p, p.getFreshRank());
|
|
Perms.initScoreboard(p);
|
|
Title.sendTabTitle(p, msgs.Core_TAB_TITLE() + Bukkit.getServerName() , msgs.PREFIX());
|
|
p.setGameMode(ServerSettings.getGameMode());
|
|
p.checkVerifiedTs();
|
|
|
|
|
|
|
|
for(Player players : Bukkit.getOnlinePlayers()) {
|
|
CustomPlayer player = CustomPlayer.getPlayer(players);
|
|
p.getScoreboard().getTeam(player.getTeam().getName()).addEntry(player.getDisplayName());
|
|
player.getScoreboard().getTeam(p.getTeam().getName()).addEntry(p.getDisplayName());
|
|
}
|
|
|
|
}
|
|
|
|
@EventHandler
|
|
public void onLogin(PlayerLoginEvent e) {
|
|
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
|
|
//Core.log(Level.INFO, "PlayerLogin " + p.getName() + " | " + p.isBanned());
|
|
//if(p.isBanned()) {
|
|
// e.disallow(PlayerLoginEvent.Result.KICK_BANNED, "§cYou have been banned. §6Reason: " + p.getBanReason() + "\nUntil: " + p.getBanTime());
|
|
//}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Handles QuitMessage and other needed stuff
|
|
* @param e event
|
|
*/
|
|
@EventHandler
|
|
public void onQuit(PlayerQuitEvent e) {
|
|
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
|
|
NickName.remove(p);
|
|
if(Build.getPlayers().containsKey(p))
|
|
Build.getPlayers().remove(p);
|
|
if(!ServerSettings.isGame())
|
|
p.getTeam().removeEntry(p.getDisplayName());
|
|
if(ServerSettings.isGame())
|
|
p.setNicked(false);
|
|
Perms.getRanks().remove(p);
|
|
p.onLeave();
|
|
}
|
|
|
|
/**
|
|
* creates player in database
|
|
* @param p CustomPlayer
|
|
*/
|
|
void createPlayer(CustomPlayer p) {
|
|
MySQL sql = Core.returnSQL();
|
|
Date date = new Date();
|
|
Timestamp time = new Timestamp(date.getTime());
|
|
String uuid = p.getUniqueId().toString();
|
|
try {
|
|
sql.openConnection();
|
|
PreparedStatement st = sql.getConnection().prepareStatement("SELECT UUID FROM users WHERE UUID ='" + uuid + "'");
|
|
ResultSet res = st.executeQuery();
|
|
if (!res.next()){
|
|
PreparedStatement st2 = sql.getConnection().prepareStatement("INSERT INTO users (UUID, FirstJoin, Rank, Coins) VALUES ('" + uuid + "','" + time + "', '" + Perms.Ranks.Player.toString() + "', 0);");
|
|
st2.execute();
|
|
|
|
int id = p.getID();
|
|
|
|
PreparedStatement st3 = sql.getConnection().prepareStatement("INSERT INTO PlayerSettings (ID, teleport, FastMenu, requestsParty, requestsFriend, joined, nick) VALUES ('" + id +"', '1', '0', '1', '1', '0', '0',);");
|
|
st3.execute();
|
|
|
|
PreparedStatement st4 = sql.getConnection().prepareStatement("INSERT INTO FoundItems(ID, music_3, sugar, feather, hearts) VALUES ('" + id + "',0, 0, 0, 0);");
|
|
st4.execute();
|
|
|
|
sql.closeConnection();
|
|
return;
|
|
}
|
|
sql.closeConnection();
|
|
}
|
|
catch (SQLException | ClassNotFoundException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Handles KickMessage
|
|
* @param e event
|
|
*/
|
|
@EventHandler(priority=EventPriority.HIGHEST)
|
|
public void onKick(PlayerKickEvent e) {
|
|
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
|
|
e.setLeaveMessage(null);
|
|
p.setNicked(false);
|
|
}
|
|
|
|
public static Inventory getLanguageChooser(CustomPlayer p) {
|
|
Inventory inv = Bukkit.createInventory(p, 9, "§6Language Chooser");
|
|
|
|
ItemStack en = new ItemStack(Material.PAPER);
|
|
ItemMeta enMeta = en.getItemMeta();
|
|
enMeta.setDisplayName("§6English");
|
|
en.setItemMeta(enMeta);
|
|
|
|
ItemStack de = new ItemStack(Material.PAPER);
|
|
ItemMeta deMeta = de.getItemMeta();
|
|
deMeta.setDisplayName("§6Deutsch");
|
|
de.setItemMeta(deMeta);
|
|
|
|
|
|
ItemStack it = new ItemStack(Material.PAPER);
|
|
ItemMeta itMeta = it.getItemMeta();
|
|
itMeta.setDisplayName("§6Italienisch");
|
|
it.setItemMeta(itMeta);
|
|
|
|
inv.setItem(0, en);
|
|
inv.setItem(1, de);
|
|
inv.setItem(2, it);
|
|
|
|
return inv;
|
|
}
|
|
} |