Prechádzať zdrojové kódy

Improvement of leave messages

RedstoneFuture 2 rokov pred
rodič
commit
10a694a0b6

+ 2 - 0
missilewars-plugin/src/main/java/de/butzlabben/missilewars/configuration/Messages.java

@@ -78,6 +78,7 @@ public class Messages {
         cfg.addDefault("game.map_selected", "&7A map was selected. Use \"/mw start\" again to start the round.");
         cfg.addDefault("game.player_joined", "&e%player% &7joined the game (%team%&7).");
         cfg.addDefault("game.player_left", "&e%player% &7left the game (%team%&7).");
+        cfg.addDefault("game.left", "&7You left the running MissileWars game.");
         cfg.addDefault("game.not_in_game_area", "&cYou are not in an arena right now.");
         cfg.addDefault("game.not_enter_arena", "&cYou may not enter this arena right now.");
         cfg.addDefault("game.already_startet", "&cGame already started.");
@@ -92,6 +93,7 @@ public class Messages {
 
         cfg.addDefault("lobby.player_joined", "&e%player% &7joined the game &8(&7%players%&8/&7%max_players%&8)");
         cfg.addDefault("lobby.player_left", "&e%player% &7left the game &8(&7%players%&8/&7%max_players%&8)");
+        cfg.addDefault("lobby.left", "&7You left the MissileWars lobby.");
         cfg.addDefault("lobby.not_enough_players", "&cThere are not enough players online.");
         cfg.addDefault("lobby.teams_unequal", "&cThe teams are unequal distributed.");
         cfg.addDefault("lobby.game_starts", "&aThe game starts.");

+ 27 - 16
missilewars-plugin/src/main/java/de/butzlabben/missilewars/game/Game.java

@@ -378,21 +378,33 @@ public class Game {
     public void playerLeaveFromGame(MWPlayer mwPlayer) {
         Player player = mwPlayer.getPlayer();
         Team team = mwPlayer.getTeam();
+        boolean playerWasTeamMember = false;
 
-        if (state == GameState.LOBBY) {
-            if (team != null) {
+        if (state == GameState.INGAME) {
+            BukkitTask task = getPlayerTasks().get(mwPlayer.getUuid());
+            if (task != null) task.cancel();
+        }
+        
+        PlayerDataProvider.getInstance().loadInventory(player);
+
+        if (team != null) {
+            playerWasTeamMember = true;
+            team.removeMember(mwPlayer);
+            if (state == GameState.INGAME) checkTeamSize(team);
+        }
+
+        removePlayer(mwPlayer);
+        
+        if (playerWasTeamMember) {
+            if (state == GameState.LOBBY) {
                 broadcast(Messages.getMessage("lobby.player_left")
                         .replace("%max_players%", Integer.toString(getLobby().getMaxSize()))
                         .replace("%players%", Integer.toString(getPlayers().values().size()))
                         .replace("%player%", player.getName())
                         .replace("%team%", team.getFullname()));
-            }
-            
-        } else if (state == GameState.INGAME) {
-            BukkitTask task = getPlayerTasks().get(mwPlayer.getUuid());
-            if (task != null) task.cancel();
 
-            if (team != null) {
+            } else if (state == GameState.INGAME) {
+
                 broadcast(Messages.getMessage("game.player_left")
                         .replace("%max_players%", Integer.toString(getLobby().getMaxSize()))
                         .replace("%players%", Integer.toString(getPlayers().values().size()))
@@ -400,16 +412,15 @@ public class Game {
                         .replace("%team%", team.getFullname()));
             }
         }
-        
-        PlayerDataProvider.getInstance().loadInventory(player);
-
-        if (team != null) {
-            team.removeMember(mwPlayer);
-            if (state == GameState.INGAME) checkTeamSize(team);
-        }
 
         player.setScoreboard(Bukkit.getScoreboardManager().getMainScoreboard());
-        removePlayer(mwPlayer);
+
+        if (state == GameState.LOBBY) {
+            player.sendMessage(Messages.getMessage("lobby.left").replace("%lobby_name%", getLobby().getDisplayName()));
+        } else if (state == GameState.INGAME) {
+            player.sendMessage(Messages.getMessage("game.left").replace("%arena_name%", arena.getDisplayName()));
+        }
+        
     }
 
     /**