blob: fcd9bcea251f5195ef42994622280381b3d4e8d5 [file] [log] [blame] [raw]
package com.legacy.aether.items.util;
import net.minecraft.block.Block;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.stats.StatList;
import com.legacy.aether.items.tools.ItemSkyrootTool;
import net.minecraft.world.World;
import net.minecraftforge.event.ForgeEventFactory;
import java.util.ArrayList;
public class DoubleDropHelper {
public static void dropBlock(EntityPlayer player, int x, int y, int z, Block block, int meta) {
player.addStat(StatList.mineBlockStatArray[Block.getIdFromBlock(block)], 1);
player.addExhaustion(0.025F);
int size = meta == 0 ? 2 : 1;
ItemStack stack = player.inventory.getCurrentItem();
boolean flag = true;
if (stack == null || !(stack.getItem() instanceof ItemSkyrootTool)) {
flag = false;
}
if (block.canSilkHarvest(player.worldObj, player, x, y, z, meta) && EnchantmentHelper.getEnchantmentLevel(Enchantment.silkTouch.effectId, stack) > 0) {
ArrayList<ItemStack> items = new ArrayList<ItemStack>();
ItemStack itemstack = createStackedBlock(meta, block);
items.add(itemstack);
ForgeEventFactory.fireBlockHarvesting(items, player.worldObj, block, x, y, z, meta, 0, 1.0f, true, player);
for (ItemStack is : items)
{
dropBlockAsItem(player.worldObj, x, y, z, is);
}
return;
}
if (!flag) {
block.dropBlockAsItem(player.worldObj, x, y, z, meta, EnchantmentHelper.getEnchantmentLevel(Enchantment.fortune.effectId, stack));
return;
}
ItemSkyrootTool skyrootTool = (ItemSkyrootTool) stack.getItem();
if (skyrootTool.getDigSpeed(stack, block, meta) == skyrootTool.getEffectiveSpeed()) {
for (int i = 0; i < size; ++i) {
block.dropBlockAsItem(player.worldObj, x, y, z, meta, EnchantmentHelper.getEnchantmentLevel(Enchantment.fortune.effectId, stack));
}
} else {
block.dropBlockAsItem(player.worldObj, x, y, z, meta, EnchantmentHelper.getEnchantmentLevel(Enchantment.fortune.effectId, stack));
}
}
protected static ItemStack createStackedBlock(int p_149644_1_, Block block)
{
int j = 0;
Item item = Item.getItemFromBlock(block);
if (item != null && item.getHasSubtypes())
{
j = p_149644_1_;
}
return new ItemStack(item, 1, j);
}
protected static void dropBlockAsItem(World p_149642_1_, int p_149642_2_, int p_149642_3_, int p_149642_4_, ItemStack p_149642_5_)
{
if (!p_149642_1_.isRemote && p_149642_1_.getGameRules().getGameRuleBooleanValue("doTileDrops") && !p_149642_1_.restoringBlockSnapshots) // do not drop items while restoring blockstates, prevents item dupe
{
float f = 0.7F;
double d0 = (double)(p_149642_1_.rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D;
double d1 = (double)(p_149642_1_.rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D;
double d2 = (double)(p_149642_1_.rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D;
EntityItem entityitem = new EntityItem(p_149642_1_, (double)p_149642_2_ + d0, (double)p_149642_3_ + d1, (double)p_149642_4_ + d2, p_149642_5_);
entityitem.delayBeforeCanPickup = 10;
p_149642_1_.spawnEntityInWorld(entityitem);
}
}
}