diff --git a/src/main/java/de/fanta/challenges/challenges/OreBattle.java b/src/main/java/de/fanta/challenges/challenges/OreBattle.java index 0688e05..fa1ae2d 100644 --- a/src/main/java/de/fanta/challenges/challenges/OreBattle.java +++ b/src/main/java/de/fanta/challenges/challenges/OreBattle.java @@ -122,7 +122,7 @@ } else { plugin.getScoreManager().updateTeamScore(e.getPlayer(), blocklist.get(e.getBlock().getType())); } - ChatUtil.sendTitleToAll("", ChatUtil.BLUE + new ItemStack(e.getBlock().getType()).getI18NDisplayName() + ChatUtil.GREEN + " +" + blocklist.get(e.getBlock().getType()), ChatUtil.GREEN, 3, 20, 3, false); + ChatUtil.sendTitleToPlayer(e.getPlayer(), "", ChatUtil.BLUE + new ItemStack(e.getBlock().getType()).getI18NDisplayName() + ChatUtil.GREEN + " +" + blocklist.get(e.getBlock().getType()), ChatUtil.GREEN, 3, 20, 3, false); } } } @@ -136,7 +136,7 @@ } else { plugin.getScoreManager().updateTeamScore(e.getPlayer(), -blocklist.get(e.getBlock().getType())); } - ChatUtil.sendTitleToAll("", ChatUtil.BLUE + new ItemStack(e.getBlock().getType()).getI18NDisplayName() + ChatUtil.RED + " -" + blocklist.get(e.getBlock().getType()), ChatUtil.GREEN, 3, 20, 3, false); + ChatUtil.sendTitleToPlayer(e.getPlayer(), "", ChatUtil.BLUE + new ItemStack(e.getBlock().getType()).getI18NDisplayName() + ChatUtil.RED + " -" + blocklist.get(e.getBlock().getType()), ChatUtil.GREEN, 3, 20, 3, false); } } } diff --git a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java index eda6ff0..948d13f 100644 --- a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java +++ b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java @@ -7,7 +7,6 @@ import de.fanta.challenges.events.ServerStatusChangedEvent; import de.fanta.challenges.utils.ChatUtil; import de.fanta.challenges.utils.SaveWorldUtils; -import net.md_5.bungee.api.ChatColor; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -46,6 +45,9 @@ if (!DeathrunChallengeEvent.getDeadPlayer().contains(p.getUniqueId().toString())) { plugin.getSBManager().setScoreboardtoPlayer(p); plugin.getSBManager().updateEventScoreboard(); + if (!plugin.getConfig().getBoolean("event.teams") && plugin.getScoreManager().getScores() != null && plugin.getScoreManager().getScore(e.getPlayer()) == 0) { + plugin.getScoreManager().updateScore(e.getPlayer(), 0); + } } } if (plugin.getCurrentEditor() == null) { diff --git a/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java b/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java index 849daf4..0fe9475 100644 --- a/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java +++ b/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java @@ -42,7 +42,11 @@ } public void updateTeamScore(Player player, int difference) { - int score = scores.getOrDefault(TeamUtils.getPlayerTeam(player).getName(), 0); + ChallengeTeam team = TeamUtils.getPlayerTeam(player); + if (team == null) { + return; + } + int score = scores.getOrDefault(team.getName(), 0); score += difference; scores.put(TeamUtils.getPlayerTeam(player).getName(), score); @@ -65,7 +69,10 @@ public int getTeamScore(Player player) { ChallengeTeam team = TeamUtils.getPlayerTeam(player); - return scores.getOrDefault(team.getName(), 0); + if (team != null) { + return scores.getOrDefault(team.getName(), 0); + } + return 0; } public int getPlayerPosition(Player player) { diff --git a/src/main/java/de/fanta/challenges/teams/TeamListener.java b/src/main/java/de/fanta/challenges/teams/TeamListener.java index 9f9b5f5..61fd21b 100644 --- a/src/main/java/de/fanta/challenges/teams/TeamListener.java +++ b/src/main/java/de/fanta/challenges/teams/TeamListener.java @@ -30,9 +30,8 @@ public class TeamListener implements Listener { - private final Challenges plugin = Challenges.getPlugin(); - private static final HashMap playerTeams = new HashMap<>(); + private final Challenges plugin = Challenges.getPlugin(); @EventHandler public void onSwapItem(PlayerSwapHandItemsEvent e) { @@ -113,7 +112,7 @@ inventory.removeItem(TeamUtils.selctItem()); } - if (plugin.getConfig().getBoolean("event.teams") && !plugin.getConfig().getBoolean("event.autoteams") && plugin.getTimer().isRunning()) { + if (plugin.getConfig().getBoolean("event.teams") && !plugin.getConfig().getBoolean("event.autoteams") && plugin.getTimer().isRunning() && !playerTeams.containsKey(e.getPlayer().getUniqueId())) { e.getPlayer().setGameMode(GameMode.SPECTATOR); ChatUtil.sendNormalMessage(e.getPlayer(), "Du bist nur zuschauer diese Runde."); return; @@ -124,16 +123,21 @@ if (TeamUtils.getPlayerTeam(e.getPlayer()) == null) { if (playerTeams.containsKey(e.getPlayer().getUniqueId())) { TeamUtils.selectTeam(e.getPlayer(), playerTeams.get(e.getPlayer().getUniqueId())); - if (TeamUtils.getPlayerTeam(e.getPlayer()) != null && TeamUtils.getPlayerTeam(e.getPlayer()).getSpawn() != null) { - e.getPlayer().teleport(TeamUtils.getPlayerTeam(e.getPlayer()).getSpawn()); - } } else { - TeamUtils.setAllPlayerWithoutTeamToTeam(); - plugin.getScoreManager().updateTeamScore(e.getPlayer(), 0); + if (plugin.getConfig().getBoolean("event.autoteams") && e.getPlayer().getGameMode() == GameMode.SURVIVAL) { + TeamUtils.setAllPlayerWithoutTeamToTeam(); + plugin.getScoreManager().updateTeamScore(e.getPlayer(), 0); + if (TeamUtils.getPlayerTeam(e.getPlayer()) != null && TeamUtils.getPlayerTeam(e.getPlayer()).getSpawn() != null) { + e.getPlayer().teleport(TeamUtils.getPlayerTeam(e.getPlayer()).getSpawn()); + } + } } } } } + if (plugin.getConfig().getBoolean("event.teams") && plugin.getScoreManager().getTeamScore(e.getPlayer()) == 0) { + plugin.getScoreManager().updateTeamScore(e.getPlayer(), 0); + } } @EventHandler diff --git a/src/main/java/de/fanta/challenges/teams/TeamUtils.java b/src/main/java/de/fanta/challenges/teams/TeamUtils.java index 91b59c0..7d843a8 100644 --- a/src/main/java/de/fanta/challenges/teams/TeamUtils.java +++ b/src/main/java/de/fanta/challenges/teams/TeamUtils.java @@ -5,6 +5,7 @@ import de.fanta.challenges.utils.ChatUtil; import org.bukkit.ChatColor; import org.bukkit.Color; +import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.NamespacedKey; import org.bukkit.OfflinePlayer; @@ -37,6 +38,7 @@ private static Scoreboard scoreboard; private static Score[] scoreboardScores; private static Objective teamscoreboardObjective; + private static Challenges plugin = Challenges.getPlugin(); private static ChallengeTeam createDefaultTeam(int nr) { if (nr == 0) { @@ -199,6 +201,11 @@ } if (team != null && oldteam == team) { ChatUtil.sendNormalMessage(player, "Du bist bereits in Team " + team.getChatColor() + team.getName() + ChatUtil.GREEN + "."); + Team scoreboardteam = plugin.getSBManager().getScoreboard().getTeam(team.getName()); + if (scoreboardteam != null && !scoreboardteam.getEntries().contains(player)) { + scoreboardteam.addPlayer(player); + } + return; } int count = Collections.frequency(new ArrayList<>(playerTeams.values()), team); @@ -218,10 +225,18 @@ Challenges.getPlugin().getSBManager().setScoreboardtoTeam(team); } + public static void removePlayerFromTeam(Player player, ChallengeTeam team) { + if (team == null) { + return; + } + scoreboard.getTeam(team.getName()).removePlayer(player); + TeamSelectGUI.updateTeamSelectGui(); + } + public static void setAllPlayerWithoutTeamToTeam() { ArrayList playersWithoutTeam = new ArrayList<>(); for (Player pp : Challenges.getPlugin().getVanish().getPlayerListWithoutVanishPlayers()) { - if (getPlayerTeam(pp) == null) { + if (getPlayerTeam(pp) == null && pp.getGameMode() == GameMode.SURVIVAL) { playersWithoutTeam.add(pp); } } @@ -239,11 +254,12 @@ } if (!playersWithoutTeam.isEmpty()) { - for (ChallengeTeam challengeTeam : getTeams()) { - Team team = TeamUtils.getScoreboard().getTeam(challengeTeam.getName()); - if (team != null && team.getEntries().isEmpty()) { - selectTeam(playersWithoutTeam.get(0), challengeTeam); - playersWithoutTeam.remove(0); + for (Player pp : playersWithoutTeam) { + for (ChallengeTeam challengeTeam : getTeams()) { + Team team = TeamUtils.getScoreboard().getTeam(challengeTeam.getName()); + if (team != null && team.getEntries().isEmpty()) { + selectTeam(pp, challengeTeam); + } } } } @@ -260,4 +276,8 @@ public static NamespacedKey getSelectKey() { return selectKey; } + + public static HashMap getPlayerTeams() { + return playerTeams; + } } diff --git a/src/main/java/de/fanta/challenges/utils/ChatUtil.java b/src/main/java/de/fanta/challenges/utils/ChatUtil.java index c6d0ebb..df5ce3f 100644 --- a/src/main/java/de/fanta/challenges/utils/ChatUtil.java +++ b/src/main/java/de/fanta/challenges/utils/ChatUtil.java @@ -59,4 +59,12 @@ } } } + + public static void sendTitleToPlayer(Player player, String headline, String text, ChatColor textColor, int in, int time, int out, boolean pling) { + player.sendTitle(ChatUtil.BLUE + headline, textColor + text, in, time, out); + if (pling) { + player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1.0F, 2.0F); + } + + } }