public class EventListener implements Listener {
private Map<String, Vector> v;
public EventListener() {
this.v = new HashMap<String, Vector>();
}
@EventHandler
public void on(PlayerJoinEvent e) {
Player p = e.getPlayer();
this.v.put(p.getName(), new Vector(0, 0, 0));
}
@EventHandler
public void on(PlayerQuitEvent e) {
this.v.remove(e.getPlayer().getName());
}
@EventHandler
public void on(PlayerToggleFlightEvent e) {
Player p = e.getPlayer();
if (e.isFlying() && e.getPlayer().getGameMode() != GameMode.CREATIVE) {
p.setVelocity(new Vector(-this.v.get(p.getName()).getX(), 0.5, -this.v.get(p.getName()).getZ()));
e.setCancelled(true);
}
p.setAllowFlight(false);
}
@EventHandler
public void on(PlayerMoveEvent e) {
Player p = e.getPlayer();
this.v.put(p.getName(), e.getFrom().toVector().subtract(e.getTo().toVector()));
if (p.isOnGround()) {
p.setAllowFlight(true);
}
}
}