/*
* Copyright (c) CovertJaguar, 2014 http://railcraft.info
*
* This code is the property of CovertJaguar
* and may only be used with explicit written
* permission unless otherwise specified on the
* license page at http://railcraft.info/wiki/info:license.
*/
package mods.railcraft.common.items.firestone;
import cpw.mods.fml.common.registry.GameRegistry;
import java.util.ArrayList;
import java.util.Random;
import net.minecraft.block.material.Material;
import net.minecraft.util.IIcon;
import mods.railcraft.common.core.RailcraftConfig;
import mods.railcraft.common.plugins.forge.RailcraftRegistry;
import mods.railcraft.common.util.misc.Game;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.client.particle.EffectRenderer;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.stats.StatList;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
/**
*
* @author CovertJaguar <http://www.railcraft.info>
*/
public class BlockFirestoneRecharge extends BlockContainer {
private static Block block;
public static Block getBlock() {
return block;
}
public static void registerBlock() {
if (block == null) {
String tag = "railcraft.firestone.recharge";
if (RailcraftConfig.isBlockEnabled(tag)) {
block = new BlockFirestoneRecharge().setBlockName(tag);
RailcraftRegistry.register(block);
}
}
}
public BlockFirestoneRecharge() {
super(Material.rock);
disableStats();
setStepSound(new SoundType("null", 0, 0));
float f = 0.2F;
setBlockBounds(0.5F - f, 0.4F, 0.5F - f, 0.5F + f, 0.9f, 0.5F + f);
setLightLevel(1);
GameRegistry.registerTileEntity(TileFirestoneRecharge.class, "RCFirestoneRechargeTile");
}
@Override
public void registerBlockIcons(IIconRegister iconRegister) {
}
@Override
public IIcon getIcon(int side, int meta) {
return Blocks.obsidian.getIcon(side, meta);
}
@Override
public int quantityDropped(Random par1Random) {
return 0;
}
@Override
public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z, EntityPlayer player) {
return ItemFirestoneRefined.getItemCharged();
}
@Override
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
ArrayList<ItemStack> drops = new ArrayList<ItemStack>();
int meta = world.getBlockMetadata(x, y, z);
TileEntity tile = world.getTileEntity(x, y, z);
if (tile instanceof TileFirestoneRecharge) {
TileFirestoneRecharge firestone = (TileFirestoneRecharge) tile;
Item item = meta == 0 ? ItemFirestoneRefined.item : ItemFirestoneCracked.item;
ItemStack drop = new ItemStack(item, 1, ItemFirestoneRefined.item.getMaxDamage() - firestone.charge);
if (firestone.getItemName() != null)
drop.setStackDisplayName(firestone.getItemName());
drops.add(drop);
} else
drops.add(ItemFirestoneRefined.getItemEmpty());
return drops;
}
@Override
public void harvestBlock(World world, EntityPlayer entityplayer, int i, int j, int k, int l) {
}
@Override
public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z, boolean willHarvest) {
player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1);
player.addExhaustion(0.025F);
if (Game.isHost(world))
dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0);
return world.setBlockToAir(x, y, z);
}
@Override
public int getRenderType() {
return -1;
}
@Override
public boolean isOpaqueCube() {
return false;
}
@Override
public boolean renderAsNormalBlock() {
return false;
}
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int s) {
return null;
}
// @Override
// public void addCollisionBoxesToList(World par1World, int par2, int par3, int par4, AxisAlignedBB par5AxisAlignedBB, List par6List, Entity par7Entity) {
// }
//
// @Override
// public boolean canCollideCheck(int par1, boolean par2) {
// return false;
// }
// @Override
// public boolean isCollidable() {
// return false;
// }
//
// @Override
// public int getMobilityFlag() {
// return 1;
// }
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return new TileFirestoneRecharge();
}
@Override
public boolean canBeReplacedByLeaves(IBlockAccess world, int x, int y, int z) {
return false;
}
@Override
public boolean addDestroyEffects(World world, int x, int y, int z, int meta, EffectRenderer effectRenderer) {
return true;
}
@Override
public boolean addHitEffects(World worldObj, MovingObjectPosition target, EffectRenderer effectRenderer) {
return true;
}
}