package mods.eln.node.transparent;
import mods.eln.generic.GenericItemBlockUsingDamage;
import mods.eln.ghost.GhostGroup;
import mods.eln.misc.Coordonate;
import mods.eln.misc.Direction;
import mods.eln.misc.Utils;
import mods.eln.node.NodeBlock;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.client.IItemRenderer;
import org.lwjgl.opengl.GL11;
public class TransparentNodeItem extends GenericItemBlockUsingDamage<TransparentNodeDescriptor> implements IItemRenderer {
public TransparentNodeItem(Block b) {
super(b);
setHasSubtypes(true);
setUnlocalizedName("TransparentNodeItem");
}
@Override
public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata) {
if (world.isRemote) return false;
TransparentNodeDescriptor descriptor = getDescriptor(stack);
Direction direction = Direction.fromIntMinecraftSide(side).getInverse();
Direction front = descriptor.getFrontFromPlace(direction, player);
int[] v = new int[]{descriptor.getSpawnDeltaX(), descriptor.getSpawnDeltaY(), descriptor.getSpawnDeltaZ()};
front.rotateFromXN(v);
x += v[0];
y += v[1];
z += v[2];
Block bb = world.getBlock(x, y, z);
if (bb.isReplaceable(world, x, y, z)) ;
//if(world.getBlock(x, y, z) != Blocks.air) return false;
Coordonate coord = new Coordonate(x, y, z, world);
String error;
if ((error = descriptor.checkCanPlace(coord, front)) != null) {
Utils.addChatMessage(player, error);
return false;
}
GhostGroup ghostgroup = descriptor.getGhostGroup(front);
if (ghostgroup != null) ghostgroup.plot(coord, coord, descriptor.getGhostGroupUuid());
TransparentNode node = new TransparentNode();
node.onBlockPlacedBy(coord, front, player, stack);
world.setBlock(x, y, z, Block.getBlockFromItem(this), node.getBlockMetadata(), 0x03);//caca1.5.1
((NodeBlock) Block.getBlockFromItem(this)).onBlockPlacedBy(world, x, y, z, direction, player, metadata);
node.checkCanStay(true);
return true;
}
@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
TransparentNodeDescriptor d = getDescriptor(item);
if (Utils.nullCheck(d)) return false;
return d.handleRenderType(item, type);
}
@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item,
ItemRendererHelper helper) {
return getDescriptor(item).shouldUseRenderHelper(type, item, helper);
}
public boolean shouldUseRenderHelperEln(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
return getDescriptor(item).shouldUseRenderHelperEln(type, item, helper);
}
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
Minecraft.getMinecraft().mcProfiler.startSection("TransparentNodeItem");
if (shouldUseRenderHelperEln(type, item, null)) {
switch (type) {
case ENTITY:
GL11.glTranslatef(0.00f, 0.3f, 0.0f);
break;
case EQUIPPED_FIRST_PERSON:
GL11.glTranslatef(0.50f, 1, 0.5f);
break;
case EQUIPPED:
GL11.glTranslatef(0.50f, 1, 0.5f);
break;
case FIRST_PERSON_MAP:
break;
case INVENTORY:
GL11.glRotatef(90, 0, 1, 0);
break;
default:
break;
}
}
getDescriptor(item).renderItem(type, item, data);
Minecraft.getMinecraft().mcProfiler.endSection();
}
}