resonant-induction/archive/java/resonantinduction/old/core/misc/BehaviorDispenseEgg.java
2014-01-11 17:44:07 +08:00

48 lines
1.6 KiB
Java

package resonantinduction.old.core.misc;
import net.minecraft.block.BlockDispenser;
import net.minecraft.dispenser.BehaviorDefaultDispenseItem;
import net.minecraft.dispenser.IBlockSource;
import net.minecraft.dispenser.IPosition;
import net.minecraft.entity.Entity;
import net.minecraft.entity.IProjectile;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
public class BehaviorDispenseEgg extends BehaviorDefaultDispenseItem
{
@Override
public ItemStack dispenseStack(IBlockSource par1IBlockSource, ItemStack par2ItemStack)
{
World world = par1IBlockSource.getWorld();
IPosition iposition = BlockDispenser.getIPositionFromBlockSource(par1IBlockSource);
EnumFacing enumfacing = BlockDispenser.getFacing(par1IBlockSource.getBlockMetadata());
IProjectile iprojectile = this.getProjectileEntity(world, iposition, par2ItemStack.getItemDamage());
iprojectile.setThrowableHeading(enumfacing.getFrontOffsetX(), (enumfacing.getFrontOffsetY() + 0.1F), enumfacing.getFrontOffsetZ(), this.func_82500_b(), this.func_82498_a());
world.spawnEntityInWorld((Entity) iprojectile);
par2ItemStack.splitStack(1);
return par2ItemStack;
}
private IProjectile getProjectileEntity(World world, IPosition p, int meta)
{
return new EntityFarmEgg(world, p.getX(), p.getY(), p.getZ(), meta);
}
@Override
protected void playDispenseSound(IBlockSource par1IBlockSource)
{
par1IBlockSource.getWorld().playAuxSFX(1002, par1IBlockSource.getXInt(), par1IBlockSource.getYInt(), par1IBlockSource.getZInt(), 0);
}
protected float func_82498_a()
{
return 6.0F;
}
protected float func_82500_b()
{
return 1.1F;
}
}