All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bukkit.craftbukkit.entity.CraftArrow Maven / Gradle / Ivy

package org.bukkit.craftbukkit.entity;

import net.minecraft.server.EntityArrow;
import org.apache.commons.lang.Validate;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.projectiles.ProjectileSource;

public class CraftArrow extends AbstractProjectile implements Arrow {

  // Spigot start
  private final Arrow.Spigot spigot = new Arrow.Spigot() {
    @Override
    public double getDamage() {
      return getHandle().j();
    }

    @Override
    public void setDamage(double damage) {
      getHandle().b(damage);
    }
  };

  public CraftArrow(CraftServer server, EntityArrow entity) {
    super(server, entity);
  }

  public int getKnockbackStrength() {
    return getHandle().knockbackStrength;
  }

  public void setKnockbackStrength(int knockbackStrength) {
    Validate.isTrue(knockbackStrength >= 0, "Knockback cannot be negative");
    getHandle().setKnockbackStrength(knockbackStrength);
  }

  public boolean isCritical() {
    return getHandle().isCritical();
  }

  public void setCritical(boolean critical) {
    getHandle().setCritical(critical);
  }

  public ProjectileSource getShooter() {
    return getHandle().projectileSource;
  }

  public void setShooter(ProjectileSource shooter) {
    if (shooter instanceof LivingEntity) {
      getHandle().shooter = ((CraftLivingEntity) shooter).getHandle();
    } else {
      getHandle().shooter = null;
    }
    getHandle().projectileSource = shooter;
  }

  @Override
  public EntityArrow getHandle() {
    return (EntityArrow) entity;
  }

  @Override
  public String toString() {
    return "CraftArrow";
  }

  public EntityType getType() {
    return EntityType.ARROW;
  }

  @Deprecated
  public LivingEntity _INVALID_getShooter() {
    if (getHandle().shooter == null) {
      return null;
    }
    return (LivingEntity) getHandle().shooter.getBukkitEntity();
  }

  @Deprecated
  public void _INVALID_setShooter(LivingEntity shooter) {
    getHandle().shooter = ((CraftLivingEntity) shooter).getHandle();
  }

  public Arrow.Spigot spigot() {
    return spigot;
  }
  // Spigot end
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy