Mods
Resource Packs
Data Packs
Modpacks
Shaders
Plugins
Mods Resource Packs Data Packs Plugins Shaders Modpacks
Get Modrinth App Upgrade to Modrinth+
Sign in
ModsPluginsData PacksShadersResource PacksModpacks
Sign in
Settings
Chat Message Library

Chat Message Library

A StringBuilder for Text, useful for commands and command-line tools.

289
0
Library
Management
Utility
AboutChangelogVersions

Chat Message Library

It is highly unlikely that i update this mod. Please find an alternative, create your own, or fork it on Github to continue using it.

I was annoyed that there was no java.lang.StringBuilder equivalent for net.minecraft.text.Text, so I decided to build my own.

For Users;

This is a library mod, and does not add anything to the game on its own.
Download the mod and drop it in your .minecraft/mods/ folder.
This mod also requires Fabric API to work.

For Developers;

To use the library, add this to your build.gradle, gradle.properties, and your mod's ModInitializer class respectively:

build.gradle:

repositories {
    maven { url = "https://api.modrinth.com/maven" }
}

dependencies {
    modApi include("maven.modrinth:chatmsglib:${project.cml_version}")
}

gradle.properties:

# This may be out of date!!
cml_version=1.1

Your ModInitializer:

public class YourMod implements ModInitializer {
    
    public static final ChatMessage CML = new ChatMessage();
    
    /*
    * This text is generated at startup and is held until server stop
    * To send it, use "msg::send", "msg.send(PlayerEntity)", or "msg.send(CommandContext)"
    * You can also modify it on the fly by adding more text
    */
    private static final ChatMessage msg = CML
            .header("This is always be displayed at the top of the message", Formatting.AQUA)
            .footer("This is always be displayed at the bottom of the message", Formatting.BOLD, Formatting.BLUE)
            .literal("Just a literal string, nothing special", Formatting.BLUE)
            .literal("Option for an \"on\" statement as well",
                    new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/help"))
            .object(
                    // A List<Integer> turned into Text form
                    new IntList(yourInts)
                            // No spaces are added for Prefixes and Suffixes and must be added manually!
                            .prefix("What comes before the number is printed ")
                            .suffix(" What comes after the number is printed")
                            .create())
            .object(
                    // A JsonObject turned into Text form
                    new JsonList(yourJson)
                            .prefix("- ")
                            .indent(1)
                            .create()
            )
            .object(
                    // All text added to this object will display on the same line
                    new Singleton()
                            .add(Text.literal("Singletons are used to display text in one line only"))
                            .add(
                                    Text.literal("Also, commands in-line as well")
                                        .styled(style -> style.withClickEvent(
                                                new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/help")
                                        ))
                            )
                            .create()
            )
            .object(
                    /*
                    * You can create your own lists by extending xyz.blurple.chatmsglib.list.ChatList
                    * It has to output List<Text>, everything else is your choice!
                    */
                    new YourList(yourInput)
                            .prefix("= ")
                            .create()
            );

    @Override
    public void onInitialize() {
        
        // This command simply prints out msg with the formatting you chose
        CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) ->
            dispatcher.register(
                CommandManager.literal("your_command")
                    .executes(msg::send)
            )
        );
    }
}

If you have a request or issue with the library, make an issue, and I'll take a shot at adding it.
Feel free to do anything you like with this code; fork, learn, whatever you like.

90% of ad revenue goes to creators

Support creators and Modrinth ad-free with Modrinth+

Compatibility

Minecraft: Java Edition

1.20–1.20.4

Platforms

Fabric

Supported environments

Server-side
Client and server (optional)

Links

Report issues View source Join Discord server

Creators

GirlInPurple
GirlInPurple Member

Details

Licensed MIT
Published last year
Updated last year

Modrinth is open source.

main@656c5b6

© Rinth, Inc.

Company

TermsPrivacyRulesCareers

Resources

SupportBlogDocsStatus

Interact

Discord X (Twitter) Mastodon Crowdin
Get Modrinth App Settings
NOT AN OFFICIAL MINECRAFT SERVICE. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.