Probably fixes #1953

This commit is contained in:
Jesse Boyd 2018-05-18 14:48:17 +10:00
parent 550df7f232
commit 40635255e3
No known key found for this signature in database
GPG key ID: 59F1DE6293AF6E1F
2 changed files with 22 additions and 9 deletions

View file

@ -15,6 +15,7 @@ import org.bukkit.event.EventException;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import java.util.Set;
import java.util.UUID;
import org.bukkit.permissions.PermissionAttachmentInfo;
@ -122,14 +123,23 @@ public class BukkitPlayer extends PlotPlayer {
}
int max = 0;
String stubPlus = stub + ".";
for (PermissionAttachmentInfo attach : player.getEffectivePermissions()) {
String perm = attach.getPermission();
if (perm.startsWith(stubPlus)) {
String end = perm.substring(stubPlus.length());
if (MathMan.isInteger(end)) {
int val = Integer.parseInt(end);
if (val > range) return val;
if (val > max) max = val;
Set<PermissionAttachmentInfo> effective = player.getEffectivePermissions();
if (!effective.isEmpty()) {
for (PermissionAttachmentInfo attach : effective) {
String perm = attach.getPermission();
if (perm.startsWith(stubPlus)) {
String end = perm.substring(stubPlus.length());
if (MathMan.isInteger(end)) {
int val = Integer.parseInt(end);
if (val > range) return val;
if (val > max) max = val;
}
}
}
} else {
for (int i = range; i > 0; i--) {
if (hasPermission(stub + "." + i)) {
return i;
}
}
}

View file

@ -1,7 +1,9 @@
package com.intellectualcrafters.plot.commands;
import com.google.common.base.Optional;
import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.config.Settings;
import com.intellectualcrafters.plot.database.DBFunc;
import com.intellectualcrafters.plot.flag.Flag;
import com.intellectualcrafters.plot.flag.FlagManager;
@ -37,7 +39,8 @@ public class FlagCmd extends SubCommand {
try {
int numeric = Integer.parseInt(value);
perm.substring(0, perm.length() - value.length() - 1);
return player.hasPermissionRange(perm, numeric) >= numeric;
int checkRange = PS.get().getPlatform().equalsIgnoreCase("bukkit") ? numeric : Settings.Limit.MAX_PLOTS;
return player.hasPermissionRange(perm, checkRange) >= numeric;
} catch (NumberFormatException ignore) {}
}