package minefantasy.client; /** * * @author Anonymous Productions * * Sources are provided for educational reasons. * though small bits of code, or methods can be used in your own creations. */ import minefantasy.item.I2HWeapon; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.inventory.GuiInventory; import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumAction; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.util.Icon; import net.minecraftforge.client.IItemRenderer; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import cpw.mods.fml.client.FMLClientHandler; public class MFSawRenderer implements IItemRenderer { RenderItem renderItem = new RenderItem(); private float scale; public MFSawRenderer() { this(1.0F); } public MFSawRenderer(float Sc) { scale = Sc; } @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) { return type.equals(ItemRenderType.EQUIPPED); } @Override public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { return false; } @Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { Minecraft mc = FMLClientHandler.instance().getClient(); if (type.equals(ItemRenderType.EQUIPPED)) { EntityLivingBase player = null; for(int a = 0; a < data.length; a ++) { if(data[a] instanceof EntityLivingBase) { player = (EntityLivingBase)data[a]; } } renderWeaponAsItem(item, player); } } private void renderFirstPerson(ItemStack item, EntityLivingBase player) { GL11.glPushMatrix(); GL11.glTranslatef(-1.2F, 1.3F, 0.0F); boolean flying = false; if(player instanceof EntityPlayer) { flying = ((EntityPlayer)player).capabilities.isFlying; } if(player.fallDistance > 3 && !flying) { GL11.glRotatef(90, 1, 0, 0); GL11.glTranslatef(0.25F, 0, 0.8F); } renderWeaponAsItem(item, player); GL11.glPopMatrix(); } private void renderWeapon(ItemStack item, EntityLivingBase player) { GL11.glTranslatef(-0.87F, -0.2F, 0.0F); GL11.glRotatef(45, 0, 0, 1); renderWeaponAsItem(item, player); } private boolean isFirstPerson(EntityLivingBase player) { Minecraft mc = FMLClientHandler.instance().getClient(); return mc.gameSettings.thirdPersonView == 0 && player == mc.thePlayer && !(mc.currentScreen instanceof GuiInventory); } private void renderWeaponAsItem(ItemStack item, EntityLivingBase player) { GL11.glPushMatrix(); Icon icon = item.getIconIndex(); Minecraft mc = FMLClientHandler.instance().getClient(); mc.renderEngine.bindTexture(TextureMap.locationItemsTexture); Tessellator tessellator = Tessellator.instance; float x1 = icon.getMinU(); float x2 = icon.getMaxU(); float y1 = icon.getMinV(); float y2 = icon.getMaxV(); float xOffset = 0.05F+(0.5F * (scale - 1)); float yOffset = 0.35F-(0.5F * (scale - 1)); float xPos = 0.0F+xOffset-yOffset; float yPos = 0.3F-xOffset-yOffset; GL11.glEnable(GL12.GL_RESCALE_NORMAL); GL11.glTranslatef(-xPos, -yPos, 0.0F); GL11.glScalef(scale, scale, 1); if(player == null) { GL11.glTranslatef(0.6F, -0.20F, 0); GL11.glRotatef(90, 0, 0, 1); } ItemRenderer.renderItemIn2D(tessellator, x2, y1, x1, y2, icon.getIconWidth(), icon.getIconHeight(), 0.0625F); if (item != null && item.isItemEnchanted()) { GL11.glDepthFunc(GL11.GL_EQUAL); GL11.glDisable(GL11.GL_LIGHTING); mc.renderEngine.bindTexture(TextureHelperMF.ITEM_GLINT); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_COLOR, GL11.GL_ONE); float var13 = 0.76F; GL11.glColor4f(0.5F * var13, 0.25F * var13, 0.8F * var13, 1.0F); GL11.glMatrixMode(GL11.GL_TEXTURE); GL11.glPushMatrix(); float var14 = 0.125F; GL11.glScalef(var14, var14, var14); float var15 = (float) (System.currentTimeMillis() % 3000L) / 3000.0F * 8.0F; GL11.glTranslatef(var15, 0.0F, 0.0F); GL11.glRotatef(-50.0F, 0.0F, 0.0F, 1.0F); ItemRenderer.renderItemIn2D(tessellator, x2, y1, x1, y2, icon.getIconWidth(), icon.getIconHeight(), 0.0625F); GL11.glPopMatrix(); GL11.glPushMatrix(); GL11.glScalef(var14, var14, var14); var15 = (float) (System.currentTimeMillis() % 4873L) / 4873.0F * 8.0F; GL11.glTranslatef(-var15, 0.0F, 0.0F); GL11.glRotatef(10.0F, 0.0F, 0.0F, 1.0F); ItemRenderer.renderItemIn2D(tessellator, x2, y1, x1, y2, icon.getIconWidth(), icon.getIconHeight(), 0.0625F); GL11.glPopMatrix(); GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glDisable(GL11.GL_BLEND); GL11.glEnable(GL11.GL_LIGHTING); GL11.glDepthFunc(GL11.GL_LEQUAL); } GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glPopMatrix(); } }