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 1b5ad2584..da5fb651c 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/Events.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/Events.java @@ -64,9 +64,9 @@ import java.util.stream.Collectors; 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(@NotNull PlayerResourcePackStatusEvent event) { //todo 1.20.3 + add ressource pack not set (redo with multible Ressoucepacks in mind.) @@ -192,7 +192,9 @@ private void itemPickup(@NotNull EntityPickupItemEvent event) { } } - @EventHandler + // 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) public void onPlayerDisconnect(@NotNull PlayerQuitEvent event) { MinigamePlayer mgPlayer = pdata.getMinigamePlayer(event.getPlayer()); if (mgPlayer.isInMinigame()) { @@ -221,7 +223,7 @@ public void onPlayerDisconnect(@NotNull PlayerQuitEvent event) { } @EventHandler(priority = EventPriority.HIGHEST) - private void onPlayerConnect(@NotNull PlayerJoinEvent event) { + private void onPlayerConnect(final @NotNull PlayerJoinEvent event) { pdata.addMinigamePlayer(event.getPlayer()); File pldata = new File(plugin.getDataFolder() + File.separator + "playerdata " + File.separator + @@ -229,13 +231,13 @@ private void onPlayerConnect(@NotNull PlayerJoinEvent event) { final MinigamePlayer mgPlayer = pdata.getMinigamePlayer(event.getPlayer()); if (pldata.exists()) { mgPlayer.setOfflineMinigamePlayer(new OfflineMinigamePlayer(event.getPlayer().getUniqueId())); - Location floc = mgPlayer.getOfflineMinigamePlayer().getLoginLocation(); + final Location floc = mgPlayer.getOfflineMinigamePlayer().getLoginLocation(); mgPlayer.setRequiredQuit(true); mgPlayer.setQuitPos(floc); if (!mgPlayer.getPlayer().isDead() && mgPlayer.isRequiredQuit()) { Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, mgPlayer::restorePlayerData); - mgPlayer.teleport(mgPlayer.getQuitPos()); + mgPlayer.teleport(floc); mgPlayer.setRequiredQuit(false); mgPlayer.setQuitPos(null); 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 cc25ab1da..f149e8a3f 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 @@ -52,7 +52,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull String @NotNull MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.SUCCESS, MgMiscLangKey.PLAYER_JOIN_JOINING, Placeholder.component(MinigamePlaceHolderKey.MINIGAME.getKey(), mgm.getDisplayName())); - PLUGIN.getPlayerManager().joinMinigame(PLUGIN.getPlayerManager().getMinigamePlayer(player), mgm, false, 0.0); + PLUGIN.getPlayerManager().joinMinigame(mgm, PLUGIN.getPlayerManager().getMinigamePlayer(player), false, 0.0); } else { MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MgMiscLangKey.MINIGAME_JOIN_ERROR_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 83a8b3e8b..55e7acc65 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 @@ -57,7 +57,7 @@ public boolean onCommand(@NotNull CommandSender sender, Minigame mgm = PLUGIN.getMinigameManager().getMinigame(args[0]); if (mgm != null) { MinigamePlayer mgPlayer = PLUGIN.getPlayerManager().getMinigamePlayer(player); - PLUGIN.getPlayerManager().spectateMinigame(mgPlayer, mgm); + PLUGIN.getPlayerManager().spectateMinigame(mgm, mgPlayer); return true; } else { MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MgMiscLangKey.MINIGAME_ERROR_NOMINIGAME, 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 3fd32a43d..938a53187 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 @@ -69,7 +69,7 @@ public void needsResourcePack(@NotNull MinigamePlayer mgPlayer) { applyingPack.add(mgPlayer); } - public void joinMinigame(@NotNull MinigamePlayer mgPlayer, @NotNull Minigame minigame, boolean isBetting, @NotNull Double betAmount) { + public void joinMinigame(@NotNull Minigame minigame, @NotNull MinigamePlayer mgPlayer, boolean isBetting, double betAmount) { MinigameType type = minigame.getType(); JoinMinigameEvent event = new JoinMinigameEvent(mgPlayer, minigame); Bukkit.getServer().getPluginManager().callEvent(event); @@ -79,7 +79,7 @@ public void joinMinigame(@NotNull MinigamePlayer mgPlayer, @NotNull Minigame min } if (!mgManager.minigameStartStateCheck(minigame, mgPlayer)) return; //Do betting stuff - if (isBetting && !handleBets(minigame, mgPlayer, betAmount)) { + if (isBetting && !handleMoneyBet(minigame, mgPlayer, betAmount)) { return; } //Try to apply ressource pack @@ -178,7 +178,7 @@ public void joinMinigame(@NotNull MinigamePlayer mgPlayer, @NotNull Minigame min * @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(@NotNull Minigame minigame, @NotNull MinigamePlayer mgPlayer, @NotNull Double betAmount) { + private boolean handleMoneyBet(@NotNull Minigame minigame, @NotNull MinigamePlayer mgPlayer, double betAmount) { if (minigame.getMpBets() == null && (mgPlayer.getPlayer().getInventory().getItemInMainHand().getType() != Material.AIR || betAmount != 0)) { minigame.setMpBets(new MultiplayerBets()); } @@ -245,7 +245,7 @@ private boolean handleBets(@NotNull Minigame minigame, @NotNull MinigamePlayer m } } - public void spectateMinigame(@NotNull MinigamePlayer mgPlayer, @NotNull Minigame minigame) { + public void spectateMinigame(@NotNull Minigame minigame, @NotNull MinigamePlayer mgPlayer) { SpectateMinigameEvent event = new SpectateMinigameEvent(mgPlayer, minigame); Bukkit.getServer().getPluginManager().callEvent(event); @@ -970,11 +970,6 @@ public void broadcastEndGame(@NotNull List<@NotNull MinigamePlayer> winners, @No } } - @Deprecated - public boolean playerInMinigame(@NotNull Player player) { - return minigamePlayers.get(player.getUniqueId()).isInMinigame(); - } - @Deprecated public @NotNull List<@NotNull Player> playersInMinigame() { List players = new ArrayList<>(); @@ -1012,7 +1007,7 @@ public void removeMinigamePlayer(@NotNull Player player) { public @Nullable MinigamePlayer getMinigamePlayer(@NotNull UUID uuid) { MinigamePlayer mgPlayer = minigamePlayers.get(uuid); - + if (mgPlayer != null) { return mgPlayer; } @@ -1020,8 +1015,9 @@ public void removeMinigamePlayer(@NotNull Player player) { return getMinigamePlayer(Bukkit.getPlayer(uuid)); } + /** - * @see #getMinigamePlayer(UUID) + * @see #getMinigamePlayer(UUID) */ public @Nullable MinigamePlayer getMinigamePlayer(@NotNull String playerName) { return getMinigamePlayer(plugin.getServer().getPlayer(playerName)); @@ -1086,19 +1082,13 @@ public void partyMode(@NotNull 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 @NotNull List<@NotNull String> getDeniedCommands() { @@ -1109,11 +1099,11 @@ 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/managers/ResourcePackManager.java b/Minigames/src/main/java/au/com/mineauz/minigames/managers/ResourcePackManager.java index b07c8f90f..021f91dd5 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 @@ -55,7 +55,7 @@ public ResourcePackManager() { private boolean loadEmptyPack() { try { - URL url = new URI("https://github.com/AddstarMC/Minigames/raw/master/Minigames/src/main/resources/resourcepack/emptyResourcePack.zip").toURL(); + URL url = new URI("https://github.com/AddstarMC/Minigames/blob/master/Minigames/src/main/resources/resourcepack/emptyResourcePack.zip").toURL(); ResourcePack empty = new ResourcePack(MinigameMessageManager.getMgMessage(MgMiscLangKey.MINIGAME_RESSOURCEPACK_EMPTY_NAME), url); addResourcePack(empty); return true; 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 d15c71922..2e60ed855 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 @@ -35,8 +35,12 @@ 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 @NotNull Player player; private final @NotNull List<@NotNull String> singlePlayerFlags = new ArrayList<>(); private final @NotNull List<@NotNull String> tempClaimedRewards = new ArrayList<>(); private final @NotNull List<@NotNull ItemStack> tempRewardItems = new ArrayList<>(); @@ -46,7 +50,7 @@ public class MinigamePlayer implements ScriptObject { private boolean allowTP; private boolean allowGMChange; private boolean canFly; - private Scoreboard lastScoreboard; + private @Nullable Scoreboard lastScoreboard; private @Nullable Minigame minigame; private @Nullable PlayerLoadout loadout; private boolean requiredQuit; @@ -74,10 +78,10 @@ public class MinigamePlayer implements ScriptObject { private @Nullable Location selection2; private @Nullable DisplayCuboid selectionDisplay; private OfflineMinigamePlayer offlineMinigamePlayer; - private @NotNull List claimedRewards = new ArrayList<>(); + 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()); @@ -92,7 +96,7 @@ public MinigamePlayer(final Player player) { return this.startPos; } - public void setStartPos(final Location startPos) { + public void setStartPos(final @Nullable Location startPos) { this.startPos = startPos; } @@ -108,12 +112,12 @@ public void setStartPos(final Location startPos) { * @deprecated use {@link #displayName()} if possible */ @Deprecated - public String getDisplayName() { + public @NotNull String getDisplayName() { return this.getDisplayName(true); } @Deprecated - public String getDisplayName(final @NotNull Boolean displayName) { + public @NotNull String getDisplayName(final @NotNull Boolean displayName) { if (displayName) { return ChatColor.stripColor(this.player.getDisplayName()); } else { @@ -168,10 +172,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())); @@ -247,23 +252,37 @@ public void setQuitPos(final @Nullable Location quitPos) { this.quitPos = quitPos; } + /** + * will return null, if the player is NOT in a Minigame + */ public @Nullable PlayerLoadout getLoadout() { - LoadoutModule loadoutModule = LoadoutModule.getMinigameModule(minigame); + if (this.minigame != null) { + LoadoutModule loadoutModule = LoadoutModule.getMinigameModule(minigame); - if (this.loadout != null) { - return this.loadout; - } else if (this.team != null && loadoutModule.hasLoadout(this.team.getColor().toString().toLowerCase())) { - return loadoutModule.getLoadout(this.team.getColor().toString().toLowerCase()); + if (this.loadout != null) { + return this.loadout; + } else if (this.team != null && loadoutModule.hasLoadout(this.team.getColor().toString().toLowerCase())) { + return loadoutModule.getLoadout(this.team.getColor().toString().toLowerCase()); + } + return loadoutModule.getLoadout("default"); + } else { + return null; } - return loadoutModule.getLoadout("default"); } - public PlayerLoadout getDefaultLoadout() { - LoadoutModule loadoutModule = LoadoutModule.getMinigameModule(minigame); - if (this.team != null && loadoutModule.hasLoadout(this.team.getColor().toString().toLowerCase())) { - return loadoutModule.getLoadout(this.team.getColor().toString().toLowerCase()); + /** + * will return null, if the player is NOT in a Minigame + */ + public @Nullable PlayerLoadout getDefaultLoadout() { + if (this.minigame != null) { + LoadoutModule loadoutModule = LoadoutModule.getMinigameModule(minigame); + if (this.team != null && loadoutModule.hasLoadout(this.team.getColor().toString().toLowerCase())) { + return loadoutModule.getLoadout(this.team.getColor().toString().toLowerCase()); + } + return loadoutModule.getLoadout("default"); + } else { + return null; } - return loadoutModule.getLoadout("default"); } public boolean setLoadout(final @Nullable PlayerLoadout loadout) { @@ -291,7 +310,7 @@ public boolean addFlag(final @NotNull String flag) { return false; } - public boolean hasFlag(final String flagName) { + public boolean hasFlag(final @NotNull String flagName) { return this.singlePlayerFlags.contains(flagName); } @@ -303,7 +322,7 @@ public void clearFlags() { return this.checkpoint; } - public void setCheckpoint(final @NotNull Location checkpoint) { + public void setCheckpoint(final @Nullable Location checkpoint) { this.checkpoint = checkpoint; } @@ -489,8 +508,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(); @@ -512,7 +532,7 @@ public void setLatejoining(final boolean isLatejoining) { return this.menu; } - public void setMenu(final Menu menu) { + public void setMenu(final @Nullable Menu menu) { this.menu = menu; } @@ -655,7 +675,7 @@ public void showSelection(final boolean show) { } } - public OfflineMinigamePlayer getOfflineMinigamePlayer() { + public @Nullable OfflineMinigamePlayer getOfflineMinigamePlayer() { return this.offlineMinigamePlayer; } @@ -738,7 +758,7 @@ public void loadClaimedRewards() { } } - public void addTempRewardItem(final ItemStack item) { + public void addTempRewardItem(final @NotNull ItemStack item) { this.tempRewardItems.add(item); } @@ -746,7 +766,7 @@ public void addTempRewardItem(final ItemStack item) { return this.tempRewardItems; } - public void addRewardItem(final ItemStack item) { + public void addRewardItem(final @NotNull ItemStack item) { this.rewardItems.add(item); } @@ -812,9 +832,8 @@ public void setLateJoinTimer(final int taskID) { this.lateJoinTimer = taskID; } - @Nullable @Override - public ScriptReference get(final @NotNull 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()); @@ -829,14 +848,13 @@ public ScriptReference get(final @NotNull String name) { }; } - @NotNull @Override - public Set getKeys() { + public @NotNull Set getKeys() { return Set.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 4ad9079cd..353e28833 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 @@ -14,22 +14,25 @@ import java.io.File; import java.util.UUID; +/** + * player data saved on disk + */ public class OfflineMinigamePlayer { private final @NotNull UUID uuid; - private final ItemStack @NotNull [] storedItems; - private final ItemStack @NotNull [] storedArmour; + private final @Nullable ItemStack @NotNull [] storedItems; + private final @Nullable ItemStack @NotNull [] storedArmour; private final int food; private final double health; private final float saturation; - private float exp = -1; //TODO: Set to default value after 1.7 - private int level = -1; //Set To default value after 1.7 + private final float exp; + private final int level; private final @NotNull GameMode lastGM; private @Nullable Location loginLocation; - public OfflineMinigamePlayer(@NotNull UUID uuid, ItemStack @NotNull [] items, - ItemStack @NotNull [] armour, int food, double health, + public OfflineMinigamePlayer(@NotNull UUID uuid, @Nullable ItemStack @NotNull [] items, + @Nullable ItemStack @NotNull [] armour, int food, double health, float saturation, @NotNull GameMode lastGM, float exp, int level, - @Nullable Location loginLocation) { + final @Nullable Location loginLocation) { this.uuid = uuid; storedItems = items; storedArmour = armour; @@ -40,29 +43,31 @@ public OfflineMinigamePlayer(@NotNull UUID uuid, ItemStack @NotNull [] items, this.exp = exp; this.level = level; if (loginLocation != null && loginLocation.getWorld() == null) { - loginLocation = Bukkit.getWorlds().getFirst().getSpawnLocation(); + this.loginLocation = Bukkit.getWorlds().getFirst().getSpawnLocation(); + } else { + this.loginLocation = loginLocation; } - this.loginLocation = loginLocation; if (Minigames.getPlugin().getConfig().getBoolean("saveInventory")) { savePlayerData(); } } - public OfflineMinigamePlayer(@NotNull UUID uuid) { + /** + * 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" + File.separator + "inventories" + File.separator + uuid); FileConfiguration config = save.getConfig(); char configSeparator = config.options().pathSeparator(); this.uuid = uuid; - food = config.getInt("food"); - health = config.getDouble("health"); - saturation = config.getInt("saturation"); + food = config.getInt("food", 20); + health = config.getDouble("health", 20); + saturation = config.getInt("saturation", 15); lastGM = GameMode.valueOf(config.getString("gamemode")); - if (config.contains("exp")) { - exp = ((Double) config.getDouble("exp")).floatValue(); - } - if (config.contains("level")) { - level = config.getInt("level"); - } + exp = ((Double) con.getDouble("exp", 0)).floatValue(); + level = con.getInt("level", 0); if (config.contains("location")) { loginLocation = new Location(Minigames.getPlugin().getServer().getWorld(config.getString("location.world", "")), config.getDouble("location" + configSeparator + "x"), @@ -73,8 +78,9 @@ public OfflineMinigamePlayer(@NotNull UUID uuid) { if (loginLocation.getWorld() == null) { loginLocation = Bukkit.getWorlds().getFirst().getSpawnLocation(); } - } else + } else { loginLocation = Bukkit.getWorlds().getFirst().getSpawnLocation(); + } ItemStack[] items = Minigames.getPlugin().getServer().createInventory(null, InventoryType.PLAYER).getContents(); ItemStack[] armour = new ItemStack[4]; @@ -94,11 +100,11 @@ public OfflineMinigamePlayer(@NotNull UUID uuid) { return uuid; } - public ItemStack @NotNull [] getStoredItems() { + public @Nullable ItemStack @NotNull [] getStoredItems() { return storedItems; } - public ItemStack @NotNull [] getStoredArmour() { + public @Nullable ItemStack @NotNull [] getStoredArmour() { return storedArmour; } @@ -122,7 +128,7 @@ public float getSaturation() { return loginLocation; } - public void setLoginLocation(@NotNull 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 420e496fd..a792cde67 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 @@ -59,11 +59,11 @@ public boolean signCreate(@NotNull SignChangeEvent event) { // todo update @Override public boolean signUse(@NotNull Sign sign, @NotNull MinigamePlayer mgPlayer) { - Minigame mgm = getMinigame(sign); + 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; @@ -97,13 +97,13 @@ public boolean signUse(@NotNull Sign sign, @NotNull MinigamePlayer mgPlayer) { return false; } - if (!sign.getLine(3).startsWith("$")) { - plugin.getPlayerManager().joinMinigame(mgPlayer, mgm, true, 0.0); + if (!sign.getSide(Side.FRONT).getLine(3).startsWith("$")) { + plugin.getPlayerManager().joinMinigame(mgm, mgPlayer, true, 0.0); } else { if (plugin.hasEconomy()) { //todo use plugin.getEconomy().currencyNamePlural() - Double bet = Double.parseDouble(sign.getLine(3).replace("$", "")); - plugin.getPlayerManager().joinMinigame(mgPlayer, mgm, true, bet); + double bet = Double.parseDouble(sign.getLine(3).replace("$", "")); + plugin.getPlayerManager().joinMinigame(mgm, mgPlayer, true, bet); return true; } else if (plugin.getConfig().getBoolean("warnings")) { MinigameMessageManager.sendMgMessage(mgPlayer, MinigameMessageType.WARNING, MgMiscLangKey.MINIGAME_WARNING_NOVAULT); 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 3d2b1a25e..6fbed465f 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 @@ -18,7 +18,11 @@ import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; +import java.util.HashSet; +import java.util.UUID; + public class JoinSign extends AMinigameSign { + private static final HashSet shownWarning = new HashSet<>(); private static final Minigames plugin = Minigames.getPlugin(); @Override @@ -56,7 +60,11 @@ public boolean signCreate(@NotNull SignChangeEvent event) { } } else if (plugin.getConfig().getBoolean("warnings")) { event.line(3, Component.empty()); - MinigameMessageManager.sendMgMessage(event.getPlayer(), MinigameMessageType.WARNING, MgMiscLangKey.MINIGAME_WARNING_NOVAULT); + if (!shownWarning.contains(event.getPlayer().getUniqueId())) { + MinigameMessageManager.sendMgMessage(event.getPlayer(), MinigameMessageType.WARNING, MgMiscLangKey.MINIGAME_WARNING_NOVAULT); + + shownWarning.add(event.getPlayer().getUniqueId()); + } } return true; } @@ -108,7 +116,7 @@ public boolean signUse(@NotNull Sign sign, @NotNull MinigamePlayer mgPlayer) { return false; } } - plugin.getPlayerManager().joinMinigame(mgPlayer, mgm, false, 0.0); + plugin.getPlayerManager().joinMinigame(mgm, mgPlayer, false, 0.0); return true; } else if (!mgm.isEnabled()) { MinigameMessageManager.sendMgMessage(mgPlayer, MinigameMessageType.ERROR, MgMiscLangKey.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 bd748ecc0..d181f8cd0 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 @@ -59,7 +59,7 @@ public boolean signUse(@NotNull Sign sign, @NotNull MinigamePlayer mgPlayer) { Minigame mgm = getMinigame(sign); if (mgm != null) { if (mgm.isEnabled()) { - plugin.getPlayerManager().spectateMinigame(mgPlayer, mgm); + plugin.getPlayerManager().spectateMinigame(mgm, mgPlayer); return true; } else if (!mgm.isEnabled()) { MinigameMessageManager.sendMgMessage(mgPlayer, MinigameMessageType.ERROR, MgMiscLangKey.MINIGAME_ERROR_NOTENABLED);