Quellcode durchsuchen

bugfixes, small code improvements

RedstoneFuture vor 3 Jahren
Ursprung
Commit
96f6719047

+ 1 - 2
missilewars-plugin/src/main/java/de/butzlabben/missilewars/Config.java

@@ -156,8 +156,7 @@ public class Config {
     }
 
     public static List<String> getScoreboardEntries() {
-        List<String> scoreboardLines = cfg.getStringList("sidebar.entries");
-        return scoreboardLines;
+        return cfg.getStringList("sidebar.entries");
     }
 
     /**

+ 4 - 2
missilewars-plugin/src/main/java/de/butzlabben/missilewars/cmd/UserCommands.java

@@ -30,11 +30,12 @@ import de.butzlabben.missilewars.wrapper.abstracts.Arena;
 import de.butzlabben.missilewars.wrapper.abstracts.MapChooseProcedure;
 import de.butzlabben.missilewars.wrapper.game.Team;
 import de.butzlabben.missilewars.wrapper.player.MWPlayer;
-import java.util.Optional;
 import org.bukkit.Location;
 import org.bukkit.command.CommandSender;
 import org.bukkit.entity.Player;
 
+import java.util.Optional;
+
 public class UserCommands {
 
     @Command(name = "mw.change", usage = "/mw change <1|2>", permission = "mw.change", description = "Changes your team", inGameOnly = true)
@@ -77,7 +78,8 @@ public class UserCommands {
                 player.sendMessage(MessageConfig.getMessage("cannot_change_difference"));
                 return;
             }
-            mwPlayer.getTeam().removeMember(mwPlayer);
+
+            // Remove the player from the old team and add him to the new team
             to.addMember(mwPlayer);
 
             player.sendMessage(MessageConfig.getMessage("team_changed").replace("%team%", to.getFullname()));

+ 7 - 9
missilewars-plugin/src/main/java/de/butzlabben/missilewars/listener/EndListener.java

@@ -25,6 +25,7 @@ import de.butzlabben.missilewars.util.PlayerDataProvider;
 import de.butzlabben.missilewars.wrapper.event.PlayerArenaJoinEvent;
 import org.bukkit.Bukkit;
 import org.bukkit.GameMode;
+import org.bukkit.attribute.Attribute;
 import org.bukkit.entity.Player;
 import org.bukkit.event.EventHandler;
 import org.bukkit.event.EventPriority;
@@ -46,8 +47,8 @@ public class EndListener extends GameBoundListener {
     @EventHandler
     public void onJoin(PlayerArenaJoinEvent e) {
         Game game = e.getGame();
-        if (game != getGame())
-            return;
+        if (game != getGame()) return;
+
         Player p = e.getPlayer();
         PlayerDataProvider.getInstance().storeInventory(p);
         p.sendMessage(MessageConfig.getMessage("spectator"));
@@ -56,7 +57,6 @@ public class EndListener extends GameBoundListener {
 
         Bukkit.getScheduler().runTaskLater(MissileWars.getInstance(), () -> p.setGameMode(GameMode.SPECTATOR), 35);
         p.setDisplayName("§7" + p.getName() + "§r");
-        // TODO remove scoreboard
         game.addPlayer(p);
     }
 
@@ -68,21 +68,19 @@ public class EndListener extends GameBoundListener {
     }
 
     @EventHandler
-
     public void onDeath(PlayerDeathEvent e) {
-        if (!isInLobbyArea(e.getEntity().getLocation()))
-            return;
+        if (!isInLobbyArea(e.getEntity().getLocation())) return;
 
         Player p = e.getEntity();
-        p.setHealth(p.getMaxHealth());
+        p.setHealth(p.getAttribute(Attribute.GENERIC_MAX_HEALTH).getDefaultValue());
         p.teleport(getGame().getArena().getSpectatorSpawn());
         e.setDeathMessage(null);
     }
 
     @EventHandler
     public void onClick(InventoryClickEvent e) {
-        if (!(e.getWhoClicked() instanceof Player))
-            return;
+        if (!(e.getWhoClicked() instanceof Player)) return;
+
         Player p = (Player) e.getWhoClicked();
         if (isInGameWorld(p.getLocation()))
             if (p.getGameMode() != GameMode.CREATIVE && !p.isOp())

+ 28 - 41
missilewars-plugin/src/main/java/de/butzlabben/missilewars/listener/GameListener.java

@@ -33,24 +33,16 @@ import de.butzlabben.missilewars.wrapper.geometry.Plane;
 import de.butzlabben.missilewars.wrapper.missile.Missile;
 import de.butzlabben.missilewars.wrapper.missile.MissileFacing;
 import de.butzlabben.missilewars.wrapper.player.MWPlayer;
-import java.util.Objects;
 import org.bukkit.Bukkit;
 import org.bukkit.GameMode;
 import org.bukkit.Location;
-import org.bukkit.entity.EntityType;
-import org.bukkit.entity.Fireball;
-import org.bukkit.entity.Player;
-import org.bukkit.entity.Projectile;
-import org.bukkit.entity.Snowball;
+import org.bukkit.attribute.Attribute;
+import org.bukkit.entity.*;
 import org.bukkit.event.EventHandler;
 import org.bukkit.event.EventPriority;
 import org.bukkit.event.block.Action;
 import org.bukkit.event.block.BlockPhysicsEvent;
-import org.bukkit.event.entity.EntityDamageByEntityEvent;
-import org.bukkit.event.entity.EntityDamageEvent;
-import org.bukkit.event.entity.EntityExplodeEvent;
-import org.bukkit.event.entity.PlayerDeathEvent;
-import org.bukkit.event.entity.ProjectileLaunchEvent;
+import org.bukkit.event.entity.*;
 import org.bukkit.event.inventory.InventoryClickEvent;
 import org.bukkit.event.inventory.InventoryType;
 import org.bukkit.event.player.PlayerInteractEvent;
@@ -60,6 +52,8 @@ import org.bukkit.inventory.ItemStack;
 import org.bukkit.scheduler.BukkitTask;
 import org.bukkit.util.Vector;
 
+import java.util.Objects;
+
 /**
  * @author Butzlabben
  * @since 12.01.2018
@@ -73,8 +67,8 @@ public class GameListener extends GameBoundListener {
 
     @EventHandler
     public void onMove(PlayerMoveEvent e) {
-        if (!isInGameWorld(e.getTo()))
-            return;
+        if (!isInGameWorld(e.getTo())) return;
+
         Player p = e.getPlayer();
         if ((e.getTo().getBlockY() >= getGame().getArena().getMaxHeight()) && (p.getGameMode() == GameMode.SURVIVAL)) {
             p.teleport(e.getFrom());
@@ -94,8 +88,8 @@ public class GameListener extends GameBoundListener {
 
     @EventHandler
     public void onExplode(EntityExplodeEvent e) {
-        if (!isInGameWorld(e.getLocation()))
-            return;
+        if (!isInGameWorld(e.getLocation())) return;
+
         Game game = getGame();
         if (e.getEntity().getType() == EntityType.FIREBALL && !game.getArena().getFireballConfiguration().isDestroysPortal())
             e.blockList().removeIf(b -> b.getType() == VersionUtil.getPortal());
@@ -120,12 +114,10 @@ public class GameListener extends GameBoundListener {
 
     @EventHandler
     public void onInteract(PlayerInteractEvent e) {
-        if (!isInGameWorld(e.getPlayer().getLocation()))
-            return;
-        if (e.getItem() == null)
-            return;
-        if (e.getAction() != Action.RIGHT_CLICK_AIR && e.getAction() != Action.RIGHT_CLICK_BLOCK)
-            return;
+        if (!isInGameWorld(e.getPlayer().getLocation())) return;
+        if (e.getItem() == null) return;
+        if (e.getAction() != Action.RIGHT_CLICK_AIR && e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
+
         Player player = e.getPlayer();
         ItemStack itemStack = e.getItem();
         Game game = getGame();
@@ -164,8 +156,7 @@ public class GameListener 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 mwPlayer = game.addPlayer(p);
@@ -178,7 +169,6 @@ public class GameListener extends GameBoundListener {
             Bukkit.getScheduler().runTaskLater(MissileWars.getInstance(), () -> p.setGameMode(GameMode.SPECTATOR), 35);;
             p.setDisplayName("§7" + p.getName() + "§r");
             p.setScoreboard(game.getScoreboard());
-            game.getScoreboardManager().updateScoreboard();
         } else {
             Team to;
             int size1 = game.getTeam1().getMembers().size();
@@ -187,19 +177,20 @@ public class GameListener extends GameBoundListener {
                 to = getGame().getTeam2();
             else
                 to = getGame().getTeam1();
+
+            // Adds the player to the new team.
             to.addMember(mwPlayer);
+
             p.sendMessage(MessageConfig.getMessage("team_assigned").replace("%team%", to.getFullname()));
             to.updateIntervals(game.getArena().getInterval(to.getMembers().size()));
             game.startForPlayer(p);
-            p.setScoreboard(game.getScoreboard());
-            game.getScoreboardManager().updateScoreboard();
         }
     }
 
     @EventHandler
     public void onThrow(ProjectileLaunchEvent e) {
-        if (!isInGameWorld(e.getEntity().getLocation()))
-            return;
+        if (!isInGameWorld(e.getEntity().getLocation())) return;
+
         Game game = getGame();
         if (e.getEntity() instanceof Snowball) {
             Snowball ball = (Snowball) e.getEntity();
@@ -212,10 +203,9 @@ public class GameListener extends GameBoundListener {
 
     @EventHandler
     public void onDmg(EntityDamageByEntityEvent e) {
-        if (!isInGameWorld(e.getEntity().getLocation()))
-            return;
-        if (!(e.getEntity() instanceof Player))
-            return;
+        if (!isInGameWorld(e.getEntity().getLocation())) return;
+        if (!(e.getEntity() instanceof Player)) return;
+
         Player p = (Player) e.getEntity();
         if (e.getDamager() instanceof Projectile) {
             Projectile pj = (Projectile) e.getDamager();
@@ -237,8 +227,7 @@ public class GameListener extends GameBoundListener {
 
     @EventHandler(priority = EventPriority.HIGH)
     public void onRespawn(PlayerRespawnEvent e) {
-        if (!isInGameWorld(e.getPlayer().getLocation()))
-            return;
+        if (!isInGameWorld(e.getPlayer().getLocation())) return;
 
         Game game = getGame();
         Player player = e.getPlayer();
@@ -261,9 +250,7 @@ public class GameListener extends GameBoundListener {
     public void onDeath(PlayerDeathEvent e) {
 
         // check if the player is in a game world
-        if (!isInGameWorld(e.getEntity().getLocation())) {
-            return;
-        }
+        if (!isInGameWorld(e.getEntity().getLocation())) return;
 
         Game game = getGame();
         Player p = e.getEntity();
@@ -279,7 +266,7 @@ public class GameListener extends GameBoundListener {
 
         // spectator respawn for people there are not in a team
         if (player.getTeam() == null) {
-            p.setHealth(p.getMaxHealth());
+            p.setHealth(p.getAttribute(Attribute.GENERIC_MAX_HEALTH).getDefaultValue());
             p.teleport(getGame().getArena().getSpectatorSpawn());
             return;
         }
@@ -302,19 +289,19 @@ public class GameListener extends GameBoundListener {
     @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
     public void onLeave(PlayerArenaLeaveEvent e) {
         Game game = e.getGame();
-        if (game != getGame())
-            return;
+        if (game != getGame()) return;
 
         MWPlayer player = getGame().getPlayer(e.getPlayer());
         if (player == null) return;
         BukkitTask task = game.getPlayerTasks().get(player.getUUID());
         if (task != null) task.cancel();
+
         Team team = player.getTeam();
         if (team != null) {
             getGame().broadcast(
                     MessageConfig.getMessage("player_left").replace("%player%", e.getPlayer().getDisplayName()));
             team.removeMember(getGame().getPlayer(e.getPlayer()));
-            game.getScoreboardManager().resetScoreboard();
+
             int teamSize = team.getMembers().size();
             if (teamSize == 0) {
                 Bukkit.getScheduler().runTask(MissileWars.getInstance(), () -> {

+ 2 - 3
missilewars-plugin/src/main/java/de/butzlabben/missilewars/listener/LobbyListener.java

@@ -122,7 +122,9 @@ public class LobbyListener extends GameBoundListener {
             p.getInventory().setItem(4, new OrcItem(Material.NETHER_STAR, "§3Vote Map").getItemStack());
         }
 
+        // Adds the player to the new team.
         to.addMember(mw);
+
         p.sendMessage(MessageConfig.getMessage("team_assigned").replace("%team%", to.getFullname()));
 
         String name = p.getName();
@@ -131,9 +133,6 @@ 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);
     }
 

+ 5 - 17
missilewars-plugin/src/main/java/de/butzlabben/missilewars/listener/PlayerListener.java

@@ -43,15 +43,8 @@ import org.bukkit.event.block.BlockPlaceEvent;
 import org.bukkit.event.entity.FoodLevelChangeEvent;
 import org.bukkit.event.inventory.InventoryClickEvent;
 import org.bukkit.event.inventory.InventoryType;
-import org.bukkit.event.player.PlayerDropItemEvent;
-import org.bukkit.event.player.PlayerJoinEvent;
-import org.bukkit.event.player.PlayerMoveEvent;
-import org.bukkit.event.player.PlayerPickupItemEvent;
-import org.bukkit.event.player.PlayerQuitEvent;
-import org.bukkit.event.player.PlayerTeleportEvent;
+import org.bukkit.event.player.*;
 import org.bukkit.event.server.ServerListPingEvent;
-import org.bukkit.scoreboard.Scoreboard;
-import org.bukkit.scoreboard.Team;
 import org.bukkit.util.Vector;
 
 /**
@@ -145,11 +138,12 @@ public class PlayerListener implements Listener {
         Game game = event.getGame();
 
         MWPlayer mwPlayer = game.getPlayer(event.getPlayer());
-        if (mwPlayer == null)
-            return;
+        if (mwPlayer == null) return;
 
-        if (mwPlayer.getTeam() != null)
+        // Already in a team?
+        if (mwPlayer.getTeam() != null) {
             mwPlayer.getTeam().removeMember(mwPlayer);
+        }
 
         game.getPlayers().remove(event.getPlayer().getUniqueId());
 
@@ -159,13 +153,7 @@ public class PlayerListener implements Listener {
             return;
         }
 
-        Scoreboard sb = game.getScoreboard();
-        Team scoreboardTeam = sb.getPlayerTeam(player);
-        if (scoreboardTeam != null)
-            scoreboardTeam.removePlayer(player);
-
         player.getInventory().clear();
-        player.setScoreboard(Bukkit.getScoreboardManager().getMainScoreboard());
 
         MissileWars.getInstance().getSignRepository().getSigns(game).forEach(MWSign::update);
 

+ 9 - 21
missilewars-plugin/src/main/java/de/butzlabben/missilewars/util/ScoreboardManager.java

@@ -25,6 +25,7 @@ import de.butzlabben.missilewars.wrapper.game.Team;
 import de.butzlabben.missilewars.wrapper.player.MWPlayer;
 import lombok.RequiredArgsConstructor;
 import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
 import org.bukkit.scoreboard.DisplaySlot;
 import org.bukkit.scoreboard.Objective;
 import org.bukkit.scoreboard.Scoreboard;
@@ -73,7 +74,7 @@ public class ScoreboardManager {
         }
         obj = board.registerNewObjective("Info", "dummy");
         obj.setDisplaySlot(DisplaySlot.SIDEBAR);
-        obj.setDisplayName(scoreBoardTitle.replace("&", "§"));
+        obj.setDisplayName(ChatColor.translateAlternateColorCodes('&', scoreBoardTitle));
 
         // check if the team lists are used
         for (String cleanLine : scoreBoardEntries) {
@@ -88,7 +89,7 @@ public class ScoreboardManager {
     }
 
     /**
-     * This method create a team for the scoreboard and add it to the teams ArrayList.
+     * This method creates a team for the scoreboard and adds it to the teams ArrayList.
      *
      * @param line the Scoreboard line number
      */
