use of minechem.fluid.FluidElement in project Minechem by iopleke.
the class FluidItemRenderingHandler method renderItem.
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
Fluid fluid = ((BlockFluidBase) ((ItemBlock) item.getItem()).field_150939_a).getFluid();
if (fluid instanceof FluidElement) {
RenderingUtil.setColorForElement(((FluidElement) fluid).element);
} else if (fluid instanceof FluidMolecule) {
MoleculeEnum molecule = ((FluidMolecule) fluid).molecule;
GL11.glColor3f(molecule.red, molecule.green, molecule.blue);
}
IIcon icon = ((ItemBlock) item.getItem()).field_150939_a.getBlockTextureFromSide(0);
switch(type) {
case INVENTORY:
RenderingUtil.drawTexturedRectUV(0, 0, 0, 16, 16, icon);
break;
case EQUIPPED_FIRST_PERSON:
case EQUIPPED:
ItemRenderer.renderItemIn2D(Tessellator.instance, icon.getMaxU(), icon.getMinV(), icon.getMinU(), icon.getMaxV(), icon.getIconWidth(), icon.getIconHeight(), 0.0625F);
break;
case ENTITY:
EntityItem entityItem = (EntityItem) data[1];
if (entityItem.worldObj == null) {
float angle = (Minecraft.getSystemTime() % 8000L) / 8000.0F * 360.0F;
GL11.glPushMatrix();
GL11.glRotatef(angle, 0.0F, 1.0F, 0.0F);
GL11.glTranslatef(-0.2F, -0.5F, 0.0F);
renderItemAsEntity(item, icon);
GL11.glPopMatrix();
} else {
renderItemAsEntity(item, icon);
}
break;
default:
break;
}
}
use of minechem.fluid.FluidElement in project Minechem by iopleke.
the class ElementItem 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) {
TileEntity te = world.getTileEntity(x, y, z);
boolean result = !world.isRemote;
if (te != null && te instanceof IFluidHandler && !player.isSneaking() && !(te instanceof IInventory)) {
if (stack.getItemDamage() != 0) {
int filled = 0;
for (int i = 0; i < 6; i++) {
FluidElement fluid = FluidHelper.elements.get(getElement(stack));
if (fluid == null) {
return super.onItemUseFirst(stack, player, world, x, y, z, side, hitX, hitY, hitZ);
}
filled = ((IFluidHandler) te).fill(ForgeDirection.getOrientation(i), new FluidStack(fluid, 125), false);
if (filled > 0) {
if (result) {
((IFluidHandler) te).fill(ForgeDirection.getOrientation(i), new FluidStack(FluidHelper.elements.get(getElement(stack)), 125), true);
}
if (!player.capabilities.isCreativeMode) {
MinechemUtil.incPlayerInventory(stack, -1, player, new ItemStack(MinechemItemsRegistration.element, 1, 0));
}
return result || stack.stackSize <= 0;
}
}
} else {
FluidStack drained = null;
Fluid fluid = MinechemUtil.getFluid((IFluidHandler) te);
ElementEnum element = MinechemUtil.getElement(fluid);
if (element != null) {
for (int i = 0; i < 6; i++) {
drained = ((IFluidHandler) te).drain(ForgeDirection.getOrientation(i), new FluidStack(fluid, 125), false);
if (drained != null && drained.amount > 0) {
if (result) {
((IFluidHandler) te).drain(ForgeDirection.getOrientation(i), new FluidStack(fluid, 125), true);
}
if (!player.capabilities.isCreativeMode) {
MinechemUtil.incPlayerInventory(stack, -1, player, new ItemStack(MinechemItemsRegistration.element, 1, element.atomicNumber()));
}
return result;
}
}
} else {
MoleculeEnum molecule = MinechemUtil.getMolecule(fluid);
if (fluid == FluidRegistry.WATER) {
molecule = MoleculeEnum.water;
}
if (molecule != null) {
for (int i = 0; i < 6; i++) {
drained = ((IFluidHandler) te).drain(ForgeDirection.getOrientation(i), new FluidStack(fluid, 125), false);
if (drained != null && drained.amount > 0) {
if (result) {
((IFluidHandler) te).drain(ForgeDirection.getOrientation(i), new FluidStack(fluid, 125), true);
}
if (!player.capabilities.isCreativeMode) {
MinechemUtil.incPlayerInventory(stack, -1, player, new ItemStack(MinechemItemsRegistration.molecule, 1, molecule.id()));
}
return result;
}
}
}
}
}
return result;
}
return super.onItemUseFirst(stack, player, world, x, y, z, side, hitX, hitY, hitZ);
}
Aggregations