75 lines
2.3 KiB
Java
75 lines
2.3 KiB
Java
/*
|
|
* 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++;
|
|
}
|
|
}
|
|
} |