Core/src/main/java/eu/univento/core/api/player/Spectator.java

75 lines
2.3 KiB
Java
Raw Normal View History

/*
2018-01-15 12:25:45 +01:00
* Copyright (c) 2018 univento.eu - All rights reserved
* You are not allowed to use, distribute or modify this code
*/
2016-04-13 05:52:53 +02:00
package eu.univento.core.api.player;
import eu.univento.core.Core;
import eu.univento.core.api.game.PlayerManager;
2018-01-15 12:25:45 +01:00
import eu.univento.core.api.gui.inventory.InventoryGUI;
import eu.univento.core.api.items.ItemBuilder;
2016-04-13 05:52:53 +02:00
import eu.univento.core.api.server.ServerSettings;
import org.bukkit.GameMode;
import org.bukkit.Material;
2016-04-13 05:52:53 +02:00
/**
* @author joethei
* @version 2.0
2016-04-13 05:52:53 +02:00
*/
public class Spectator {
private final CustomPlayer player;
2016-04-13 05:52:53 +02:00
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());
2016-04-13 05:52:53 +02:00
}
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);
2016-04-13 05:52:53 +02:00
}
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);
2016-04-13 05:52:53 +02:00
}
public void resetSpectateTarget() {
if(player.getSpectatorTarget() != null) player.setSpectatorTarget(null);
2016-04-13 05:52:53 +02:00
}
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++;
}
}
2016-04-13 05:52:53 +02:00
}