Gun Plugin

Discussion in 'Plugin Development' started by Bowan, Jan 15, 2015.

Thread Status:
Not open for further replies.
  1. Offline

    Bowan

    alright thats cool. Is there a way to prevent bypassing pvp zone?
     
  2. Offline

    mythbusterma

    @Bowan

    See if they're in one, if not, don't let them hit people.
     
  3. Offline

    Bowan

    I am leaving the project now. I am finding to many bugs that make this plugin impossible.

    Example:Skeleton can instant kill. When I fixed this, Skeletons couldnt damage at all!

    The gun still doesn't give the custom damage. unless it shoots a player. @Experminator solution didnt work.)



    If someone wishes to continue the project, feel free, all code below.

    Code:
    package gun;
    import org.bukkit.Material;
    import org.bukkit.entity.Arrow;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.event.entity.ProjectileHitEvent;
    import org.bukkit.event.player.PlayerInteractEvent;
    public class PlayerListener implements Listener {
        public PlayerListener(main plugin) {
            plugin.getServer().getPluginManager().registerEvents(this, plugin);
        }
       
        @EventHandler
        public void gun(PlayerInteractEvent e){
            Player p = e.getPlayer();
            if (!(e.getAction() == Action.RIGHT_CLICK_BLOCK | e.getAction() == Action.RIGHT_CLICK_AIR)) return;
            if (!(e.getItem().getType() == Material.DIAMOND_BARDING)) return;
            if (!(e.getItem().getItemMeta().getDisplayName().equalsIgnoreCase("gun"))) return;
            if(!p.hasPermission("gun.use")) return;
            p.launchProjectile(Arrow.class);
            }
    
        @EventHandler
        public void arrow(ProjectileHitEvent e){
            e.getEntity().remove();
        }
        
        @EventHandler
        public void damage(EntityDamageByEntityEvent e){
           if(e.getEntity() instanceof Player && e.getDamager() instanceof Arrow){
              Arrow a = (Arrow) e.getDamager();
              Player p = (Player) e.getEntity();
              if(a.getShooter() instanceof Player){
                 Player shooter = (Player) a.getShooter();
                 if(shooter.getItemInHand().getType() == Material.DIAMOND_BARDING){
                     if(shooter.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase("gun")) {
                         
                     p.damage(20.0);
                     }
                }
              } else {
                  e.setCancelled(true);
              }
           }
        }}
    

     
Thread Status:
Not open for further replies.

Share This Page