package me.avery246813579.hotpotato.game; import me.avery246813579.hotpotato.files.FileHandler; import me.avery246813579.hotpotato.util.MessageUtil; import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffect; import org.bukkit.util.Vector; public class GamePlayer { /** Classes **/ GameManager gameManager; /** Variables **/ private Player player, killer; private int kills; private boolean alive, playedGame = false; /** Players Old Information **/ private ItemStack[] playerInventory, armorInventory; private boolean isFlying, canFly; private Location lastLocation; private GameMode gameMode; private int hunger, levels; private double health; private float exp; public GamePlayer(GameManager gameManager, Player player){ this.gameManager = gameManager; this.player = player; savePlayer(); resetPlayerManually(); giveRespectedItems(); } public void makeSpecator(){ alive = false; gameManager.checkWinner(); resetPlayerManually(); giveRespectedItems(); player.teleport(gameManager.getGame().getSpecSpawn()); player.setHealth(20); player.setVelocity(new Vector(0, 0, 0)); if(FileHandler.ConfigFile.getFile().getBoolean("canFlyWhenDead")){ player.setAllowFlight(true); player.setFlying(true); }else{ player.setAllowFlight(false); player.setFlying(false); } for(GamePlayer gp : gameManager.getGamePlayers()){ if(gameManager.getGameState() == GameState.Live){ Player other = gp.getPlayer(); if(gp.isAlive()){ player.showPlayer(other); other.hidePlayer(player); }else{ player.hidePlayer(other); other.hidePlayer(player); } }else{ player.showPlayer(gp.getPlayer());; gp.getPlayer().showPlayer(player); } } MessageUtil.sendTextMessage(player, "makeSpec"); } public void savePlayer(){ playerInventory = player.getInventory().getContents(); armorInventory = player.getInventory().getArmorContents(); isFlying = player.isFlying(); canFly = player.getAllowFlight(); lastLocation = player.getLocation(); gameMode = player.getGameMode(); hunger = player.getFoodLevel(); levels = player.getLevel(); health = player.getHealth(); exp = player.getExp(); } @SuppressWarnings("deprecation") public void loadPlayer(){ player.getInventory().setContents(playerInventory); player.getInventory().setArmorContents(armorInventory); player.setAllowFlight(canFly); player.setFlying(isFlying); player.teleport(lastLocation); player.setGameMode(gameMode); player.setFoodLevel(hunger); player.setLevel(levels); player.setHealth(health); player.setExp(exp); player.updateInventory(); } public void giveRespectedItems(){ } @SuppressWarnings("deprecation") public void resetPlayerManually(){ player.setHealth(20.0); player.setFoodLevel(20); player.setFireTicks(0); player.setGameMode(GameMode.SURVIVAL); player.setFlying(false); player.setAllowFlight(false); player.setMaxHealth(20); player.setVelocity(new Vector(0, 0, 0)); player.setExp(0); player.setLevel(0); player.getInventory().clear(); player.getInventory().setHelmet(null); player.getInventory().setChestplate(null); player.getInventory().setLeggings(null); player.getInventory().setBoots(null); for(PotionEffect potionEffect : player.getActivePotionEffects()){ player.removePotionEffect(potionEffect.getType()); } player.updateInventory(); } public Player getPlayer() { return player; } public void setPlayer(Player player) { this.player = player; } public Player getKiller() { return killer; } public void setKiller(Player killer) { this.killer = killer; } public int getKills() { return kills; } public void setKills(int kills) { this.kills = kills; } public boolean isAlive() { return alive; } public void setAlive(boolean alive) { this.alive = alive; } public boolean isPlayedGame() { return playedGame; } public void setPlayedGame(boolean playedGame) { this.playedGame = playedGame; } }