Newer
Older
ultramine_bukkit / src / main / java / org / bukkit / craftbukkit / entity / CraftProjectile.java
@vlad20012 vlad20012 on 24 Feb 2017 2 KB initial
package org.bukkit.craftbukkit.entity;


import net.minecraft.entity.EntityLivingBase;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Projectile;
import org.bukkit.projectiles.ProjectileSource;
import org.ultramine.mods.bukkit.interfaces.entity.IMixinEntity;
import org.ultramine.mods.bukkit.interfaces.entity.projectile.IMixinThrowable;

public class CraftProjectile extends AbstractProjectile implements Projectile
{ // Cauldron - concrete
	public CraftProjectile(CraftServer server, net.minecraft.entity.Entity entity)
	{
		super(server, entity);
	}

	public ProjectileSource getShooter()
	{
		return ((IMixinEntity) getHandle()).getProjectileSource();
	}

	public void setShooter(ProjectileSource shooter)
	{
		if(shooter instanceof CraftLivingEntity)
		{
			((IMixinThrowable) getHandle()).setThrower((net.minecraft.entity.EntityLivingBase) ((CraftLivingEntity) shooter).entity);
			if(shooter instanceof CraftHumanEntity)
			{
				((IMixinThrowable) getHandle()).setThrowerName(((CraftHumanEntity) shooter).getName());
			}
		}
		else
		{
			((IMixinThrowable) getHandle()).setThrower(null);
			((IMixinThrowable) getHandle()).setThrowerName(null);
		}
		((IMixinEntity) getHandle()).setProjectileSource(shooter);
	}

	@Override
	public net.minecraft.entity.projectile.EntityThrowable getHandle()
	{
		return (net.minecraft.entity.projectile.EntityThrowable) entity;
	}

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

	// Cauldron start
	@Override
	public EntityType getType()
	{
		return EntityType.UNKNOWN;
	}
	// Cauldron end

	@Deprecated
	public LivingEntity _INVALID_getShooter()
	{
		EntityLivingBase thrower = getHandle().getThrower();
		if(thrower == null)
		{
			return null;
		}
		return (LivingEntity) ((IMixinEntity) thrower).getBukkitEntity();
	}

	@Deprecated
	public void _INVALID_setShooter(LivingEntity shooter)
	{
		if(shooter == null)
		{
			return;
		}
		((IMixinThrowable) getHandle()).setThrower(((CraftLivingEntity) shooter).getHandle());
		if(shooter instanceof CraftHumanEntity)
		{
			((IMixinThrowable) getHandle()).setThrowerName(((CraftHumanEntity) shooter).getName());
		}
	}
}