Permissions for multiple events / double jump not working properly

Discussion in 'Plugin Development' started by Techno, Jul 26, 2014.

Thread Status:
Not open for further replies.
  1. So, I have made a double jump plugin and I'm trying to put permission nodes but here's what happens....

    So, when your OP you can double jump when in survival (Good)
    When your not OP and don't have permission you cannot double jump but you can fly for some reason..

    Code:
    Code:
     
    package me.Bill4788.DoubleJumpa;
     
    import org.bukkit.GameMode;
    import org.bukkit.Material;
    import org.bukkit.entity.Player;
    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.plugin.java.JavaPlugin;
     
     
    public class Main extends JavaPlugin implements Listener {
    public void onEnable() {
    getServer().getPluginManager().registerEvents(this, this);
     
    getConfig().options().copyDefaults(true);
    saveConfig();
     
    }
     
    // Events
    @EventHandler
    public void onPlayerToggleFlight(PlayerToggleFlightEvent e) {
    if (e.getPlayer().hasPermission("doublejumpa.use")) {
    if (!(e.getPlayer().getWorld().getName().equals(getConfig().getString("worldname"))))
    return;
     
    Player pe = e.getPlayer();
     
    if (pe.getGameMode() == GameMode.CREATIVE)
    return;
     
    e.setCancelled(true);
    pe.setAllowFlight(false);
    pe.setFlying(false);
    pe.setVelocity(pe.getLocation().getDirection().multiply(1.5).setY(1));
    }
    }
     
    @EventHandler
    public void onPlayerMove(PlayerMoveEvent move) {
    if (move.getPlayer().hasPermission("doublejumpa.use")) {
    if (!(move.getPlayer().getWorld().getName().equals(getConfig().getString("worldname"))))
    return;
     
    Player p = move.getPlayer();
     
    if ((p.getGameMode() != GameMode.CREATIVE) && (p.getLocation().subtract(0, 1, 0).getBlock().getType() != Material.AIR) && (!p.isFlying())) {
    p.setAllowFlight(true);
    }
    }
    }
    }
    
     
  2. Offline

    callum2904

    Are you registering your permissions in the plugin.yml
     
  3. Offline

    Niknea

    Techno Put an if statement if the player doesn't have the permission node, does it execute?

    callum2904 Adding the permission node to your plugin.yml is not required, it works fine without.
     
  4. Offline

    callum2904

    Ok well i just do it out of habit.
     

  5. Yes it does but if you do not have permission you can fly..
     
  6. Offline

    keensta

    Do you allow them to fly using any over event except the MoveEvent. Also make sure no other plugin allows flight.

    As if they do then you never cancel it in the toggleflightening event. Because they don't have permission.
     

  7. No there not meant to fly..
     
  8. Offline

    Niknea

    Techno try creating an else statement canceling the event.
     
  9. Offline

    Niknea

    Techno Just for the PlayerToggleFlightEvent.
     
  10. Niknea

    Thanks, I fixed it thanks to you :)
    Thanks alot!
     
  11. Offline

    Niknea

Thread Status:
Not open for further replies.

Share This Page