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);
}
}