Skip to content

Commit

Permalink
Added border-color argument to the /is border command (#1146)
Browse files Browse the repository at this point in the history
  • Loading branch information
OmerBenGera committed May 21, 2022
1 parent 7b31304 commit fa7b2df
Show file tree
Hide file tree
Showing 20 changed files with 106 additions and 26 deletions.
Expand Up @@ -86,6 +86,12 @@ public interface SettingsManager {
*/
String getIslandTopOrder();

/**
* Whether coop members are enabled.
* Config path: coop-members
*/
boolean isCoopMembers();

/**
* All settings related to the island-roles.
* Config path: island-roles
Expand Down
@@ -1,6 +1,7 @@
package com.bgsoftware.superiorskyblock.commands;

import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin;
import com.bgsoftware.superiorskyblock.api.enums.BorderColor;
import com.bgsoftware.superiorskyblock.api.island.Island;
import com.bgsoftware.superiorskyblock.api.island.IslandFlag;
import com.bgsoftware.superiorskyblock.api.island.IslandPrivilege;
Expand Down Expand Up @@ -289,6 +290,14 @@ public static List<String> getEnvironments(String argument) {
.collect(Collectors.toList());
}

public static List<String> getBorderColors(String argument) {
String lowerArgument = argument.toLowerCase(Locale.ENGLISH);
return Stream.of(BorderColor.values())
.map(borderColor -> borderColor.name().toLowerCase(Locale.ENGLISH))
.filter(borderColorName -> borderColorName.contains(lowerArgument))
.collect(Collectors.toList());
}

private static List<String> getPlayers(Collection<SuperiorPlayer> players, String argument) {
String lowerArgument = argument.toLowerCase(Locale.ENGLISH);
return players.stream()
Expand Down
@@ -1,6 +1,7 @@
package com.bgsoftware.superiorskyblock.commands.arguments;

import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin;
import com.bgsoftware.superiorskyblock.api.enums.BorderColor;
import com.bgsoftware.superiorskyblock.api.enums.Rating;
import com.bgsoftware.superiorskyblock.api.island.Island;
import com.bgsoftware.superiorskyblock.api.island.IslandFlag;
Expand Down Expand Up @@ -400,6 +401,20 @@ public static Map<String, String> parseArguments(String[] args) {
return parsedArgs;
}

public static BorderColor getBorderColor(CommandSender sender, String argument) {
BorderColor borderColor = null;

try {
borderColor = BorderColor.valueOf(argument.toUpperCase(Locale.ENGLISH));
} catch (Exception ignored) {
}

if (borderColor == null)
Message.INVALID_BORDER_COLOR.send(sender, argument);

return borderColor;
}

private static NumberArgument<Integer> getInt(CommandSender sender, String argument, Message locale) {
int i = 0;
boolean status = true;
Expand Down
@@ -1,9 +1,13 @@
package com.bgsoftware.superiorskyblock.commands.player;

import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin;
import com.bgsoftware.superiorskyblock.api.enums.BorderColor;
import com.bgsoftware.superiorskyblock.api.wrappers.SuperiorPlayer;
import com.bgsoftware.superiorskyblock.commands.CommandTabCompletes;
import com.bgsoftware.superiorskyblock.commands.ISuperiorCommand;
import com.bgsoftware.superiorskyblock.commands.arguments.CommandArguments;
import com.bgsoftware.superiorskyblock.lang.Message;
import com.bgsoftware.superiorskyblock.utils.islands.IslandUtils;
import org.bukkit.command.CommandSender;

import java.util.Collections;
Expand All @@ -23,7 +27,7 @@ public String getPermission() {

@Override
public String getUsage(java.util.Locale locale) {
return "border";
return "border [" + Message.COMMAND_ARGUMENT_BORDER_COLOR.getMessage(locale) + "]";
}

@Override
Expand All @@ -38,7 +42,7 @@ public int getMinArgs() {

@Override
public int getMaxArgs() {
return 1;
return 2;
}

@Override
Expand All @@ -49,12 +53,23 @@ public boolean canBeExecutedByConsole() {
@Override
public void execute(SuperiorSkyblockPlugin plugin, CommandSender sender, String[] args) {
SuperiorPlayer superiorPlayer = plugin.getPlayers().getSuperiorPlayer(sender);
plugin.getMenus().openBorderColor(superiorPlayer, null);

if (args.length != 2) {
plugin.getMenus().openBorderColor(superiorPlayer, null);
return;
}

BorderColor borderColor = CommandArguments.getBorderColor(sender, args[1]);

if (borderColor == null)
return;

IslandUtils.handleBorderColorUpdate(superiorPlayer, borderColor);
}

@Override
public List<String> tabComplete(SuperiorSkyblockPlugin plugin, CommandSender sender, String[] args) {
return Collections.emptyList();
return args.length != 2 ? Collections.emptyList() : CommandTabCompletes.getBorderColors(args[1]);
}

}
Expand Up @@ -84,6 +84,7 @@ public final class SettingsContainer {
public final String islandLevelFormula;
public final boolean roundedIslandLevel;
public final String islandTopOrder;
public boolean coopMembers;
public final ConfigurationSection islandRolesSection;
public final long calcInterval;
public final String signWarpLine;
Expand Down Expand Up @@ -292,6 +293,7 @@ else if (sections.length == 3)
islandLevelFormula = config.getString("island-level-formula", "{} / 2");
roundedIslandLevel = config.getBoolean("rounded-island-level", false);
islandTopOrder = config.getString("island-top-order", "WORTH");
coopMembers = config.getBoolean("coop-members", true);
islandRolesSection = config.getConfigurationSection("island-roles");
signWarpLine = config.getString("sign-warp-line", "[IslandWarp]");
signWarp = Formatters.formatList(config.getStringList("sign-warp"), Formatters.COLOR_FORMATTER);
Expand Down
Expand Up @@ -145,6 +145,11 @@ public String getIslandTopOrder() {
return this.container.islandTopOrder;
}

@Override
public boolean isCoopMembers() {
return this.container.coopMembers;
}

@Override
public IslandRoles getIslandRoles() {
return this.islandRoles;
Expand Down
Expand Up @@ -618,7 +618,7 @@ public void removeCoop(SuperiorPlayer superiorPlayer) {
@Override
public boolean isCoop(SuperiorPlayer superiorPlayer) {
Preconditions.checkNotNull(superiorPlayer, "superiorPlayer parameter cannot be null.");
return coopPlayers.contains(superiorPlayer);
return plugin.getSettings().isCoopMembers() && coopPlayers.contains(superiorPlayer);
}

@Override
Expand Down
Expand Up @@ -118,6 +118,7 @@ public enum Message {
COMMAND_ARGUMENT_ALL_PLAYERS("*"),
COMMAND_ARGUMENT_AMOUNT("amount"),
COMMAND_ARGUMENT_BIOME("biome"),
COMMAND_ARGUMENT_BORDER_COLOR("border-color"),
COMMAND_ARGUMENT_COMMAND("command..."),
COMMAND_ARGUMENT_DISCORD("discord..."),
COMMAND_ARGUMENT_EFFECT("effect"),
Expand Down Expand Up @@ -365,6 +366,7 @@ public enum Message {
INVALID_AMOUNT,
INVALID_BIOME,
INVALID_BLOCK,
INVALID_BORDER_COLOR,
INVALID_EFFECT,
INVALID_ENTITY,
INVALID_ENVIRONMENT,
Expand Down
Expand Up @@ -3,11 +3,10 @@
import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin;
import com.bgsoftware.superiorskyblock.api.enums.BorderColor;
import com.bgsoftware.superiorskyblock.api.wrappers.SuperiorPlayer;
import com.bgsoftware.superiorskyblock.formatting.Formatters;
import com.bgsoftware.superiorskyblock.lang.Message;
import com.bgsoftware.superiorskyblock.menu.button.SuperiorMenuButton;
import com.bgsoftware.superiorskyblock.menu.impl.MenuBorderColor;
import com.bgsoftware.superiorskyblock.threads.Executor;
import com.bgsoftware.superiorskyblock.utils.islands.IslandUtils;
import com.bgsoftware.superiorskyblock.utils.items.TemplateItem;
import com.bgsoftware.superiorskyblock.wrappers.SoundWrapper;
import org.bukkit.event.inventory.InventoryClickEvent;
Expand All @@ -27,25 +26,8 @@ private BorderColorButton(TemplateItem buttonItem, SoundWrapper clickSound, List
@Override
public void onButtonClick(SuperiorSkyblockPlugin plugin, MenuBorderColor superiorMenu, InventoryClickEvent clickEvent) {
SuperiorPlayer clickedPlayer = plugin.getPlayers().getSuperiorPlayer(clickEvent.getWhoClicked());

if (!clickedPlayer.hasWorldBorderEnabled()) {
if (!plugin.getEventsBus().callPlayerToggleBorderEvent(clickedPlayer))
return;

clickedPlayer.toggleWorldBorder();
}

if (!plugin.getEventsBus().callPlayerChangeBorderColorEvent(clickedPlayer, borderColor))
return;

clickedPlayer.setBorderColor(borderColor);
plugin.getNMSWorld().setWorldBorder(clickedPlayer,
plugin.getGrid().getIslandAt(clickedPlayer.getLocation()));

Message.BORDER_PLAYER_COLOR_UPDATED.send(clickedPlayer,
Formatters.BORDER_COLOR_FORMATTER.format(borderColor, clickedPlayer.getUserLocale()));

Executor.sync(superiorMenu::closePage, 1L);
if (IslandUtils.handleBorderColorUpdate(clickedPlayer, borderColor))
Executor.sync(superiorMenu::closePage, 1L);
}

public static class Builder extends AbstractBuilder<Builder, BorderColorButton, MenuBorderColor> {
Expand Down
@@ -1,10 +1,12 @@
package com.bgsoftware.superiorskyblock.utils.islands;

import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin;
import com.bgsoftware.superiorskyblock.api.enums.BorderColor;
import com.bgsoftware.superiorskyblock.api.island.Island;
import com.bgsoftware.superiorskyblock.api.island.PlayerRole;
import com.bgsoftware.superiorskyblock.api.key.Key;
import com.bgsoftware.superiorskyblock.api.wrappers.SuperiorPlayer;
import com.bgsoftware.superiorskyblock.formatting.Formatters;
import com.bgsoftware.superiorskyblock.island.permissions.IslandPrivileges;
import com.bgsoftware.superiorskyblock.lang.Message;
import com.bgsoftware.superiorskyblock.upgrade.UpgradeValue;
Expand Down Expand Up @@ -260,4 +262,25 @@ public static int getMaxWarpNameLength() {
return 255;
}

public static boolean handleBorderColorUpdate(SuperiorPlayer superiorPlayer, BorderColor borderColor) {
if (!superiorPlayer.hasWorldBorderEnabled()) {
if (!plugin.getEventsBus().callPlayerToggleBorderEvent(superiorPlayer))
return false;

superiorPlayer.toggleWorldBorder();
}

if (!plugin.getEventsBus().callPlayerChangeBorderColorEvent(superiorPlayer, borderColor))
return false;

superiorPlayer.setBorderColor(borderColor);
plugin.getNMSWorld().setWorldBorder(superiorPlayer,
plugin.getGrid().getIslandAt(superiorPlayer.getLocation()));

Message.BORDER_PLAYER_COLOR_UPDATED.send(superiorPlayer,
Formatters.BORDER_COLOR_FORMATTER.format(borderColor, superiorPlayer.getUserLocale()));

return true;
}

}
3 changes: 3 additions & 0 deletions src/main/resources/config.yml
Expand Up @@ -149,6 +149,9 @@ rounded-island-level: false
# Use WORTH, LEVEL, RATING or PLAYERS.
island-top-order: 'WORTH'

# Whether coop members should be enabled or not.
coop-members: true

# All settings related to island roles.
# You can find a list of permissions here: https://wiki.bg-software.com/superiorskyblock/island-permissions
island-roles:
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/lang/de-DE.yml
Expand Up @@ -155,6 +155,7 @@ COMMAND_ARGUMENT_ALL_ISLANDS: '*'
COMMAND_ARGUMENT_ALL_PLAYERS: '*'
COMMAND_ARGUMENT_AMOUNT: Betrag
COMMAND_ARGUMENT_BIOME: biom
COMMAND_ARGUMENT_BORDER_COLOR: 'border-color'
COMMAND_ARGUMENT_COMMAND: Befehl...
COMMAND_ARGUMENT_DISCORD: Discord...
COMMAND_ARGUMENT_EFFECT: Trank-Effekt
Expand Down Expand Up @@ -461,6 +462,7 @@ INTERACT_OUTSIDE_ISLAND: '&c&lError | &7Du kannst außerhalb der Border nicht in
INVALID_AMOUNT: '&c&lError | &7Ungültiger Betrag {0}.'
INVALID_BIOME: '&c&lError | &7Ungültiges Biom {0}.'
INVALID_BLOCK: '&c&lError | &7Ungültige Blockposition {0}.'
INVALID_BORDER_COLOR: '&c&lError | &7Invalid border color {0}.'
INVALID_EFFECT: '&c&lError | &7Ungültige Wirkung {0}.'
INVALID_ENTITY: '&c&lError | &7Ungültige Entität {0}.'
INVALID_ENVIRONMENT: '&c&lError | &7Ungültige Welt {0}.'
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/lang/en-US.yml
Expand Up @@ -103,6 +103,7 @@ COMMAND_ARGUMENT_ALL_ISLANDS: '*'
COMMAND_ARGUMENT_ALL_PLAYERS: '*'
COMMAND_ARGUMENT_AMOUNT: 'amount'
COMMAND_ARGUMENT_BIOME: 'biome'
COMMAND_ARGUMENT_BORDER_COLOR: 'border-color'
COMMAND_ARGUMENT_COMMAND: 'command...'
COMMAND_ARGUMENT_DISCORD: 'discord...'
COMMAND_ARGUMENT_EFFECT: 'potion-effect'
Expand Down Expand Up @@ -351,6 +352,7 @@ INTERACT_OUTSIDE_ISLAND: '&c&lError | &7You cannot interact outside of your prot
INVALID_AMOUNT: '&c&lError | &7Invalid amount {0}.'
INVALID_BIOME: '&c&lError | &7Invalid biome {0}.'
INVALID_BLOCK: '&c&lError | &7Invalid block location {0}.'
INVALID_BORDER_COLOR: '&c&lError | &7Invalid border color {0}.'
INVALID_EFFECT: '&c&lError | &7Invalid effect {0}.'
INVALID_ENTITY: '&c&lError | &7Invalid entity {0}.'
INVALID_ENVIRONMENT: '&c&lError | &7Invalid world {0}.'
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/lang/es-ES.yml
Expand Up @@ -103,6 +103,7 @@ COMMAND_ARGUMENT_ALL_ISLANDS: '*'
COMMAND_ARGUMENT_ALL_PLAYERS: '*'
COMMAND_ARGUMENT_AMOUNT: 'cantidad'
COMMAND_ARGUMENT_BIOME: 'bioma'
COMMAND_ARGUMENT_BORDER_COLOR: 'border-color'
COMMAND_ARGUMENT_COMMAND: 'command...'
COMMAND_ARGUMENT_DISCORD: 'discord...'
COMMAND_ARGUMENT_EFFECT: 'pefecto-de-poción'
Expand Down Expand Up @@ -351,6 +352,7 @@ INTERACT_OUTSIDE_ISLAND: '&c&lError | &7No puede interactuar fuera de su rango d
INVALID_AMOUNT: '&c&lError | &7Cantidad no válida {0}.'
INVALID_BIOME: '&c&lError | &7Bioma no válido {0}.'
INVALID_BLOCK: '&c&lError | &7Ubicación de bloque no válida {0}.'
INVALID_BORDER_COLOR: '&c&lError | &7Invalid border color {0}.'
INVALID_EFFECT: '&c&lError | &7Efecto no válido {0}.'
INVALID_ENTITY: '&c&lError | &7Entidad no válida {0}.'
INVALID_ENVIRONMENT: '&c&lError | &7Mundo no válido {0}.'
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/lang/fr-FR.yml
Expand Up @@ -103,6 +103,7 @@ COMMAND_ARGUMENT_ALL_ISLANDS: '*'
COMMAND_ARGUMENT_ALL_PLAYERS: '*'
COMMAND_ARGUMENT_AMOUNT: quantité
COMMAND_ARGUMENT_BIOME: biome
COMMAND_ARGUMENT_BORDER_COLOR: 'border-color'
COMMAND_ARGUMENT_COMMAND: 'commande...'
COMMAND_ARGUMENT_DISCORD: discord
COMMAND_ARGUMENT_EFFECT: effet-de-potion
Expand Down Expand Up @@ -351,6 +352,7 @@ INTERACT_OUTSIDE_ISLAND: '&c&lErreur | &7Vous ne pouvez pas interagir en dehors
INVALID_AMOUNT: '&c&lErreur | &7Nombre invalide {0}.'
INVALID_BIOME: '&c&lErreur | &7Biome invalide {0}.'
INVALID_BLOCK: '&c&lErreur | &7Emplacement {0} du bloc invalide.'
INVALID_BORDER_COLOR: '&c&lError | &7Invalid border color {0}.'
INVALID_EFFECT: '&c&lErreur | &7Effet invalide {0}.'
INVALID_ENTITY: '&c&lErreur | &7Entité invalide {0}.'
INVALID_SCHEMATIC: '&c&lErreur | &7Il n''existe aucun schematic portant le nom {0}.'
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/lang/it-IT.yml
Expand Up @@ -106,6 +106,7 @@ COMMAND_ARGUMENT_ALL_ISLANDS: '*'
COMMAND_ARGUMENT_ALL_PLAYERS: '*'
COMMAND_ARGUMENT_AMOUNT: quantità
COMMAND_ARGUMENT_BIOME: bioma
COMMAND_ARGUMENT_BORDER_COLOR: 'border-color'
COMMAND_ARGUMENT_COMMAND: 'command...'
COMMAND_ARGUMENT_DISCORD: discord...
COMMAND_ARGUMENT_EFFECT: effetto-pozione
Expand Down Expand Up @@ -354,6 +355,7 @@ INTERACT_OUTSIDE_ISLAND: '&c&lErrore | &7Non puoi interagire al di fuori del tuo
INVALID_AMOUNT: '&c&lErrore | &7Importo invalido {0}.'
INVALID_BIOME: '&c&lErrore | &7Bioma invalido {0}.'
INVALID_BLOCK: '&c&lErrore| &7Posizione del blocco invalida {0}.'
INVALID_BORDER_COLOR: '&c&lError | &7Invalid border color {0}.'
INVALID_EFFECT: '&c&lErrore| &7Effetto invalido {0}.'
INVALID_ENTITY: '&c&lErrore | &7Entità invalida {0}.'
INVALID_ENVIRONMENT: '&c&lErrore | &7Mondo invalido {0}.'
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/lang/iw-IL.yml
Expand Up @@ -111,6 +111,7 @@ COMMAND_ARGUMENT_ALL_ISLANDS: '*'
COMMAND_ARGUMENT_ALL_PLAYERS: '*'
COMMAND_ARGUMENT_AMOUNT: תומכ
COMMAND_ARGUMENT_BIOME: 'biome'
COMMAND_ARGUMENT_BORDER_COLOR: 'border-color'
COMMAND_ARGUMENT_COMMAND: 'command...'
COMMAND_ARGUMENT_DISCORD: '...דרוקסיד'
COMMAND_ARGUMENT_EFFECT: 'potion-effect'
Expand Down Expand Up @@ -367,6 +368,7 @@ INTERACT_OUTSIDE_ISLAND: '&c&lהאיגש | &7ךלש יאל ץוחמ םירבד
INVALID_AMOUNT: '&c&lהאיגש | &7{0} תיקוח אל תומכ.'
INVALID_BIOME: '&c&lError | &7Invalid biome {0}.'
INVALID_BLOCK: '&c&lError | &7Invalid block location {0}.'
INVALID_BORDER_COLOR: '&c&lError | &7Invalid border color {0}.'
INVALID_EFFECT: '&c&lError | &7Invalid effect {0}.'
INVALID_ENTITY: '&c&lError | &7Invalid entity {0}.'
INVALID_ENVIRONMENT: '&c&lהאיגש | &7םייק אל {0} םלועה.'
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/lang/pl-PL.yml
Expand Up @@ -103,6 +103,7 @@ COMMAND_ARGUMENT_ALL_ISLANDS: '*'
COMMAND_ARGUMENT_ALL_PLAYERS: '*'
COMMAND_ARGUMENT_AMOUNT: 'kwota'
COMMAND_ARGUMENT_BIOME: 'biom'
COMMAND_ARGUMENT_BORDER_COLOR: 'border-color'
COMMAND_ARGUMENT_COMMAND: 'polecenie...'
COMMAND_ARGUMENT_DISCORD: 'niezgoda...'
COMMAND_ARGUMENT_EFFECT: 'efekt mikstury'
Expand Down Expand Up @@ -353,6 +354,7 @@ INTERACT_OUTSIDE_ISLAND: '&c&lBlad | &7Nie mozesz wchodzic w interakcje poza zas
INVALID_AMOUNT: '&c&lBlad | &7Nieprawidlowa kwota {0}.'
INVALID_BIOME: '&c&lBlad | &7Nieprawidlowy biom {0}.'
INVALID_BLOCK: '&c&lBlad | &7Nieprawidlowa lokalizacja bloku {0}.'
INVALID_BORDER_COLOR: '&c&lError | &7Invalid border color {0}.'
INVALID_EFFECT: '&c&lBlad | &7Nieprawidlowy efekt {0}.'
INVALID_ENTITY: '&c&lBlad | &7Nieprawidlowa jednostka {0}.'
INVALID_ENVIRONMENT: '&c&lBlad | &7Nieprawidlowy swiat {0}.'
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/lang/vi-VN.yml
Expand Up @@ -128,6 +128,7 @@ COMMAND_ARGUMENT_ALL_ISLANDS: '*'
COMMAND_ARGUMENT_ALL_PLAYERS: '*'
COMMAND_ARGUMENT_AMOUNT: so-luong
COMMAND_ARGUMENT_BIOME: quan-xa
COMMAND_ARGUMENT_BORDER_COLOR: 'border-color'
COMMAND_ARGUMENT_COMMAND: lenh...
COMMAND_ARGUMENT_DISCORD: discord...
COMMAND_ARGUMENT_EFFECT: hieu-ung-thuoc
Expand Down Expand Up @@ -403,6 +404,7 @@ INTERACT_OUTSIDE_ISLAND: '&c&lLỗi | &7Bạn không thể tương tác ngoài p
INVALID_AMOUNT: '&c&lLỗi | &7Số lượng không hợp lệ {0}.'
INVALID_BIOME: '&c&lLỗi | &7Quần xã không chính xác {0}.'
INVALID_BLOCK: '&c&lLỗi | &7Vị trí khối không hợp lệ {0}.'
INVALID_BORDER_COLOR: '&c&lError | &7Invalid border color {0}.'
INVALID_EFFECT: '&c&lLỗi | &7Hiệu ứng không hợp lệ {0}.'
INVALID_ENTITY: '&c&lLỗi | &7Vật thể không chính xác {0}.'
INVALID_ENVIRONMENT: '&c&lLỗi | &7Thế giới {0} không hợp lệ.'
Expand Down

0 comments on commit fa7b2df

Please sign in to comment.