diff --git a/src/main/java/appeng/client/gui/AEBaseGui.java b/src/main/java/appeng/client/gui/AEBaseGui.java index 29e45228..d69df9b3 100644 --- a/src/main/java/appeng/client/gui/AEBaseGui.java +++ b/src/main/java/appeng/client/gui/AEBaseGui.java @@ -22,6 +22,7 @@ package appeng.client.gui; import java.io.IOException; import java.text.DecimalFormat; import java.text.ParseException; +import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; @@ -32,6 +33,7 @@ import java.util.concurrent.TimeUnit; import com.google.common.base.Joiner; import com.google.common.base.Stopwatch; +import com.google.common.collect.Lists; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; @@ -188,7 +190,7 @@ public abstract class AEBaseGui extends GuiContainer final String msg = tooltip.getMessage(); if( msg != null ) { - this.drawTooltip( x + 11, y + 4, 0, msg ); + this.drawTooltip( x + 11, y + 4, msg ); } } } @@ -196,93 +198,32 @@ public abstract class AEBaseGui extends GuiContainer } } - public void drawTooltip( final int par2, final int par3, final int forceWidth, final String message ) + protected void drawTooltip( int x, int y, String message ) { - GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS ); - GL11.glDisable( GL12.GL_RESCALE_NORMAL ); - RenderHelper.disableStandardItemLighting(); - GL11.glDisable( GL11.GL_LIGHTING ); - GL11.glDisable( GL11.GL_DEPTH_TEST ); - final String[] var4 = message.split( "\n" ); + String[] lines = message.split( "\n" ); + this.drawTooltip( x, y, Arrays.asList( lines ) ); + } - if( var4.length > 0 ) + protected void drawTooltip( int x, int y, List lines ) + { + if( lines.isEmpty() ) { - int var5 = 0; - int var6; - int var7; - - for( var6 = 0; var6 < var4.length; ++var6 ) - { - var7 = this.fontRendererObj.getStringWidth( var4[var6] ); - - if( var7 > var5 ) - { - var5 = var7; - } - } - - var6 = par2 + 12; - var7 = par3 - 12; - int var9 = 8; - - if( var4.length > 1 ) - { - var9 += 2 + ( var4.length - 1 ) * 10; - } - - if( this.guiTop + var7 + var9 + 6 > this.height ) - { - var7 = this.height - var9 - this.guiTop - 6; - } - - if( forceWidth > 0 ) - { - var5 = forceWidth; - } - - this.zLevel = 300.0F; - this.itemRender.zLevel = 300.0F; - final int var10 = -267386864; - this.drawGradientRect( var6 - 3, var7 - 4, var6 + var5 + 3, var7 - 3, var10, var10 ); - this.drawGradientRect( var6 - 3, var7 + var9 + 3, var6 + var5 + 3, var7 + var9 + 4, var10, var10 ); - this.drawGradientRect( var6 - 3, var7 - 3, var6 + var5 + 3, var7 + var9 + 3, var10, var10 ); - this.drawGradientRect( var6 - 4, var7 - 3, var6 - 3, var7 + var9 + 3, var10, var10 ); - this.drawGradientRect( var6 + var5 + 3, var7 - 3, var6 + var5 + 4, var7 + var9 + 3, var10, var10 ); - final int var11 = 1347420415; - final int var12 = ( var11 & 16711422 ) >> 1 | var11 & -16777216; - this.drawGradientRect( var6 - 3, var7 - 3 + 1, var6 - 3 + 1, var7 + var9 + 3 - 1, var11, var12 ); - this.drawGradientRect( var6 + var5 + 2, var7 - 3 + 1, var6 + var5 + 3, var7 + var9 + 3 - 1, var11, var12 ); - this.drawGradientRect( var6 - 3, var7 - 3, var6 + var5 + 3, var7 - 3 + 1, var11, var11 ); - this.drawGradientRect( var6 - 3, var7 + var9 + 2, var6 + var5 + 3, var7 + var9 + 3, var12, var12 ); - - for( int var13 = 0; var13 < var4.length; ++var13 ) - { - String var14 = var4[var13]; - - if( var13 == 0 ) - { - var14 = '\u00a7' + Integer.toHexString( 15 ) + var14; - } - else - { - var14 = "\u00a77" + var14; - } - - this.fontRendererObj.drawStringWithShadow( var14, var6, var7, -1 ); - - if( var13 == 0 ) - { - var7 += 2; - } - - var7 += 10; - } - - this.zLevel = 0.0F; - this.itemRender.zLevel = 0.0F; + return; } - RenderHelper.enableStandardItemLighting(); - GL11.glPopAttrib(); + + // For an explanation of the formatting codes, see http://minecraft.gamepedia.com/Formatting_codes + lines = Lists.newArrayList( lines ); // Make a copy + + // Make the first line white + lines.set( 0, "\u00a7f" + lines.get( 0 ) ); + + // All lines after the first are colored gray + for( int i = 1; i < lines.size(); i++ ) + { + lines.set(i, "\u00a77" + lines.get(i)); + } + + this.drawHoveringText( lines, x, y, fontRendererObj ); } @Override diff --git a/src/main/java/appeng/client/gui/AEBaseMEGui.java b/src/main/java/appeng/client/gui/AEBaseMEGui.java index d192fd5d..d75bd106 100644 --- a/src/main/java/appeng/client/gui/AEBaseMEGui.java +++ b/src/main/java/appeng/client/gui/AEBaseMEGui.java @@ -130,13 +130,13 @@ public abstract class AEBaseMEGui extends AEBaseGui currentToolTip.add( "Items Requestable: " + NumberFormat.getNumberInstance( Locale.US ).format( myStack.getCountRequestable() ) ); } - this.drawTooltip( x, y, 0, join( currentToolTip, "\n" ) ); + this.drawTooltip( x, y, currentToolTip ); } else if( stack.stackSize > BigNumber ) { - final List var4 = stack.getTooltip( this.mc.thePlayer, this.mc.gameSettings.advancedItemTooltips ); + List var4 = stack.getTooltip( this.mc.thePlayer, this.mc.gameSettings.advancedItemTooltips ); var4.add( "Items Stored: " + NumberFormat.getNumberInstance( Locale.US ).format( stack.stackSize ) ); - this.drawTooltip( x, y, 0, join( var4, "\n" ) ); + this.drawTooltip( x, y, var4 ); return; } } diff --git a/src/main/java/appeng/client/gui/implementations/GuiCraftConfirm.java b/src/main/java/appeng/client/gui/implementations/GuiCraftConfirm.java index cd6723fd..d85e5f31 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiCraftConfirm.java +++ b/src/main/java/appeng/client/gui/implementations/GuiCraftConfirm.java @@ -381,10 +381,10 @@ public class GuiCraftConfirm extends AEBaseGui } } - if( this.tooltip >= 0 && dspToolTip.length() > 0 ) + if( this.tooltip >= 0 && !dspToolTip.isEmpty() ) { GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS ); - this.drawTooltip( toolPosX, toolPosY + 10, 0, dspToolTip ); + this.drawTooltip( toolPosX, toolPosY + 10, dspToolTip ); GL11.glPopAttrib(); } } diff --git a/src/main/java/appeng/client/gui/implementations/GuiCraftingCPU.java b/src/main/java/appeng/client/gui/implementations/GuiCraftingCPU.java index 5a4abe95..bf541e79 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiCraftingCPU.java +++ b/src/main/java/appeng/client/gui/implementations/GuiCraftingCPU.java @@ -332,10 +332,10 @@ public class GuiCraftingCPU extends AEBaseGui implements ISortSource } } - if( this.tooltip >= 0 && dspToolTip.length() > 0 ) + if( this.tooltip >= 0 && !dspToolTip.isEmpty() ) { GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS ); - this.drawTooltip( toolPosX, toolPosY + 10, 0, dspToolTip ); + this.drawTooltip( toolPosX, toolPosY + 10, dspToolTip ); GL11.glPopAttrib(); } } diff --git a/src/main/java/appeng/client/gui/implementations/GuiNetworkStatus.java b/src/main/java/appeng/client/gui/implementations/GuiNetworkStatus.java index b665aa82..2378c929 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiNetworkStatus.java +++ b/src/main/java/appeng/client/gui/implementations/GuiNetworkStatus.java @@ -204,7 +204,7 @@ public class GuiNetworkStatus extends AEBaseGui implements ISortSource if( this.tooltip >= 0 && toolTip.length() > 0 ) { GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS ); - this.drawTooltip( toolPosX, toolPosY + 10, 0, toolTip ); + this.drawTooltip( toolPosX, toolPosY + 10, toolTip ); GL11.glPopAttrib(); } } @@ -286,7 +286,7 @@ public class GuiNetworkStatus extends AEBaseGui implements ISortSource if( myStack != null ) { - final List currentToolTip = stack.getTooltip( this.mc.thePlayer, this.mc.gameSettings.advancedItemTooltips ); + List currentToolTip = stack.getTooltip( this.mc.thePlayer, this.mc.gameSettings.advancedItemTooltips ); while( currentToolTip.size() > 1 ) { @@ -296,7 +296,7 @@ public class GuiNetworkStatus extends AEBaseGui implements ISortSource currentToolTip.add( GuiText.Installed.getLocal() + ": " + ( myStack.getStackSize() ) ); currentToolTip.add( GuiText.EnergyDrain.getLocal() + ": " + Platform.formatPowerLong( myStack.getCountRequestable(), true ) ); - this.drawTooltip( x, y, 0, join( currentToolTip, "\n" ) ); + this.drawTooltip( x, y, currentToolTip ); } } // super.drawItemStackTooltip( stack, x, y );