From 4d4bb73e4f86f2e01749ab834648e26c57c1d2ad Mon Sep 17 00:00:00 2001 From: Stefan923 Date: Sat, 6 Feb 2021 16:49:23 +0200 Subject: [PATCH 1/3] Added cooldown for '/island preview' command --- .../commands/island/PreviewCommand.java | 37 +++++++++++++++++++ .../skyblock/cooldown/CooldownManager.java | 2 +- .../skyblock/cooldown/CooldownType.java | 1 + .../skyblock/island/IslandManager.java | 13 +++++++ src/main/resources/config.yml | 6 +++ src/main/resources/language.yml | 5 +++ 6 files changed, 63 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/songoda/skyblock/command/commands/island/PreviewCommand.java b/src/main/java/com/songoda/skyblock/command/commands/island/PreviewCommand.java index 7bc4a9cd..e75a8193 100644 --- a/src/main/java/com/songoda/skyblock/command/commands/island/PreviewCommand.java +++ b/src/main/java/com/songoda/skyblock/command/commands/island/PreviewCommand.java @@ -4,9 +4,16 @@ import com.songoda.core.compatibility.CompatibleSound; import com.songoda.skyblock.command.SubCommand; import com.songoda.skyblock.config.FileManager; import com.songoda.skyblock.confirmation.Confirmation; +import com.songoda.skyblock.cooldown.Cooldown; +import com.songoda.skyblock.cooldown.CooldownManager; +import com.songoda.skyblock.cooldown.CooldownPlayer; +import com.songoda.skyblock.cooldown.CooldownType; import com.songoda.skyblock.island.Island; +import com.songoda.skyblock.message.MessageManager; import com.songoda.skyblock.playerdata.PlayerData; +import com.songoda.skyblock.sound.SoundManager; import com.songoda.skyblock.structure.Structure; +import com.songoda.skyblock.utils.NumberUtil; import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.command.ConsoleCommandSender; @@ -19,6 +26,9 @@ public class PreviewCommand extends SubCommand { @Override public void onCommandByPlayer(Player player, String[] args) { + CooldownManager cooldownManager = plugin.getCooldownManager(); + MessageManager messageManager = plugin.getMessageManager(); + SoundManager soundManager = plugin.getSoundManager(); FileManager fileManager = plugin.getFileManager(); FileManager.Config config = fileManager.getConfig(new File(plugin.getDataFolder(), "language.yml")); FileConfiguration configLang = config.getFileConfiguration(); @@ -61,6 +71,33 @@ public class PreviewCommand extends SubCommand { } } } else { + // Do not preview if cooldown is still active + if (fileManager.getConfig(new File(plugin.getDataFolder(), "config.yml")) + .getFileConfiguration().getBoolean("Island.Preview.Cooldown.Enable") + && cooldownManager.hasPlayer(CooldownType.Preview, player)) { + CooldownPlayer cooldownPlayer = cooldownManager.getCooldownPlayer(CooldownType.Preview, player); + Cooldown cooldown = cooldownPlayer.getCooldown(); + + if (cooldown.getTime() < 60) { + messageManager.sendMessage(player, + config.getFileConfiguration().getString("Island.Preview.Cooldown.Message") + .replace("%time", cooldown.getTime() + " " + config.getFileConfiguration() + .getString("Island.Preview.Cooldown.Word.Second"))); + } else { + long[] durationTime = NumberUtil.getDuration(cooldown.getTime()); + messageManager.sendMessage(player, + config.getFileConfiguration().getString("Island.Preview.Cooldown.Message") + .replace("%time", durationTime[2] + " " + + config.getFileConfiguration() + .getString("Island.Preview.Cooldown.Word.Minute") + + " " + durationTime[3] + " " + config.getFileConfiguration() + .getString("Island.Preview.Cooldown.Word.Second"))); + } + + soundManager.playSound(player, CompatibleSound.ENTITY_VILLAGER_NO.getSound(), 1.0F, 1.0F); + + return; + } // Do not preview if user has an island if (island != null) { plugin.getMessageManager().sendMessage(player, configLang.getString("Command.Island.Preview.Island.Message")); diff --git a/src/main/java/com/songoda/skyblock/cooldown/CooldownManager.java b/src/main/java/com/songoda/skyblock/cooldown/CooldownManager.java index 62dcbbb9..91ef37a5 100644 --- a/src/main/java/com/songoda/skyblock/cooldown/CooldownManager.java +++ b/src/main/java/com/songoda/skyblock/cooldown/CooldownManager.java @@ -94,7 +94,7 @@ public class CooldownManager { int time = 0; - if (cooldownType == CooldownType.Biome || cooldownType == CooldownType.Creation || cooldownType == CooldownType.Deletion) { + if (cooldownType == CooldownType.Biome || cooldownType == CooldownType.Creation || cooldownType == CooldownType.Deletion || cooldownType == CooldownType.Preview) { time = this.plugin.getConfiguration() .getInt("Island." + cooldownType.name() + ".Cooldown.Time"); diff --git a/src/main/java/com/songoda/skyblock/cooldown/CooldownType.java b/src/main/java/com/songoda/skyblock/cooldown/CooldownType.java index 7d0a31bb..01caf0f2 100644 --- a/src/main/java/com/songoda/skyblock/cooldown/CooldownType.java +++ b/src/main/java/com/songoda/skyblock/cooldown/CooldownType.java @@ -9,6 +9,7 @@ public enum CooldownType { Biome, Creation, Deletion, + Preview, Levelling, Ownership, Teleport; diff --git a/src/main/java/com/songoda/skyblock/island/IslandManager.java b/src/main/java/com/songoda/skyblock/island/IslandManager.java index f9319c47..8470a87a 100644 --- a/src/main/java/com/songoda/skyblock/island/IslandManager.java +++ b/src/main/java/com/songoda/skyblock/island/IslandManager.java @@ -397,6 +397,13 @@ public class IslandManager { data.setConfirmation(Confirmation.Preview); data.setConfirmationTime(configMain.getInt("Island.Preview.Time")); + + FileConfiguration configLoad = this.plugin.getConfiguration(); + if (configLoad.getBoolean("Island.Preview.Cooldown.Enable") && !player.hasPermission("fabledskyblock.bypass.cooldown") + && !player.hasPermission("fabledskyblock.bypass.*") && !player.hasPermission("fabledskyblock.*")) { + plugin.getCooldownManager().createPlayer(CooldownType.Preview, player); + } + return true; } @@ -563,6 +570,7 @@ public class IslandManager { boolean cooldownCreationEnabled = configLoad.getBoolean("Island.Creation.Cooldown.Creation.Enable"); boolean cooldownDeletionEnabled = configLoad.getBoolean("Island.Creation.Cooldown.Deletion.Enable"); + boolean cooldownPreviewEnabled = configLoad.getBoolean("Island.Preview.Cooldown.Enable"); for (Player player : Bukkit.getOnlinePlayers()) { if ((island.hasRole(IslandRole.Member, player.getUniqueId()) || @@ -597,6 +605,11 @@ public class IslandManager { plugin.getCooldownManager().createPlayer(CooldownType.Deletion, player); } } + if (cooldownPreviewEnabled) { + if (!player.hasPermission("fabledskyblock.bypass.cooldown") && !player.hasPermission("fabledskyblock.bypass.*") && !player.hasPermission("fabledskyblock.*")) { + plugin.getCooldownManager().createPlayer(CooldownType.Preview, player); + } + } } InviteManager inviteManager = plugin.getInviteManager(); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index e4c6f81c..ed29d1e6 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -172,6 +172,12 @@ Island: # open the Island Visit menu. Bans: false Preview: + # [!] You are adviced to keep these options both enabled to prevent any issues. + Cooldown: + # When enabled, cooldown will start when a player previews an Island. + Enable: true + Time: 60 + # Time until confirmation expires for island preview confirmation. Time: 10 Visitor: # When an Island is unloaded if enabled players won't be able to visit the Island diff --git a/src/main/resources/language.yml b/src/main/resources/language.yml index 3626489d..8c9f6554 100644 --- a/src/main/resources/language.yml +++ b/src/main/resources/language.yml @@ -3633,6 +3633,11 @@ Island: Preview: Timeout: Message: '&bSkyBlock &8| &aInfo&8: &eYour time to preview island has expired.' + Cooldown: + Word: + Minute: minute(s) + Second: second(s) + Message: '&bSkyBlock &8| &cError&8: &eYou must wait &c&o%time &ebefore previewing an Island.' Hologram: Leaderboard: Votes: From 9867ebb09a6c4461a7f3aaa5642eb8d546028ef3 Mon Sep 17 00:00:00 2001 From: Fernando Pettinelli Date: Sat, 6 Feb 2021 14:56:13 -0300 Subject: [PATCH 2/3] Removed created file checks, fixed comparison in world generator. --- .../java/com/songoda/skyblock/config/FileChecker.java | 11 +---------- .../java/com/songoda/skyblock/world/WorldManager.java | 2 +- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/songoda/skyblock/config/FileChecker.java b/src/main/java/com/songoda/skyblock/config/FileChecker.java index e4226bfe..52993c78 100644 --- a/src/main/java/com/songoda/skyblock/config/FileChecker.java +++ b/src/main/java/com/songoda/skyblock/config/FileChecker.java @@ -48,17 +48,8 @@ public class FileChecker { public void compareFiles() { for (File.Type fileType : File.Type.values()) { File file = loadedFiles.get(fileType); - FileConfiguration configLoad = file.getFileConfiguration(); - if (fileType == File.Type.CREATED) { - File resourceFile = loadedFiles.get(File.Type.RESOURCE); - - for (String configKeyList : file.getKeys().keySet()) { - if (!resourceFile.getKeys().containsKey(configKeyList)) { - configLoad.set(configKeyList, null); - } - } - } else if (fileType == File.Type.RESOURCE) { + if (fileType == File.Type.RESOURCE) { File createdFile = loadedFiles.get(File.Type.CREATED); FileConfiguration createdConfigLoad = createdFile.getFileConfiguration(); diff --git a/src/main/java/com/songoda/skyblock/world/WorldManager.java b/src/main/java/com/songoda/skyblock/world/WorldManager.java index 98451d38..a08d7754 100644 --- a/src/main/java/com/songoda/skyblock/world/WorldManager.java +++ b/src/main/java/com/songoda/skyblock/world/WorldManager.java @@ -139,7 +139,7 @@ public class WorldManager { } private ChunkGenerator getWorldGenerator(String mapName, String worldGeneratorName, IslandWorld islandWorld) { - if (worldGeneratorName == null || worldGeneratorName == "default" || worldGeneratorName.length() == 0) { + if (worldGeneratorName == null || worldGeneratorName.equalsIgnoreCase("default") || worldGeneratorName.length() == 0) { return new VoidGenerator(islandWorld); } From 51d7b006499abefdad8840b85f710d7bd39ab191 Mon Sep 17 00:00:00 2001 From: Fernando Pettinelli Date: Sat, 6 Feb 2021 14:56:48 -0300 Subject: [PATCH 3/3] Version 2.3.26 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index bdf5c93e..d4d97393 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.songoda skyblock - 2.3.25 + 2.3.26 jar UTF-8