package net.diamonddominion.esaych.survival; import net.diamonddominion.esaych.CustomPlugin; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.GameMode; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityShootBowEvent; public class FairFly { private CustomPlugin plugin; public FairFly(CustomPlugin plugin) { this.plugin = plugin; } public void enable() { log("Enabled"); } public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if (cmd.getName().equalsIgnoreCase("fly")) { if ((sender instanceof Player)) { Player player = (Player)sender; if (args.length == 0) { if (player.hasPermission("fly.fly")) if (player.getAllowFlight()) { player.setFlying(false); player.setAllowFlight(false); player.sendMessage(ChatColor.GOLD + "You were put out of fly mode."); } else { player.setAllowFlight(true); player.setFlySpeed(0.1F); player.sendMessage(ChatColor.GOLD + "You were put into fly mode."); } } else if (args.length == 1) { if (player.hasPermission("fly.other")) { Player otherplayer = Bukkit.getPlayer(args[0]); if (otherplayer != null) { if (otherplayer.getAllowFlight()) { otherplayer.setFlying(false); otherplayer.setAllowFlight(false); otherplayer.sendMessage(ChatColor.GOLD + "You were put out of fly mode."); player.sendMessage(args[0] + " was put out of fly mode!"); } else { otherplayer.setAllowFlight(true); otherplayer.setFlySpeed(0.1F); otherplayer.sendMessage(ChatColor.GOLD + "You were put into fly mode."); player.sendMessage(args[0] + " was sent to sky!"); } } else player.sendMessage(args[0] + " is not online or doesn't exist!"); } } else { return false; } } else { if (args.length == 1) { Player otherplayer = Bukkit.getPlayer(args[0]); if (otherplayer != null) { if (otherplayer.getAllowFlight()) { otherplayer.setFlying(false); otherplayer.setAllowFlight(false); otherplayer.sendMessage(ChatColor.GOLD + "You were put out of fly mode."); log(args[0] + " was put out of fly mode!"); } else { otherplayer.setAllowFlight(true); otherplayer.setFlySpeed(0.1F); otherplayer.sendMessage(ChatColor.GOLD + "You were put into fly mode."); log(args[0] + " was sent to sky!"); } } else log(args[0] + " is not online or doesn't exist!"); } else { log("Console's can't fly!!!!!!"); } } return true; }if (cmd.getName().equalsIgnoreCase("flyspeed")) { Player player = (Player)sender; if ((sender instanceof Player)) { if (args.length == 0) return false; if (args.length == 1) { int speed = 1; try { speed = Integer.parseInt(args[0]); } catch (NumberFormatException e) { player.sendMessage("Only integer values are allowed here"); return true; } if ((player.hasPermission("fly.speed") | player.hasPermission("fly.speed.10"))) { if ((speed < -10) || (speed > 10)) { player.sendMessage("Speed can't be less than -10 or more than 10"); } else { player.setFlySpeed(speed / 10.0F); player.sendMessage("Flyspeed set to " + speed); } return true; }if (player.hasPermission("fly.speed.9")) { if ((speed <= 9) && (speed >= -9)) { player.setFlySpeed(speed / 10.0F); player.sendMessage("Flyspeed set to " + speed); } else { player.sendMessage("You don't have permission to do that"); } return true; }if (player.hasPermission("fly.speed.8")) { if ((speed <= 8) && (speed >= -8)) { player.setFlySpeed(speed / 10.0F); player.sendMessage("Flyspeed set to " + speed); } else { player.sendMessage("You don't have permission to do that"); } return true; }if (player.hasPermission("fly.speed.7")) { if ((speed <= 7) && (speed >= -7)) { player.setFlySpeed(speed / 10.0F); player.sendMessage("Flyspeed set to " + speed); } else { player.sendMessage("You don't have permission to do that"); } return true; }if (player.hasPermission("fly.speed.6")) { if ((speed <= 6) && (speed >= -6)) player.setFlySpeed(speed / 10.0F); else { player.sendMessage("You don't have permission to do that"); } return true; }if (player.hasPermission("fly.speed.5")) { if ((speed <= 5) && (speed >= -5)) { player.setFlySpeed(speed / 10.0F); player.sendMessage("Flyspeed set to " + speed); } else { player.sendMessage("You don't have permission to do that"); } return true; }if (player.hasPermission("fly.speed.4")) { if ((speed <= 4) && (speed >= -4)) { player.setFlySpeed(speed / 10.0F); player.sendMessage("Flyspeed set to " + speed); } else { player.sendMessage("You don't have permission to do that"); } return true; }if (player.hasPermission("fly.speed.3")) { if ((speed <= 3) && (speed >= -3)) { player.setFlySpeed(speed / 10.0F); player.sendMessage("Flyspeed set to " + speed); } else { player.sendMessage("You don't have permission to do that"); } return true; }if (player.hasPermission("fly.speed.2")) { if ((speed <= 2) && (speed >= -2)) { player.setFlySpeed(speed / 10.0F); player.sendMessage("Flyspeed set to " + speed); } else { player.sendMessage("You don't have permission to do that"); } return true; } player.sendMessage("You don't have permission to do that"); return true; } } } return false; } //Flying player attacks another player public void onHit(EntityDamageByEntityEvent event) { if ((event.getDamager() instanceof Player)) { Player damager = (Player)event.getDamager(); if (damager.getAllowFlight()) { //if punch player and they have FLY ENABLED if ((damager.isFlying()) && (!damager.hasPermission("Fly.damage")) && (damager.getGameMode() != GameMode.CREATIVE)) event.setCancelled(true); if (!damager.isFlying() && event.getEntity() instanceof Player && damager.getGameMode() != GameMode.CREATIVE) { damager.setFlying(false); damager.setAllowFlight(false); damager.sendMessage(ChatColor.GOLD + "You were put out of fly mode."); } } } } //Flying player takes damage public void onDamage(EntityDamageEvent event) { if ((event.getEntity() instanceof Player)) { Player receiver = (Player)event.getEntity(); if ((receiver.isFlying()) && (receiver.hasPermission("Fly.invincible"))) event.setCancelled(true); } } //Flying player tries to shoot a bow @SuppressWarnings("deprecation") public void onShoot(EntityShootBowEvent event) { if ((event.getEntity() instanceof Player)) { Player archer = (Player)event.getEntity(); if (archer.getAllowFlight()) { if ((archer.isFlying()) && (!archer.hasPermission("Fly.damage")) && (archer.getGameMode() != GameMode.CREATIVE)) { event.setCancelled(true); archer.updateInventory(); } if (!archer.isFlying() && archer.getGameMode() != GameMode.CREATIVE) { archer.setFlying(false); archer.setAllowFlight(false); archer.sendMessage(ChatColor.GOLD + "You were put out of fly mode."); } } } } public void log(String info) { plugin.getLogger().info("<FairFly> " + info); } }