package minefantasy.system;
import java.util.Random;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import minefantasy.api.weapon.ICrossbowHandler;
import minefantasy.entity.EntityArrowMF;
import minefantasy.entity.EntityBoltMF;
import minefantasy.item.ItemListMF;
public class CrossbowAmmoMF implements ICrossbowHandler {
@Override
public boolean shoot(ItemStack item, World world, EntityPlayer shooter, float accuracy, float damage, ItemStack ammo)
{
boolean infinite = shooter.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, item) > 0;
float power = 2.0F;
//FLINT
if(ammo.itemID == Item.arrow.itemID)
{
EntityArrow shot = new EntityArrow(world, shooter,
power);
int enc_Power = EnchantmentHelper.getEnchantmentLevel(
Enchantment.power.effectId, item);
if (enc_Power > 0)
{
shot.setDamage(damage + (double) enc_Power * 0.5D + 0.5D);
}
int enc_Punch = EnchantmentHelper.getEnchantmentLevel(
Enchantment.punch.effectId, item);
if (enc_Punch > 0) {
shot.setKnockbackStrength(enc_Punch);
}
if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId,
item) > 0) {
shot.setFire(100);
}
if (infinite) {
shot.canBePickedUp = 2;
}
Random rand = new Random();
if (!world.isRemote) {
world.spawnEntityInWorld(shot);
}
return true;
}
//MF ARROW
if(ammo.itemID == ItemListMF.arrowMF.itemID)
{
if(shootSpecificArrow(item, world, shooter, power, ammo))
{
return true;
}
}
//MF BOLT
if(ammo.itemID == ItemListMF.boltMF.itemID)
{
if(shootSpecificBolt(item, world, shooter, power, ammo, damage))
{
return true;
}
}
return false;
}
public boolean shootSpecificArrow(ItemStack item, World world, EntityPlayer player, float power, ItemStack ammo)
{
boolean infinite = player.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, item) > 0;
Random itemRand = new Random();
EntityArrowMF arrow = new EntityArrowMF(world, player, power, ammo.getItemDamage());
int var9 = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, item);
if (var9 > 0)
{
arrow.setDamage(arrow.getDamage() + (double)var9 * 0.5D + 0.5D);
}
int var10 = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, item);
if (var10 > 0)
{
arrow.setKnockbackStrength(var10);
}
if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, item) > 0)
{
arrow.setFire(100);
}
if(infinite)
{
arrow.canBePickedUp = 2;
}
if (!world.isRemote)
{
world.spawnEntityInWorld(arrow);
}
return true;
}
public boolean shootSpecificBolt(ItemStack item, World world, EntityPlayer player, float power, ItemStack ammo, float damage)
{
boolean infinite = player.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, item) > 0;
Random itemRand = new Random();
EntityBoltMF arrow = new EntityBoltMF(world, player, power, ammo.getItemDamage());
arrow.setDamage(damage);
int var9 = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, item);
if (var9 > 0)
{
arrow.setDamage(arrow.getDamage() + (double)var9 * 0.5D + 0.5D);
}
int var10 = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, item);
if (var10 > 0)
{
arrow.setKnockbackStrength(var10);
}
if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, item) > 0)
{
arrow.setFire(100);
}
if(infinite)
{
arrow.canBePickedUp = 2;
}
if (!world.isRemote)
{
world.spawnEntityInWorld(arrow);
}
return true;
}
}