use of com.bluepowermod.api.block.ISilkyRemovable in project BluePower by Qmunity.
the class GateBase method renderItem.
@Override
@SideOnly(Side.CLIENT)
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
if (this instanceof ISilkyRemovable) {
if (this instanceof IAdvancedSilkyRemovable) {
((IAdvancedSilkyRemovable) this).readSilkyData(null, 0, 0, 0, item.hasTagCompound() ? item.getTagCompound().getCompoundTag("tileData") : new NBTTagCompound());
} else {
readFromNBT(item.hasTagCompound() ? item.getTagCompound().getCompoundTag("tileData") : new NBTTagCompound());
}
}
GL11.glPushMatrix();
{
RenderHelper rh = RenderHelper.instance;
rh.reset();
if (type == ItemRenderType.EQUIPPED_FIRST_PERSON) {
GL11.glTranslated(-0.25, 0.75, 0.25);
}
if (type == ItemRenderType.ENTITY && item.getItemFrame() != null) {
GL11.glTranslated(19 / 32D, 8 / 16D, 1);
GL11.glRotated(-90, 0, 0, 1);
GL11.glRotated(90, 0, 1, 0);
}
if (type == ItemRenderType.INVENTORY && BluePower.proxy.isSneakingInGui()) {
GuiScreen gui = Minecraft.getMinecraft().currentScreen;
if (gui != null && gui instanceof GuiContainer) {
GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(-45F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(-210F, 1.0F, 0.0F, 0.0F);
GL11.glScaled(1.5, 1.5, 1.5);
GL11.glTranslated(-0.5, 0, 0);
GL11.glTranslated(0, -0.5, 0);
GL11.glRotated(-90, 1, 0, 0);
GL11.glTranslated(0, 0.5, 0);
}
}
Tessellator.instance.startDrawingQuads();
if (shouldRenderOnPass(0))
renderStatic(new Vec3i(0, 0, 0), rh, RenderBlocks.getInstance(), 0);
rh.reset();
if (shouldRenderOnPass(1))
renderStatic(new Vec3i(0, 0, 0), rh, RenderBlocks.getInstance(), 1);
rh.reset();
Tessellator.instance.draw();
if (shouldRenderOnPass(0))
renderDynamic(new Vec3d(0, 0, 0), 0, 0);
if (shouldRenderOnPass(1))
renderDynamic(new Vec3d(0, 0, 0), 0, 1);
}
GL11.glPopMatrix();
}
use of com.bluepowermod.api.block.ISilkyRemovable in project BluePower by Qmunity.
the class ItemSilkyScrewdriver method onItemUseFirst.
@Override
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
Block block = world.getBlock(x, y, z);
TileEntity te = world.getTileEntity(x, y, z);
ITilePartHolder h = MultipartCompatibility.getPartHolder(world, x, y, z);
if (h != null) {
QMovingObjectPosition mop = h.rayTrace(RayTracer.instance().getStartVector(player), RayTracer.instance().getEndVector(player));
if (mop != null) {
IPart p = mop.getPart();
if (p instanceof ISilkyRemovable && !world.isRemote) {
if (p instanceof IAdvancedSilkyRemovable && !((IAdvancedSilkyRemovable) p).preSilkyRemoval(world, x, y, z))
return false;
NBTTagCompound tag = new NBTTagCompound();
boolean hideTooltip = false;
if (p instanceof IAdvancedSilkyRemovable) {
hideTooltip = ((IAdvancedSilkyRemovable) p).writeSilkyData(world, x, y, z, tag);
} else {
p.writeToNBT(tag);
}
ItemStack droppedStack = p.getItem();
NBTTagCompound stackTag = droppedStack.getTagCompound();
if (stackTag == null) {
stackTag = new NBTTagCompound();
droppedStack.setTagCompound(stackTag);
}
stackTag.setTag("tileData", tag);
stackTag.setBoolean("hideSilkyTooltip", hideTooltip);
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, droppedStack));
h.removePart(p);
if (p instanceof IAdvancedSilkyRemovable)
((IAdvancedSilkyRemovable) p).postSilkyRemoval(world, x, y, z);
stack.damageItem(1, player);
return true;
}
}
return false;
}
if (block instanceof ISilkyRemovable && !world.isRemote) {
if (block instanceof IAdvancedSilkyRemovable && !((IAdvancedSilkyRemovable) block).preSilkyRemoval(world, x, y, z))
return false;
if (te == null)
throw new IllegalStateException("Block doesn't have a TileEntity?! Implementers of ISilkyRemovable should have one. Offender: " + block.getUnlocalizedName());
NBTTagCompound tag = new NBTTagCompound();
te.writeToNBT(tag);
int metadata = world.getBlockMetadata(x, y, z);
Item item = block.getItemDropped(metadata, itemRand, 0);
if (item == null)
throw new NullPointerException("Block returns null for getItemDropped(meta, rand, fortune)! Offender: " + block.getUnlocalizedName());
ItemStack droppedStack = new ItemStack(item, 1, block.damageDropped(metadata));
NBTTagCompound stackTag = droppedStack.getTagCompound();
if (stackTag == null) {
stackTag = new NBTTagCompound();
droppedStack.setTagCompound(stackTag);
}
stackTag.setTag("tileData", tag);
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, droppedStack));
world.setBlockToAir(x, y, z);
if (block instanceof IAdvancedSilkyRemovable)
((IAdvancedSilkyRemovable) block).postSilkyRemoval(world, x, y, z);
stack.damageItem(1, player);
return true;
}
return false;
}
Aggregations