@@ -100,8 +101,6 @@ public class ScoreboardManager {
             team.addEntry("§" + colorCodes[line - 1]);
             obj.getScore("§" + colorCodes[line - 1]).setScore(line);
             teams.put(line, team);
-
-            // VersionUtil.setScoreboardTeamColor(t, ChatColor.getByChar(team2.getColorCode().charAt(1)));
         }
     }
 
@@ -115,17 +114,6 @@ public class ScoreboardManager {
             addScoreboardTeam(i);
         }
 
-        /*
-
-        Not possible! When a user leaves the game, the scoreboard must be reset.
-
-        // removes old teams when they are no longer needed
-        while (teams.size() > scoreboardLine) {
-            int oldTeamNumber = teams.size();
-            removeScoreboardTeam(oldTeamNumber);
-        }
-         */
-
         String replacedLine;
 
         for (String cleanLine : scoreBoardEntries) {
@@ -151,13 +139,13 @@ public class ScoreboardManager {
                     continue;
                 }
 
-                int players = 0;
+                int playerCounter = 0;
 
                 // list all team members
                 for (MWPlayer player : placeholderTeam.getMembers()) {
 
                     // limit check
-                    if (players >= memberListMaxSize) {
+                    if (playerCounter >= memberListMaxSize) {
                         break;
                     }
 
@@ -168,7 +156,7 @@ public class ScoreboardManager {
                             .replace("%team_color%", teamColor);
                     teams.get(scoreboardLine).setPrefix(replacedLine);
 
-                    players++;
+                    playerCounter++;
                     scoreboardLine--;
                 }
 
@@ -186,7 +174,7 @@ public class ScoreboardManager {
 
     /**
      * This method calculates the offset lines based of the amount of players
-     * and the using of the member-list placeholders for booth teams.
+     * and the using of the member-list placeholders for booths teams.
      *
      * @return (int) the amount of offset lines
      */
@@ -213,7 +201,7 @@ public class ScoreboardManager {
             team2ListSize--;
         }
 
-        return (team1ListSize + team2ListSize);
+        return team1ListSize + team2ListSize;
     }
 
     /**
@@ -251,7 +239,7 @@ public class ScoreboardManager {
         String time = Integer.toString(game.getTimer().getSeconds() / 60);
 
 
-        text = text.replace("&", "§");
+        text = ChatColor.translateAlternateColorCodes('&', text);
 
         text = text.replace("%team1%", team1.getFullname());
         text = text.replace("%team2%", team2.getFullname());

+ 18 - 12
missilewars-plugin/src/main/java/de/butzlabben/missilewars/wrapper/game/Team.java

@@ -69,38 +69,44 @@ public class Team {
             return game.getTeam2();
         return game.getTeam1();
     }
-
-    @SuppressWarnings("deprecation")
-    public boolean removeMember(MWPlayer player) {
-        if (!isMember(player))
-            return false;
+    
+    public void removeMember(MWPlayer player) {
+        if (!isMember(player)) return;
 
         Player p = player.getPlayer();
         player.setTeam(null);
+
         if (p != null) {
             p.setDisplayName("§7" + p.getName() + "§r");
-            // TODO remove scoreboard
         }
-        return members.removeIf(mp -> mp.getUUID().equals(player.getUUID()));
-    }
 
-    @SuppressWarnings("deprecation")
+        members.removeIf(mp -> mp.getUUID().equals(player.getUUID()));
+
+        game.getScoreboardManager().resetScoreboard();
+        p.setScoreboard(Bukkit.getScoreboardManager().getMainScoreboard());
+    }
+    
     public void addMember(MWPlayer player) {
-        if (isMember(player))
-            return;
+        if (isMember(player)) return;
+
+        // Already in a team?
         if (player.getTeam() != null) {
             player.getTeam().removeMember(player);
         }
+
         Player p = player.getPlayer();
         if (p == null) {
             Logger.WARN.log("Could not add player " + player.getUUID().toString() + " to a team because he went offline");
             return;
         }
+
         members.add(player);
         player.setTeam(this);
         p.setDisplayName(getColorCode() + p.getName() + "§r");
-        p.setScoreboard(game.getScoreboard());
         p.getInventory().setArmorContents(getTeamArmor());
+
+        game.getScoreboardManager().updateScoreboard();
+        p.setScoreboard(game.getScoreboard());
     }
 
     public String getFullname() {