added scoreboard
This commit is contained in:
parent
017697914c
commit
6c4b150e96
@ -16,10 +16,7 @@ public class JoinListener implements Listener {
|
|||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerJoin(PlayerJoinEvent event){
|
public void onPlayerJoin(PlayerJoinEvent event){
|
||||||
if(this.gameManager.getPlugin().config.getBoolean("force-on-spawn")) {
|
this.gameManager.getScoreBoardManager().createScoreBoard(event.getPlayer(), 0, 0);
|
||||||
this.gameManager.getPlayerManager().setGameMode(event.getPlayer(), GameMode.SURVIVAL);
|
|
||||||
this.gameManager.getPlayerManager().setPlayerHealth(event.getPlayer(), 20);
|
|
||||||
}
|
|
||||||
if(this.gameManager.gameState == GameState.ACTIVE) {
|
if(this.gameManager.gameState == GameState.ACTIVE) {
|
||||||
this.gameManager.getPlayerManager().setGameMode(event.getPlayer(), GameMode.SPECTATOR);
|
this.gameManager.getPlayerManager().setGameMode(event.getPlayer(), GameMode.SPECTATOR);
|
||||||
this.gameManager.getPlayerManager().teleportPlayer(event.getPlayer(), this.gameManager.getPlugin().config.getLocation("arena"));
|
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")) {
|
if(this.gameManager.getPlugin().config.getBoolean("force-on-spawn")) {
|
||||||
this.gameManager.getPlayerManager().setGameMode(event.getPlayer(), GameMode.SURVIVAL);
|
this.gameManager.getPlayerManager().setGameMode(event.getPlayer(), GameMode.SURVIVAL);
|
||||||
this.gameManager.getPlayerManager().setPlayerHealth(event.getPlayer(), 20);
|
this.gameManager.getPlayerManager().setPlayerHealth(event.getPlayer(), 20);
|
||||||
|
this.gameManager.getPlayerManager().teleportPlayer(event.getPlayer(), this.gameManager.getPlugin().config.getLocation("lobby"));
|
||||||
}
|
}
|
||||||
this.gameManager.setGameState(GameState.WAITING);
|
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.entity.Player;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
public class GameManager {
|
public class GameManager {
|
||||||
private final Tridentwar plugin;
|
private final Tridentwar plugin;
|
||||||
private TridentManager tridentManager;
|
private TridentManager tridentManager;
|
||||||
private GameStartCountdownTask gameStartCountdownTask;
|
private GameStartCountdownTask gameStartCountdownTask;
|
||||||
public GameState gameState = GameState.LOBBY;
|
|
||||||
private PlayerManager playerManager;
|
private PlayerManager playerManager;
|
||||||
private MessageManager messageManager;
|
private MessageManager messageManager;
|
||||||
private FileHandler fileHandler;
|
private FileHandler fileHandler;
|
||||||
private LobbyWaitingTask lobbyWaitingTask;
|
private LobbyWaitingTask lobbyWaitingTask;
|
||||||
private boolean isWaiting = false;
|
private boolean isWaiting = false;
|
||||||
private Effect record;
|
private Effect record;
|
||||||
|
private ScoreBoardManager scoreBoardManager;
|
||||||
|
public GameState gameState = GameState.LOBBY;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles the entire Game
|
* Handles the entire Game
|
||||||
@ -30,6 +33,7 @@ public class GameManager {
|
|||||||
this.playerManager = new PlayerManager(this);
|
this.playerManager = new PlayerManager(this);
|
||||||
this.messageManager = new MessageManager(this);
|
this.messageManager = new MessageManager(this);
|
||||||
this.fileHandler = new FileHandler(this);
|
this.fileHandler = new FileHandler(this);
|
||||||
|
this.scoreBoardManager = new ScoreBoardManager(this);
|
||||||
this.lobbyWaitingTask = null;
|
this.lobbyWaitingTask = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,6 +52,10 @@ public class GameManager {
|
|||||||
this.playerManager.setPlayersHealth(20F);
|
this.playerManager.setPlayersHealth(20F);
|
||||||
this.playerManager.setAlive(Bukkit.getOnlinePlayers().size());
|
this.playerManager.setAlive(Bukkit.getOnlinePlayers().size());
|
||||||
this.playerManager.giveKits();
|
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;
|
break;
|
||||||
|
|
||||||
case STARTING:
|
case STARTING:
|
||||||
@ -118,12 +126,20 @@ public class GameManager {
|
|||||||
public void run() {
|
public void run() {
|
||||||
// Move players to Hub
|
// Move players to Hub
|
||||||
Bukkit.getOnlinePlayers().forEach(player -> playerManager.moveFromServer(plugin.config.getString("lobby-server"), player));
|
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);
|
}.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);
|
this.setGameState(GameState.LOBBY);
|
||||||
break;
|
break;
|
||||||
@ -139,16 +155,32 @@ public class GameManager {
|
|||||||
Bukkit.getOnlinePlayers().forEach(player -> playerManager.moveFromServer(this.plugin.config.getString("lobby-server"), player));
|
Bukkit.getOnlinePlayers().forEach(player -> playerManager.moveFromServer(this.plugin.config.getString("lobby-server"), player));
|
||||||
|
|
||||||
if (plugin.config.getBoolean("autorestart")) {
|
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);
|
this.setGameState(GameState.LOBBY);
|
||||||
break;
|
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
|
* Returns the current lobby wayiting task
|
||||||
@ -207,4 +239,10 @@ public class GameManager {
|
|||||||
plugin.config.set(path, loc);
|
plugin.config.set(path, loc);
|
||||||
plugin.saveConfig();
|
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
|
* @param p the player
|
||||||
*/
|
*/
|
||||||
public void addKill(Player p){
|
public void setKills(Player p, int kill){
|
||||||
if(this.kills.containsKey(p)){
|
if(this.kills.containsKey(p)){
|
||||||
this.kills.replace(p, this.kills.get(p)+1);
|
this.kills.replace(p, kill);
|
||||||
} else {
|
} 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 {
|
public class TridentResetTask extends BukkitRunnable {
|
||||||
|
|
||||||
private GameManager gameManager;
|
private GameManager gameManager;
|
||||||
|
private Player thrower;
|
||||||
|
private Entity projectile;
|
||||||
|
|
||||||
public TridentResetTask (GameManager gameManager, Player thrower, Entity projektile) {
|
public TridentResetTask (GameManager gameManager, Player thrower, Entity projektile) {
|
||||||
this.gameManager = gameManager;
|
this.gameManager = gameManager;
|
||||||
|
this.thrower = thrower;
|
||||||
|
this.projectile = projektile;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int timeLeft = 30;
|
private int timeLeft = 10;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
timeLeft--;
|
timeLeft--;
|
||||||
if(timeLeft >= 10) {
|
if (timeLeft <= 0) {
|
||||||
switch (timeLeft) {
|
projectile.remove();
|
||||||
case 30: Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&',this.gameManager.getPlugin().languageDataConfig.getString("game.countdown"))); break;
|
thrower.getInventory().addItem(new ItemStack(Material.TRIDENT));
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user