Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[Solved] Text Color Formatting


Recommended Posts

I am having some issues with text formatting. I format my text like this:

player.sendStatusMessage(new StringTextComponent(ticksRemaining/20 + " §f| §4" + redstoneAdded + " §f| §a" + emeraldAdded + " §f| §b" + diamondAdded + " §f| §0" + coalAdded), true)

and it appears like this in the game chat:

spacer.png2021-03-04_11_41_12.thumb.png.aa2777d86dc3d14defabd427c2f1d642.pngspacer.pngspacer.pngspacer.pngspacer.pngspacer.png

Edited by NullDev
Link to post
Share on other sites

Do not use the § based formatting codes, use IFormattableTextComponent#mergeStyle(TextFormatting) to set the formatting of a text component.

Additionally it looks like your character encoding is not configured correctly. Make sure your files are encoded in UTF-8 and that Javac is configured to use UTF-8 (it does not do this by default).

Link to post
Share on other sites
1 hour ago, diesieben07 said:

IFormattableTextComponent#mergeStyle(TextFormatting)

I've done that like this, but now it just appears all black

 

IFormattableTextComponent toSend = new StringTextComponent("Info: ");
        toSend.func_240701_a_(TextFormatting.WHITE)
                .func_230529_a_(new StringTextComponent(ticksRemaining/20 + " | "))
                .func_240701_a_(TextFormatting.RED)
                .func_230529_a_(new StringTextComponent(Integer.toString(redstoneAdded)))
                .func_240701_a_(TextFormatting.WHITE)
                .func_230529_a_(new StringTextComponent(" | "))
                .func_240701_a_(TextFormatting.GREEN)
                .func_230529_a_(new StringTextComponent(Integer.toString(emeraldAdded)))
                .func_240701_a_(TextFormatting.WHITE)
                .func_230529_a_(new StringTextComponent(" | "))
                .func_240701_a_(TextFormatting.AQUA)
                .func_230529_a_(new StringTextComponent(Integer.toString(diamondAdded)))
                .func_240701_a_(TextFormatting.WHITE)
                .func_230529_a_(new StringTextComponent(" | "))
                .func_240701_a_(TextFormatting.BLACK)
                .func_230529_a_(new StringTextComponent(Integer.toString(coalAdded)));
player.sendStatusMessage(toSend, true);

 

Link to post
Share on other sites

@diesieben07

I could not understand, how do we send mixed colored messages?
For an example, I wanna send a message: 

Quote

SKIL_NAME level: N

Where N (is any number, got through a method)  and it's color is DARK_PURPLE and everything else is GOLD.

How do I achieve that? Since using .append and .mergeStyle in a sequence doesn't work, as @NullDev tried.

Link to post
Share on other sites
1 hour ago, Toktom said:

Since using .append and .mergeStyle in a sequence doesn't work, as @NullDev tried.

NullDev's issue was something else.

You can use append with an already styled component. For example:
 

text = new StringTextComponent("foo").mergeStyle(RED).append(
  new StringTextComponent("bar").mergeStyle(BLUE)
)

 

Link to post
Share on other sites
5 hours ago, diesieben07 said:

ou completely ignore the result of the methods you call and just use the original, unformatted, component.

I changed it to this and it is still all black:

StringTextComponent toSend = new StringTextComponent("Info: ");
        
player.sendStatusMessage(toSend.func_240701_a_(TextFormatting.WHITE)
                .func_230529_a_(new StringTextComponent(ticksRemaining/20 + " | "))
                .func_240701_a_(TextFormatting.RED)
                .func_230529_a_(new StringTextComponent(Integer.toString(redstoneAdded)))
                .func_240701_a_(TextFormatting.WHITE)
                .func_230529_a_(new StringTextComponent(" | "))
                .func_240701_a_(TextFormatting.GREEN)
                .func_230529_a_(new StringTextComponent(Integer.toString(emeraldAdded)))
                .func_240701_a_(TextFormatting.WHITE)
                .func_230529_a_(new StringTextComponent(" | "))
                .func_240701_a_(TextFormatting.AQUA)
                .func_230529_a_(new StringTextComponent(Integer.toString(diamondAdded)))
                .func_240701_a_(TextFormatting.WHITE)
                .func_230529_a_(new StringTextComponent(" | "))
                .func_240701_a_(TextFormatting.BLACK)
                .func_230529_a_(new StringTextComponent(Integer.toString(coalAdded))), true);

 

Link to post
Share on other sites

You keep calling mergeStyle on the outer text component with a color. Every time you do that you overwrite the previously set color. Hence the "Info: " part is black, because that's the last color you set for it. The appended components all have the default style, which is also black.

Link to post
Share on other sites
8 hours ago, diesieben07 said:

You keep calling mergeStyle on the outer text component with a color

For anyone else with this issue, I figured it out. Do this for each new StringTextComponent:

toReturn.func_230529_a_(
	new StringTextComponent("New Text With New Color").func_240701_a_(TextFormatting.WHITE)
	)

I call the mergestyle on the new StringTextComponent that I am adding with the appendText function.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.