Java 类org.bukkit.entity.FishHook 实例源码

项目:BukkitOldCombatMechanics    文件:ModuleFishingKnockback.java   
@EventHandler(priority = EventPriority.HIGHEST)
public void onRodLand(ProjectileHitEvent e) {

    Entity hookEntity = e.getEntity();
    World world = hookEntity.getWorld();

    if (!isEnabled(world)) return;

    if (e.getEntityType() != EntityType.FISHING_HOOK)
        return;


    Entity hitent = null;

    try{
        hitent = e.getHitEntity();
    }
    catch(NoSuchMethodError e1){ //For older version that don't have such method
        Collection<Entity> entities = world.getNearbyEntities(hookEntity.getLocation(), 0.25, 0.25, 0.25);

        for (Entity entity : entities) {
            if (entity instanceof Player)
                hitent = entity;
            break;

        }
    }

    if(hitent == null) return;
    if(!(hitent instanceof Player)) return;

    FishHook hook = (FishHook) hookEntity;
    Player rodder = (Player) hook.getShooter();
    Player player = (Player) hitent;

    debug("You were hit by a fishing rod!", player);

    if (player.getUniqueId().equals(rodder.getUniqueId()))
        return;

    if(player.getGameMode() == GameMode.CREATIVE) return;

    double damage = module().getDouble("damage");
    if(damage < 0) damage = 0.2;

    EntityDamageEvent event = makeEvent(rodder, player, damage);
    Bukkit.getPluginManager().callEvent(event);

    if(module().getBoolean("checkCancelled") && event.isCancelled()){

        //This is to check what plugins are listening to the event
        if(plugin.getConfig().getBoolean("debug.enabled")){
            debug("You can't do that here!", rodder);
            HandlerList hl = event.getHandlers();

            for(RegisteredListener rl : hl.getRegisteredListeners())
                debug("Plugin Listening: " + rl.getPlugin().getName(), rodder);
        }

        return;
    }

    player.damage(damage);

    Location loc = player.getLocation().add(0, 0.5, 0);
    player.teleport(loc);
    player.setVelocity(loc.subtract(rodder.getLocation()).toVector().normalize().multiply(0.4));
}
项目:Wayward    文件:PlayerFishListener.java   
private Vector reelVelocity(Player player, FishHook hook) {
    double x = player.getLocation().getX() - hook.getLocation().getX();
    double y = player.getLocation().getY() - hook.getLocation().getY();
    double z = player.getLocation().getZ() - hook.getLocation().getZ();
    return new Vector(x * 0.1D, y * 0.1D + Math.sqrt(Math.sqrt(x * x + y * y + z * z)) * 0.08D, z * 0.1D);
}
项目:SwornGuns    文件:Bullet.java   
public Bullet(SwornGuns plugin, GunPlayer shooter, Gun shotFrom, Vector velocity)
{
    this.plugin = plugin;
    this.shotFrom = shotFrom;
    this.shooter = shooter;
    this.velocity = velocity;
    this.active = true;

    if (shotFrom.isThrowable())
    {
        ItemStack thrown = shotFrom.getMaterial().newItemStack(1);

        this.projectile = shooter.getPlayer().getWorld().dropItem(shooter.getPlayer().getEyeLocation(), thrown);
        this.id = projectile.getEntityId();

        ((Item) projectile).setPickupDelay(9999999);
        this.startLocation = projectile.getLocation();
    }
    else
    {
        Class<? extends Projectile> mclass = Snowball.class;

        String check = shotFrom.getProjType().toLowerCase().replaceAll("_", "").replaceAll(" ", "");
        switch (check)
        {
            case "arrow":
                mclass = Arrow.class;
                break;
            case "egg":
                mclass = Egg.class;
                break;
            case "enderpearl":
                mclass = EnderPearl.class;
                break;
            case "fireball":
                mclass = Fireball.class;
                break;
            case "fish":
            case "fishhook":
                mclass = FishHook.class;
                break;
            case "largefireball":
                mclass = LargeFireball.class;
                break;
            case "smallfireball":
                mclass = SmallFireball.class;
                break;
            case "thrownexpbottle":
                mclass = ThrownExpBottle.class;
                break;
            case "thrownpotion":
                mclass = ThrownPotion.class;
                break;
            case "witherskull":
                mclass = WitherSkull.class;
                break;
            default:
                break;
        }

        this.projectile = shooter.getPlayer().launchProjectile(mclass);
        this.id = projectile.getEntityId();

        ((Projectile) projectile).setShooter(shooter.getPlayer());
        this.startLocation = projectile.getLocation();
    }

    if (shotFrom.getReleaseTime() == -1)
    {
        this.releaseTime = 80 + (shotFrom.isThrowable() ? 0 : 1) * 400;
    }
    else
    {
        this.releaseTime = shotFrom.getReleaseTime();
    }
}