added scoreboard
This commit is contained in:
parent
017697914c
commit
6c4b150e96
@ -16,10 +16,7 @@ public class JoinListener implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent event){
|
||||
if(this.gameManager.getPlugin().config.getBoolean("force-on-spawn")) {
|
||||
this.gameManager.getPlayerManager().setGameMode(event.getPlayer(), GameMode.SURVIVAL);
|
||||
this.gameManager.getPlayerManager().setPlayerHealth(event.getPlayer(), 20);
|
||||
}
|
||||
this.gameManager.getScoreBoardManager().createScoreBoard(event.getPlayer(), 0, 0);
|
||||
if(this.gameManager.gameState == GameState.ACTIVE) {
|
||||
this.gameManager.getPlayerManager().setGameMode(event.getPlayer(), GameMode.SPECTATOR);
|
||||
this.gameManager.getPlayerManager().teleportPlayer(event.getPlayer(), this.gameManager.getPlugin().config.getLocation("arena"));
|
||||
@ -28,8 +25,15 @@ public class JoinListener implements Listener {
|
||||
if(this.gameManager.getPlugin().config.getBoolean("force-on-spawn")) {
|
||||
this.gameManager.getPlayerManager().setGameMode(event.getPlayer(), GameMode.SURVIVAL);
|
||||
this.gameManager.getPlayerManager().setPlayerHealth(event.getPlayer(), 20);
|
||||
this.gameManager.getPlayerManager().teleportPlayer(event.getPlayer(), this.gameManager.getPlugin().config.getLocation("lobby"));
|
||||
}
|
||||
this.gameManager.setGameState(GameState.WAITING);
|
||||
} else if (this.gameManager.gameState == GameState.WAITING) {
|
||||
if(this.gameManager.getPlugin().config.getBoolean("force-on-spawn")) {
|
||||
this.gameManager.getPlayerManager().setGameMode(event.getPlayer(), GameMode.SURVIVAL);
|
||||
this.gameManager.getPlayerManager().setPlayerHealth(event.getPlayer(), 20);
|
||||
this.gameManager.getPlayerManager().teleportPlayer(event.getPlayer(), this.gameManager.getPlugin().config.getLocation("lobby"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -8,17 +8,20 @@ import org.bukkit.*;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class GameManager {
|
||||
private final Tridentwar plugin;
|
||||
private TridentManager tridentManager;
|
||||
private GameStartCountdownTask gameStartCountdownTask;
|
||||
public GameState gameState = GameState.LOBBY;
|
||||
private PlayerManager playerManager;
|
||||
private MessageManager messageManager;
|
||||
private FileHandler fileHandler;
|
||||
private LobbyWaitingTask lobbyWaitingTask;
|
||||
private boolean isWaiting = false;
|
||||
private Effect record;
|
||||
private ScoreBoardManager scoreBoardManager;
|
||||
public GameState gameState = GameState.LOBBY;
|
||||
|
||||
/**
|
||||
* Handles the entire Game
|
||||
@ -30,6 +33,7 @@ public class GameManager {
|
||||
this.playerManager = new PlayerManager(this);
|
||||
this.messageManager = new MessageManager(this);
|
||||
this.fileHandler = new FileHandler(this);
|
||||
this.scoreBoardManager = new ScoreBoardManager(this);
|
||||
this.lobbyWaitingTask = null;
|
||||
}
|
||||
|
||||
@ -48,6 +52,10 @@ public class GameManager {
|
||||
this.playerManager.setPlayersHealth(20F);
|
||||
this.playerManager.setAlive(Bukkit.getOnlinePlayers().size());
|
||||
this.playerManager.giveKits();
|
||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||
this.playerManager.setKills(p, 0);
|
||||
this.scoreBoardManager.updateScoreBoard(p, this.getPlayerManager().getAlive(), this.playerManager.getKills(p));
|
||||
}
|
||||
break;
|
||||
|
||||
case STARTING:
|
||||
@ -118,12 +126,20 @@ public class GameManager {
|
||||
public void run() {
|
||||
// Move players to Hub
|
||||
Bukkit.getOnlinePlayers().forEach(player -> playerManager.moveFromServer(plugin.config.getString("lobby-server"), player));
|
||||
|
||||
if (plugin.config.getBoolean("autorestart")) {
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Bukkit.getServer().dispatchCommand(plugin.getServer().getConsoleSender(), "restart");
|
||||
}
|
||||
}.runTaskLater(plugin, 120);
|
||||
}
|
||||
}
|
||||
}.runTaskLater(plugin, 100);
|
||||
|
||||
if (plugin.config.getBoolean("autorestart")) {
|
||||
Bukkit.getServer().dispatchCommand(plugin.getServer().getConsoleSender(), "restart");
|
||||
}
|
||||
|
||||
Bukkit.getOnlinePlayers().forEach(player -> this.scoreBoardManager.removeScoreBoard(player));
|
||||
|
||||
this.setGameState(GameState.LOBBY);
|
||||
break;
|
||||
@ -139,16 +155,32 @@ public class GameManager {
|
||||
Bukkit.getOnlinePlayers().forEach(player -> playerManager.moveFromServer(this.plugin.config.getString("lobby-server"), player));
|
||||
|
||||
if (plugin.config.getBoolean("autorestart")) {
|
||||
Bukkit.getServer().dispatchCommand(plugin.getServer().getConsoleSender(), "restart");
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Bukkit.getServer().dispatchCommand(plugin.getServer().getConsoleSender(), "restart");
|
||||
}
|
||||
}.runTaskLater(plugin, 120);
|
||||
}
|
||||
|
||||
Bukkit.getOnlinePlayers().forEach(player -> this.scoreBoardManager.removeScoreBoard(player));
|
||||
this.setGameState(GameState.LOBBY);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void cleanup(){}
|
||||
public void cleanup(){
|
||||
String worldName = "world";
|
||||
File playerFilesDir = new File(worldName + "/playerdata");
|
||||
if(playerFilesDir.isDirectory()){
|
||||
String[] playerDats = playerFilesDir.list();
|
||||
for (int i = 0; i < playerDats.length; i++) {
|
||||
File datFile = new File(playerFilesDir, playerDats[i]);
|
||||
datFile.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current lobby wayiting task
|
||||
@ -207,4 +239,10 @@ public class GameManager {
|
||||
plugin.config.set(path, loc);
|
||||
plugin.saveConfig();
|
||||
}
|
||||
|
||||
/**
|
||||
* gives back the active scoreboard manager
|
||||
* @return the scorboard manager
|
||||
*/
|
||||
public ScoreBoardManager getScoreBoardManager() { return scoreBoardManager; }
|
||||
}
|
||||
|
@ -77,14 +77,23 @@ public class PlayerManager {
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates or sets a players kills
|
||||
* sets a players kills
|
||||
* @param p the player
|
||||
*/
|
||||
public void addKill(Player p){
|
||||
public void setKills(Player p, int kill){
|
||||
if(this.kills.containsKey(p)){
|
||||
this.kills.replace(p, this.kills.get(p)+1);
|
||||
this.kills.replace(p, kill);
|
||||
} else {
|
||||
this.kills.put(p, 1);
|
||||
this.kills.put(p, kill);
|
||||
}
|
||||
this.gameManager.getScoreBoardManager().updateScoreBoard(p, this.alive, this.kills.get(p));
|
||||
}
|
||||
|
||||
public void addKill(Player player){
|
||||
if(this.kills.containsKey(player)){
|
||||
setKills(player, getKills(player) + 1);
|
||||
} else {
|
||||
setKills(player, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,63 @@
|
||||
package de.steev.Tridentwar.manager;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scoreboard.*;
|
||||
|
||||
public class ScoreBoardManager {
|
||||
private GameManager gameManager;
|
||||
private ScoreboardManager manager;
|
||||
|
||||
/**
|
||||
* Manages Scoreboards created by the plugin
|
||||
* @param gameManager the local gamemanager instance
|
||||
*/
|
||||
public ScoreBoardManager(GameManager gameManager) { this.manager = Bukkit.getScoreboardManager(); }
|
||||
|
||||
/**
|
||||
* Creates and sets a scoreboard for a player
|
||||
* @param player the player
|
||||
* @param alive how many players are alive
|
||||
* @param kills how many kills the player got
|
||||
*/
|
||||
public void createScoreBoard(Player player, int alive, int kills) {
|
||||
Scoreboard scoreboard = manager.getNewScoreboard();
|
||||
Objective objective = scoreboard.registerNewObjective("TridentWar","dummy", ChatColor.translateAlternateColorCodes('&',"&7&l<< &bTridentWar &7&l>>"));
|
||||
objective.setDisplaySlot(DisplaySlot.SIDEBAR);
|
||||
Score splitter = objective.getScore("=-=-=-=-=-=-=-=-=-=-=");
|
||||
splitter.setScore(6);
|
||||
Score playername = objective.getScore(ChatColor.translateAlternateColorCodes('&',"&ePlayer: " + ChatColor.WHITE + ChatColor.BOLD + player.getDisplayName()));
|
||||
playername.setScore(5);
|
||||
Score empty2 = objective.getScore("");
|
||||
empty2.setScore(4);
|
||||
Score aliveScore = objective.getScore(ChatColor.translateAlternateColorCodes('&',"&eAlive: " + ChatColor.WHITE + ChatColor.BOLD + alive));
|
||||
aliveScore.setScore(3);
|
||||
Score killScore = objective.getScore(ChatColor.translateAlternateColorCodes('&',"&eKills: " + ChatColor.WHITE + ChatColor.BOLD + kills));
|
||||
killScore.setScore(2);
|
||||
Score empty = objective.getScore("");
|
||||
empty.setScore(1);
|
||||
Score address = objective.getScore("play.slpnetwork.de");
|
||||
address.setScore(0);
|
||||
player.setScoreboard(scoreboard);
|
||||
}
|
||||
|
||||
/**
|
||||
* updates a players scoreboard or sets one
|
||||
* @param player the player
|
||||
* @param alive how many players are alive
|
||||
* @param kills how many kills the player got
|
||||
*/
|
||||
public void updateScoreBoard(Player player, int alive, int kills){
|
||||
player.getScoreboard().clearSlot(DisplaySlot.SIDEBAR);
|
||||
createScoreBoard(player,alive,kills);
|
||||
}
|
||||
|
||||
/**
|
||||
* clears a player specific scoreboard
|
||||
* @param player the player
|
||||
*/
|
||||
public void removeScoreBoard(Player player) {
|
||||
player.getScoreboard().clearSlot(DisplaySlot.SIDEBAR);
|
||||
}
|
||||
}
|
@ -13,41 +13,23 @@ import org.bukkit.scheduler.BukkitRunnable;
|
||||
public class TridentResetTask extends BukkitRunnable {
|
||||
|
||||
private GameManager gameManager;
|
||||
private Player thrower;
|
||||
private Entity projectile;
|
||||
|
||||
public TridentResetTask (GameManager gameManager, Player thrower, Entity projektile) {
|
||||
this.gameManager = gameManager;
|
||||
this.thrower = thrower;
|
||||
this.projectile = projektile;
|
||||
}
|
||||
|
||||
private int timeLeft = 30;
|
||||
private int timeLeft = 10;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
timeLeft--;
|
||||
if(timeLeft >= 10) {
|
||||
switch (timeLeft) {
|
||||
case 30: Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&',this.gameManager.getPlugin().languageDataConfig.getString("game.countdown"))); break;
|
||||
case 25: Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&',this.gameManager.getPlugin().languageDataConfig.getString("game.countdown"))); break;
|
||||
case 20: Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&',this.gameManager.getPlugin().languageDataConfig.getString("game.countdown"))); break;
|
||||
case 15: Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&',this.gameManager.getPlugin().languageDataConfig.getString("game.countdown"))); break;
|
||||
}
|
||||
} else {
|
||||
Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&',this.gameManager.getPlugin().languageDataConfig.getString("game.countdown")));
|
||||
|
||||
if(Bukkit.getOnlinePlayers().size() < this.gameManager.getPlugin().config.getInt("minplayers")) {
|
||||
Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&',this.gameManager.getPlugin().languageDataConfig.getString("error.not-enough-players")));
|
||||
}
|
||||
|
||||
if(timeLeft <= 0) {
|
||||
if(Bukkit.getOnlinePlayers().size() < this.gameManager.getPlugin().config.getInt("minplayers")) {
|
||||
Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&',this.gameManager.getPlugin().languageDataConfig.getString("error.not-enough-players")));
|
||||
cancel();
|
||||
this.gameManager.setGameState(GameState.ABORTING);
|
||||
} else {
|
||||
cancel();
|
||||
gameManager.setGameState(GameState.ACTIVE);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (timeLeft <= 0) {
|
||||
projectile.remove();
|
||||
thrower.getInventory().addItem(new ItemStack(Material.TRIDENT));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user