package com.austinv11.peripheralsplusplus.blocks;
import com.austinv11.collectiveframework.minecraft.utils.NBTHelper;
import com.austinv11.peripheralsplusplus.tiles.TileEntityPeripheralContainer;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import dan200.computercraft.api.peripheral.IPeripheral;
import dan200.computercraft.api.peripheral.IPeripheralProvider;
import net.minecraft.block.Block;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import java.util.ArrayList;
import java.util.List;
public class BlockPeripheralContainer extends BlockPPP implements ITileEntityProvider {
// BlockSnapshot blockSnapshot;
public BlockPeripheralContainer() {
super();
this.setBlockName("peripheralContainer");
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityPeripheralContainer();
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack itemStack) {
int[] ids = NBTHelper.getIntArray(itemStack, "ids");
Block[] blocks = new Block[ids.length];
for (int i = 0; i < ids.length; i++)
blocks[i] = Block.getBlockById(ids[i]);
TileEntityPeripheralContainer ent = (TileEntityPeripheralContainer)world.getTileEntity(x,y,z);
for (Block block : blocks)
ent.addPeripheral(block);
}
// @Override
// public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) {
// blockSnapshot = BlockSnapshot.getBlockSnapshot(world, x, y, z);
// }
@Override
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
ArrayList<ItemStack> drops = new ArrayList<ItemStack>();
// TileEntity te = blockSnapshot.getTileEntity();
// NBTTagCompound tag = new NBTTagCompound();
// te.writeToNBT(tag);
// ItemStack drop = new ItemStack(ModBlocks.peripheralContainer);
// drop.stackTagCompound = tag;
// List<String> text = new ArrayList<String>();
// text.add(Reference.Colors.RESET+Reference.Colors.UNDERLINE+"Contained Peripherals:");
// for (int id : NBTHelper.getIntArray(drop, "ids")) {
// Block peripheral = Block.getBlockById(id);
// IPeripheral iPeripheral = (IPeripheral)peripheral.createTileEntity(null, 0);
// text.add(Reference.Colors.RESET+iPeripheral.getType());
// }
// NBTHelper.setInfo(drop, text);
return drops;
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) {
TileEntityPeripheralContainer te = (TileEntityPeripheralContainer)world.getTileEntity(x,y,z);
List<Block> contained = te.getBlocksContained();
if (contained.size() >= side+1)
return contained.get(side).getIcon(side, 0);
else
return blockIcon;
}
// @Override
// @SideOnly(Side.CLIENT)
// public IIcon getIcon(int side, int meta) {
// ForgeDirection dir = ForgeDirection.getOrientation(side);
// return dir == ForgeDirection.DOWN || dir == ForgeDirection.UP ? this.blockIcon : this.frontIcon;
// }
}