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.