diff --git a/pom.xml b/pom.xml index d8bfade1a..05dddf1a9 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ world.bentobox bentobox - FC-0.92 + FC-0.95 BentoBox BentoBox is an expandable Minecraft Spigot plugin for island-type games like ASkyBlock or AcidIsland. diff --git a/src/main/java/world/bentobox/bentobox/api/commands/island/IslandBanCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/island/IslandBanCommand.java index 6637e3cdb..ba7d37937 100644 --- a/src/main/java/world/bentobox/bentobox/api/commands/island/IslandBanCommand.java +++ b/src/main/java/world/bentobox/bentobox/api/commands/island/IslandBanCommand.java @@ -38,8 +38,8 @@ public class IslandBanCommand extends CompositeCommand { return false; } UUID playerUUID = user.getUniqueId(); - // Player issuing the command must have an island - if (!getIslands().hasIsland(getWorld(), playerUUID)) { + // Player issuing the command must have an island or be in a team + if (!getIslands().inTeam(getWorld(), user.getUniqueId()) && !getIslands().hasIsland(getWorld(), user.getUniqueId())) { user.sendMessage("general.errors.no-island"); return false; } diff --git a/src/main/java/world/bentobox/bentobox/api/commands/island/IslandUnbanCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/island/IslandUnbanCommand.java index 92e004cdb..773a0722d 100644 --- a/src/main/java/world/bentobox/bentobox/api/commands/island/IslandUnbanCommand.java +++ b/src/main/java/world/bentobox/bentobox/api/commands/island/IslandUnbanCommand.java @@ -34,8 +34,8 @@ public class IslandUnbanCommand extends CompositeCommand { return false; } UUID playerUUID = user.getUniqueId(); - // Player issuing the command must have an island - if (!getIslands().hasIsland(getWorld(), playerUUID)) { + // Player issuing the command must have an island or be in a team + if (!getIslands().inTeam(getWorld(), user.getUniqueId()) && !getIslands().hasIsland(getWorld(), user.getUniqueId())) { user.sendMessage("general.errors.no-island"); return false; } diff --git a/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamCommand.java index b7ef12129..476692dfb 100644 --- a/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamCommand.java +++ b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamCommand.java @@ -30,6 +30,13 @@ public class IslandTeamCommand extends CompositeCommand { new IslandTeamKickCommand(this); new IslandTeamInviteAcceptCommand(this); new IslandTeamInviteRejectCommand(this); + new IslandTeamCoopCommand(this); + new IslandTeamUncoopCommand(this); + new IslandTeamTrustCommand(this); + new IslandTeamUntrustCommand(this); + new IslandTeamPromoteCommand(this, "promote"); + new IslandTeamPromoteCommand(this, "demote"); + } @Override diff --git a/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamCoopCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamCoopCommand.java new file mode 100644 index 000000000..bf359135f --- /dev/null +++ b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamCoopCommand.java @@ -0,0 +1,106 @@ +package world.bentobox.bentobox.api.commands.island.team; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; +import java.util.stream.Collectors; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +import world.bentobox.bentobox.api.commands.CompositeCommand; +import world.bentobox.bentobox.api.localization.TextVariables; +import world.bentobox.bentobox.api.user.User; +import world.bentobox.bentobox.database.objects.Island; +import world.bentobox.bentobox.managers.RanksManager; +import world.bentobox.bentobox.util.Util; + +/** + * Command to coop another player + * @author tastybento + * + */ +public class IslandTeamCoopCommand extends CompositeCommand { + + public IslandTeamCoopCommand(CompositeCommand parentCommand) { + super(parentCommand, "coop"); + } + + @Override + public void setup() { + setPermission("island.team.coop"); + setOnlyPlayer(true); + setParametersHelp("commands.island.team.coop.parameters"); + setDescription("commands.island.team.coop.description"); + setConfigurableRankCommand(); + } + + @Override + public boolean execute(User user, String label, List args) { + if (args.size() != 1) { + // Show help + showHelp(this, user); + return false; + } + // Player issuing the command must have an island or be in a team + if (!getIslands().inTeam(getWorld(), user.getUniqueId()) && !getIslands().hasIsland(getWorld(), user.getUniqueId())) { + user.sendMessage("general.errors.no-island"); + return false; + } + // Check rank to use command + if (getIslands().getIsland(getWorld(), user).getRank(user) < getPlugin().getSettings().getRankCommand(getUsage())) { + user.sendMessage("general.errors.no-permission"); + return false; + } + // Get target player + UUID targetUUID = getPlayers().getUUID(args.get(0)); + if (targetUUID == null) { + user.sendMessage("general.errors.unknown-player"); + return false; + } + if (getSettings().getInviteWait() > 0 && checkCooldown(user, targetUUID)) { + return false; + } + return coopCmd(user, targetUUID); + } + + private boolean coopCmd(User user, UUID targetUUID) { + // Player cannot coop themselves + if (user.getUniqueId().equals(targetUUID)) { + user.sendMessage("commands.island.team.coop.cannot-coop-yourself"); + return false; + } + if (getIslands().getMembers(getWorld(), user.getUniqueId()).contains(targetUUID)) { + user.sendMessage("commands.island.team.coop.already-has-rank"); + return false; + } + User target = User.getInstance(targetUUID); + Island island = getIslands().getIsland(getWorld(), user.getUniqueId()); + if (island != null) { + island.setRank(target, RanksManager.COOP_RANK); + user.sendMessage("general.success"); + target.sendMessage("commands.island.team.coop.you-are-a-coop-member", TextVariables.NAME, user.getName()); + return true; + } else { + // Should not happen + user.sendMessage("general.errors.general"); + return false; + } + } + + @Override + public Optional> tabComplete(User user, String alias, List args) { + if (args.isEmpty()) { + // Don't show every player on the server. Require at least the first letter + return Optional.empty(); + } + Island island = getIslands().getIsland(getWorld(), user.getUniqueId()); + List options = Bukkit.getOnlinePlayers().stream() + .filter(p -> !p.getUniqueId().equals(user.getUniqueId())) + .filter(p -> !island.getMemberSet().contains(p.getUniqueId())) + .filter(p -> user.getPlayer().canSee(p)) + .map(Player::getName).collect(Collectors.toList()); + String lastArg = !args.isEmpty() ? args.get(args.size()-1) : ""; + return Optional.of(Util.tabLimit(options, lastArg)); + } +} diff --git a/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamInviteCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamInviteCommand.java index 1658e6747..1ec8d379b 100644 --- a/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamInviteCommand.java +++ b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamInviteCommand.java @@ -38,7 +38,7 @@ public class IslandTeamInviteCommand extends CompositeCommand { @Override public boolean execute(User user, String label, List args) { UUID playerUUID = user.getUniqueId(); - // Player issuing the command must have an island + // Player issuing the command must have an island or be in a team if (!getIslands().inTeam(getWorld(), user.getUniqueId()) && !getIslands().hasIsland(getWorld(), user.getUniqueId())) { user.sendMessage("general.errors.no-island"); return false; diff --git a/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamTrustCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamTrustCommand.java new file mode 100644 index 000000000..a45429de4 --- /dev/null +++ b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamTrustCommand.java @@ -0,0 +1,111 @@ +package world.bentobox.bentobox.api.commands.island.team; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; +import java.util.stream.Collectors; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +import world.bentobox.bentobox.api.commands.CompositeCommand; +import world.bentobox.bentobox.api.localization.TextVariables; +import world.bentobox.bentobox.api.user.User; +import world.bentobox.bentobox.database.objects.Island; +import world.bentobox.bentobox.managers.RanksManager; +import world.bentobox.bentobox.util.Util; + +/** + * Command to trust another player + * @author tastybento + * + */ +public class IslandTeamTrustCommand extends CompositeCommand { + + public IslandTeamTrustCommand(CompositeCommand parentCommand) { + super(parentCommand, "trust"); + } + + @Override + public void setup() { + setPermission("island.team.trust"); + setOnlyPlayer(true); + setParametersHelp("commands.island.team.trust.parameters"); + setDescription("commands.island.team.trust.description"); + setConfigurableRankCommand(); + } + + @Override + public boolean execute(User user, String label, List args) { + if (args.size() != 1) { + // Show help + showHelp(this, user); + return false; + } + // Player issuing the command must have an island or be in a team + if (!getIslands().inTeam(getWorld(), user.getUniqueId()) && !getIslands().hasIsland(getWorld(), user.getUniqueId())) { + user.sendMessage("general.errors.no-island"); + return false; + } + // Check rank to use command + if (getIslands().getIsland(getWorld(), user).getRank(user) < getPlugin().getSettings().getRankCommand(getUsage())) { + user.sendMessage("general.errors.no-permission"); + return false; + } + // Get target player + UUID targetUUID = getPlayers().getUUID(args.get(0)); + if (targetUUID == null) { + user.sendMessage("general.errors.unknown-player"); + return false; + } + if (getSettings().getInviteWait() > 0 && checkCooldown(user, targetUUID)) { + return false; + } + return trustCmd(user, targetUUID); + } + + private boolean trustCmd(User user, UUID targetUUID) { + // Player cannot trust themselves + if (user.getUniqueId().equals(targetUUID)) { + user.sendMessage("commands.island.team.trust.trust-in-yourself"); + return false; + } + if (getIslands().getMembers(getWorld(), user.getUniqueId()).contains(targetUUID)) { + user.sendMessage("commands.island.team.trust.members-trusted"); + return false; + } + User target = User.getInstance(targetUUID); + int rank = getIslands().getIsland(getWorld(), user).getRank(target); + if (rank >= RanksManager.TRUSTED_RANK) { + user.sendMessage("commands.island.team.trust.player-already-trusted"); + return false; + } + Island island = getIslands().getIsland(getWorld(), user.getUniqueId()); + if (island != null) { + island.setRank(target, RanksManager.TRUSTED_RANK); + user.sendMessage("general.success"); + target.sendMessage("commands.island.team.trust.you-are-trusted", TextVariables.NAME, user.getName()); + return true; + } else { + // Should not happen + user.sendMessage("general.errors.general"); + return false; + } + } + + @Override + public Optional> tabComplete(User user, String alias, List args) { + if (args.isEmpty()) { + // Don't show every player on the server. Require at least the first letter + return Optional.empty(); + } + Island island = getIslands().getIsland(getWorld(), user.getUniqueId()); + List options = Bukkit.getOnlinePlayers().stream() + .filter(p -> !p.getUniqueId().equals(user.getUniqueId())) + .filter(p -> !island.getMemberSet().contains(p.getUniqueId())) + .filter(p -> user.getPlayer().canSee(p)) + .map(Player::getName).collect(Collectors.toList()); + String lastArg = !args.isEmpty() ? args.get(args.size()-1) : ""; + return Optional.of(Util.tabLimit(options, lastArg)); + } +} diff --git a/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamUncoopCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamUncoopCommand.java new file mode 100644 index 000000000..1da9a4c4c --- /dev/null +++ b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamUncoopCommand.java @@ -0,0 +1,114 @@ +package world.bentobox.bentobox.api.commands.island.team; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; +import java.util.stream.Collectors; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; + +import world.bentobox.bentobox.api.commands.CompositeCommand; +import world.bentobox.bentobox.api.localization.TextVariables; +import world.bentobox.bentobox.api.user.User; +import world.bentobox.bentobox.database.objects.Island; +import world.bentobox.bentobox.managers.RanksManager; +import world.bentobox.bentobox.util.Util; + +/** + * Command to uncoop a player + * @author tastybento + * + */ +public class IslandTeamUncoopCommand extends CompositeCommand { + + public IslandTeamUncoopCommand(CompositeCommand parentCommand) { + super(parentCommand, "uncoop"); + } + + @Override + public void setup() { + setPermission("island.team.coop"); + setOnlyPlayer(true); + setParametersHelp("commands.island.team.uncoop.parameters"); + setDescription("commands.island.team.uncoop.description"); + setConfigurableRankCommand(); + } + + @Override + public boolean execute(User user, String label, List args) { + if (args.size() != 1) { + // Show help + showHelp(this, user); + return false; + } + // Player issuing the command must have an island or be in a team + if (!getIslands().inTeam(getWorld(), user.getUniqueId()) && !getIslands().hasIsland(getWorld(), user.getUniqueId())) { + user.sendMessage("general.errors.no-island"); + return false; + } + // Check rank to use command + if (getIslands().getIsland(getWorld(), user).getRank(user) < getPlugin().getSettings().getRankCommand(getUsage())) { + user.sendMessage("general.errors.no-permission"); + return false; + } + // Get target player + UUID targetUUID = getPlayers().getUUID(args.get(0)); + if (targetUUID == null) { + user.sendMessage("general.errors.unknown-player"); + return false; + } + // Uncoop + return unCoopCmd(user, targetUUID); + } + + private boolean unCoopCmd(User user, UUID targetUUID) { + // Player cannot uncoop themselves + if (user.getUniqueId().equals(targetUUID)) { + user.sendMessage("commands.island.team.coop.cannot-uncoop-yourself"); + return false; + } + if (getIslands().getMembers(getWorld(), user.getUniqueId()).contains(targetUUID)) { + user.sendMessage("commands.island.team.coop.cannot-uncoop-member"); + return false; + } + User target = User.getInstance(targetUUID); + int rank = getIslands().getIsland(getWorld(), user).getRank(target); + if (rank != RanksManager.COOP_RANK) { + user.sendMessage("commands.island.team.uncoop.player-not-coop"); + return false; + } + Island island = getIslands().getIsland(getWorld(), user.getUniqueId()); + if (island != null) { + island.removeMember(targetUUID); + user.sendMessage("general.success"); + target.sendMessage("commands.island.team.coop.you-are-no-longer-a-coop-member", TextVariables.NAME, user.getName()); + // Set cooldown + if (getSettings().getInviteWait() > 0 && getParent() != null) { + getParent().getSubCommand("coop").ifPresent(subCommand -> + subCommand.setCooldown(user.getUniqueId(), targetUUID, getSettings().getInviteWait() * 60)); + } + return true; + } else { + // Should not happen + user.sendMessage("general.errors.general"); + return false; + } + } + + @Override + public Optional> tabComplete(User user, String alias, List args) { + if (args.isEmpty()) { + // Don't show every player on the server. Require at least the first letter + return Optional.empty(); + } + Island island = getIslands().getIsland(getWorld(), user.getUniqueId()); + List options = island.getMemberSet().stream() + .filter(uuid -> island.getRank(User.getInstance(uuid)) == RanksManager.COOP_RANK) + .map(Bukkit::getOfflinePlayer) + .map(OfflinePlayer::getName).collect(Collectors.toList()); + + String lastArg = !args.isEmpty() ? args.get(args.size()-1) : ""; + return Optional.of(Util.tabLimit(options, lastArg)); + } +} diff --git a/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamUntrustCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamUntrustCommand.java new file mode 100644 index 000000000..6d369b574 --- /dev/null +++ b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamUntrustCommand.java @@ -0,0 +1,114 @@ +package world.bentobox.bentobox.api.commands.island.team; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; +import java.util.stream.Collectors; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; + +import world.bentobox.bentobox.api.commands.CompositeCommand; +import world.bentobox.bentobox.api.localization.TextVariables; +import world.bentobox.bentobox.api.user.User; +import world.bentobox.bentobox.database.objects.Island; +import world.bentobox.bentobox.managers.RanksManager; +import world.bentobox.bentobox.util.Util; + +/** + * Command to untrust a player + * @author tastybento + * + */ +public class IslandTeamUntrustCommand extends CompositeCommand { + + public IslandTeamUntrustCommand(CompositeCommand parentCommand) { + super(parentCommand, "untrust"); + } + + @Override + public void setup() { + setPermission("island.team.coop"); + setOnlyPlayer(true); + setParametersHelp("commands.island.team.untrust.parameters"); + setDescription("commands.island.team.untrust.description"); + setConfigurableRankCommand(); + } + + @Override + public boolean execute(User user, String label, List args) { + if (args.size() != 1) { + // Show help + showHelp(this, user); + return false; + } + // Player issuing the command must have an island or be in a team + if (!getIslands().inTeam(getWorld(), user.getUniqueId()) && !getIslands().hasIsland(getWorld(), user.getUniqueId())) { + user.sendMessage("general.errors.no-island"); + return false; + } + // Check rank to use command + if (getIslands().getIsland(getWorld(), user).getRank(user) < getPlugin().getSettings().getRankCommand(getUsage())) { + user.sendMessage("general.errors.no-permission"); + return false; + } + // Get target player + UUID targetUUID = getPlayers().getUUID(args.get(0)); + if (targetUUID == null) { + user.sendMessage("general.errors.unknown-player"); + return false; + } + // untrust + return unTrustCmd(user, targetUUID); + } + + private boolean unTrustCmd(User user, UUID targetUUID) { + // Player cannot untrust themselves + if (user.getUniqueId().equals(targetUUID)) { + user.sendMessage("commands.island.team.untrust.cannot-untrust-yourself"); + return false; + } + if (getIslands().getMembers(getWorld(), user.getUniqueId()).contains(targetUUID)) { + user.sendMessage("commands.island.team.untrust.cannot-untrust-member"); + return false; + } + User target = User.getInstance(targetUUID); + int rank = getIslands().getIsland(getWorld(), user).getRank(target); + if (rank != RanksManager.TRUSTED_RANK) { + user.sendMessage("commands.island.team.untrust.player-not-trusted"); + return false; + } + Island island = getIslands().getIsland(getWorld(), user.getUniqueId()); + if (island != null) { + island.removeMember(targetUUID); + user.sendMessage("general.success"); + target.sendMessage("commands.island.team.untrust.you-are-no-longer-trusted", TextVariables.NAME, user.getName()); + // Set cooldown + if (getSettings().getInviteWait() > 0 && getParent() != null) { + getParent().getSubCommand("trust").ifPresent(subCommand -> + subCommand.setCooldown(user.getUniqueId(), targetUUID, getSettings().getInviteWait() * 60)); + } + return true; + } else { + // Should not happen + user.sendMessage("general.errors.general"); + return false; + } + } + + @Override + public Optional> tabComplete(User user, String alias, List args) { + if (args.isEmpty()) { + // Don't show every player on the server. Require at least the first letter + return Optional.empty(); + } + Island island = getIslands().getIsland(getWorld(), user.getUniqueId()); + List options = island.getMemberSet().stream() + .filter(uuid -> island.getRank(User.getInstance(uuid)) == RanksManager.TRUSTED_RANK) + .map(Bukkit::getOfflinePlayer) + .map(OfflinePlayer::getName).collect(Collectors.toList()); + + String lastArg = !args.isEmpty() ? args.get(args.size()-1) : ""; + return Optional.of(Util.tabLimit(options, lastArg)); + } +} diff --git a/src/main/java/world/bentobox/bentobox/database/objects/Island.java b/src/main/java/world/bentobox/bentobox/database/objects/Island.java index e6cea2d47..f459e2c1d 100644 --- a/src/main/java/world/bentobox/bentobox/database/objects/Island.java +++ b/src/main/java/world/bentobox/bentobox/database/objects/Island.java @@ -403,8 +403,8 @@ public class Island implements DataObject { } /** - * Removes a player from the team member map. Do not call this directly. - * Use {@link world.bentobox.bentobox.managers.IslandsManager#removePlayer(World, UUID)} + * Removes a player from the team member map. Generally, you should + * use {@link world.bentobox.bentobox.managers.IslandsManager#removePlayer(World, UUID)} * @param playerUUID - uuid of player */ public void removeMember(UUID playerUUID) { @@ -636,20 +636,16 @@ public class Island implements DataObject { * @param world - world to check */ public void showMembers(BentoBox plugin, User user, World world) { - if (plugin.getIslands().inTeam(world, user.getUniqueId())) { - user.sendMessage("commands.admin.info.team-members-title"); - members.forEach((u, i) -> { - if (owner.equals(u)) { - user.sendMessage("commands.admin.info.team-owner-format", TextVariables.NAME, plugin.getPlayers().getName(u) - , "[rank]", user.getTranslation(plugin.getRanksManager().getRank(i))); - } else if (i > RanksManager.VISITOR_RANK){ - user.sendMessage("commands.admin.info.team-member-format", TextVariables.NAME, plugin.getPlayers().getName(u) - , "[rank]", user.getTranslation(plugin.getRanksManager().getRank(i))); - } - }); - } - - + user.sendMessage("commands.admin.info.team-members-title"); + members.forEach((u, i) -> { + if (owner.equals(u)) { + user.sendMessage("commands.admin.info.team-owner-format", TextVariables.NAME, plugin.getPlayers().getName(u) + , "[rank]", user.getTranslation(plugin.getRanksManager().getRank(i))); + } else if (i > RanksManager.VISITOR_RANK){ + user.sendMessage("commands.admin.info.team-member-format", TextVariables.NAME, plugin.getPlayers().getName(u) + , "[rank]", user.getTranslation(plugin.getRanksManager().getRank(i))); + } + }); } /** diff --git a/src/main/java/world/bentobox/bentobox/listeners/flags/CommandCycleClick.java b/src/main/java/world/bentobox/bentobox/listeners/flags/clicklisteners/CommandCycleClick.java similarity index 97% rename from src/main/java/world/bentobox/bentobox/listeners/flags/CommandCycleClick.java rename to src/main/java/world/bentobox/bentobox/listeners/flags/clicklisteners/CommandCycleClick.java index 53ff47f37..b04b042ee 100644 --- a/src/main/java/world/bentobox/bentobox/listeners/flags/CommandCycleClick.java +++ b/src/main/java/world/bentobox/bentobox/listeners/flags/clicklisteners/CommandCycleClick.java @@ -1,7 +1,7 @@ /** * */ -package world.bentobox.bentobox.listeners.flags; +package world.bentobox.bentobox.listeners.flags.clicklisteners; import org.bukkit.Sound; import org.bukkit.event.inventory.ClickType; diff --git a/src/main/java/world/bentobox/bentobox/listeners/flags/CommandRankClickListener.java b/src/main/java/world/bentobox/bentobox/listeners/flags/clicklisteners/CommandRankClickListener.java similarity index 95% rename from src/main/java/world/bentobox/bentobox/listeners/flags/CommandRankClickListener.java rename to src/main/java/world/bentobox/bentobox/listeners/flags/clicklisteners/CommandRankClickListener.java index 8b6499b6a..a8b2d854f 100644 --- a/src/main/java/world/bentobox/bentobox/listeners/flags/CommandRankClickListener.java +++ b/src/main/java/world/bentobox/bentobox/listeners/flags/clicklisteners/CommandRankClickListener.java @@ -1,7 +1,7 @@ /** * */ -package world.bentobox.bentobox.listeners.flags; +package world.bentobox.bentobox.listeners.flags.clicklisteners; import java.util.ArrayList; import java.util.List; @@ -94,11 +94,11 @@ public class CommandRankClickListener implements ClickHandler { pib.description(d); plugin.getRanksManager().getRanks().forEach((reference, score) -> { if (score >= RanksManager.MEMBER_RANK && score < plugin.getSettings().getRankCommand(c)) { - pib.description(user.getTranslation("protection.panel.flag-item.blocked_rank") + user.getTranslation(reference)); + pib.description(user.getTranslation("protection.panel.flag-item.blocked-rank") + user.getTranslation(reference)); } else if (score <= RanksManager.OWNER_RANK && score > plugin.getSettings().getRankCommand(c)) { - pib.description(user.getTranslation("protection.panel.flag-item.allowed_rank") + user.getTranslation(reference)); + pib.description(user.getTranslation("protection.panel.flag-item.allowed-rank") + user.getTranslation(reference)); } else if (score == plugin.getSettings().getRankCommand(c)) { - pib.description(user.getTranslation("protection.panel.flag-item.minimal_rank") + user.getTranslation(reference)); + pib.description(user.getTranslation("protection.panel.flag-item.minimal-rank") + user.getTranslation(reference)); } }); return pib.build(); diff --git a/src/main/java/world/bentobox/bentobox/listeners/flags/GeoLimitClickListener.java b/src/main/java/world/bentobox/bentobox/listeners/flags/clicklisteners/GeoLimitClickListener.java similarity index 98% rename from src/main/java/world/bentobox/bentobox/listeners/flags/GeoLimitClickListener.java rename to src/main/java/world/bentobox/bentobox/listeners/flags/clicklisteners/GeoLimitClickListener.java index 6d766ab19..9d15cc68e 100644 --- a/src/main/java/world/bentobox/bentobox/listeners/flags/GeoLimitClickListener.java +++ b/src/main/java/world/bentobox/bentobox/listeners/flags/clicklisteners/GeoLimitClickListener.java @@ -1,7 +1,7 @@ /** * */ -package world.bentobox.bentobox.listeners.flags; +package world.bentobox.bentobox.listeners.flags.clicklisteners; import java.util.Arrays; import java.util.Comparator; diff --git a/src/main/java/world/bentobox/bentobox/lists/Flags.java b/src/main/java/world/bentobox/bentobox/lists/Flags.java index 7385c9101..97785b4bd 100644 --- a/src/main/java/world/bentobox/bentobox/lists/Flags.java +++ b/src/main/java/world/bentobox/bentobox/lists/Flags.java @@ -16,7 +16,6 @@ import world.bentobox.bentobox.listeners.flags.BreedingListener; import world.bentobox.bentobox.listeners.flags.BucketListener; import world.bentobox.bentobox.listeners.flags.ChestDamageListener; import world.bentobox.bentobox.listeners.flags.CleanSuperFlatListener; -import world.bentobox.bentobox.listeners.flags.CommandRankClickListener; import world.bentobox.bentobox.listeners.flags.CreeperListener; import world.bentobox.bentobox.listeners.flags.EggListener; import world.bentobox.bentobox.listeners.flags.EnderChestListener; @@ -24,7 +23,6 @@ import world.bentobox.bentobox.listeners.flags.EndermanListener; import world.bentobox.bentobox.listeners.flags.EnterExitListener; import world.bentobox.bentobox.listeners.flags.EntityInteractListener; import world.bentobox.bentobox.listeners.flags.FireListener; -import world.bentobox.bentobox.listeners.flags.GeoLimitClickListener; import world.bentobox.bentobox.listeners.flags.GeoLimitMobsListener; import world.bentobox.bentobox.listeners.flags.HurtingListener; import world.bentobox.bentobox.listeners.flags.InventoryListener; @@ -45,6 +43,8 @@ import world.bentobox.bentobox.listeners.flags.RemoveMobsListener; import world.bentobox.bentobox.listeners.flags.ShearingListener; import world.bentobox.bentobox.listeners.flags.TNTListener; import world.bentobox.bentobox.listeners.flags.TeleportationListener; +import world.bentobox.bentobox.listeners.flags.clicklisteners.CommandRankClickListener; +import world.bentobox.bentobox.listeners.flags.clicklisteners.GeoLimitClickListener; import world.bentobox.bentobox.managers.RanksManager; public class Flags { diff --git a/src/main/resources/locales/en-US.yml b/src/main/resources/locales/en-US.yml index 92d772ed3..92b055c59 100644 --- a/src/main/resources/locales/en-US.yml +++ b/src/main/resources/locales/en-US.yml @@ -226,12 +226,39 @@ commands: description: "manage your team" info: description: "display detailed info about your team" + coop: + description: "make a player coop rank on your island" + paramters: "" + cannot-coop-yourself: "&cYou cannot coop yourself!" + already-has-rank: "&cPlayer already has a rank!" + you-are-a-coop-member: "&2You were cooped by [name]" + uncoop: + description: "remove a coop rank from player" + paramters: "" + cannot-uncoop-yourself: "&cYou cannot uncoop yourself!" + cannot-uncoop-member: "&cYou cannot uncoop a team member!" + player-not-cooped: "&cPlayer is not cooped!" + you-are-no-longer-a-coop-member: "&cYou are no longer a coop member of [name]'s island" + trust: + description: "give a player trusted rank on your island" + paramters: "" + trust-in-yourself: "&cTrust in yourself!" + members-trusted: "&cMembers are already trusted" + player-already-trusted: "&cPlayer is already trusted!" + you-are-trusted: "&2You are trusted by [name]!" + untrust: + description: "remove trusted player rank from player" + paramters: "" + cannot-untrust-yourself: "&cYou cannot untrust yourself!" + cannot-untrust-member: "&cYou cannot untrust a team member!" + player-not-trusted: "&cPlayer is not trusted!" + you-are-no-longer-trusted: "&cYou are no longer trusted by [name]!" invite: description: "invite a player to join your island" invitation-sent: "Invitation sent to [name]" removing-invite: "Removing invite" name-has-invited-you: "[name] has invited you to join their island." - to-accept-or-reject: "Do /island team accept to accept, or /island team reject to reject" + to-accept-or-reject: "Do /[label] team accept to accept, or /[label] team reject to reject" you-will-lose-your-island: "&cWARNING! You will lose your island if you accept!" errors: cannot-invite-self: "&cYou cannot invite yourself!" diff --git a/src/test/java/world/bentobox/bentobox/api/commands/island/IslandBanCommandTest.java b/src/test/java/world/bentobox/bentobox/api/commands/island/IslandBanCommandTest.java index 12efdaecc..a14044f56 100644 --- a/src/test/java/world/bentobox/bentobox/api/commands/island/IslandBanCommandTest.java +++ b/src/test/java/world/bentobox/bentobox/api/commands/island/IslandBanCommandTest.java @@ -151,6 +151,7 @@ public class IslandBanCommandTest { @Test public void testNoIsland() { + when(im.inTeam(Mockito.any(), Mockito.eq(uuid))).thenReturn(false); IslandBanCommand ibc = new IslandBanCommand(ic); assertFalse(ibc.execute(user, ibc.getLabel(), Collections.singletonList("bill"))); Mockito.verify(user).sendMessage("general.errors.no-island"); diff --git a/src/test/java/world/bentobox/bentobox/api/commands/island/IslandUnbanCommandTest.java b/src/test/java/world/bentobox/bentobox/api/commands/island/IslandUnbanCommandTest.java index 121ad690d..23849c550 100644 --- a/src/test/java/world/bentobox/bentobox/api/commands/island/IslandUnbanCommandTest.java +++ b/src/test/java/world/bentobox/bentobox/api/commands/island/IslandUnbanCommandTest.java @@ -145,6 +145,7 @@ public class IslandUnbanCommandTest { @Test public void testNoIsland() { + when(im.inTeam(Mockito.any(), Mockito.eq(uuid))).thenReturn(false); IslandUnbanCommand iubc = new IslandUnbanCommand(ic); assertFalse(iubc.execute(user, iubc.getLabel(), Collections.singletonList("bill"))); Mockito.verify(user).sendMessage("general.errors.no-island");