141 lines
4.4 KiB
Java
141 lines
4.4 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.player.CustomPlayer;
|
|
import eu.univento.core.api.player.NickName;
|
|
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 org.bukkit.scoreboard.Team;
|
|
|
|
/**
|
|
* @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());
|
|
|
|
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.hasPlayedBefore()) {
|
|
p.insertToDatabase();
|
|
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)), 100L);
|
|
}
|
|
p.updateDatabaseEntry();
|
|
Title.sendTabTitle(p, p.getMessages().Core_TAB_TITLE() + Bukkit.getServerName() , p.getMessages().TAB_PREFIX());
|
|
p.setGameMode(ServerSettings.getGameMode());
|
|
p.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard());
|
|
p.initScoreboard();
|
|
if(p.isNicked()) {
|
|
//TODO: add nicking back in
|
|
}
|
|
|
|
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());
|
|
if(Build.getPlayers().containsKey(p))
|
|
Build.getPlayers().remove(p);
|
|
if(ServerSettings.isGame()) {
|
|
p.setDisplayName(p.getName());
|
|
NickName.remove(p);
|
|
}
|
|
for(Team team : p.getScoreboard().getTeams()) {
|
|
team.removeEntry(p.getDisplayName());
|
|
}
|
|
p.onLeave();
|
|
}
|
|
|
|
|
|
/**
|
|
* Handles KickMessage
|
|
* @param e event
|
|
*/
|
|
@EventHandler(priority=EventPriority.HIGHEST)
|
|
public void onKick(PlayerKickEvent e) {
|
|
e.setLeaveMessage(null);
|
|
}
|
|
|
|
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("§6Italiano");
|
|
it.setItemMeta(itMeta);
|
|
|
|
inv.setItem(0, en);
|
|
inv.setItem(1, de);
|
|
inv.setItem(2, it);
|
|
|
|
return inv;
|
|
}
|
|
} |