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