126 lines
4.8 KiB
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");
|
|
}
|
|
}
|
|
|
|
|
|
} |