From f8f656642c2e276d8803784b418ec7c9ccb4411a Mon Sep 17 00:00:00 2001 From: OmerBenGera Date: Fri, 12 Aug 2022 16:57:15 +0300 Subject: [PATCH] Added the ability to disable visitors sign from being a requirement to visit islands --- .../superiorskyblock/api/config/SettingsManager.java | 6 ++++++ .../superiorskyblock/commands/player/CmdVisit.java | 9 ++++++--- .../superiorskyblock/config/SettingsContainer.java | 2 ++ .../config/section/VisitorsSignSection.java | 5 +++++ src/main/resources/config.yml | 3 +++ 5 files changed, 22 insertions(+), 3 deletions(-) diff --git a/API/src/main/java/com/bgsoftware/superiorskyblock/api/config/SettingsManager.java b/API/src/main/java/com/bgsoftware/superiorskyblock/api/config/SettingsManager.java index a20f77dc5..8aafa2195 100644 --- a/API/src/main/java/com/bgsoftware/superiorskyblock/api/config/SettingsManager.java +++ b/API/src/main/java/com/bgsoftware/superiorskyblock/api/config/SettingsManager.java @@ -836,6 +836,12 @@ interface IslandRoles { interface VisitorsSign { + /** + * Whether a visitors sign is required for others to visit islands. + * Config-path: visitors-sign.required-for-visit + */ + boolean isRequiredForVisit(); + /** * The line that determines if the sign is used as a visitors home location. * Config-path: visitors-sign.line diff --git a/src/main/java/com/bgsoftware/superiorskyblock/commands/player/CmdVisit.java b/src/main/java/com/bgsoftware/superiorskyblock/commands/player/CmdVisit.java index c0862bbc9..ab7792ddc 100644 --- a/src/main/java/com/bgsoftware/superiorskyblock/commands/player/CmdVisit.java +++ b/src/main/java/com/bgsoftware/superiorskyblock/commands/player/CmdVisit.java @@ -62,7 +62,9 @@ public void execute(SuperiorSkyblockPlugin plugin, CommandSender sender, String[ SuperiorPlayer superiorPlayer = plugin.getPlayers().getSuperiorPlayer(sender); - Location visitLocation = targetIsland.getVisitorsLocation(null /* unused */); + Location visitLocation = plugin.getSettings().getVisitorsSign().isRequiredForVisit() ? + targetIsland.getVisitorsLocation(null /* unused */) : + targetIsland.getIslandHome(plugin.getSettings().getWorlds().getDefaultWorld()); if (visitLocation == null) { Message.INVALID_VISIT_LOCATION.send(sender); @@ -87,8 +89,9 @@ public List tabComplete(SuperiorSkyblockPlugin plugin, CommandSender sen SuperiorPlayer superiorPlayer = plugin.getPlayers().getSuperiorPlayer(sender); return args.length == 2 ? CommandTabCompletes.getOnlinePlayersWithIslands(plugin, args[1], plugin.getSettings().isTabCompleteHideVanished(), - (onlinePlayer, onlineIsland) -> onlineIsland != null && (onlineIsland.getVisitorsLocation(null /* unused */) != null || - superiorPlayer.hasBypassModeEnabled()) && (!onlineIsland.isLocked() || + (onlinePlayer, onlineIsland) -> onlineIsland != null && ( + (!plugin.getSettings().getVisitorsSign().isRequiredForVisit() || onlineIsland.getVisitorsLocation(null /* unused */) != null) || + superiorPlayer.hasBypassModeEnabled()) && (!onlineIsland.isLocked() || onlineIsland.hasPermission(superiorPlayer, IslandPrivileges.CLOSE_BYPASS))) : Collections.emptyList(); } diff --git a/src/main/java/com/bgsoftware/superiorskyblock/config/SettingsContainer.java b/src/main/java/com/bgsoftware/superiorskyblock/config/SettingsContainer.java index da15011a5..d1f1480ef 100644 --- a/src/main/java/com/bgsoftware/superiorskyblock/config/SettingsContainer.java +++ b/src/main/java/com/bgsoftware/superiorskyblock/config/SettingsContainer.java @@ -89,6 +89,7 @@ public class SettingsContainer { public final long calcInterval; public final String signWarpLine; public final List signWarp; + public final boolean visitorsSignRequiredForVisit; public final String visitorsSignLine; public final String visitorsSignActive; public final String visitorsSignInactive; @@ -300,6 +301,7 @@ else if (sections.length == 3) signWarp = Formatters.formatList(config.getStringList("sign-warp"), Formatters.COLOR_FORMATTER); while (signWarp.size() < 4) signWarp.add(""); + visitorsSignRequiredForVisit = config.getBoolean("visitors-sign.required-for-visit", true); visitorsSignLine = config.getString("visitors-sign.line", "[Welcome]"); visitorsSignActive = Formatters.COLOR_FORMATTER.format(config.getString("visitors-sign.active", "&a[Welcome]")); visitorsSignInactive = Formatters.COLOR_FORMATTER.format(config.getString("visitors-sign.inactive", "&c[Welcome]")); diff --git a/src/main/java/com/bgsoftware/superiorskyblock/config/section/VisitorsSignSection.java b/src/main/java/com/bgsoftware/superiorskyblock/config/section/VisitorsSignSection.java index ccbdd5287..56c04fb30 100644 --- a/src/main/java/com/bgsoftware/superiorskyblock/config/section/VisitorsSignSection.java +++ b/src/main/java/com/bgsoftware/superiorskyblock/config/section/VisitorsSignSection.java @@ -11,6 +11,11 @@ public VisitorsSignSection(SettingsContainer container) { this.container = container; } + @Override + public boolean isRequiredForVisit() { + return this.container.visitorsSignRequiredForVisit; + } + @Override public String getLine() { return this.container.visitorsSignLine; diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 5fbb1db83..6b6d6d609 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -270,6 +270,9 @@ sign-warp: # All settings related to the visitors sign. visitors-sign: + # Whether a visitors sign is required for others to visit islands. + # If set to false, visitors will be teleported to the regular island home when using `/is visit` + required-for-visit: true # Set the line to create the visitors sign. line: '[Welcome]' # The line that will be displayed when the sign is active.