Mana Tablets render on the player's belt. (if there's one)

This commit is contained in:
Lizbeth Rika committed 2015-01-23 20:10:28 +00:00
1 parent eb27b59c69
commit 4f2e895fa2
1 file changed
+55 -1
@@ -11,15 +11,26 @@
*/
package vazkii.botania.client.core.handler;
import java.awt.Color;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.ItemRenderer;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraftforge.client.event.RenderPlayerEvent;
import org.lwjgl.opengl.GL11;
import vazkii.botania.api.item.IBaubleRender;
import vazkii.botania.api.item.IBaubleRender.Helper;
import vazkii.botania.api.item.IBaubleRender.RenderType;
import vazkii.botania.common.core.handler.ConfigHandler;
import vazkii.botania.common.item.ModItems;
import baubles.common.container.InventoryBaubles;
import baubles.common.lib.PlayerHandler;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
@@ -35,7 +46,9 @@ public final class BaubleRenderHandler {
InventoryBaubles inv = PlayerHandler.getPlayerBaubles(player);
dispatchRenders(inv, event, RenderType.BODY);
if(inv.getStackInSlot(3) != null)
renderManaTablet(event);
float yaw = player.prevRotationYawHead + (player.rotationYawHead - player.prevRotationYawHead) * event.partialRenderTick;
float yawOffset = player.prevRenderYawOffset + (player.renderYawOffset - player.prevRenderYawOffset) * event.partialRenderTick;
float pitch = player.prevRotationPitch + (player.rotationPitch - player.prevRotationPitch) * event.partialRenderTick;
@@ -59,5 +72,46 @@ public final class BaubleRenderHandler {
}
}
}
private void renderManaTablet(RenderPlayerEvent event) {
EntityPlayer player = event.entityPlayer;
boolean renderedOne = false;
for(int i = 0; i < player.inventory.getSizeInventory(); i++) {
ItemStack stack = player.inventory.getStackInSlot(i);
if(stack != null && stack.getItem() == ModItems.manaTablet) {
Item item = stack.getItem();
GL11.glPushMatrix();
Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture);
Helper.rotateIfSneaking(event.entityPlayer);
boolean armor = event.entityPlayer.getCurrentArmor(1) != null;
GL11.glRotatef(180F, 1F, 0F, 0F);
GL11.glRotatef(90F, 0F, 1F, 0F);
GL11.glTranslatef(-0.25F, -0.85F, renderedOne ? (armor ? 0.2F : 0.28F) : (armor ? -0.3F : -0.25F));
GL11.glScalef(0.5F, 0.5F, 0.5F);
GL11.glColor3f(1F, 1F, 1F);
int light = 15728880;
int lightmapX = light % 65536;
int lightmapY = light / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, lightmapX, lightmapY);
for(int j = 0; j < 2; j++) {
IIcon icon = item.getIcon(stack, j);
float f = icon.getMinU();
float f1 = icon.getMaxU();
float f2 = icon.getMinV();
float f3 = icon.getMaxV();
ItemRenderer.renderItemIn2D(Tessellator.instance, f1, f2, f, f3, icon.getIconWidth(), icon.getIconHeight(), 1F / 16F);
Color color = new Color(item.getColorFromItemStack(stack, 1));
GL11.glColor3ub((byte) color.getRed(), (byte) color.getGreen(), (byte) color.getBlue());
}
GL11.glPopMatrix();
if(renderedOne)
return;
renderedOne = true;
}
}
}
}