question: public static void drawSplitString ( FontRenderer fontRenderer , String string , int x , int y , int width , int colour ) { fontRenderer . resetStyles ( ) ; fontRenderer . textColor = colour ; List < String > list = fontRenderer . listFormattedStringToWidth ( string , width ) ; FloatBuffer currentGLColor = BufferUtils . createFloatBuffer ( 16 ) ; int line = 0 ; for ( Iterator < String > iterator = list . iterator ( ) ; iterator . hasNext ( ) ; y += fontRenderer . FONT_HEIGHT ) { String next = iterator . next ( ) ; if ( line > 0 ) { int currentColour = fontRenderer . textColor ; GL11 . glGetFloat ( GL11 . GL_CURRENT_COLOR , currentGLColor ) ; int glColourRGBA = ( ( int ) ( currentGLColor . get ( 0 ) * 255 ) << 16 ) + ( ( int ) ( currentGLColor . get ( 1 ) * 255 ) << 8 ) + ( ( int ) ( currentGLColor . get ( 2 ) * 255 ) ) ; if ( glColourRGBA != currentColour ) { int j = 0 ; for ( ; j < fontRenderer . colorCode . length ; j ++ ) if ( fontRenderer . colorCode [ j ] == glColourRGBA ) { String code = Integer . toHexString ( j % 16 ) ; next = '§' + code + next ; break ; } } } fontRenderer . drawString ( next , x , y , colour , false ) ; } }
target:  Custom implementation of drawing a split string because Mojang's doesn't reset text colour between lines >___>