From bbbf825f708376681417e83e7f35ed4d6e9280e7 Mon Sep 17 00:00:00 2001 From: FireInstall Date: Thu, 21 Mar 2024 15:30:21 +0100 Subject: [PATCH 1/3] Fix being unable to load empty ressource pack --- .../au/com/mineauz/minigames/managers/ResourcePackManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/managers/ResourcePackManager.java b/Minigames/src/main/java/au/com/mineauz/minigames/managers/ResourcePackManager.java index b4990acfd..ebe616a70 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/managers/ResourcePackManager.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/managers/ResourcePackManager.java @@ -49,7 +49,7 @@ public static Path getResourceDir() { private boolean loadEmptyPack() { try { - URL u = new URL("https://github.com/AddstarMC/Minigames/raw/master/Minigames/src/main/resources/resourcepack/emptyResourcePack.zip"); + URL u = new URL("https://github.com/AddstarMC/Minigames/blob/master/Minigames/src/main/resources/resourcepack/emptyResourcePack.zip"); ResourcePack empty = new ResourcePack("empty", u); addResourcePack(empty); return true; From 046cd02b031178acfaa251893d57878b4301e7ed Mon Sep 17 00:00:00 2001 From: FireInstall Date: Fri, 26 Apr 2024 09:49:09 +0200 Subject: [PATCH 2/3] (Hopefully) Fix quit location not working correctly if a player without admin worldguard permission leaves the server and the quit location lays within in a region. updated dependencies deprecated messages in favor of upcoming new language system. --- .../java/au/com/mineauz/minigames/Events.java | 42 ++-- .../com/mineauz/minigames/MinigameUtils.java | 2 +- .../minigames/commands/JoinCommand.java | 2 +- .../minigames/commands/SpectateCommand.java | 2 +- .../managers/MinigamePlayerManager.java | 148 ++++++------- .../minigames/objects/MinigamePlayer.java | 209 ++++++++++-------- .../objects/OfflineMinigamePlayer.java | 81 ++++--- .../com/mineauz/minigames/signs/BetSign.java | 13 +- .../com/mineauz/minigames/signs/JoinSign.java | 2 +- .../mineauz/minigames/signs/SpectateSign.java | 2 +- .../minigames/MinigamePlayerManagerTest.java | 2 +- .../com/mineauz/minigames/MinigamesTest.java | 4 +- 12 files changed, 272 insertions(+), 237 deletions(-) diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/Events.java b/Minigames/src/main/java/au/com/mineauz/minigames/Events.java index 048106043..8b91eed86 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/Events.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/Events.java @@ -38,15 +38,16 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; +import org.jetbrains.annotations.NotNull; import java.io.File; import java.util.*; import java.util.function.Predicate; public class Events implements Listener { - private static final Minigames plugin = Minigames.getPlugin(); - private final MinigamePlayerManager pdata = plugin.getPlayerManager(); - private final MinigameManager mdata = plugin.getMinigameManager(); + private static final @NotNull Minigames plugin = Minigames.getPlugin(); + private final @NotNull MinigamePlayerManager pdata = plugin.getPlayerManager(); + private final @NotNull MinigameManager mdata = plugin.getMinigameManager(); @EventHandler(priority = EventPriority.NORMAL) public void onPlayerResourcePack(PlayerResourcePackStatusEvent event) { //todo 1.20.3 + add ressource pack not set @@ -173,15 +174,18 @@ public void itemPickup(EntityPickupItemEvent event) { } } - @EventHandler - public void onPlayerDisconnect(PlayerQuitEvent event) { + // the priority was changed to lowest, since having it to normal would mean worldguard + // would be served first unload the player and didn't allow them to teleport to the quit location inside a region. (pdata.quitMinigame) + @EventHandler(priority = EventPriority.LOWEST) + private void onPlayerDisconnect(PlayerQuitEvent event) { MinigamePlayer ply = pdata.getMinigamePlayer(event.getPlayer()); if (ply.isInMinigame()) { if (ply.getPlayer().isDead()) { ply.getOfflineMinigamePlayer().setLoginLocation(ply.getMinigame().getQuitLocation()); ply.getOfflineMinigamePlayer().savePlayerData(); } - pdata.quitMinigame(pdata.getMinigamePlayer(event.getPlayer()), false); + + pdata.quitMinigame(ply, false); } else if (ply.isRequiredQuit()) { ply.getOfflineMinigamePlayer().setLoginLocation(ply.getQuitPos()); ply.getOfflineMinigamePlayer().savePlayerData(); @@ -202,28 +206,28 @@ public void onPlayerDisconnect(PlayerQuitEvent event) { } @EventHandler(priority = EventPriority.HIGHEST) - public void onPlayerConnect(PlayerJoinEvent event) { + private void onPlayerConnect(final @NotNull PlayerJoinEvent event) { pdata.addMinigamePlayer(event.getPlayer()); File pldata = new File(plugin.getDataFolder() + "/playerdata/inventories/" + event.getPlayer().getUniqueId() + ".yml"); - final MinigamePlayer ply = pdata.getMinigamePlayer(event.getPlayer()); + final MinigamePlayer mgPlayer = pdata.getMinigamePlayer(event.getPlayer()); if (pldata.exists()) { - ply.setOfflineMinigamePlayer(new OfflineMinigamePlayer(event.getPlayer().getUniqueId())); - Location floc = ply.getOfflineMinigamePlayer().getLoginLocation(); - ply.setRequiredQuit(true); - ply.setQuitPos(floc); + mgPlayer.setOfflineMinigamePlayer(new OfflineMinigamePlayer(event.getPlayer().getUniqueId())); + final Location floc = mgPlayer.getOfflineMinigamePlayer().getLoginLocation(); + mgPlayer.setRequiredQuit(true); + mgPlayer.setQuitPos(floc); - if (!ply.getPlayer().isDead() && ply.isRequiredQuit()) { - Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, ply::restorePlayerData); - ply.teleport(ply.getQuitPos()); + if (!mgPlayer.getPlayer().isDead() && mgPlayer.isRequiredQuit()) { + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, mgPlayer::restorePlayerData); + mgPlayer.teleport(floc); - ply.setRequiredQuit(false); - ply.setQuitPos(null); + mgPlayer.setRequiredQuit(false); + mgPlayer.setQuitPos(null); } - plugin.getLogger().info(ply.getName() + "'s data has been restored from file."); + plugin.getLogger().info(mgPlayer.getName() + "'s data has been restored from file."); } - ply.loadClaimedRewards(); + mgPlayer.loadClaimedRewards(); if (Bukkit.getServer().getOnlinePlayers().size() == 1) { for (Minigame mgm : mdata.getAllMinigames().values()) { diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/MinigameUtils.java b/Minigames/src/main/java/au/com/mineauz/minigames/MinigameUtils.java index 557d3fad9..e018eaba7 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/MinigameUtils.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/MinigameUtils.java @@ -238,7 +238,7 @@ public static String formStr(String format, Object... text) { * @return The translation. If not found, will return the argument. * @deprecated use {@link MessageManager#getUnformattedMessage(String, String)} */ - @Deprecated + @Deprecated(forRemoval = true) public static String getLang(String arg1) { String out; try { diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/commands/JoinCommand.java b/Minigames/src/main/java/au/com/mineauz/minigames/commands/JoinCommand.java index 099a9a89b..4a2b7798c 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/commands/JoinCommand.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/commands/JoinCommand.java @@ -60,7 +60,7 @@ public boolean onCommand(CommandSender sender, Minigame minigame, String label, if (mgm != null && (!mgm.getUsePermissions() || player.hasPermission("minigame.join." + mgm.getName(false).toLowerCase()))) { if (!plugin.getPlayerManager().getMinigamePlayer(player).isInMinigame()) { sender.sendMessage(ChatColor.GREEN + MessageManager.getMinigamesMessage("command.join.joining", mgm.getName(false))); - plugin.getPlayerManager().joinMinigame(plugin.getPlayerManager().getMinigamePlayer(player), mgm, false, 0.0); + plugin.getPlayerManager().joinMinigame(mgm, plugin.getPlayerManager().getMinigamePlayer(player), false, 0.0); } else { player.sendMessage(ChatColor.RED + MinigameUtils.getLang("command.join.alreadyPlaying")); } diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/commands/SpectateCommand.java b/Minigames/src/main/java/au/com/mineauz/minigames/commands/SpectateCommand.java index 66d52d9a7..3d78779bc 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/commands/SpectateCommand.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/commands/SpectateCommand.java @@ -59,7 +59,7 @@ public boolean onCommand(CommandSender sender, Minigame minigame, if (plugin.getMinigameManager().hasMinigame(args[0])) { MinigamePlayer ply = plugin.getPlayerManager().getMinigamePlayer((Player) sender); Minigame mgm = plugin.getMinigameManager().getMinigame(args[0]); - plugin.getPlayerManager().spectateMinigame(ply, mgm); + plugin.getPlayerManager().spectateMinigame(mgm, ply); } else { sender.sendMessage(ChatColor.RED + "No Minigame found by the name: " + args[0]); } diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/managers/MinigamePlayerManager.java b/Minigames/src/main/java/au/com/mineauz/minigames/managers/MinigamePlayerManager.java index 2d46cb01d..4a2aea9da 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/managers/MinigamePlayerManager.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/managers/MinigamePlayerManager.java @@ -34,6 +34,7 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.FireworkMeta; import org.bukkit.potion.PotionEffect; +import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -43,25 +44,25 @@ * Manager Class of all players playing Minigames. **/ public class MinigamePlayerManager { - private static final Minigames plugin = Minigames.getPlugin(); - private final Map minigamePlayers = new HashMap<>(); - private final List applyingPack = new ArrayList<>(); - private final MinigameManager mgManager = plugin.getMinigameManager(); + private static final @NotNull Minigames plugin = Minigames.getPlugin(); + private final @NotNull Map<@NotNull UUID, @NotNull MinigamePlayer> minigamePlayers = new HashMap<>(); + private final @NotNull List<@NotNull MinigamePlayer> applyingPack = new ArrayList<>(); + private final @NotNull MinigameManager mgManager = plugin.getMinigameManager(); private boolean partyMode = false; - private List deniedCommands = new ArrayList<>(); + private @NotNull List<@NotNull String> deniedCommands = new ArrayList<>(); public MinigamePlayerManager() { } - public List getApplyingPack() { + public @NotNull List<@NotNull MinigamePlayer> getApplyingPack() { return applyingPack; } - public void needsResourcePack(MinigamePlayer player) { + public void needsResourcePack(@NotNull MinigamePlayer player) { applyingPack.add(player); } - public void joinMinigame(MinigamePlayer player, Minigame minigame, boolean isBetting, Double betAmount) { + public void joinMinigame(@NotNull Minigame minigame, @NotNull MinigamePlayer player, boolean isBetting, double betAmount) { MinigameType type = minigame.getType(); JoinMinigameEvent event = new JoinMinigameEvent(player, minigame); Bukkit.getServer().getPluginManager().callEvent(event); @@ -71,14 +72,15 @@ public void joinMinigame(MinigamePlayer player, Minigame minigame, boolean isBet } if (!mgManager.minigameStartStateCheck(minigame, player)) return; //Do betting stuff - if (isBetting && !handleBets(minigame, player, betAmount)) { + if (isBetting && !handleMoneyBet(minigame, player, betAmount)) { return; } //Try teleport the player to their designated area. ResourcePack pack = getResourcePack(minigame); if (pack != null && pack.isValid()) { - if (player.applyResourcePack(pack)) + if (player.applyResourcePack(pack)) { player.sendInfoMessage(MinigameUtils.getLang("minigame.resourcepack.apply")); + } } //Check if Minigame is full if (minigame.isGameFull()) { @@ -91,10 +93,11 @@ public void joinMinigame(MinigamePlayer player, Minigame minigame, boolean isBet return; } //Give them the game type name - if (minigame.getGameTypeName() == null) + if (minigame.getGameTypeName() == null) { player.sendMessage(MessageManager.getMinigamesMessage("player.join.plyInfo", minigame.getType().getName()), MinigameMessageType.WIN); - else + } else { player.sendMessage(MessageManager.getMinigamesMessage("player.join.plyInfo", minigame.getGameTypeName()), MinigameMessageType.WIN); + } //Give them the objective if (minigame.getObjective() != null) { @@ -160,7 +163,7 @@ public void joinMinigame(MinigamePlayer player, Minigame minigame, boolean isBet * @param betAmount the amount in economy money. might be 0, if the player was betting an item * @return true if the player could successfully bet */ - private boolean handleBets(Minigame minigame, MinigamePlayer player, Double betAmount) { + private boolean handleMoneyBet(@NotNull Minigame minigame, @NotNull MinigamePlayer player, double betAmount) { if (minigame.getMpBets() == null && (player.getPlayer().getInventory().getItemInMainHand().getType() != Material.AIR || betAmount != 0)) { minigame.setMpBets(new MultiplayerBets()); } @@ -228,7 +231,7 @@ private boolean handleBets(Minigame minigame, MinigamePlayer player, Double betA } } - public void spectateMinigame(MinigamePlayer player, Minigame minigame) { + public void spectateMinigame(@NotNull Minigame minigame, @NotNull MinigamePlayer player) { SpectateMinigameEvent event = new SpectateMinigameEvent(player, minigame); Bukkit.getServer().getPluginManager().callEvent(event); @@ -270,11 +273,11 @@ public void spectateMinigame(MinigamePlayer player, Minigame minigame) { } } - public void startMPMinigame(Minigame minigame) { + public void startMPMinigame(@NotNull Minigame minigame) { startMPMinigame(minigame, LobbySettingsModule.getMinigameModule(minigame).isTeleportOnStart()); } - public void startMPMinigame(Minigame minigame, boolean teleport) { + public void startMPMinigame(@NotNull Minigame minigame, boolean teleport) { List players = new ArrayList<>(minigame.getPlayers()); for (MinigamePlayer ply : players) { if (minigame.getMaxScore() != 0) @@ -313,7 +316,7 @@ public void startMPMinigame(Minigame minigame, boolean teleport) { minigame.setState(MinigameState.STARTED); } - public List balanceGame(Minigame game) { + public List balanceGame(@NotNull Minigame game) { List result = null; if (game.isTeamGame()) { GameMechanicBase mech = GameMechanics.getGameMechanic(game.getMechanicName()); @@ -325,14 +328,14 @@ public List balanceGame(Minigame game) { return result; } - public void teleportToStart(Minigame minigame) { + public void teleportToStart(@NotNull Minigame minigame) { List findStart = new ArrayList<>(); for (MinigamePlayer ply : minigame.getPlayers()) { if (ply.getStartPos() == null) { findStart.add(ply); } } - if (findStart.size() != 0) { + if (!findStart.isEmpty()) { getStartLocations(findStart, minigame); } @@ -342,7 +345,7 @@ public void teleportToStart(Minigame minigame) { minigame.setPlayersAtStart(true); } - public ResourcePack getResourcePack(Minigame game) { + public ResourcePack getResourcePack(@NotNull Minigame game) { ResourcePackModule module = (ResourcePackModule) game.getModule("ResourcePack"); if (module != null && module.isEnabled()) { ResourcePack pack = plugin.getResourceManager().getResourcePack(module.getResourcePackName()); @@ -355,7 +358,7 @@ public ResourcePack getResourcePack(Minigame game) { return null; } - public void clearResourcePack(Minigame game) { + public void clearResourcePack(@NotNull Minigame game) { ResourcePack pack = plugin.getResourceManager().getResourcePack("empty"); if (pack != null && pack.isValid()) { for (MinigamePlayer player : game.getPlayers()) { @@ -365,7 +368,7 @@ public void clearResourcePack(Minigame game) { } - public void getStartLocations(List players, Minigame game) { + public void getStartLocations(@NotNull List<@NotNull MinigamePlayer> players, @NotNull Minigame game) { mgManager.sendMinigameMessage(game, MinigameUtils.getLang("minigame.startRandomized"), MinigameMessageType.INFO, (List) null); Collections.shuffle(players); int pos = 0; @@ -447,7 +450,7 @@ public void getStartLocations(List players, Minigame game) { } } - public void revertToCheckpoint(MinigamePlayer player) { + public void revertToCheckpoint(@NotNull MinigamePlayer player) { RevertCheckpointEvent event = new RevertCheckpointEvent(player); Bukkit.getServer().getPluginManager().callEvent(event); @@ -521,8 +524,9 @@ public void quitMinigame(@NotNull MinigamePlayer player, boolean forced) { player.sendMessage(MessageManager.getMinigamesMessage("player.spectate.quit.plyMsg", minigame.getName(true)), MinigameMessageType.ERROR); mgManager.sendMinigameMessage(minigame, MessageManager.getMinigamesMessage("player.spectate.quit.minigameMsg", player.getName(), minigame.getName(true)), MinigameMessageType.ERROR, player); } else { - if (player.getEndTime() == 0) + if (player.getEndTime() == 0) { player.setEndTime(System.currentTimeMillis()); + } if (isWinner) { GameOverModule.getMinigameModule(minigame).getWinners().remove(player); @@ -669,7 +673,7 @@ public void quitMinigame(@NotNull MinigamePlayer player, boolean forced) { player.getPlayer().showPlayer(plugin, pl.getPlayer()); } - if (minigame.getPlayers().size() == 0 && !minigame.isRegenerating()) { + if (minigame.getPlayers().isEmpty() && !minigame.isRegenerating()) { HandlerList.unregisterAll(minigame.getRecorderData()); } @@ -696,14 +700,14 @@ public void quitMinigame(@NotNull MinigamePlayer player, boolean forced) { } } - public void endMinigame(MinigamePlayer player) { + public void endMinigame(@NotNull MinigamePlayer player) { List w = new ArrayList<>(); List l = new ArrayList<>(); w.add(player); endMinigame(player.getMinigame(), w, l); } - public void endMinigame(Minigame minigame, List winners, List losers) { + public void endMinigame(@NotNull Minigame minigame, List<@NotNull MinigamePlayer> winners, List<@NotNull MinigamePlayer> losers) { //When the minigame ends, the flag for recognizing the start teleportation needs to be resetted minigame.setPlayersAtStart(false); EndPhaseMinigameEvent event = new EndPhaseMinigameEvent(winners, losers, minigame); @@ -836,12 +840,12 @@ public void endMinigame(Minigame minigame, List winners, List winners, Minigame minigame) { + public void broadcastEndGame(@NotNull List<@NotNull MinigamePlayer> winners, @NotNull Minigame minigame) { if (plugin.getConfig().getBoolean("broadcastCompletion") && minigame.isEnabled()) { if (minigame.isTeamGame()) { - if (winners.size() > 0 || ((TeamsModule) minigame.getModule("Teams")).getDefaultWinner() != null) { + if (!winners.isEmpty() || ((TeamsModule) minigame.getModule("Teams")).getDefaultWinner() != null) { Team team; - if (winners.size() > 0) + if (!winners.isEmpty()) team = winners.get(0).getTeam(); else team = ((TeamsModule) minigame.getModule("Teams")).getTeam(((TeamsModule) minigame.getModule("Teams")).getDefaultWinner()); @@ -897,12 +901,7 @@ public void broadcastEndGame(List winners, Minigame minigame) { } @Deprecated - public boolean playerInMinigame(Player player) { - return minigamePlayers.get(player.getName()).isInMinigame(); - } - - @Deprecated - public List playersInMinigame() { + public @NotNull List<@NotNull Player> playersInMinigame() { List players = new ArrayList<>(); for (Player player : plugin.getServer().getOnlinePlayers()) { if (hasMinigamePlayer(player.getUniqueId())) { @@ -912,60 +911,57 @@ public List playersInMinigame() { return players; } - public void addMinigamePlayer(Player player) { - minigamePlayers.put(player.getName(), new MinigamePlayer(player)); + public void addMinigamePlayer(@NotNull Player player) { + minigamePlayers.put(player.getUniqueId(), new MinigamePlayer(player)); } - public void removeMinigamePlayer(Player player) { - minigamePlayers.remove(player.getName()); + public void removeMinigamePlayer(@NotNull Player player) { + minigamePlayers.remove(player.getUniqueId()); } /** * @return null, if the given player was null, the respecting MinigamePlayer object otherwise */ - public @Nullable MinigamePlayer getMinigamePlayer(Player player) { + @Contract("null -> null; !null -> !null") + public @Nullable MinigamePlayer getMinigamePlayer(@Nullable Player player) { if (player == null) { return null; } - if (!minigamePlayers.containsKey(player.getName())) { + if (!minigamePlayers.containsKey(player.getUniqueId())) { addMinigamePlayer(player); } - return minigamePlayers.get(player.getName()); + return minigamePlayers.get(player.getUniqueId()); } - public @Nullable MinigamePlayer getMinigamePlayer(UUID uuid) { - for (MinigamePlayer p : minigamePlayers.values()) { - if (p.getUUID() == uuid) { - return p; - } - } - - return getMinigamePlayer(Bukkit.getPlayer(uuid)); + public @Nullable MinigamePlayer getMinigamePlayer(@NotNull UUID uuid) { + return minigamePlayers.get(uuid); } - public @Nullable MinigamePlayer getMinigamePlayer(String player) { - return minigamePlayers.get(player); + /** + * @see #getMinigamePlayer(UUID) + */ + public @Nullable MinigamePlayer getMinigamePlayer(@NotNull String playerName) { + return minigamePlayers.values().stream().filter(mgPlayer -> mgPlayer.getPlayer().getName().equals(playerName)).findAny().orElse(null); } - public Collection getAllMinigamePlayers() { + public @NotNull Collection<@NotNull MinigamePlayer> getAllMinigamePlayers() { return minigamePlayers.values(); } - public boolean hasMinigamePlayer(String name) { - return minigamePlayers.containsKey(name); + /** + * @see #hasMinigamePlayer(UUID) + */ + public boolean hasMinigamePlayer(@NotNull String name) { + return minigamePlayers.values().stream().anyMatch(mgPlayer -> mgPlayer.getPlayer().getName().equals(name)); } public boolean hasMinigamePlayer(UUID uuid) { - for (MinigamePlayer p : minigamePlayers.values()) { - if (p.getUUID() == uuid) - return true; - } - return false; + return minigamePlayers.containsKey(uuid); } - public List checkRequiredFlags(MinigamePlayer player, String minigame) { + public List checkRequiredFlags(@NotNull MinigamePlayer player, @NotNull String minigame) { List checkpoints = new ArrayList<>(mgManager.getMinigame(minigame).getFlags()); List pchecks = player.getFlags(); @@ -984,7 +980,7 @@ public void setPartyMode(boolean mode) { partyMode = mode; } - public void partyMode(MinigamePlayer player) { + public void partyMode(@NotNull MinigamePlayer player) { if (onPartyMode()) { Location loc = player.getPlayer().getLocation(); Firework firework = (Firework) player.getPlayer().getWorld().spawnEntity(loc, EntityType.FIREWORK); @@ -1005,34 +1001,28 @@ public void partyMode(MinigamePlayer player) { } } - public void partyMode(MinigamePlayer player, int amount, long delay) { - if (!onPartyMode()) return; - final int fcount = amount; - final MinigamePlayer fplayer = player; - final long fdelay = delay; - partyMode(fplayer); + public void partyMode(final @NotNull MinigamePlayer player, final int amount, final long delay) { + if (!onPartyMode()) { + return; + } + partyMode(player); if (amount == 1) return; - Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { - if (fplayer != null) { - partyMode(fplayer, fcount - 1, fdelay); - } - - }, delay); + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> partyMode(player, amount - 1, delay), delay); } - public List getDeniedCommands() { + public @NotNull List<@NotNull String> getDeniedCommands() { return deniedCommands; } - public void setDeniedCommands(List deniedCommands) { + public void setDeniedCommands(@NotNull List<@NotNull String> deniedCommands) { this.deniedCommands = deniedCommands; } - public void addDeniedCommand(String command) { + public void addDeniedCommand(@NotNull String command) { deniedCommands.add(command); } - public void removeDeniedCommand(String command) { + public void removeDeniedCommand(@NotNull String command) { deniedCommands.remove(command); } diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/objects/MinigamePlayer.java b/Minigames/src/main/java/au/com/mineauz/minigames/objects/MinigamePlayer.java index f2b24e304..d278e33d2 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/objects/MinigamePlayer.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/objects/MinigamePlayer.java @@ -25,27 +25,32 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.scoreboard.Scoreboard; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.io.File; import java.util.*; +/** + * wrapper class to keep track of players with additional information. + * A MinigamePlayer does NOT have to be in a Minigame to be valid! + */ public class MinigamePlayer implements ScriptObject { - private final Player player; - private final List flags = new ArrayList<>(); - private final List tempClaimedRewards = new ArrayList<>(); - private final List tempRewardItems = new ArrayList<>(); - private final List rewardItems = new ArrayList<>(); - private final List claimedScoreSigns = new ArrayList<>(); + private final @NotNull Player player; + private final @NotNull List<@NotNull String> flags = new ArrayList<>(); + private final @NotNull List<@NotNull String> tempClaimedRewards = new ArrayList<>(); + private final @NotNull List<@NotNull ItemStack> tempRewardItems = new ArrayList<>(); + private final @NotNull List<@NotNull ItemStack> rewardItems = new ArrayList<>(); + private final @NotNull List<@NotNull String> claimedScoreSigns = new ArrayList<>(); private boolean allowTP; private boolean allowGMChange; private boolean canFly; - private Scoreboard lastScoreboard; - private Minigame minigame; - private PlayerLoadout loadout; + private @Nullable Scoreboard lastScoreboard; + private @Nullable Minigame minigame; + private @Nullable PlayerLoadout loadout; private boolean requiredQuit; - private Location startPos; - private Location quitPos; - private Location checkpoint; + private @Nullable Location startPos; + private @Nullable Location quitPos; + private @Nullable Location checkpoint; private int kills; private int deaths; private int score; @@ -59,19 +64,19 @@ public class MinigamePlayer implements ScriptObject { private boolean canPvP = true; private boolean isInvincible; private boolean canInteract = true; - private Team team; - private Menu menu; + private @Nullable Team team; + private @Nullable Menu menu; private boolean noClose; - private MenuItem manualEntry; - private Location selection1; - private Location selection2; - private IDisplayCuboid selectionDisplay; + private @Nullable MenuItem manualEntry; + private @Nullable Location selection1; + private @Nullable Location selection2; + private @Nullable IDisplayCuboid selectionDisplay; private OfflineMinigamePlayer offlineMinigamePlayer; - private final StoredPlayerCheckpoints spc; - private List claimedRewards = new ArrayList<>(); + private final @Nullable StoredPlayerCheckpoints spc; + private @NotNull List<@NotNull String> claimedRewards = new ArrayList<>(); private int lateJoinTimer = -1; - public MinigamePlayer(final Player player) { + public MinigamePlayer(final @NotNull Player player) { this.player = player; this.spc = new StoredPlayerCheckpoints(this.getUUID().toString()); @@ -81,27 +86,27 @@ public MinigamePlayer(final Player player) { } } - public Location getStartPos() { + public @Nullable Location getStartPos() { return this.startPos; } - public void setStartPos(final Location startPos) { + public void setStartPos(final @Nullable Location startPos) { this.startPos = startPos; } - public Player getPlayer() { + public @NotNull Player getPlayer() { return this.player; } - public String getName() { + public @NotNull String getName() { return ChatColor.stripColor(this.player.getName()); } - public String getDisplayName() { + public @NotNull String getDisplayName() { return this.getDisplayName(true); } - public String getDisplayName(final Boolean displayName) { + public @NotNull String getDisplayName(final Boolean displayName) { if (displayName) { return ChatColor.stripColor(this.player.getDisplayName()); } else { @@ -109,16 +114,16 @@ public String getDisplayName(final Boolean displayName) { } } - public UUID getUUID() { + public @NotNull UUID getUUID() { return this.player.getUniqueId(); } - public Location getLocation() { + public @NotNull Location getLocation() { return this.player.getLocation(); } - @Deprecated - private void sendMessage(final String msg) { + @Deprecated(forRemoval = true) + private void sendMessage(final @NotNull String msg) { final int enc = Math.floorDiv(msg.getBytes().length, msg.length()); if (msg.getBytes().length > 32000) { //chat limit set to a higher number. final int capLength = Math.floorDiv(msg.length(), enc); @@ -129,30 +134,33 @@ private void sendMessage(final String msg) { this.player.sendMessage(msg); } - private void sendMessage(final Component msg) { + @Deprecated(forRemoval = true) + private void sendMessage(final @NotNull Component msg) { this.player.sendMessage(msg); } - @Deprecated - public void sendInfoMessage(final String msg) { + @Deprecated(forRemoval = true) + public void sendInfoMessage(final @NotNull String msg) { this.sendMessage(msg, MinigameMessageType.INFO); } - public void sendInfoMessage(final Component msg) { + @Deprecated(forRemoval = true) + public void sendInfoMessage(final @NotNull Component msg) { this.sendMessage(msg, MinigameMessageType.INFO); } - @Deprecated - public void sendUnprefixedMessage(final String msg) { + @Deprecated(forRemoval = true) + public void sendUnprefixedMessage(final @NotNull String msg) { this.sendMessage(msg, MinigameMessageType.NONE); } - public void sendUnprefixedMessage(final Component msg) { + @Deprecated(forRemoval = true) + public void sendUnprefixedMessage(final @NotNull Component msg) { this.sendMessage(msg, MinigameMessageType.NONE); } - @Deprecated - public void sendMessage(final String msg, final @NotNull MinigameMessageType type) { + @Deprecated(forRemoval = true) + public void sendMessage(final @NotNull String msg, final @NotNull MinigameMessageType type) { String init = ""; switch (type) { case ERROR: @@ -173,7 +181,8 @@ public void sendMessage(final String msg, final @NotNull MinigameMessageType typ this.sendMessage(init + msg); } - public void sendMessage(final Component msg, final @NotNull MinigameMessageType type) { + @Deprecated(forRemoval = true) + public void sendMessage(final @NotNull Component msg, final @NotNull MinigameMessageType type) { Component init; init = switch (type) { case ERROR -> Component.text("[Minigames] ", NamedTextColor.RED); @@ -222,10 +231,11 @@ public void restorePlayerData() { this.player.getInventory().setContents(this.offlineMinigamePlayer.getStoredItems()); this.player.getInventory().setArmorContents(this.offlineMinigamePlayer.getStoredArmour()); this.player.setFoodLevel(this.offlineMinigamePlayer.getFood()); - if (this.offlineMinigamePlayer.getHealth() > 20) + if (this.offlineMinigamePlayer.getHealth() > 20) { // todo don't hardcode. use attributes! this.player.setHealth(20); - else + } else { this.player.setHealth(this.offlineMinigamePlayer.getHealth()); + } this.player.setSaturation(this.offlineMinigamePlayer.getSaturation()); this.player.setScoreboard(Objects.requireNonNullElseGet(this.lastScoreboard, () -> this.player.getServer().getScoreboardManager().getMainScoreboard())); @@ -266,11 +276,11 @@ public void setAllowGamemodeChange(final boolean allowGMChange) { this.allowGMChange = allowGMChange; } - public Minigame getMinigame() { + public @Nullable Minigame getMinigame() { return this.minigame; } - public void setMinigame(final Minigame minigame) { + public void setMinigame(final @NotNull Minigame minigame) { this.minigame = minigame; } @@ -290,31 +300,49 @@ public void setRequiredQuit(final boolean requiredQuit) { this.requiredQuit = requiredQuit; } - public Location getQuitPos() { + public @Nullable Location getQuitPos() { return this.quitPos; } - public void setQuitPos(final Location quitPos) { + public void setQuitPos(final @Nullable Location quitPos) { this.quitPos = quitPos; } - public PlayerLoadout getLoadout() { - if (this.loadout != null) { - return this.loadout; - } else if (this.team != null && LoadoutModule.getMinigameModule(this.minigame).hasLoadout(this.team.getColor().toString().toLowerCase())) { - return LoadoutModule.getMinigameModule(this.minigame).getLoadout(this.team.getColor().toString().toLowerCase()); + /** + * will return null, if the player is NOT in a Minigame + * + * @return + */ + public @Nullable PlayerLoadout getLoadout() { + if (this.minigame != null) { + if (this.loadout != null) { + return this.loadout; + } else if (this.team != null && LoadoutModule.getMinigameModule(this.minigame).hasLoadout(this.team.getColor().toString().toLowerCase())) { + return LoadoutModule.getMinigameModule(this.minigame).getLoadout(this.team.getColor().toString().toLowerCase()); + } + return LoadoutModule.getMinigameModule(this.minigame).getLoadout("default"); + } else { + return null; } - return LoadoutModule.getMinigameModule(this.minigame).getLoadout("default"); } - public PlayerLoadout getDefaultLoadout() { - if (this.team != null && LoadoutModule.getMinigameModule(this.minigame).hasLoadout(this.team.getColor().toString().toLowerCase())) { - return LoadoutModule.getMinigameModule(this.minigame).getLoadout(this.team.getColor().toString().toLowerCase()); + /** + * will return null, if the player is NOT in a Minigame + * + * @return + */ + public @Nullable PlayerLoadout getDefaultLoadout() { + if (this.minigame != null) { + if (this.team != null && LoadoutModule.getMinigameModule(this.minigame).hasLoadout(this.team.getColor().toString().toLowerCase())) { + return LoadoutModule.getMinigameModule(this.minigame).getLoadout(this.team.getColor().toString().toLowerCase()); + } + return LoadoutModule.getMinigameModule(this.minigame).getLoadout("default"); + } else { + return null; } - return LoadoutModule.getMinigameModule(this.minigame).getLoadout("default"); } - public boolean setLoadout(final PlayerLoadout loadout) { + public boolean setLoadout(final @Nullable PlayerLoadout loadout) { if (this.getMinigame() == null) return false; if (loadout == null || !this.getMinigame().isTeamGame() || loadout.getTeamColor() == null || this.getTeam().getColor() == loadout.getTeamColor()) { this.loadout = loadout; @@ -323,15 +351,15 @@ public boolean setLoadout(final PlayerLoadout loadout) { return false; } - public List getFlags() { + public @NotNull List<@NotNull String> getFlags() { return this.flags; } - public void setFlags(final List flags) { + public void setFlags(final @NotNull List<@NotNull String> flags) { this.flags.addAll(flags); } - public boolean addFlag(final String flag) { + public boolean addFlag(final @NotNull String flag) { if (!this.flags.contains(flag)) { this.flags.add(flag); return true; @@ -339,7 +367,7 @@ public boolean addFlag(final String flag) { return false; } - public boolean hasFlag(final String flagName) { + public boolean hasFlag(final @NotNull String flagName) { return this.flags.contains(flagName); } @@ -347,11 +375,11 @@ public void clearFlags() { this.flags.clear(); } - public Location getCheckpoint() { + public @Nullable Location getCheckpoint() { return this.checkpoint; } - public void setCheckpoint(final Location checkpoint) { + public void setCheckpoint(final @Nullable Location checkpoint) { this.checkpoint = checkpoint; } @@ -525,8 +553,9 @@ public void resetAllStats() { this.setInvincible(false); this.setCanInteract(true); this.setLatejoining(false); - if (this.player.getGameMode() != GameMode.CREATIVE) + if (this.player.getGameMode() != GameMode.CREATIVE) { this.setCanFly(false); + } this.tempClaimedRewards.clear(); this.tempRewardItems.clear(); this.claimedScoreSigns.clear(); @@ -544,11 +573,11 @@ public void setLatejoining(final boolean isLatejoining) { this.isLatejoining = isLatejoining; } - public Menu getMenu() { + public @Nullable Menu getMenu() { return this.menu; } - public void setMenu(final Menu menu) { + public void setMenu(final @Nullable Menu menu) { this.menu = menu; } @@ -564,11 +593,11 @@ public void setNoClose(final boolean value) { this.noClose = value; } - public MenuItem getManualEntry() { + public @Nullable MenuItem getManualEntry() { return this.manualEntry; } - public void setManualEntry(final MenuItem item) { + public void setManualEntry(final @Nullable MenuItem item) { this.manualEntry = item; } @@ -595,7 +624,7 @@ public boolean hasSelection() { return this.selection1 != null && this.selection2 != null; } - public Location[] getSelectionPoints() { + public @Nullable Location @NotNull [] getSelectionPoints() { final Location[] loc = new Location[2]; loc[0] = this.selection1; loc[1] = this.selection2; @@ -608,14 +637,14 @@ public void clearSelection() { this.selection2 = null; } - public void setSelection(final Location point1, final Location point2) { + public void setSelection(final @NotNull Location point1, final @NotNull Location point2) { this.selection1 = point1; this.selection2 = point2; this.showSelection(false); } - public void setSelection(final MgRegion region) { + public void setSelection(final @NotNull MgRegion region) { this.selection1 = region.getLocation1(); this.selection2 = region.getLocation2(); @@ -642,19 +671,19 @@ public void showSelection(final boolean clear) { } } - public OfflineMinigamePlayer getOfflineMinigamePlayer() { + public @Nullable OfflineMinigamePlayer getOfflineMinigamePlayer() { return this.offlineMinigamePlayer; } - public void setOfflineMinigamePlayer(final OfflineMinigamePlayer oply) { + public void setOfflineMinigamePlayer(final @NotNull OfflineMinigamePlayer oply) { this.offlineMinigamePlayer = oply; } - public StoredPlayerCheckpoints getStoredPlayerCheckpoints() { + public @Nullable StoredPlayerCheckpoints getStoredPlayerCheckpoints() { return this.spc; } - public void setGamemode(final GameMode gamemode) { + public void setGamemode(final @NotNull GameMode gamemode) { this.setAllowGamemodeChange(true); this.player.setGameMode(gamemode); this.setAllowGamemodeChange(false); @@ -676,11 +705,11 @@ public boolean isLiving() { return !this.player.isDead(); } - public Team getTeam() { + public @Nullable Team getTeam() { return this.team; } - public void setTeam(final Team team) { + public void setTeam(final @Nullable Team team) { this.team = team; } @@ -699,11 +728,11 @@ public boolean hasTempClaimedReward(final String reward) { return this.tempClaimedRewards.contains(reward); } - public void addTempClaimedReward(final String reward) { + public void addTempClaimedReward(final @NotNull String reward) { this.tempClaimedRewards.add(reward); } - public void addClaimedReward(final String reward) { + public void addClaimedReward(final @NotNull String reward) { this.claimedRewards.add(reward); } @@ -724,28 +753,28 @@ public void loadClaimedRewards() { } } - public void addTempRewardItem(final ItemStack item) { + public void addTempRewardItem(final @NotNull ItemStack item) { this.tempRewardItems.add(item); } - public List getTempRewardItems() { + public @NotNull List<@NotNull ItemStack> getTempRewardItems() { return this.tempRewardItems; } - public void addRewardItem(final ItemStack item) { + public void addRewardItem(final @NotNull ItemStack item) { this.rewardItems.add(item); } - public List getRewardItems() { + public @NotNull List<@NotNull ItemStack> getRewardItems() { return this.rewardItems; } - public boolean hasClaimedScore(final Location loc) { + public boolean hasClaimedScore(final @NotNull Location loc) { final String id = MinigameUtils.createLocationID(loc); return this.claimedScoreSigns.contains(id); } - public boolean applyResourcePack(final ResourcePack pack) { + public boolean applyResourcePack(final @NotNull ResourcePack pack) { try { this.player.getPlayer().setResourcePack(pack.getUrl().toString(), pack.getSH1Hash()); return true; @@ -755,7 +784,7 @@ public boolean applyResourcePack(final ResourcePack pack) { return false; } - public void addClaimedScore(final Location loc) { + public void addClaimedScore(final @NotNull Location loc) { final String id = MinigameUtils.createLocationID(loc); this.claimedScoreSigns.add(id); } @@ -799,7 +828,7 @@ public void setLateJoinTimer(final int taskID) { } @Override - public ScriptReference get(final String name) { + public @Nullable ScriptReference get(final @NotNull String name) { return switch (name.toLowerCase()) { case "name" -> ScriptValue.of(this.player.getName()); case "displayname" -> ScriptValue.of(this.player.getDisplayName()); @@ -815,12 +844,12 @@ public ScriptReference get(final String name) { } @Override - public Set getKeys() { + public @NotNull ImmutableSet<@NotNull String> getKeys() { return ImmutableSet.of("name", "displayname", "score", "kills", "deaths", "health", "team", "pos", "minigame"); } @Override - public String getAsString() { + public @NotNull String getAsString() { return this.getName(); } } diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/objects/OfflineMinigamePlayer.java b/Minigames/src/main/java/au/com/mineauz/minigames/objects/OfflineMinigamePlayer.java index 76cdc2bcb..f5db8c189 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/objects/OfflineMinigamePlayer.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/objects/OfflineMinigamePlayer.java @@ -8,25 +8,30 @@ import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.UUID; +/** + * player data saved on disk + */ public class OfflineMinigamePlayer { - private final UUID uuid; - private final ItemStack[] storedItems; - private final ItemStack[] storedArmour; - private int food = 20; - private double health = 20; - private float saturation = 15; - private float exp = -1; //TODO: Set to default value after 1.7 - private int level = -1; //Set To default value after 1.7 - private GameMode lastGM = GameMode.SURVIVAL; - private Location loginLocation; - - public OfflineMinigamePlayer(UUID uuid, ItemStack[] items, - ItemStack[] armour, int food, double health, - float saturation, GameMode lastGM, float exp, int level, - Location loginLocation) { + private final @NotNull UUID uuid; + private final @Nullable ItemStack @Nullable [] storedItems; + private final @Nullable ItemStack @Nullable [] storedArmour; + private final int food; + private final double health; + private final float saturation; + private final float exp; + private final int level; + private @NotNull GameMode lastGM = GameMode.SURVIVAL; + private @Nullable Location loginLocation; + + public OfflineMinigamePlayer(@NotNull UUID uuid, @Nullable ItemStack @Nullable [] items, + @Nullable ItemStack @Nullable [] armour, int food, double health, + float saturation, @NotNull GameMode lastGM, float exp, int level, + final @Nullable Location loginLocation) { this.uuid = uuid; storedItems = items; storedArmour = armour; @@ -36,26 +41,30 @@ public OfflineMinigamePlayer(UUID uuid, ItemStack[] items, this.lastGM = lastGM; this.exp = exp; this.level = level; - if (loginLocation != null && loginLocation.getWorld() == null) - loginLocation = Bukkit.getWorlds().get(0).getSpawnLocation(); - this.loginLocation = loginLocation; + if (loginLocation != null && loginLocation.getWorld() == null) { + this.loginLocation = Bukkit.getWorlds().get(0).getSpawnLocation(); + } else { + this.loginLocation = loginLocation; + } if (Minigames.getPlugin().getConfig().getBoolean("saveInventory")) savePlayerData(); } - public OfflineMinigamePlayer(UUID uuid) { - MinigameSave save = new MinigameSave("playerdata/inventories/" + uuid.toString()); + /** + * loads player data from disk + * + * @param uuid the uuid of the user to load + */ + public OfflineMinigamePlayer(final @NotNull UUID uuid) { + MinigameSave save = new MinigameSave("playerdata/inventories/" + uuid); FileConfiguration con = save.getConfig(); this.uuid = uuid; - food = con.getInt("food"); - health = con.getDouble("health"); - saturation = con.getInt("saturation"); + food = con.getInt("food", 20); + health = con.getDouble("health", 20); + saturation = con.getInt("saturation", 15); lastGM = GameMode.valueOf(con.getString("gamemode")); - if (con.contains("exp")) { - exp = ((Double) con.getDouble("exp")).floatValue(); - } - if (con.contains("level")) - level = con.getInt("level"); + exp = ((Double) con.getDouble("exp", 0)).floatValue(); + level = con.getInt("level", 0); if (con.contains("location")) { loginLocation = new Location(Minigames.getPlugin().getServer().getWorld(con.getString("location.world")), con.getDouble("location.x"), @@ -63,10 +72,12 @@ public OfflineMinigamePlayer(UUID uuid) { con.getDouble("location.z"), (float) con.getDouble("location.yaw"), (float) con.getDouble("location.pitch")); - if (loginLocation.getWorld() == null) + if (loginLocation.getWorld() == null) { loginLocation = Bukkit.getWorlds().get(0).getSpawnLocation(); - } else + } + } else { loginLocation = Bukkit.getWorlds().get(0).getSpawnLocation(); + } ItemStack[] items = Minigames.getPlugin().getServer().createInventory(null, InventoryType.PLAYER).getContents(); ItemStack[] armour = new ItemStack[4]; @@ -86,11 +97,11 @@ public UUID getUUID() { return uuid; } - public ItemStack[] getStoredItems() { + public @Nullable ItemStack @Nullable [] getStoredItems() { return storedItems; } - public ItemStack[] getStoredArmour() { + public @Nullable ItemStack @Nullable [] getStoredArmour() { return storedArmour; } @@ -106,15 +117,15 @@ public float getSaturation() { return saturation; } - public GameMode getLastGamemode() { + public @NotNull GameMode getLastGamemode() { return lastGM; } - public Location getLoginLocation() { + public @Nullable Location getLoginLocation() { return loginLocation; } - public void setLoginLocation(Location loc) { + public void setLoginLocation(@Nullable Location loc) { loginLocation = loc; } diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/signs/BetSign.java b/Minigames/src/main/java/au/com/mineauz/minigames/signs/BetSign.java index e28cf366f..f46f1d54c 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/signs/BetSign.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/signs/BetSign.java @@ -9,6 +9,7 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.block.Sign; +import org.bukkit.block.sign.Side; import org.bukkit.event.block.SignChangeEvent; import org.bukkit.inventory.ItemStack; @@ -58,11 +59,11 @@ public boolean signCreate(SignChangeEvent event) { @Override public boolean signUse(Sign sign, MinigamePlayer player) { - Minigame mgm = plugin.getMinigameManager().getMinigame(sign.getLine(2)); + Minigame mgm = plugin.getMinigameManager().getMinigame(sign.getSide(Side.FRONT).getLine(2)); if (mgm != null) { boolean invOk = true; boolean fullInv; - boolean moneyBet = sign.getLine(3).startsWith("$"); + boolean moneyBet = sign.getSide(Side.FRONT).getLine(3).startsWith("$"); if (plugin.getConfig().getBoolean("requireEmptyInventory")) { fullInv = true; @@ -96,13 +97,13 @@ public boolean signUse(Sign sign, MinigamePlayer player) { return false; } - if (!sign.getLine(3).startsWith("$")) { - plugin.getPlayerManager().joinMinigame(player, plugin.getMinigameManager().getMinigame(sign.getLine(2)), true, 0.0); + if (!sign.getSide(Side.FRONT).getLine(3).startsWith("$")) { + plugin.getPlayerManager().joinMinigame(plugin.getMinigameManager().getMinigame(sign.getLine(2)), player, true, 0.0); } else { if (plugin.hasEconomy()) { //todo use plugin.getEconomy().currencyNamePlural() - Double bet = Double.parseDouble(sign.getLine(3).replace("$", "")); - plugin.getPlayerManager().joinMinigame(player, plugin.getMinigameManager().getMinigame(sign.getLine(2)), true, bet); + double bet = Double.parseDouble(sign.getLine(3).replace("$", "")); + plugin.getPlayerManager().joinMinigame(plugin.getMinigameManager().getMinigame(sign.getLine(2)), player, true, bet); return true; } else { player.sendMessage(ChatColor.RED + "[Minigames] " + ChatColor.WHITE + MinigameUtils.getLang("minigame.error.noVault"), MinigameMessageType.ERROR); diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/signs/JoinSign.java b/Minigames/src/main/java/au/com/mineauz/minigames/signs/JoinSign.java index 19c88f908..b30ebf222 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/signs/JoinSign.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/signs/JoinSign.java @@ -106,7 +106,7 @@ public boolean signUse(Sign sign, MinigamePlayer player) { return false; } } - plugin.getPlayerManager().joinMinigame(player, mgm, false, 0.0); + plugin.getPlayerManager().joinMinigame(mgm, player, false, 0.0); return true; } else if (!mgm.isEnabled()) { player.sendInfoMessage(ChatColor.WHITE + MessageManager.getMessage(null, "minigame.error.notEnabled")); diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/signs/SpectateSign.java b/Minigames/src/main/java/au/com/mineauz/minigames/signs/SpectateSign.java index efab44154..819034b25 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/signs/SpectateSign.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/signs/SpectateSign.java @@ -56,7 +56,7 @@ public boolean signUse(Sign sign, MinigamePlayer player) { Minigame mgm = plugin.getMinigameManager().getMinigame(sign.getLine(2)); if (mgm != null) { if (mgm.isEnabled()) { - plugin.getPlayerManager().spectateMinigame(player, mgm); + plugin.getPlayerManager().spectateMinigame(mgm, player); return true; } else if (!mgm.isEnabled()) { player.sendInfoMessage(MinigameUtils.getLang("minigame.error.notEnabled")); diff --git a/Minigames/src/test/java/au/com/mineauz/minigames/MinigamePlayerManagerTest.java b/Minigames/src/test/java/au/com/mineauz/minigames/MinigamePlayerManagerTest.java index a3f7ff712..0c3ea5281 100644 --- a/Minigames/src/test/java/au/com/mineauz/minigames/MinigamePlayerManagerTest.java +++ b/Minigames/src/test/java/au/com/mineauz/minigames/MinigamePlayerManagerTest.java @@ -57,7 +57,7 @@ public void joinMinigame() { final PlayerMock mock = server.getPlayer(0); plugin.getPlayerManager().addMinigamePlayer(mock); Assertions.assertTrue(plugin.getPlayerManager().hasMinigamePlayer(mock.getUniqueId())); - plugin.getPlayerManager().joinMinigame(plugin.getPlayerManager().getMinigamePlayer(mock), game, false, 0.0); + plugin.getPlayerManager().joinMinigame(game, plugin.getPlayerManager().getMinigamePlayer(mock), false, 0.0); Assertions.assertTrue(plugin.getPlayerManager().getMinigamePlayer(mock.getUniqueId()).isInMinigame()); } diff --git a/Minigames/src/test/java/au/com/mineauz/minigames/MinigamesTest.java b/Minigames/src/test/java/au/com/mineauz/minigames/MinigamesTest.java index 32f26bbe5..1c4befaa4 100644 --- a/Minigames/src/test/java/au/com/mineauz/minigames/MinigamesTest.java +++ b/Minigames/src/test/java/au/com/mineauz/minigames/MinigamesTest.java @@ -67,7 +67,7 @@ public void onJoinMinigame() { Assertions.assertNotSame(player.getLocation(), game.getLobbyLocation()); plugin.getPlayerManager().addMinigamePlayer(player); MinigamePlayer mplayer = plugin.getPlayerManager().getMinigamePlayer(player.getUniqueId()); - plugin.getPlayerManager().joinMinigame(mplayer, game, false, 0.0); + plugin.getPlayerManager().joinMinigame(game, mplayer, false, 0.0); LobbySettingsModule module = (LobbySettingsModule) game.getModule("LobbySettings"); player.assertLocation(lobby, 0.0); Assertions.assertTrue(module.isTeleportOnStart()); @@ -82,7 +82,7 @@ public void onJoinMinigame() { public void onQuitMinigame() { plugin.getPlayerManager().addMinigamePlayer(player); MinigamePlayer mplayer = plugin.getPlayerManager().getMinigamePlayer(player.getUniqueId()); - plugin.getPlayerManager().joinMinigame(mplayer, game, false, 0D); + plugin.getPlayerManager().joinMinigame(game, mplayer, false, 0D); player.assertLocation(lobby, 0); Assertions.assertTrue(plugin.getPlayerManager().getMinigamePlayer(player.getUniqueId()).isInMinigame()); plugin.getPlayerManager().quitMinigame(plugin.getPlayerManager().getMinigamePlayer(player), false); From 1fd0a4efd590e380d8d47be1a1d0375746d183fc Mon Sep 17 00:00:00 2001 From: FireInstall Date: Wed, 6 Mar 2024 12:26:25 +0100 Subject: [PATCH 3/3] Cache who got the vault waring shown when placing join signs closes #AddstarMC/Minigames#270 --- .../au/com/mineauz/minigames/minigame/Minigame.java | 8 +------- .../au/com/mineauz/minigames/signs/JoinSign.java | 12 ++++++++++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/minigame/Minigame.java b/Minigames/src/main/java/au/com/mineauz/minigames/minigame/Minigame.java index 5cb5526ca..9b325969d 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/minigame/Minigame.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/minigame/Minigame.java @@ -1066,13 +1066,7 @@ public void setShowCompletionTime(boolean bool) { } public StatSettings getSettings(MinigameStat stat) { - StatSettings settings = statSettings.get(stat); - if (settings == null) { - settings = new StatSettings(stat); - statSettings.put(stat, settings); - } - - return settings; + return statSettings.computeIfAbsent(stat, StatSettings::new); } public Map getStatSettings(StoredGameStats stats) { diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/signs/JoinSign.java b/Minigames/src/main/java/au/com/mineauz/minigames/signs/JoinSign.java index 19c88f908..f59d12f42 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/signs/JoinSign.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/signs/JoinSign.java @@ -12,8 +12,11 @@ import org.bukkit.event.block.SignChangeEvent; import org.bukkit.inventory.ItemStack; -public class JoinSign implements MinigameSign { +import java.util.HashSet; +import java.util.UUID; +public class JoinSign implements MinigameSign { + private static final HashSet shownWarning = new HashSet<>(); private static final Minigames plugin = Minigames.getPlugin(); @Override @@ -55,7 +58,12 @@ public boolean signCreate(SignChangeEvent event) { } } else { event.setLine(3, ""); - event.getPlayer().sendMessage(ChatColor.RED + MinigameUtils.getLang("minigame.error.noVault")); + + if (!shownWarning.contains(event.getPlayer().getUniqueId())) { + event.getPlayer().sendMessage(ChatColor.RED + MinigameUtils.getLang("minigame.error.noVault")); + + shownWarning.add(event.getPlayer().getUniqueId()); + } } return true; }