Chat Message Library

Chat Message Library

Mod

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

Client or server LibraryManagementTechnologyUtility

45 downloads
0 followers
Created3 months ago
Updated3 months ago

Follow Save
Host your Minecraft server on BisectHosting - get 25% off your first month with code MODRINTH.

Chat Message Library

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.

External resources



Project members

GirlInPurple

Member


Technical information

License
Client side
optional
Server side
optional
Project ID