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

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.projectile.EntityFishHook;
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.Fish;
import org.bukkit.entity.LivingEntity;
import org.bukkit.projectiles.ProjectileSource;
import org.ultramine.mods.bukkit.interfaces.entity.IMixinEntity;

public class CraftFish extends AbstractProjectile implements Fish
{
	private double biteChance = -1;

	public CraftFish(CraftServer server, EntityFishHook entity)
	{
		super(server, entity);
	}

	public ProjectileSource getShooter()
	{
		if(getHandle().field_146042_b != null)
		{
			return (ProjectileSource) ((IMixinEntity) getHandle().field_146042_b).getBukkitEntity();
		}

		return null;
	}

	public void setShooter(ProjectileSource shooter)
	{
		if(shooter instanceof CraftHumanEntity)
		{
			getHandle().field_146042_b = (EntityPlayer) ((CraftHumanEntity) shooter).entity;
		}
	}

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

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

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

	public double getBiteChance()
	{
		EntityFishHook hook = getHandle();

		if(this.biteChance == -1)
		{
			if(hook.worldObj.canLightningStrikeAt(MathHelper.floor_double(hook.posX), net.minecraft.util.MathHelper.floor_double(hook.posY) + 1, net.minecraft.util.MathHelper.floor_double(hook.posZ)))
			{
				return 1 / 300.0;
			}
			return 1 / 500.0;
		}
		return this.biteChance;
	}

	public void setBiteChance(double chance)
	{
		Validate.isTrue(chance >= 0 && chance <= 1, "The bite chance must be between 0 and 1.");
		this.biteChance = chance;
	}

	@Deprecated
	public LivingEntity _INVALID_getShooter()
	{
		return (LivingEntity) getShooter();
	}

	@Deprecated
	public void _INVALID_setShooter(LivingEntity shooter)
	{
		setShooter(shooter);
	}
}