/* * Copyright (c) 2018 univento.eu - All rights reserved * You are not allowed to use, distribute or modify this code */ package eu.univento.core.api.player; import eu.univento.core.Core; import eu.univento.core.api.game.PlayerManager; import eu.univento.core.api.gui.inventory.InventoryGUI; import eu.univento.core.api.items.ItemBuilder; import eu.univento.core.api.server.ServerSettings; import org.bukkit.GameMode; import org.bukkit.Material; /** * @author joethei * @version 2.0 */ public class Spectator { private final CustomPlayer player; public Spectator(CustomPlayer player) { this.player = player; for (CustomPlayer players : Core.getOnlinePlayers()) players.hidePlayer(player); SpectateManager.add(this); player.setGameMode(GameMode.ADVENTURE); player.setAllowFlight(true); player.setFlying(true); player.getInventory().setItem(7, new ItemBuilder(Material.PAPER).name("Weiterspielen").build()); player.getInventory().setItem(8, new ItemBuilder(Material.BED).name("Zur Lobby").build()); } public CustomPlayer getPlayer() { return player; } public void remove() { for(CustomPlayer players : Core.getOnlinePlayers()) players.hidePlayer(player); player.setGameMode(ServerSettings.getGameMode()); player.setAllowFlight(false); player.setFlying(false); SpectateManager.remove(this); if(player.getSpectatorTarget() != null) player.setSpectatorTarget(null); } public void spectate(CustomPlayer p) { if(SpectateManager.contains(p)) { player.sendMessage("Dieser Spieler ist schon tot"); return; } if(!p.isOnline()) { player.sendMessage("Dieser Spieler ist nicht mehr online"); return; } player.setSpectatorTarget(p); } public void resetSpectateTarget() { if(player.getSpectatorTarget() != null) player.setSpectatorTarget(null); } public void openPlayerListInventory() { InventoryGUI gui = new InventoryGUI(player, (int) (Math.ceil(PlayerManager.getPlayers().size() / 9.0D) * 9), "Spieler"); int i = 0; for(CustomPlayer players : PlayerManager.getPlayers()) { gui.addItem(i, new ItemBuilder(Material.SKULL_ITEM).durability((short) 3).skullOwner(players.getUniqueId()).build(), player -> spectate(players)); i++; } } }