Pārlūkot izejas kodu

rework scoreboard updates in the lobby and unloading at the end

RedstoneFuture 3 gadi atpakaļ
vecāks
revīzija
828e9d19ad

+ 0 - 1
missilewars-plugin/src/main/java/de/butzlabben/missilewars/game/Game.java

@@ -276,7 +276,6 @@ public class Game {
 
         timer = new EndTimer(this);
         bt = Bukkit.getScheduler().runTaskTimer(MissileWars.getInstance(), timer, 5, 20);
-        scoreboardManager.removeScoreboard();
 
         // Change MOTD
         if (!Config.isMultipleLobbies())

+ 24 - 15
missilewars-plugin/src/main/java/de/butzlabben/missilewars/listener/LobbyListener.java

@@ -52,26 +52,31 @@ public class LobbyListener extends GameBoundListener {
 
     @EventHandler
     public void onClick(PlayerInteractEvent e) {
-        if (!isInLobbyArea(e.getPlayer().getLocation()))
-            return;
+        if (!isInLobbyArea(e.getPlayer().getLocation())) return;
+
         Player p = e.getPlayer();
-        if (p.getGameMode() == GameMode.CREATIVE)
-            return;
+        if (p.getGameMode() == GameMode.CREATIVE) return;
         e.setCancelled(true);
         if (e.getItem() == null) return;
 
         if (VersionUtil.isStainedGlassPane(e.getItem().getType())) {
+
             if (!p.hasPermission("mw.change")) return;
+
             if (getGame().getTimer().getSeconds() < 10) {
                 p.sendMessage(MessageConfig.getMessage("change_team_not_now"));
                 return;
             }
+
             String displayName = e.getItem().getItemMeta().getDisplayName();
             if (displayName.equals(getGame().getTeam1().getFullname())) {
                 p.performCommand("mw change 1");
+                getGame().getScoreboardManager().updateScoreboard();
             } else {
                 p.performCommand("mw change 2");
+                getGame().getScoreboardManager().updateScoreboard();
             }
+
         } else if (e.getItem().getType() == Material.NETHER_STAR) {
             VoteInventory inventory = new VoteInventory(getGame().getLobby().getArenas());
             p.openInventory(inventory.getInventory(p));
@@ -82,9 +87,7 @@ public class LobbyListener extends GameBoundListener {
     @EventHandler
     public void onJoin(PlayerArenaJoinEvent e) {
         Game game = e.getGame();
-        if (game != getGame())
-            return;
-
+        if (game != getGame()) return;
 
         Player p = e.getPlayer();
         MWPlayer mw = game.addPlayer(p);
@@ -94,8 +97,6 @@ public class LobbyListener extends GameBoundListener {
         p.getInventory().clear();
         p.setFoodLevel(20);
         p.setHealth(p.getMaxHealth());
-        p.setScoreboard(game.getScoreboard());
-        game.getScoreboardManager().updateScoreboard();
 
         Bukkit.getScheduler().runTaskLater(MissileWars.getInstance(), () -> p.setGameMode(GameMode.ADVENTURE), 10);
         Bukkit.getScheduler().runTaskLater(MissileWars.getInstance(), () -> p.teleport(game.getLobby().getSpawnPoint()), 2);
@@ -105,10 +106,11 @@ public class LobbyListener extends GameBoundListener {
         int size1 = getGame().getTeam1().getMembers().size();
         int size2 = getGame().getTeam2().getMembers().size();
 
-        if (size2 < size1)
+        if (size2 < size1) {
             to = getGame().getTeam2();
-        else
+        } else {
             to = getGame().getTeam1();
+        }
 
         // Premium version
         if (p.hasPermission("mw.change")) {
@@ -129,23 +131,30 @@ public class LobbyListener extends GameBoundListener {
         String message = MessageConfig.getMessage("lobby_joined").replace("%max_players%", maxPlayers).replace("%players%", players).replace("%player%", name);
         game.broadcast(message);
 
+        p.setScoreboard(game.getScoreboard());
+        game.getScoreboardManager().updateScoreboard();
+
         MissileWars.getInstance().getSignRepository().getSigns(game).forEach(MWSign::update);
     }
 
     @EventHandler
     public void on(EntityDamageEvent e) {
-        if (isInLobbyArea(e.getEntity().getLocation())) e.setCancelled(true);
+        if (isInLobbyArea(e.getEntity().getLocation())) {
+            e.setCancelled(true);
+        }
     }
 
     @EventHandler
     public void on(PlayerRespawnEvent e) {
-        if (isInLobbyArea(e.getPlayer().getLocation())) e.setRespawnLocation(getGame().getLobby().getSpawnPoint());
+        if (isInLobbyArea(e.getPlayer().getLocation())) {
+            e.setRespawnLocation(getGame().getLobby().getSpawnPoint());
+        }
     }
 
     @EventHandler
     public void onClick(InventoryClickEvent e) {
-        if (!(e.getWhoClicked() instanceof Player))
-            return;
+        if (!(e.getWhoClicked() instanceof Player)) return;
+
         Player p = (Player) e.getWhoClicked();
         if (isInLobbyArea(p.getLocation()))
             if (p.getGameMode() != GameMode.CREATIVE && !p.isOp())