package tv.mineinthebox.essentials.events.players; import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.block.BlockFace; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerToggleFlightEvent; import org.bukkit.util.Vector; import tv.mineinthebox.essentials.xEssentials; import tv.mineinthebox.essentials.interfaces.XPlayer; public class DoubleJumpEvent implements Listener { private final xEssentials pl; public DoubleJumpEvent(xEssentials pl) { this.pl = pl; } @EventHandler public void onJump(PlayerToggleFlightEvent e) { if(e.getPlayer().getGameMode() == GameMode.CREATIVE) { return; } XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.hasDoubleJump()) { e.setCancelled(true); e.getPlayer().setAllowFlight(false); e.getPlayer().setVelocity(e.getPlayer().getLocation().getDirection().add(new Vector(0, 3, 0)).normalize()); } } @EventHandler public void onJump(PlayerMoveEvent e) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.hasDoubleJump()) { if(e.getPlayer().getGameMode() == GameMode.SURVIVAL && e.getPlayer().getLocation().getBlock().getRelative(BlockFace.DOWN).getType() != Material.AIR) { e.getPlayer().setAllowFlight(true); } } } }