WoolGet/src/main/java/eu/univento/woolget/listeners/JoinQuit.java

126 lines
4.8 KiB
Java

package eu.univento.woolget.listeners;
import eu.univento.core.api.Config;
import eu.univento.core.api.game.TeamManager;
import eu.univento.core.api.player.CustomPlayer;
import eu.univento.core.api.player.SpectateManager;
import eu.univento.core.api.player.Spectator;
import eu.univento.woolget.WoolGet;
import eu.univento.woolget.game.GameStage;
import org.bukkit.Bukkit;
import org.bukkit.Material;
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.PlayerLoginEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
/**
* @author joethei
* @version 0.5
*/
public class JoinQuit implements Listener{
@EventHandler
public void onJoin(PlayerJoinEvent e) {
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
if(WoolGet.getGameStage() == GameStage.Lobby) {
ItemStack voting = new ItemStack(Material.PAPER);
ItemMeta votingMeta = voting.getItemMeta();
votingMeta.setDisplayName("§aMap Voting");
voting.setItemMeta(votingMeta);
ItemStack team = new ItemStack(Material.WOOL);
ItemMeta teamMeta = team.getItemMeta();
teamMeta.setDisplayName("§aTeam wählen");
team.setItemMeta(teamMeta);
ItemStack lobby = new ItemStack(Material.NETHER_STAR);
ItemMeta lobbyMeta = lobby.getItemMeta();
lobbyMeta.setDisplayName("§6zur Lobby");
lobby.setItemMeta(lobbyMeta);
p.getInventory().clear();
p.getInventory().setItem(0, voting);
p.getInventory().setItem(1, team);
p.getInventory().setItem(8, lobby);
p.setLevel(0);
e.setJoinMessage(p.getMessages().PREFIX() + p.getDatabasePlayer().getRank().getColor() + p.getDisplayName() + " §6hat das Spiel betreteten");
WoolGet.getPlayers().add(p);
p.teleport(Config.readLocation("Strive.Spawn"));
}
if(WoolGet.getGameStage() == GameStage.Warmup) {
e.setJoinMessage(null);
new Spectator(p);
p.setScoreboard(Bukkit.getScoreboardManager().getMainScoreboard());
}
if(WoolGet.getGameStage() == GameStage.Game) {
e.setJoinMessage(null);
new Spectator(p);
p.setScoreboard(Bukkit.getScoreboardManager().getMainScoreboard());
}
if(WoolGet.getGameStage() == GameStage.Restart) {
e.setJoinMessage(null);
new Spectator(p);
p.setScoreboard(Bukkit.getScoreboardManager().getMainScoreboard());
}
}
@EventHandler(priority = EventPriority.HIGH)
public void onQuit(PlayerQuitEvent e) {
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
if(WoolGet.getGameStage() == GameStage.Lobby) {
if(WoolGet.getPlayers().contains(p)) {
e.setQuitMessage(p.getMessages().PREFIX() + p.getDatabasePlayer().getRank().getColor() + p.getDisplayName() + " §chat die Lobby verlassen");
}else{
e.setQuitMessage(null);
}
}
if(WoolGet.getGameStage() == GameStage.Warmup) {
if(WoolGet.getPlayers().contains(p)) {
e.setQuitMessage(p.getMessages().PREFIX() + p.getDatabasePlayer().getRank().getColor() + p.getDisplayName() + " §chat das Spiel verlassen");
}else{
e.setQuitMessage(null);
}
}
if(WoolGet.getGameStage() == GameStage.Game) {
if(WoolGet.getPlayers().contains(p)) {
e.setQuitMessage(p.getMessages().PREFIX() + p.getDatabasePlayer().getRank().getColor() + p.getDisplayName() + " §chat das Spiel verlassen");
}else{
e.setQuitMessage(null);
}
}
if(WoolGet.getGameStage() == GameStage.Restart) {
if(WoolGet.getPlayers().contains(p)) {
e.setQuitMessage(p.getMessages().PREFIX() + p.getDatabasePlayer().getRank().getColor() + p.getDisplayName() + " §chat den Server verlassen");
}else{
e.setQuitMessage(null);
}
}
if(WoolGet.getPlayers().contains(p)) {
WoolGet.getPlayers().remove(p);
}
if(SpectateManager.contains(p)) {
SpectateManager.get(p).remove();
}
if(TeamManager.getTeam(p) != null) {
TeamManager.getTeam(p).removePlayer(p);
}
}
@EventHandler
public void onLogin(PlayerLoginEvent e) {
if(WoolGet.getGameStage() == GameStage.Lobby && WoolGet.getPlayers().size() >= WoolGet.getMaxPlayers()) {
e.disallow(PlayerLoginEvent.Result.KICK_FULL, "§cDas Spiel ist voll");
}
}
}