diff --git a/src/main/java/dev/espi/protectionstones/commands/ArgAddRemove.java b/src/main/java/dev/espi/protectionstones/commands/ArgAddRemove.java
index b6f167e..2311a4b 100644
--- a/src/main/java/dev/espi/protectionstones/commands/ArgAddRemove.java
+++ b/src/main/java/dev/espi/protectionstones/commands/ArgAddRemove.java
@@ -1,18 +1,3 @@
-/*
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
package dev.espi.protectionstones.commands;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
@@ -56,16 +41,14 @@ public HashMap getRegisteredFlags() {
@Override
public boolean executeArgument(CommandSender s, String[] args, HashMap flags) {
Player p = (Player) s;
- String operationType = args[0].toLowerCase(); // add, remove, addowner, removeowner
+ String operationType = args[0].toLowerCase();
- // check permission
if ((operationType.equals("add") || operationType.equals("remove")) && !p.hasPermission("protectionstones.members")) {
return PSL.msg(p, PSL.NO_PERMISSION_MEMBERS.msg());
} else if ((operationType.equals("addowner") || operationType.equals("removeowner")) && !p.hasPermission("protectionstones.owners")) {
return PSL.msg(p, PSL.NO_PERMISSION_OWNERS.msg());
}
- // determine player to be added or removed
if (args.length < 2) {
return PSL.msg(p, PSL.COMMAND_REQUIRES_PLAYER_NAME.msg());
}
@@ -73,27 +56,20 @@ public boolean executeArgument(CommandSender s, String[] args, HashMap {
List regions;
- // obtain region list that player is being added to or removed from
- if (flags.containsKey("-a")) { // add or remove to all regions a player owns
-
- // don't let players remove themself from all of their regions
+ if (flags.containsKey("-a")) {
if (operationType.equals("removeowner") && addPlayerUuid.equals(p.getUniqueId())) {
PSL.msg(p, PSL.CANNOT_REMOVE_YOURSELF_FROM_ALL_REGIONS.msg());
return;
}
-
regions = PSPlayer.fromPlayer(p).getPSRegions(p.getWorld(), false);
- } else { // add or remove to one region (the region currently in)
+ } else {
PSRegion r = PSRegion.fromLocationGroup(p.getLocation());
-
if (r == null) {
PSL.msg(p, PSL.NOT_IN_REGION.msg());
return;
@@ -101,24 +77,19 @@ public boolean executeArgument(CommandSender s, String[] args, HashMap UUIDCache.storeWGProfile(addPlayerUuid, addPlayerName));
-
} else if ((operationType.equals("remove") && r.isMember(addPlayerUuid))
|| (operationType.equals("removeowner") && r.isOwner(addPlayerUuid))) {
-
if (flags.containsKey("-a")) {
PSL.msg(p, PSL.REMOVED_FROM_REGION_SPECIFIC.msg()
.replace("%player%", addPlayerName)
@@ -167,13 +134,12 @@ public List tabComplete(CommandSender sender, String alias, String[] arg
try {
if (args.length == 2 || (args.length == 3 && args[1].equals("-a"))) {
-
switch (args[0].toLowerCase()) {
case "add":
case "addowner":
List names = new ArrayList<>();
for (Player pAdd : Bukkit.getOnlinePlayers()) {
- if (p.canSee(pAdd)) { // check if the player is not hidden
+ if (p.canSee(pAdd)) {
names.add(pAdd.getName());
}
}
@@ -205,29 +171,19 @@ public List tabComplete(CommandSender sender, String alias, String[] arg
}
public boolean determinePlayerSurpassedLimit(Player commandSender, List regionsToBeAddedTo, PSPlayer addedPlayer) {
-
- if (addedPlayer.getPlayer() == null && !ProtectionStones.getInstance().isLuckPermsSupportEnabled()) { // offline player
- if (ProtectionStones.getInstance().getConfigOptions().allowAddownerForOfflinePlayersWithoutLp) {
- // bypass config option
- return false;
- } else {
- // we need luckperms to determine region limits for offline players, so if luckperms isn't detected, prevent the action
- PSL.msg(commandSender, PSL.ADDREMOVE_PLAYER_NEEDS_TO_BE_ONLINE.msg());
- return true;
- }
- }
-
- // find total region amounts after player is added to the regions, and their existing total
- String err = LimitUtil.checkAddOwner(addedPlayer, regionsToBeAddedTo.stream()
- .flatMap(r -> {
- if (r instanceof PSGroupRegion) {
- return ((PSGroupRegion) r).getMergedRegions().stream();
- }
- return Stream.of(r);
- })
- .map(PSRegion::getTypeOptions)
- .filter(Objects::nonNull)
- .collect(Collectors.toList()));
+ String err = LimitUtil.checkAddOwner(
+ addedPlayer,
+ regionsToBeAddedTo.stream()
+ .flatMap(r -> {
+ if (r instanceof PSGroupRegion) {
+ return ((PSGroupRegion) r).getMergedRegions().stream();
+ }
+ return Stream.of(r);
+ })
+ .map(PSRegion::getTypeOptions)
+ .filter(Objects::nonNull)
+ .collect(Collectors.toList())
+ );
if (err.equals("")) {
return false;
} else {