Enderpearl & chorus-teleport flags should be checked before handlers

Before every handler would have been called, making them believe that the entry was successful
This commit is contained in:
isokissa3 2019-05-08 13:44:44 +03:00 committed by wizjany
parent d4c49a7539
commit 1ffa4b48b8

View File

@ -379,21 +379,12 @@ public void onPlayerTeleport(PlayerTeleportEvent event) {
ConfigurationManager cfg = WorldGuard.getInstance().getPlatform().getGlobalStateManager();
WorldConfiguration wcfg = cfg.get(localPlayer.getWorld());
if (wcfg.useRegions) {
if (wcfg.useRegions && cfg.usePlayerTeleports) {
ApplicableRegionSet set =
WorldGuard.getInstance().getPlatform().getRegionContainer().createQuery().getApplicableRegions(BukkitAdapter.adapt(event.getTo()));
ApplicableRegionSet setFrom =
WorldGuard.getInstance().getPlatform().getRegionContainer().createQuery().getApplicableRegions(BukkitAdapter.adapt(event.getFrom()));
if (cfg.usePlayerTeleports) {
if (null != WorldGuard.getInstance().getPlatform().getSessionManager().get(localPlayer).testMoveTo(localPlayer,
BukkitAdapter.adapt(event.getTo()),
MoveType.TELEPORT)) {
event.setCancelled(true);
return;
}
}
if (event.getCause() == TeleportCause.ENDER_PEARL) {
if (!WorldGuard.getInstance().getPlatform().getSessionManager().hasBypass(localPlayer, localPlayer.getWorld())) {
boolean cancel = false;
@ -430,6 +421,12 @@ public void onPlayerTeleport(PlayerTeleportEvent event) {
}
}
}
if (null != WorldGuard.getInstance().getPlatform().getSessionManager().get(localPlayer).testMoveTo(localPlayer,
BukkitAdapter.adapt(event.getTo()),
MoveType.TELEPORT)) {
event.setCancelled(true);
return;
}
}
}