Merge pull request #2542 from mindw0rm/UntrustedVisit

New plot flag untrusted-visit
This commit is contained in:
Matt 2019-10-31 17:02:48 -04:00 committed by GitHub
commit 627ecd2b71
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 15 additions and 2 deletions

View File

@ -695,7 +695,11 @@ import java.util.regex.Pattern;
Plot plot = area.getPlot(location);
if (plot != null) {
final boolean result = Flags.DENY_TELEPORT.allowsTeleport(plotPlayer, plot);
if (!result) {
// there is one possibility to still allow teleportation:
// to is identical to the plot's home location, and untrusted-visit is true
// i.e. untrusted-visit can override deny-teleport
// this is acceptable, because otherwise it wouldn't make sense to have both flags set
if (!result && !(Flags.UNTRUSTED_VISIT.isTrue(plot) && plot.getHome().equals(BukkitUtil.getLocationFull(to)))) {
MainUtil.sendMessage(plotPlayer, Captions.NO_PERMISSION_EVENT,
Captions.PERMISSION_ADMIN_ENTRY_DENIED);
event.setCancelled(true);

View File

@ -215,6 +215,12 @@ import java.util.Set;
MathMan.roundInt(location.getY()), MathMan.roundInt(location.getZ()));
}
public static Location getLocationFull(@NonNull final org.bukkit.Location location) {
return new Location(location.getWorld().getName(), MathMan.roundInt(location.getX()),
MathMan.roundInt(location.getY()), MathMan.roundInt(location.getZ()),
location.getYaw(), location.getPitch());
}
public static org.bukkit.Location getLocation(@NonNull final Location location) {
return new org.bukkit.Location(getWorld(location.getWorld()), location.getX(),
location.getY(), location.getZ());

View File

@ -5,6 +5,7 @@ import com.github.intellectualsites.plotsquared.commands.CommandDeclaration;
import com.github.intellectualsites.plotsquared.plot.PlotSquared;
import com.github.intellectualsites.plotsquared.plot.config.Captions;
import com.github.intellectualsites.plotsquared.plot.config.Settings;
import com.github.intellectualsites.plotsquared.plot.flag.Flags;
import com.github.intellectualsites.plotsquared.plot.object.*;
import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
import com.github.intellectualsites.plotsquared.plot.util.MathMan;
@ -129,7 +130,8 @@ import java.util.concurrent.CompletableFuture;
return CompletableFuture.completedFuture(false);
}
} else {
if (!Permissions.hasPermission(player, Captions.PERMISSION_VISIT_OTHER)) {
if (!Permissions.hasPermission(player, Captions.PERMISSION_VISIT_OTHER) &&
!Flags.UNTRUSTED_VISIT.isTrue(plot)) {
Captions.NO_PERMISSION.send(player, Captions.PERMISSION_VISIT_OTHER);
return CompletableFuture.completedFuture(false);
}

View File

@ -119,6 +119,7 @@ public final class Flags {
};
public static final TeleportDenyFlag DENY_TELEPORT = new TeleportDenyFlag("deny-teleport");
public static final BooleanFlag DENY_EXIT = new BooleanFlag("deny-exit");
public static final BooleanFlag UNTRUSTED_VISIT = new BooleanFlag("untrusted-visit");
private static final HashMap<String, Flag<?>> flags;