Check fly on teleport. Fixes #1099

This commit is contained in:
Trent Hensler 2018-03-20 19:24:21 -07:00
parent 1567df7311
commit 382f4c4b0c

View File

@ -9,10 +9,10 @@ import com.massivecraft.factions.scoreboards.sidebar.FDefaultSidebar;
import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Relation;
import com.massivecraft.factions.struct.Role;
import com.massivecraft.factions.util.FactionGUI;
import com.massivecraft.factions.util.VisualizeUtil;
import com.massivecraft.factions.zcore.fperms.Access;
import com.massivecraft.factions.zcore.fperms.PermissableAction;
import com.massivecraft.factions.util.FactionGUI;
import com.massivecraft.factions.zcore.persist.MemoryFPlayer;
import com.massivecraft.factions.zcore.util.TL;
import com.massivecraft.factions.zcore.util.TextUtil;
@ -519,6 +519,18 @@ public class FactionsPlayerListener implements Listener {
}
}
@EventHandler
public void onTeleport(PlayerTeleportEvent event) {
FPlayer me = FPlayers.getInstance().getByPlayer(event.getPlayer());
FLocation to = new FLocation(event.getTo());
// Check the location they're teleporting to and check if they can fly there.
if (!me.isAdminBypassing() && me.isFlying() && !me.canFlyAtLocation(to)) {
me.setFFlying(false, false);
}
}
// For some reason onPlayerInteract() sometimes misses bucket events depending on distance (something like 2-3 blocks away isn't detected),
// but these separate bucket events below always fire without fail
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)