Newer
Older
ultramine_bukkit / src / main / java / org / bukkit / craftbukkit / entity / CraftFireball.java
@vlad20012 vlad20012 on 24 Feb 2017 2 KB initial
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;
	}
}