package org.bukkit.craftbukkit.entity; import net.minecraft.entity.projectile.EntityFireball; import net.minecraft.util.MathHelper; import org.apache.commons.lang.Validate; import org.bukkit.craftbukkit.CraftServer; import org.bukkit.entity.EntityType; import org.bukkit.entity.Fireball; import org.bukkit.entity.LivingEntity; import org.bukkit.projectiles.ProjectileSource; import org.bukkit.util.Vector; import org.ultramine.mods.bukkit.interfaces.entity.IMixinEntity; import org.ultramine.mods.bukkit.interfaces.entity.projectile.IMixinEntityFireball; public class CraftFireball extends AbstractProjectile implements Fireball { public CraftFireball(CraftServer server, EntityFireball entity) { super(server, entity); } public float getYield() { return ((IMixinEntityFireball) getHandle()).getBukkitYield(); } public boolean isIncendiary() { return ((IMixinEntityFireball) getHandle()).isIncendiary(); } public void setIsIncendiary(boolean isIncendiary) { ((IMixinEntityFireball) getHandle()).setIncendiary(isIncendiary); } public void setYield(float yield) { ((IMixinEntityFireball) getHandle()).setBukkitYield(yield); } public ProjectileSource getShooter() { return ((IMixinEntity) getHandle()).getProjectileSource(); } public void setShooter(ProjectileSource shooter) { if(shooter instanceof CraftLivingEntity) { getHandle().shootingEntity = ((CraftLivingEntity) shooter).getHandle(); } else { getHandle().shootingEntity = null; } ((IMixinEntity) getHandle()).setProjectileSource(shooter); } public Vector getDirection() { return new Vector(getHandle().accelerationX, getHandle().accelerationY, getHandle().accelerationZ); } public void setDirection(Vector direction) { Validate.notNull(direction, "Direction can not be null"); double x = direction.getX(); double y = direction.getY(); double z = direction.getZ(); double magnitude = (double) MathHelper.sqrt_double(x * x + y * y + z * z); getHandle().accelerationX = x / magnitude; getHandle().accelerationY = y / magnitude; getHandle().accelerationZ = z / magnitude; } @Override public EntityFireball getHandle() { return (EntityFireball) entity; } @Override public String toString() { return "CraftFireball"; } public EntityType getType() { return EntityType.UNKNOWN; } @Deprecated public void _INVALID_setShooter(LivingEntity shooter) { setShooter(shooter); } @Deprecated public LivingEntity _INVALID_getShooter() { if(getHandle().shootingEntity != null) { return (LivingEntity) ((IMixinEntity) getHandle().shootingEntity).getBukkitEntity(); } return null; } }