Bugfixes for deny-teleport

This commit is contained in:
mindw0rm 2019-09-14 12:58:22 +02:00
parent 05ef076ef0
commit ae1273a7f3
2 changed files with 30 additions and 33 deletions

View file

@ -679,37 +679,34 @@ import java.util.regex.Pattern;
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onTeleport(PlayerTeleportEvent event) {
if (event.getTo() == null || event.getFrom() == null || !event.getFrom().getWorld()
.equals(event.getTo().getWorld())) {
final Object lastLoc =
BukkitUtil.getPlayer(event.getPlayer()).deleteMeta(PlotPlayer.META_LOCATION);
final Object lastPlot =
BukkitUtil.getPlayer(event.getPlayer()).deleteMeta(PlotPlayer.META_LAST_PLOT);
org.bukkit.Location to = event.getTo();
if (to != null) {
Player player = event.getPlayer();
PlotPlayer plotPlayer = PlotPlayer.wrap(player);
Location location = BukkitUtil.getLocation(to);
PlotArea area = location.getPlotArea();
if (area == null) {
return;
}
Plot plot = area.getPlot(location);
if (plot != null) {
final boolean result = Flags.DENY_TELEPORT.allowsTeleport(plotPlayer, plot);
if (!result) {
MainUtil.sendMessage(plotPlayer, Captions.NO_PERMISSION_EVENT,
Captions.PERMISSION_ADMIN_ENTRY_DENIED);
event.setCancelled(true);
if (lastLoc != null) {
plotPlayer.setMeta(PlotPlayer.META_LOCATION, lastLoc);
}
if (lastPlot != null) {
plotPlayer.setMeta(PlotPlayer.META_LAST_PLOT, lastPlot);
}
} else {
plotEntry(plotPlayer, plot);
final Object lastLoc =
BukkitUtil.getPlayer(event.getPlayer()).deleteMeta(PlotPlayer.META_LOCATION);
final Object lastPlot =
BukkitUtil.getPlayer(event.getPlayer()).deleteMeta(PlotPlayer.META_LAST_PLOT);
org.bukkit.Location to = event.getTo();
if (to != null) {
Player player = event.getPlayer();
PlotPlayer plotPlayer = PlotPlayer.wrap(player);
Location location = BukkitUtil.getLocation(to);
PlotArea area = location.getPlotArea();
if (area == null) {
return;
}
Plot plot = area.getPlot(location);
if (plot != null) {
final boolean result = Flags.DENY_TELEPORT.allowsTeleport(plotPlayer, plot);
if (!result) {
MainUtil.sendMessage(plotPlayer, Captions.NO_PERMISSION_EVENT,
Captions.PERMISSION_ADMIN_ENTRY_DENIED);
event.setCancelled(true);
if (lastLoc != null) {
plotPlayer.setMeta(PlotPlayer.META_LOCATION, lastLoc);
}
if (lastPlot != null) {
plotPlayer.setMeta(PlotPlayer.META_LAST_PLOT, lastPlot);
}
} else {
plotEntry(plotPlayer, plot);
}
}
}

View file

@ -22,14 +22,14 @@ public class TeleportDenyFlag extends EnumFlag {
result = !plot.getMembers().contains(player.getUUID());
break;
case "nonmembers":
result = !plot.isAdded(player.getUUID());
result = plot.isAdded(player.getUUID());
break;
case "nontrusted":
result = !plot.getTrusted().contains(player.getUUID()) && !plot
result = plot.getTrusted().contains(player.getUUID()) || plot
.isOwner(player.getUUID());
break;
case "nonowners":
result = !plot.isOwner(player.getUUID());
result = plot.isOwner(player.getUUID());
break;
default:
return true;