diff --git a/src/main/java/tconstruct/client/RenderItemCopy.java b/src/main/java/tconstruct/client/RenderItemCopy.java deleted file mode 100644 index a0c8b58de71..00000000000 --- a/src/main/java/tconstruct/client/RenderItemCopy.java +++ /dev/null @@ -1,669 +0,0 @@ -package tconstruct.client; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.ItemRenderer; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.client.renderer.texture.TextureManager; -import net.minecraft.client.renderer.texture.TextureMap; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import net.minecraft.util.MathHelper; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.ForgeHooksClient; - -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -import tconstruct.client.block.SmallFontRenderer; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -@SideOnly(Side.CLIENT) -public class RenderItemCopy extends Render -{ - private static final ResourceLocation field_110798_h = new ResourceLocation("textures/misc/enchanted_item_glint.png"); - private RenderBlocks itemRenderBlocks = new RenderBlocks(); - - /** The RNG used in RenderItem (for bobbing itemstacks on the ground) */ - private Random random = new Random(); - public boolean renderWithColor = true; - - /** Defines the zLevel of rendering of item on GUI. */ - public float zLevel; - public static boolean renderInFrame; - - public RenderItemCopy() - { - this.shadowSize = 0.15F; - this.shadowOpaque = 0.75F; - } - - /** - * Renders the item - */ - public void doRenderItem (EntityItem par1EntityItem, double par2, double par4, double par6, float par8, float par9) - { - this.bindEntityTexture(par1EntityItem); - this.random.setSeed(187L); - ItemStack itemstack = par1EntityItem.getEntityItem(); - - if (itemstack.getItem() != null) - { - GL11.glPushMatrix(); - float f2 = shouldBob() ? MathHelper.sin(((float) par1EntityItem.age + par9) / 10.0F + par1EntityItem.hoverStart) * 0.1F + 0.1F : 0F; - float f3 = (((float) par1EntityItem.age + par9) / 20.0F + par1EntityItem.hoverStart) * (180F / (float) Math.PI); - byte b0 = getMiniBlockCount(itemstack); - - GL11.glTranslatef((float) par2, (float) par4 + f2, (float) par6); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - float f4; - float f5; - float f6; - int i; - - Block block = null; - if (itemstack.itemID < Block.blocksList.length) - { - block = Block.blocksList[itemstack.itemID]; - } - - if (ForgeHooksClient.renderEntityItem(par1EntityItem, itemstack, f2, f3, random, renderManager.renderEngine, renderBlocks)) - { - ; - } - else if (itemstack.getItemSpriteNumber() == 0 && block != null && RenderBlocks.renderItemIn3d(Block.blocksList[itemstack.itemID].getRenderType())) - { - GL11.glRotatef(f3, 0.0F, 1.0F, 0.0F); - - if (renderInFrame) - { - GL11.glScalef(1.25F, 1.25F, 1.25F); - GL11.glTranslatef(0.0F, 0.05F, 0.0F); - GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F); - } - - float f7 = 0.25F; - int j = block.getRenderType(); - - if (j == 1 || j == 19 || j == 12 || j == 2) - { - f7 = 0.5F; - } - - GL11.glScalef(f7, f7, f7); - - for (i = 0; i < b0; ++i) - { - GL11.glPushMatrix(); - - if (i > 0) - { - f5 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.2F / f7; - f4 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.2F / f7; - f6 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.2F / f7; - GL11.glTranslatef(f5, f4, f6); - } - - f5 = 1.0F; - this.itemRenderBlocks.renderBlockAsItem(block, itemstack.getItemDamage(), f5); - GL11.glPopMatrix(); - } - } - else - { - float f8; - - if (itemstack.getItemSpriteNumber() == 1 && itemstack.getItem().requiresMultipleRenderPasses()) - { - if (renderInFrame) - { - GL11.glScalef(0.5128205F, 0.5128205F, 0.5128205F); - GL11.glTranslatef(0.0F, -0.05F, 0.0F); - } - else - { - GL11.glScalef(0.5F, 0.5F, 0.5F); - } - - for (int k = 0; k < itemstack.getItem().getRenderPasses(itemstack.getItemDamage()); ++k) - { - this.random.setSeed(187L); - Icon icon = itemstack.getItem().getIcon(itemstack, k); - f8 = 1.0F; - - if (this.renderWithColor) - { - i = Item.itemsList[itemstack.itemID].getColorFromItemStack(itemstack, k); - f5 = (float) (i >> 16 & 255) / 255.0F; - f4 = (float) (i >> 8 & 255) / 255.0F; - f6 = (float) (i & 255) / 255.0F; - GL11.glColor4f(f5 * f8, f4 * f8, f6 * f8, 1.0F); - this.renderDroppedItem(par1EntityItem, icon, b0, par9, f5 * f8, f4 * f8, f6 * f8, k); - } - else - { - this.renderDroppedItem(par1EntityItem, icon, b0, par9, 1.0F, 1.0F, 1.0F, k); - } - } - } - else - { - if (renderInFrame) - { - GL11.glScalef(0.5128205F, 0.5128205F, 0.5128205F); - GL11.glTranslatef(0.0F, -0.05F, 0.0F); - } - else - { - GL11.glScalef(0.5F, 0.5F, 0.5F); - } - - Icon icon1 = itemstack.getIconIndex(); - - if (this.renderWithColor) - { - int l = Item.itemsList[itemstack.itemID].getColorFromItemStack(itemstack, 0); - f8 = (float) (l >> 16 & 255) / 255.0F; - float f9 = (float) (l >> 8 & 255) / 255.0F; - f5 = (float) (l & 255) / 255.0F; - f4 = 1.0F; - this.renderDroppedItem(par1EntityItem, icon1, b0, par9, f8 * f4, f9 * f4, f5 * f4); - } - else - { - this.renderDroppedItem(par1EntityItem, icon1, b0, par9, 1.0F, 1.0F, 1.0F); - } - } - } - - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - GL11.glPopMatrix(); - } - } - - protected ResourceLocation func_110796_a (EntityItem par1EntityItem) - { - return this.renderManager.renderEngine.getResourceLocation(par1EntityItem.getEntityItem().getItemSpriteNumber()); - } - - /** - * Renders a dropped item - */ - private void renderDroppedItem (EntityItem par1EntityItem, Icon par2Icon, int par3, float par4, float par5, float par6, float par7) - { - renderDroppedItem(par1EntityItem, par2Icon, par3, par4, par5, par6, par7, 0); - } - - private void renderDroppedItem (EntityItem par1EntityItem, Icon par2Icon, int par3, float par4, float par5, float par6, float par7, int pass) - { - Tessellator tessellator = Tessellator.instance; - - if (par2Icon == null) - { - TextureManager texturemanager = Minecraft.getMinecraft().getTextureManager(); - ResourceLocation resourcelocation = texturemanager.getResourceLocation(par1EntityItem.getEntityItem().getItemSpriteNumber()); - par2Icon = ((TextureMap) texturemanager.getTexture(resourcelocation)).getAtlasSprite("missingno"); - } - - float f4 = ((Icon) par2Icon).getMinU(); - float f5 = ((Icon) par2Icon).getMaxU(); - float f6 = ((Icon) par2Icon).getMinV(); - float f7 = ((Icon) par2Icon).getMaxV(); - float f8 = 1.0F; - float f9 = 0.5F; - float f10 = 0.25F; - float f11; - - if (this.renderManager.options.fancyGraphics) - { - GL11.glPushMatrix(); - - if (renderInFrame) - { - GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F); - } - else - { - GL11.glRotatef((((float) par1EntityItem.age + par4) / 20.0F + par1EntityItem.hoverStart) * (180F / (float) Math.PI), 0.0F, 1.0F, 0.0F); - } - - float f12 = 0.0625F; - f11 = 0.021875F; - ItemStack itemstack = par1EntityItem.getEntityItem(); - int j = itemstack.stackSize; - byte b0 = getMiniItemCount(itemstack); - - GL11.glTranslatef(-f9, -f10, -((f12 + f11) * (float) b0 / 2.0F)); - - for (int k = 0; k < b0; ++k) - { - // Makes items offset when in 3D, like when in 2D, looks much better. Considered a vanilla bug... - if (k > 0 && shouldSpreadItems()) - { - float x = (random.nextFloat() * 2.0F - 1.0F) * 0.3F / 0.5F; - float y = (random.nextFloat() * 2.0F - 1.0F) * 0.3F / 0.5F; - float z = (random.nextFloat() * 2.0F - 1.0F) * 0.3F / 0.5F; - GL11.glTranslatef(x, y, f12 + f11); - } - else - { - GL11.glTranslatef(0f, 0f, f12 + f11); - } - - if (itemstack.getItemSpriteNumber() == 0) - { - this.bindTexture(TextureMap.locationBlocksTexture); - } - else - { - this.bindTexture(TextureMap.locationItemsTexture); - } - - GL11.glColor4f(par5, par6, par7, 1.0F); - ItemRenderer.renderItemIn2D(tessellator, f5, f6, f4, f7, ((Icon) par2Icon).getIconWidth(), ((Icon) par2Icon).getIconHeight(), f12); - - if (itemstack.hasEffect(pass)) - { - GL11.glDepthFunc(GL11.GL_EQUAL); - GL11.glDisable(GL11.GL_LIGHTING); - this.renderManager.renderEngine.bindTexture(field_110798_h); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_COLOR, GL11.GL_ONE); - float f13 = 0.76F; - GL11.glColor4f(0.5F * f13, 0.25F * f13, 0.8F * f13, 1.0F); - GL11.glMatrixMode(GL11.GL_TEXTURE); - GL11.glPushMatrix(); - float f14 = 0.125F; - GL11.glScalef(f14, f14, f14); - float f15 = (float) (Minecraft.getSystemTime() % 3000L) / 3000.0F * 8.0F; - GL11.glTranslatef(f15, 0.0F, 0.0F); - GL11.glRotatef(-50.0F, 0.0F, 0.0F, 1.0F); - ItemRenderer.renderItemIn2D(tessellator, 0.0F, 0.0F, 1.0F, 1.0F, 255, 255, f12); - GL11.glPopMatrix(); - GL11.glPushMatrix(); - GL11.glScalef(f14, f14, f14); - f15 = (float) (Minecraft.getSystemTime() % 4873L) / 4873.0F * 8.0F; - GL11.glTranslatef(-f15, 0.0F, 0.0F); - GL11.glRotatef(10.0F, 0.0F, 0.0F, 1.0F); - ItemRenderer.renderItemIn2D(tessellator, 0.0F, 0.0F, 1.0F, 1.0F, 255, 255, f12); - GL11.glPopMatrix(); - GL11.glMatrixMode(GL11.GL_MODELVIEW); - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDepthFunc(GL11.GL_LEQUAL); - } - } - - GL11.glPopMatrix(); - } - else - { - for (int l = 0; l < par3; ++l) - { - GL11.glPushMatrix(); - - if (l > 0) - { - f11 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.3F; - float f16 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.3F; - float f17 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.3F; - GL11.glTranslatef(f11, f16, f17); - } - - if (!renderInFrame) - { - GL11.glRotatef(180.0F - this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F); - } - - GL11.glColor4f(par5, par6, par7, 1.0F); - tessellator.startDrawingQuads(); - tessellator.setNormal(0.0F, 1.0F, 0.0F); - tessellator.addVertexWithUV((double) (0.0F - f9), (double) (0.0F - f10), 0.0D, (double) f4, (double) f7); - tessellator.addVertexWithUV((double) (f8 - f9), (double) (0.0F - f10), 0.0D, (double) f5, (double) f7); - tessellator.addVertexWithUV((double) (f8 - f9), (double) (1.0F - f10), 0.0D, (double) f5, (double) f6); - tessellator.addVertexWithUV((double) (0.0F - f9), (double) (1.0F - f10), 0.0D, (double) f4, (double) f6); - tessellator.draw(); - GL11.glPopMatrix(); - } - } - } - - /** - * Renders the item's icon or block into the UI at the specified position. - */ - public void renderItemIntoGUI (SmallFontRenderer par1FontRenderer, TextureManager par2TextureManager, ItemStack par3ItemStack, int par4, int par5) - { - renderItemIntoGUI(par1FontRenderer, par2TextureManager, par3ItemStack, par4, par5, false); - } - - public void renderItemIntoGUI (SmallFontRenderer par1FontRenderer, TextureManager par2TextureManager, ItemStack par3ItemStack, int par4, int par5, boolean renderEffect) - { - int k = par3ItemStack.itemID; - int l = par3ItemStack.getItemDamage(); - Object object = par3ItemStack.getItem() == null ? null : par3ItemStack.getIconIndex(); - float f; - int i1; - float f1; - float f2; - - Block block = (k < Block.blocksList.length ? Block.blocksList[k] : null); - if (block != null && par3ItemStack.getItemSpriteNumber() == 0 && RenderBlocks.renderItemIn3d(Block.blocksList[k].getRenderType())) - { - par2TextureManager.bindTexture(TextureMap.locationBlocksTexture); - GL11.glPushMatrix(); - GL11.glTranslatef((float) (par4 - 2), (float) (par5 + 3), -3.0F + this.zLevel); - GL11.glScalef(10.0F, 10.0F, 10.0F); - GL11.glTranslatef(1.0F, 0.5F, 1.0F); - GL11.glScalef(1.0F, 1.0F, -1.0F); - GL11.glRotatef(210.0F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F); - i1 = Item.itemsList[k].getColorFromItemStack(par3ItemStack, 0); - f = (float) (i1 >> 16 & 255) / 255.0F; - f1 = (float) (i1 >> 8 & 255) / 255.0F; - f2 = (float) (i1 & 255) / 255.0F; - - if (this.renderWithColor) - { - GL11.glColor4f(f, f1, f2, 1.0F); - } - - GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F); - this.itemRenderBlocks.useInventoryTint = this.renderWithColor; - this.itemRenderBlocks.renderBlockAsItem(block, l, 1.0F); - this.itemRenderBlocks.useInventoryTint = true; - GL11.glPopMatrix(); - } - else if (Item.itemsList[k] != null && Item.itemsList[k].requiresMultipleRenderPasses()) - { - GL11.glDisable(GL11.GL_LIGHTING); - - for (int j1 = 0; j1 < Item.itemsList[k].getRenderPasses(l); ++j1) - { - par2TextureManager.bindTexture(par3ItemStack.getItemSpriteNumber() == 0 ? TextureMap.locationBlocksTexture : TextureMap.locationItemsTexture); - Icon icon = Item.itemsList[k].getIcon(par3ItemStack, j1); - int k1 = Item.itemsList[k].getColorFromItemStack(par3ItemStack, j1); - f1 = (float) (k1 >> 16 & 255) / 255.0F; - f2 = (float) (k1 >> 8 & 255) / 255.0F; - float f3 = (float) (k1 & 255) / 255.0F; - - if (this.renderWithColor) - { - GL11.glColor4f(f1, f2, f3, 1.0F); - } - - this.renderIcon(par4, par5, icon, 16, 16); - - if (par3ItemStack.hasEffect(j1)) - { - renderEffect(par2TextureManager, par4, par5); - } - } - - GL11.glEnable(GL11.GL_LIGHTING); - } - else - { - GL11.glDisable(GL11.GL_LIGHTING); - ResourceLocation resourcelocation = par2TextureManager.getResourceLocation(par3ItemStack.getItemSpriteNumber()); - par2TextureManager.bindTexture(resourcelocation); - - if (object == null) - { - object = ((TextureMap) Minecraft.getMinecraft().getTextureManager().getTexture(resourcelocation)).getAtlasSprite("missingno"); - } - - i1 = Item.itemsList[k].getColorFromItemStack(par3ItemStack, 0); - f = (float) (i1 >> 16 & 255) / 255.0F; - f1 = (float) (i1 >> 8 & 255) / 255.0F; - f2 = (float) (i1 & 255) / 255.0F; - - if (this.renderWithColor) - { - GL11.glColor4f(f, f1, f2, 1.0F); - } - - this.renderIcon(par4, par5, (Icon) object, 16, 16); - GL11.glEnable(GL11.GL_LIGHTING); - - if (par3ItemStack.hasEffect(0)) - { - renderEffect(par2TextureManager, par4, par5); - } - } - - GL11.glEnable(GL11.GL_CULL_FACE); - } - - private void renderEffect (TextureManager manager, int x, int y) - { - GL11.glDepthFunc(GL11.GL_GREATER); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDepthMask(false); - manager.bindTexture(field_110798_h); - this.zLevel -= 50.0F; - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_DST_COLOR, GL11.GL_DST_COLOR); - GL11.glColor4f(0.5F, 0.25F, 0.8F, 1.0F); - this.renderGlint(x * 431278612 + y * 32178161, x - 2, y - 2, 20, 20); - GL11.glDisable(GL11.GL_BLEND); - GL11.glDepthMask(true); - this.zLevel += 50.0F; - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDepthFunc(GL11.GL_LEQUAL); - } - - /** - * Render the item's icon or block into the GUI, including the glint effect. - */ - public void renderItemAndEffectIntoGUI (SmallFontRenderer par1FontRenderer, TextureManager par2TextureManager, ItemStack par3ItemStack, int par4, int par5) - { - if (par3ItemStack != null) - { - if (!ForgeHooksClient.renderInventoryItem(renderBlocks, par2TextureManager, par3ItemStack, renderWithColor, zLevel, (float) par4, (float) par5)) - { - this.renderItemIntoGUI(par1FontRenderer, par2TextureManager, par3ItemStack, par4, par5, true); - } - - /* Modders must handle this themselves if they use custom renderers! - if (par3ItemStack.hasEffect()) - { - GL11.glDepthFunc(GL11.GL_GREATER); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDepthMask(false); - par2TextureManager.bindTexture(field_110798_h); - this.zLevel -= 50.0F; - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_DST_COLOR, GL11.GL_DST_COLOR); - GL11.glColor4f(0.5F, 0.25F, 0.8F, 1.0F); - this.renderGlint(par4 * 431278612 + par5 * 32178161, par4 - 2, par5 - 2, 20, 20); - GL11.glDisable(GL11.GL_BLEND); - GL11.glDepthMask(true); - this.zLevel += 50.0F; - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDepthFunc(GL11.GL_LEQUAL); - } - */ - } - } - - private void renderGlint (int par1, int par2, int par3, int par4, int par5) - { - for (int j1 = 0; j1 < 2; ++j1) - { - if (j1 == 0) - { - GL11.glBlendFunc(GL11.GL_SRC_COLOR, GL11.GL_ONE); - } - - if (j1 == 1) - { - GL11.glBlendFunc(GL11.GL_SRC_COLOR, GL11.GL_ONE); - } - - float f = 0.00390625F; - float f1 = 0.00390625F; - float f2 = (float) (Minecraft.getSystemTime() % (long) (3000 + j1 * 1873)) / (3000.0F + (float) (j1 * 1873)) * 256.0F; - float f3 = 0.0F; - Tessellator tessellator = Tessellator.instance; - float f4 = 4.0F; - - if (j1 == 1) - { - f4 = -1.0F; - } - - tessellator.startDrawingQuads(); - tessellator.addVertexWithUV((double) (par2 + 0), (double) (par3 + par5), (double) this.zLevel, (double) ((f2 + (float) par5 * f4) * f), (double) ((f3 + (float) par5) * f1)); - tessellator.addVertexWithUV((double) (par2 + par4), (double) (par3 + par5), (double) this.zLevel, (double) ((f2 + (float) par4 + (float) par5 * f4) * f), - (double) ((f3 + (float) par5) * f1)); - tessellator.addVertexWithUV((double) (par2 + par4), (double) (par3 + 0), (double) this.zLevel, (double) ((f2 + (float) par4) * f), (double) ((f3 + 0.0F) * f1)); - tessellator.addVertexWithUV((double) (par2 + 0), (double) (par3 + 0), (double) this.zLevel, (double) ((f2 + 0.0F) * f), (double) ((f3 + 0.0F) * f1)); - tessellator.draw(); - } - } - - /** - * Renders the item's overlay information. Examples being stack count or damage on top of the item's image at the - * specified position. - */ - public void renderItemOverlayIntoGUI (SmallFontRenderer par1FontRenderer, TextureManager par2TextureManager, ItemStack par3ItemStack, int par4, int par5) - { - this.renderItemOverlayIntoGUI(par1FontRenderer, par2TextureManager, par3ItemStack, par4, par5, (String) null); - } - - public void renderItemOverlayIntoGUI (SmallFontRenderer par1FontRenderer, TextureManager par2TextureManager, ItemStack par3ItemStack, int par4, int par5, String par6Str) - { - if (par3ItemStack != null) - { - if (par3ItemStack.stackSize > 1 || par6Str != null) - { - String s1 = par6Str == null ? String.valueOf(par3ItemStack.stackSize) : par6Str; - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_DEPTH_TEST); - par1FontRenderer.drawStringWithShadow(s1, par4 + 19 - 2 - par1FontRenderer.getStringWidth(s1), par5 + 6 + 3, 16777215); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_DEPTH_TEST); - } - - if (par3ItemStack.isItemDamaged()) - { - int k = (int) Math.round(13.0D - (double) par3ItemStack.getItemDamageForDisplay() * 13.0D / (double) par3ItemStack.getMaxDamage()); - int l = (int) Math.round(255.0D - (double) par3ItemStack.getItemDamageForDisplay() * 255.0D / (double) par3ItemStack.getMaxDamage()); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_DEPTH_TEST); - GL11.glDisable(GL11.GL_TEXTURE_2D); - Tessellator tessellator = Tessellator.instance; - int i1 = 255 - l << 16 | l << 8; - int j1 = (255 - l) / 4 << 16 | 16128; - this.renderQuad(tessellator, par4 + 2, par5 + 13, 13, 2, 0); - this.renderQuad(tessellator, par4 + 2, par5 + 13, 12, 1, j1); - this.renderQuad(tessellator, par4 + 2, par5 + 13, k, 1, i1); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_DEPTH_TEST); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - } - } - } - - /** - * Adds a quad to the tesselator at the specified position with the set width and height and color. Args: - * tessellator, x, y, width, height, color - */ - private void renderQuad (Tessellator par1Tessellator, int par2, int par3, int par4, int par5, int par6) - { - par1Tessellator.startDrawingQuads(); - par1Tessellator.setColorOpaque_I(par6); - par1Tessellator.addVertex((double) (par2 + 0), (double) (par3 + 0), 0.0D); - par1Tessellator.addVertex((double) (par2 + 0), (double) (par3 + par5), 0.0D); - par1Tessellator.addVertex((double) (par2 + par4), (double) (par3 + par5), 0.0D); - par1Tessellator.addVertex((double) (par2 + par4), (double) (par3 + 0), 0.0D); - par1Tessellator.draw(); - } - - public void renderIcon (int par1, int par2, Icon par3Icon, int par4, int par5) - { - Tessellator tessellator = Tessellator.instance; - tessellator.startDrawingQuads(); - tessellator.addVertexWithUV((double) (par1 + 0), (double) (par2 + par5), (double) this.zLevel, (double) par3Icon.getMinU(), (double) par3Icon.getMaxV()); - tessellator.addVertexWithUV((double) (par1 + par4), (double) (par2 + par5), (double) this.zLevel, (double) par3Icon.getMaxU(), (double) par3Icon.getMaxV()); - tessellator.addVertexWithUV((double) (par1 + par4), (double) (par2 + 0), (double) this.zLevel, (double) par3Icon.getMaxU(), (double) par3Icon.getMinV()); - tessellator.addVertexWithUV((double) (par1 + 0), (double) (par2 + 0), (double) this.zLevel, (double) par3Icon.getMinU(), (double) par3Icon.getMinV()); - tessellator.draw(); - } - - protected ResourceLocation getEntityTexture (Entity par1Entity) - { - return this.func_110796_a((EntityItem) par1Entity); - } - - /** - * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then - * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic - * (Render 1) - ret = 2; - if (stack.stackSize > 5) - ret = 3; - if (stack.stackSize > 20) - ret = 4; - if (stack.stackSize > 40) - ret = 5; - return ret; - } - - /** - * Allows for a subclass to override how many rendered items appear in a - * "mini item 3d stack" - * @param stack - * @return - */ - public byte getMiniItemCount (ItemStack stack) - { - byte ret = 1; - if (stack.stackSize > 1) - ret = 2; - if (stack.stackSize > 15) - ret = 3; - if (stack.stackSize > 31) - ret = 4; - return ret; - } -} diff --git a/src/main/java/tconstruct/client/TProxyClient.java b/src/main/java/tconstruct/client/TProxyClient.java index 200385252da..e22fcf119b9 100644 --- a/src/main/java/tconstruct/client/TProxyClient.java +++ b/src/main/java/tconstruct/client/TProxyClient.java @@ -12,6 +12,7 @@ import javax.xml.parsers.*; import mantle.client.MProxyClient; +import mantle.client.block.SmallFontRenderer; import mantle.client.gui.GuiManual; import mantle.lib.client.MantleClientRegistry; import net.minecraft.block.Block; @@ -48,7 +49,6 @@ import tconstruct.common.*; import tconstruct.entity.*; import tconstruct.entity.item.*; -import tconstruct.entity.item.*; import tconstruct.entity.projectile.*; import tconstruct.inventory.ContainerLandmine; import tconstruct.library.TConstructRegistry; @@ -558,7 +558,6 @@ public void initManualRecipes () } - void initManualPages () { MProxyClient.registerManualPage("materialstats", MaterialPage.class); diff --git a/src/main/java/tconstruct/client/block/SmallFontRenderer.java b/src/main/java/tconstruct/client/block/SmallFontRenderer.java deleted file mode 100644 index c4d5fa954dc..00000000000 --- a/src/main/java/tconstruct/client/block/SmallFontRenderer.java +++ /dev/null @@ -1,1043 +0,0 @@ -package tconstruct.client.block; - -import java.awt.image.BufferedImage; -import java.io.IOException; -import java.io.InputStream; -import java.text.Bidi; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; -import java.util.Random; - -import javax.imageio.ImageIO; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.texture.TextureManager; -import net.minecraft.client.resources.ResourceManager; -import net.minecraft.client.resources.ResourceManagerReloadListener; -import net.minecraft.client.settings.GameSettings; -import net.minecraft.util.ChatAllowedCharacters; -import net.minecraft.util.ResourceLocation; - -import org.lwjgl.opengl.GL11; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -@SideOnly(Side.CLIENT) -public class SmallFontRenderer implements ResourceManagerReloadListener -{ - private static final ResourceLocation[] field_111274_c = new ResourceLocation[256]; - - /** Array of width of all the characters in default.png */ - private int[] charWidth = new int[256]; - - /** the height in pixels of default text */ - public int FONT_HEIGHT = 9; - public Random fontRandom = new Random(); - - /** - * Array of the start/end column (in upper/lower nibble) for every glyph in the /font directory. - */ - private byte[] glyphWidth = new byte[65536]; - - /** - * Array of RGB triplets defining the 16 standard chat colors followed by 16 darker version of the same colors for - * drop shadows. - */ - private int[] colorCode = new int[32]; - private final ResourceLocation field_111273_g; - - /** The RenderEngine used to load and setup glyph textures. */ - private final TextureManager renderEngine; - - /** Current X coordinate at which to draw the next character. */ - private float posX; - - /** Current Y coordinate at which to draw the next character. */ - private float posY; - - /** - * If true, strings should be rendered with Unicode fonts instead of the default.png font - */ - private boolean unicodeFlag; - - /** - * If true, the Unicode Bidirectional Algorithm should be run before rendering any string. - */ - private boolean bidiFlag; - - /** Used to specify new red value for the current color. */ - private float red; - - /** Used to specify new blue value for the current color. */ - private float blue; - - /** Used to specify new green value for the current color. */ - private float green; - - /** Used to speify new alpha value for the current color. */ - private float alpha; - - /** Text color of the currently rendering string. */ - private int textColor; - - /** Set if the "k" style (random) is active in currently rendering string */ - private boolean randomStyle; - - /** Set if the "l" style (bold) is active in currently rendering string */ - private boolean boldStyle; - - /** Set if the "o" style (italic) is active in currently rendering string */ - private boolean italicStyle; - - /** - * Set if the "n" style (underlined) is active in currently rendering string - */ - private boolean underlineStyle; - - /** - * Set if the "m" style (strikethrough) is active in currently rendering string - */ - private boolean strikethroughStyle; - - public SmallFontRenderer(GameSettings par1GameSettings, ResourceLocation par2ResourceLocation, TextureManager par3TextureManager, boolean par4) - { - this.field_111273_g = par2ResourceLocation; - this.renderEngine = par3TextureManager; - this.unicodeFlag = true; - par3TextureManager.bindTexture(this.field_111273_g); - - for (int i = 0; i < 32; ++i) - { - int j = (i >> 3 & 1) * 85; - int k = (i >> 2 & 1) * 170 + j; - int l = (i >> 1 & 1) * 170 + j; - int i1 = (i >> 0 & 1) * 170 + j; - - if (i == 6) - { - k += 85; - } - - if (par1GameSettings.anaglyph) - { - int j1 = (k * 30 + l * 59 + i1 * 11) / 100; - int k1 = (k * 30 + l * 70) / 100; - int l1 = (k * 30 + i1 * 70) / 100; - k = j1; - l = k1; - i1 = l1; - } - - if (i >= 16) - { - k /= 4; - l /= 4; - i1 /= 4; - } - - this.colorCode[i] = (k & 255) << 16 | (l & 255) << 8 | i1 & 255; - } - - this.readGlyphSizes(); - } - - public void onResourceManagerReload (ResourceManager par1ResourceManager) - { - this.func_111272_d(); - } - - private void func_111272_d () - { - BufferedImage bufferedimage; - - try - { - bufferedimage = ImageIO.read(Minecraft.getMinecraft().getResourceManager().getResource(this.field_111273_g).getInputStream()); - } - catch (IOException ioexception) - { - throw new RuntimeException(ioexception); - } - - int i = bufferedimage.getWidth(); - int j = bufferedimage.getHeight(); - int[] aint = new int[i * j]; - bufferedimage.getRGB(0, 0, i, j, aint, 0, i); - int k = j / 16; - int l = i / 16; - byte b0 = 1; - float f = 8.0F / (float) l; - int i1 = 0; - - while (i1 < 256) - { - int j1 = i1 % 16; - int k1 = i1 / 16; - - if (i1 == 32) - { - this.charWidth[i1] = 3 + b0; - } - - int l1 = l - 1; - - while (true) - { - if (l1 >= 0) - { - int i2 = j1 * l + l1; - boolean flag = true; - - for (int j2 = 0; j2 < k && flag; ++j2) - { - int k2 = (k1 * l + j2) * i; - - if ((aint[i2 + k2] >> 24 & 255) != 0) - { - flag = false; - } - } - - if (flag) - { - --l1; - continue; - } - } - - ++l1; - this.charWidth[i1] = (int) (0.5D + (double) ((float) l1 * f)) + b0; - ++i1; - break; - } - } - } - - private void readGlyphSizes () - { - try - { - InputStream inputstream = Minecraft.getMinecraft().getResourceManager().getResource(new ResourceLocation("font/glyph_sizes.bin")).getInputStream(); - inputstream.read(this.glyphWidth); - } - catch (IOException ioexception) - { - throw new RuntimeException(ioexception); - } - } - - /** - * Pick how to render a single character and return the width used. - */ - private float renderCharAtPos (int par1, char par2, boolean par3) - { - return par2 == 32 ? 4.0F : (par1 > 0 && !this.unicodeFlag ? this.renderDefaultChar(par1 + 32, par3) : this.renderUnicodeChar(par2, par3)); - } - - /** - * Render a single character with the default.png font at current (posX,posY) location... - */ - private float renderDefaultChar (int par1, boolean par2) - { - float f = (float) (par1 % 16 * 8); - float f1 = (float) (par1 / 16 * 8); - float f2 = par2 ? 1.0F : 0.0F; - this.renderEngine.bindTexture(this.field_111273_g); - float f3 = (float) this.charWidth[par1] - 0.01F; - GL11.glBegin(GL11.GL_TRIANGLE_STRIP); - GL11.glTexCoord2f(f / 128.0F, f1 / 128.0F); - GL11.glVertex3f(this.posX + f2, this.posY, 0.0F); - GL11.glTexCoord2f(f / 128.0F, (f1 + 7.99F) / 128.0F); - GL11.glVertex3f(this.posX - f2, this.posY + 7.99F, 0.0F); - GL11.glTexCoord2f((f + f3 - 1.0F) / 128.0F, f1 / 128.0F); - GL11.glVertex3f(this.posX + f3 - 1.0F + f2, this.posY, 0.0F); - GL11.glTexCoord2f((f + f3 - 1.0F) / 128.0F, (f1 + 7.99F) / 128.0F); - GL11.glVertex3f(this.posX + f3 - 1.0F - f2, this.posY + 7.99F, 0.0F); - GL11.glEnd(); - return (float) this.charWidth[par1]; - } - - private ResourceLocation func_111271_a (int par1) - { - if (field_111274_c[par1] == null) - { - field_111274_c[par1] = new ResourceLocation(String.format("textures/font/unicode_page_%02x.png", new Object[] { Integer.valueOf(par1) })); - } - - return field_111274_c[par1]; - } - - /** - * Load one of the /font/glyph_XX.png into a new GL texture and store the texture ID in glyphTextureName array. - */ - private void loadGlyphTexture (int par1) - { - this.renderEngine.bindTexture(this.func_111271_a(par1)); - } - - /** - * Render a single Unicode character at current (posX,posY) location using one of the /font/glyph_XX.png files... - */ - private float renderUnicodeChar (char par1, boolean par2) - { - if (this.glyphWidth[par1] == 0) - { - return 0.0F; - } - else - { - int i = par1 / 256; - this.loadGlyphTexture(i); - int j = this.glyphWidth[par1] >>> 4; - int k = this.glyphWidth[par1] & 15; - float f = (float) j; - float f1 = (float) (k + 1); - float f2 = (float) (par1 % 16 * 16) + f; - float f3 = (float) ((par1 & 255) / 16 * 16); - float f4 = f1 - f - 0.02F; - float f5 = par2 ? 1.0F : 0.0F; - GL11.glBegin(GL11.GL_TRIANGLE_STRIP); - GL11.glTexCoord2f(f2 / 256.0F, f3 / 256.0F); - GL11.glVertex3f(this.posX + f5, this.posY, 0.0F); - GL11.glTexCoord2f(f2 / 256.0F, (f3 + 15.98F) / 256.0F); - GL11.glVertex3f(this.posX - f5, this.posY + 7.99F, 0.0F); - GL11.glTexCoord2f((f2 + f4) / 256.0F, f3 / 256.0F); - GL11.glVertex3f(this.posX + f4 / 2.0F + f5, this.posY, 0.0F); - GL11.glTexCoord2f((f2 + f4) / 256.0F, (f3 + 15.98F) / 256.0F); - GL11.glVertex3f(this.posX + f4 / 2.0F - f5, this.posY + 7.99F, 0.0F); - GL11.glEnd(); - return (f1 - f) / 2.0F + 1.0F; - } - } - - /** - * Draws the specified string with a shadow. - */ - public int drawStringWithShadow (String par1Str, int par2, int par3, int par4) - { - return this.drawString(par1Str, par2, par3, par4, true); - } - - /** - * Draws the specified string. - */ - public int drawString (String par1Str, int par2, int par3, int par4) - { - return this.drawString(par1Str, par2, par3, par4, false); - } - - /** - * Draws the specified string. Args: string, x, y, color, dropShadow - */ - public int drawString (String par1Str, int par2, int par3, int par4, boolean par5) - { - this.resetStyles(); - - if (this.bidiFlag) - { - par1Str = this.bidiReorder(par1Str); - } - - int l; - - if (par5) - { - l = this.renderString(par1Str, par2 + 1, par3 + 1, par4, true); - l = Math.max(l, this.renderString(par1Str, par2, par3, par4, false)); - } - else - { - l = this.renderString(par1Str, par2, par3, par4, false); - } - - return l; - } - - /** - * Apply Unicode Bidirectional Algorithm to string and return a new possibly reordered string for visual rendering. - */ - private String bidiReorder (String par1Str) - { - if (par1Str != null && Bidi.requiresBidi(par1Str.toCharArray(), 0, par1Str.length())) - { - Bidi bidi = new Bidi(par1Str, -2); - byte[] abyte = new byte[bidi.getRunCount()]; - String[] astring = new String[abyte.length]; - int i; - - for (int j = 0; j < abyte.length; ++j) - { - int k = bidi.getRunStart(j); - i = bidi.getRunLimit(j); - int l = bidi.getRunLevel(j); - String s1 = par1Str.substring(k, i); - abyte[j] = (byte) l; - astring[j] = s1; - } - - String[] astring1 = (String[]) astring.clone(); - Bidi.reorderVisually(abyte, 0, astring, 0, abyte.length); - StringBuilder stringbuilder = new StringBuilder(); - i = 0; - - while (i < astring.length) - { - byte b0 = abyte[i]; - int i1 = 0; - - while (true) - { - if (i1 < astring1.length) - { - if (!astring1[i1].equals(astring[i])) - { - ++i1; - continue; - } - - b0 = abyte[i1]; - } - - if ((b0 & 1) == 0) - { - stringbuilder.append(astring[i]); - } - else - { - for (i1 = astring[i].length() - 1; i1 >= 0; --i1) - { - char c0 = astring[i].charAt(i1); - - if (c0 == 40) - { - c0 = 41; - } - else if (c0 == 41) - { - c0 = 40; - } - - stringbuilder.append(c0); - } - } - - ++i; - break; - } - } - - return stringbuilder.toString(); - } - else - { - return par1Str; - } - } - - /** - * Reset all style flag fields in the class to false; called at the start of string rendering - */ - private void resetStyles () - { - this.randomStyle = false; - this.boldStyle = false; - this.italicStyle = false; - this.underlineStyle = false; - this.strikethroughStyle = false; - } - - /** - * Render a single line string at the current (posX,posY) and update posX - */ - private void renderStringAtPos (String par1Str, boolean par2) - { - for (int i = 0; i < par1Str.length(); ++i) - { - char c0 = par1Str.charAt(i); - int j; - int k; - - if (c0 == 167 && i + 1 < par1Str.length()) - { - j = "0123456789abcdefklmnor".indexOf(par1Str.toLowerCase().charAt(i + 1)); - - if (j < 16) - { - this.randomStyle = false; - this.boldStyle = false; - this.strikethroughStyle = false; - this.underlineStyle = false; - this.italicStyle = false; - - if (j < 0 || j > 15) - { - j = 15; - } - - if (par2) - { - j += 16; - } - - k = this.colorCode[j]; - this.textColor = k; - GL11.glColor4f((float) (k >> 16) / 255.0F, (float) (k >> 8 & 255) / 255.0F, (float) (k & 255) / 255.0F, this.alpha); - } - else if (j == 16) - { - this.randomStyle = true; - } - else if (j == 17) - { - this.boldStyle = true; - } - else if (j == 18) - { - this.strikethroughStyle = true; - } - else if (j == 19) - { - this.underlineStyle = true; - } - else if (j == 20) - { - this.italicStyle = true; - } - else if (j == 21) - { - this.randomStyle = false; - this.boldStyle = false; - this.strikethroughStyle = false; - this.underlineStyle = false; - this.italicStyle = false; - GL11.glColor4f(this.red, this.blue, this.green, this.alpha); - } - - ++i; - } - else - { - j = ChatAllowedCharacters.allowedCharacters.indexOf(c0); - - if (this.randomStyle && j > 0) - { - do - { - k = this.fontRandom.nextInt(ChatAllowedCharacters.allowedCharacters.length()); - } while (this.charWidth[j + 32] != this.charWidth[k + 32]); - - j = k; - } - - float f = this.unicodeFlag ? 0.5F : 1.0F; - boolean flag1 = (j <= 0 || this.unicodeFlag) && par2; - - if (flag1) - { - this.posX -= f; - this.posY -= f; - } - - float f1 = this.renderCharAtPos(j, c0, this.italicStyle); - - if (flag1) - { - this.posX += f; - this.posY += f; - } - - if (this.boldStyle) - { - this.posX += f; - - if (flag1) - { - this.posX -= f; - this.posY -= f; - } - - this.renderCharAtPos(j, c0, this.italicStyle); - this.posX -= f; - - if (flag1) - { - this.posX += f; - this.posY += f; - } - - ++f1; - } - - Tessellator tessellator; - - if (this.strikethroughStyle) - { - tessellator = Tessellator.instance; - GL11.glDisable(GL11.GL_TEXTURE_2D); - tessellator.startDrawingQuads(); - tessellator.addVertex((double) this.posX, (double) (this.posY + (float) (this.FONT_HEIGHT / 2)), 0.0D); - tessellator.addVertex((double) (this.posX + f1), (double) (this.posY + (float) (this.FONT_HEIGHT / 2)), 0.0D); - tessellator.addVertex((double) (this.posX + f1), (double) (this.posY + (float) (this.FONT_HEIGHT / 2) - 1.0F), 0.0D); - tessellator.addVertex((double) this.posX, (double) (this.posY + (float) (this.FONT_HEIGHT / 2) - 1.0F), 0.0D); - tessellator.draw(); - GL11.glEnable(GL11.GL_TEXTURE_2D); - } - - if (this.underlineStyle) - { - tessellator = Tessellator.instance; - GL11.glDisable(GL11.GL_TEXTURE_2D); - tessellator.startDrawingQuads(); - int l = this.underlineStyle ? -1 : 0; - tessellator.addVertex((double) (this.posX + (float) l), (double) (this.posY + (float) this.FONT_HEIGHT), 0.0D); - tessellator.addVertex((double) (this.posX + f1), (double) (this.posY + (float) this.FONT_HEIGHT), 0.0D); - tessellator.addVertex((double) (this.posX + f1), (double) (this.posY + (float) this.FONT_HEIGHT - 1.0F), 0.0D); - tessellator.addVertex((double) (this.posX + (float) l), (double) (this.posY + (float) this.FONT_HEIGHT - 1.0F), 0.0D); - tessellator.draw(); - GL11.glEnable(GL11.GL_TEXTURE_2D); - } - - this.posX += (float) ((int) f1); - } - } - } - - /** - * Render string either left or right aligned depending on bidiFlag - */ - private int renderStringAligned (String par1Str, int par2, int par3, int par4, int par5, boolean par6) - { - if (this.bidiFlag) - { - par1Str = this.bidiReorder(par1Str); - int i1 = this.getStringWidth(par1Str); - par2 = par2 + par4 - i1; - } - - return this.renderString(par1Str, par2, par3, par5, par6); - } - - /** - * Render single line string by setting GL color, current (posX,posY), and calling renderStringAtPos() - */ - private int renderString (String par1Str, int par2, int par3, int par4, boolean par5) - { - if (par1Str == null) - { - return 0; - } - else - { - if ((par4 & -67108864) == 0) - { - par4 |= -16777216; - } - - if (par5) - { - par4 = (par4 & 16579836) >> 2 | par4 & -16777216; - } - - this.red = (float) (par4 >> 16 & 255) / 255.0F; - this.blue = (float) (par4 >> 8 & 255) / 255.0F; - this.green = (float) (par4 & 255) / 255.0F; - this.alpha = (float) (par4 >> 24 & 255) / 255.0F; - GL11.glColor4f(this.red, this.blue, this.green, this.alpha); - this.posX = (float) par2; - this.posY = (float) par3; - this.renderStringAtPos(par1Str, par5); - return (int) this.posX; - } - } - - /** - * Returns the width of this string. Equivalent of FontMetrics.stringWidth(String s). - */ - public int getStringWidth (String par1Str) - { - if (par1Str == null) - { - return 0; - } - else - { - int i = 0; - boolean flag = false; - - for (int j = 0; j < par1Str.length(); ++j) - { - char c0 = par1Str.charAt(j); - int k = this.getCharWidth(c0); - - if (k < 0 && j < par1Str.length() - 1) - { - ++j; - c0 = par1Str.charAt(j); - - if (c0 != 108 && c0 != 76) - { - if (c0 == 114 || c0 == 82) - { - flag = false; - } - } - else - { - flag = true; - } - - k = 0; - } - - i += k; - - if (flag) - { - ++i; - } - } - - return i; - } - } - - /** - * Returns the width of this character as rendered. - */ - public int getCharWidth (char par1) - { - if (par1 == 167) - { - return -1; - } - else if (par1 == 32) - { - return 4; - } - else - { - int i = ChatAllowedCharacters.allowedCharacters.indexOf(par1); - - if (i >= 0 && !this.unicodeFlag) - { - return this.charWidth[i + 32]; - } - else if (this.glyphWidth[par1] != 0) - { - int j = this.glyphWidth[par1] >>> 4; - int k = this.glyphWidth[par1] & 15; - - if (k > 7) - { - k = 15; - j = 0; - } - - ++k; - return (k - j) / 2 + 1; - } - else - { - return 0; - } - } - } - - /** - * Trims a string to fit a specified Width. - */ - public String trimStringToWidth (String par1Str, int par2) - { - return this.trimStringToWidth(par1Str, par2, false); - } - - /** - * Trims a string to a specified width, and will reverse it if par3 is set. - */ - public String trimStringToWidth (String par1Str, int par2, boolean par3) - { - StringBuilder stringbuilder = new StringBuilder(); - int j = 0; - int k = par3 ? par1Str.length() - 1 : 0; - int l = par3 ? -1 : 1; - boolean flag1 = false; - boolean flag2 = false; - - for (int i1 = k; i1 >= 0 && i1 < par1Str.length() && j < par2; i1 += l) - { - char c0 = par1Str.charAt(i1); - int j1 = this.getCharWidth(c0); - - if (flag1) - { - flag1 = false; - - if (c0 != 108 && c0 != 76) - { - if (c0 == 114 || c0 == 82) - { - flag2 = false; - } - } - else - { - flag2 = true; - } - } - else if (j1 < 0) - { - flag1 = true; - } - else - { - j += j1; - - if (flag2) - { - ++j; - } - } - - if (j > par2) - { - break; - } - - if (par3) - { - stringbuilder.insert(0, c0); - } - else - { - stringbuilder.append(c0); - } - } - - return stringbuilder.toString(); - } - - /** - * Remove all newline characters from the end of the string - */ - private String trimStringNewline (String par1Str) - { - while (par1Str != null && par1Str.endsWith("\n")) - { - par1Str = par1Str.substring(0, par1Str.length() - 1); - } - - return par1Str; - } - - /** - * Splits and draws a String with wordwrap (maximum length is parameter k) - */ - public void drawSplitString (String par1Str, int par2, int par3, int par4, int par5) - { - this.resetStyles(); - this.textColor = par5; - par1Str = this.trimStringNewline(par1Str); - this.renderSplitString(par1Str, par2, par3, par4, false); - } - - /** - * Perform actual work of rendering a multi-line string with wordwrap and with darker drop shadow color if flag is - * set - */ - private void renderSplitString (String par1Str, int par2, int par3, int par4, boolean par5) - { - List list = this.listFormattedStringToWidth(par1Str, par4); - - for (Iterator iterator = list.iterator(); iterator.hasNext(); par3 += this.FONT_HEIGHT) - { - String s1 = (String) iterator.next(); - this.renderStringAligned(s1, par2, par3, par4, this.textColor, par5); - } - } - - /** - * Returns the width of the wordwrapped String (maximum length is parameter k) - */ - public int splitStringWidth (String par1Str, int par2) - { - return this.FONT_HEIGHT * this.listFormattedStringToWidth(par1Str, par2).size(); - } - - /** - * Set unicodeFlag controlling whether strings should be rendered with Unicode fonts instead of the default.png - * font. - */ - public void setUnicodeFlag (boolean par1) - { - this.unicodeFlag = par1; - } - - /** - * Get unicodeFlag controlling whether strings should be rendered with Unicode fonts instead of the default.png - * font. - */ - public boolean getUnicodeFlag () - { - return this.unicodeFlag; - } - - /** - * Set bidiFlag to control if the Unicode Bidirectional Algorithm should be run before rendering any string. - */ - public void setBidiFlag (boolean par1) - { - this.bidiFlag = par1; - } - - /** - * Breaks a string into a list of pieces that will fit a specified width. - */ - public List listFormattedStringToWidth (String par1Str, int par2) - { - return Arrays.asList(this.wrapFormattedStringToWidth(par1Str, par2).split("\n")); - } - - /** - * Inserts newline and formatting into a string to wrap it within the specified width. - */ - String wrapFormattedStringToWidth (String par1Str, int par2) - { - int j = this.sizeStringToWidth(par1Str, par2); - - if (par1Str.length() <= j) - { - return par1Str; - } - else - { - String s1 = par1Str.substring(0, j); - char c0 = par1Str.charAt(j); - boolean flag = c0 == 32 || c0 == 10; - String s2 = getFormatFromString(s1) + par1Str.substring(j + (flag ? 1 : 0)); - return s1 + "\n" + this.wrapFormattedStringToWidth(s2, par2); - } - } - - /** - * Determines how many characters from the string will fit into the specified width. - */ - private int sizeStringToWidth (String par1Str, int par2) - { - int j = par1Str.length(); - int k = 0; - int l = 0; - int i1 = -1; - - for (boolean flag = false; l < j; ++l) - { - char c0 = par1Str.charAt(l); - - switch (c0) - { - case 10: - --l; - break; - case 167: - if (l < j - 1) - { - ++l; - char c1 = par1Str.charAt(l); - - if (c1 != 108 && c1 != 76) - { - if (c1 == 114 || c1 == 82 || isFormatColor(c1)) - { - flag = false; - } - } - else - { - flag = true; - } - } - - break; - case 32: - i1 = l; - default: - k += this.getCharWidth(c0); - - if (flag) - { - ++k; - } - } - - if (c0 == 10) - { - ++l; - i1 = l; - break; - } - - if (k > par2) - { - break; - } - } - - return l != j && i1 != -1 && i1 < l ? i1 : l; - } - - /** - * Checks if the char code is a hexadecimal character, used to set colour. - */ - private static boolean isFormatColor (char par0) - { - return par0 >= 48 && par0 <= 57 || par0 >= 97 && par0 <= 102 || par0 >= 65 && par0 <= 70; - } - - /** - * Checks if the char code is O-K...lLrRk-o... used to set special formatting. - */ - private static boolean isFormatSpecial (char par0) - { - return par0 >= 107 && par0 <= 111 || par0 >= 75 && par0 <= 79 || par0 == 114 || par0 == 82; - } - - /** - * Digests a string for nonprinting formatting characters then returns a string containing only that formatting. - */ - private static String getFormatFromString (String par0Str) - { - String s1 = ""; - int i = -1; - int j = par0Str.length(); - - while ((i = par0Str.indexOf(167, i + 1)) != -1) - { - if (i < j - 1) - { - char c0 = par0Str.charAt(i + 1); - - if (isFormatColor(c0)) - { - s1 = "\u00a7" + c0; - } - else if (isFormatSpecial(c0)) - { - s1 = s1 + "\u00a7" + c0; - } - } - } - - return s1; - } - - /** - * Get bidiFlag that controls if the Unicode Bidirectional Algorithm should be run before rendering any string - */ - public boolean getBidiFlag () - { - return this.bidiFlag; - } - -} diff --git a/src/main/java/tconstruct/client/gui/TurnPageButton.java b/src/main/java/tconstruct/client/gui/TurnPageButton.java deleted file mode 100644 index 13571d40263..00000000000 --- a/src/main/java/tconstruct/client/gui/TurnPageButton.java +++ /dev/null @@ -1,54 +0,0 @@ -package tconstruct.client.gui; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiButton; -import net.minecraft.util.ResourceLocation; - -import org.lwjgl.opengl.GL11; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -@SideOnly(Side.CLIENT) -public class TurnPageButton extends GuiButton -{ - /** - * True for pointing right (next page), false for pointing left (previous page). - */ - private final boolean nextPage; - - public TurnPageButton(int par1, int par2, int par3, boolean par4) - { - super(par1, par2, par3, 23, 13, ""); - this.nextPage = par4; - } - - private static final ResourceLocation background = new ResourceLocation("tinker", "textures/gui/bookleft.png"); - - /** - * Draws this button to the screen. - */ - public void drawButton (Minecraft par1Minecraft, int par2, int par3) - { - if (this.drawButton) - { - boolean var4 = par2 >= this.xPosition && par3 >= this.yPosition && par2 < this.xPosition + this.width && par3 < this.yPosition + this.height; - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - par1Minecraft.getTextureManager().bindTexture(background); - int var5 = 0; - int var6 = 192; - - if (var4) - { - var5 += 23; - } - - if (!this.nextPage) - { - var6 += 13; - } - - this.drawTexturedModalRect(this.xPosition, this.yPosition, var5, var6, 23, 13); - } - } -}