package micdoodle8.mods.galacticraft.core.client.nei;
import codechicken.nei.api.IHighlightHandler;
import codechicken.nei.api.ItemInfo;
import micdoodle8.mods.galacticraft.core.GCBlocks;
import micdoodle8.mods.galacticraft.core.blocks.BlockFluidPipe;
import micdoodle8.mods.galacticraft.core.fluid.FluidNetwork;
import micdoodle8.mods.galacticraft.core.tile.TileEntityFluidPipe;
import micdoodle8.mods.galacticraft.core.tile.TileEntityFluidTank;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import net.minecraftforge.fluids.FluidTankInfo;
import java.util.List;
public class GCNEIHighlightHandler implements IHighlightHandler
{
@Override
public List<String> handleTextData(ItemStack stack, World world, EntityPlayer player, MovingObjectPosition mop, List<String> currenttip, ItemInfo.Layout layout)
{
if (stack.getItem() == Item.getItemFromBlock(GCBlocks.fluidTank))
{
if (layout == ItemInfo.Layout.BODY)
{
TileEntity tile = world.getTileEntity(mop.getBlockPos());
if (tile instanceof TileEntityFluidTank)
{
TileEntityFluidTank tank = (TileEntityFluidTank) tile;
FluidTankInfo[] infos = tank.getTankInfo(EnumFacing.DOWN);
if (infos.length == 1)
{
FluidTankInfo info = infos[0];
currenttip.add(info.fluid != null ? info.fluid.getLocalizedName() : "Empty");
currenttip.add((info.fluid != null ? info.fluid.amount : 0) + " / " + info.capacity);
}
}
}
}
else if (stack.getItem() == Item.getItemFromBlock(GCBlocks.oxygenPipe) || stack.getItem() == Item.getItemFromBlock(GCBlocks.oxygenPipePull))
{
if (layout == ItemInfo.Layout.BODY)
{
TileEntity tile = world.getTileEntity(mop.getBlockPos());
if (tile instanceof TileEntityFluidPipe)
{
TileEntityFluidPipe pipe = (TileEntityFluidPipe) tile;
currenttip.add(((BlockFluidPipe) pipe.getBlockType()).getMode().toString());
if (pipe.hasNetwork())
{
FluidNetwork network = ((FluidNetwork) pipe.getNetwork());
currenttip.add("Network: " + (network.buffer != null ? network.buffer.amount : 0) + " / " + network.getCapacity());
}
else
{
currenttip.add("Pipe: " + (pipe.getBuffer() != null ? pipe.getBuffer().amount + " / " + pipe.buffer.getCapacity() : "None"));
}
}
}
}
return currenttip;
}
@Override
public ItemStack identifyHighlight(World world, EntityPlayer player, MovingObjectPosition mop)
{
BlockPos pos = mop.getBlockPos();
IBlockState state = world.getBlockState(pos);
Block b = state.getBlock();
int meta = b.getMetaFromState(state);
if (meta == 8 && b == GCBlocks.basicBlock)
{
return new ItemStack(GCBlocks.basicBlock, 1, 8);
}
if (meta == 2 && b == GCBlocks.blockMoon)
{
return new ItemStack(GCBlocks.blockMoon, 1, 2);
}
if (b == GCBlocks.fakeBlock && meta == 1)
{
return new ItemStack(GCBlocks.spaceStationBase, 1, 0);
}
if (b == GCBlocks.fakeBlock && meta == 2)
{
return new ItemStack(GCBlocks.landingPad, 1, 0);
}
if (b == GCBlocks.fakeBlock && meta == 6)
{
return new ItemStack(GCBlocks.landingPad, 1, 1);
}
return null;
}
}