diff --git a/src/main/kotlin/org/cobalt/Cobalt.kt b/src/main/kotlin/org/cobalt/Cobalt.kt index 02035b1..8b829e6 100644 --- a/src/main/kotlin/org/cobalt/Cobalt.kt +++ b/src/main/kotlin/org/cobalt/Cobalt.kt @@ -4,6 +4,7 @@ import net.fabricmc.api.ClientModInitializer import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderEvents import net.fabricmc.loader.api.FabricLoader import net.fabricmc.loader.api.ModContainer +import net.minecraft.client.Minecraft import org.cobalt.command.CommandManager import org.cobalt.command.impl.MainCommand import org.cobalt.event.EventBus @@ -21,6 +22,9 @@ object Cobalt : ClientModInitializer { @JvmField val MOD_VERSION: String = MOD_CONTAINER.metadata.version.friendlyString + @JvmField + val mc: Minecraft = Minecraft.getInstance() + override fun onInitializeClient() { ModuleManager.registerModules() CommandManager.register(MainCommand) diff --git a/src/main/kotlin/org/cobalt/command/impl/MainCommand.kt b/src/main/kotlin/org/cobalt/command/impl/MainCommand.kt index 09d39b8..6d55979 100644 --- a/src/main/kotlin/org/cobalt/command/impl/MainCommand.kt +++ b/src/main/kotlin/org/cobalt/command/impl/MainCommand.kt @@ -4,6 +4,7 @@ import net.minecraft.client.Minecraft import org.cobalt.command.Command import org.cobalt.command.annotation.DefaultHandler import org.cobalt.ui.screen.ConfigScreen +import org.cobalt.util.ChatUtils import org.cobalt.util.helper.TickScheduler internal object MainCommand : Command( diff --git a/src/main/kotlin/org/cobalt/util/ChatUtils.kt b/src/main/kotlin/org/cobalt/util/ChatUtils.kt new file mode 100644 index 0000000..cca7f42 --- /dev/null +++ b/src/main/kotlin/org/cobalt/util/ChatUtils.kt @@ -0,0 +1,69 @@ +package org.cobalt.util + +import net.minecraft.ChatFormatting +import net.minecraft.network.chat.Component +import net.minecraft.network.chat.MutableComponent +import org.cobalt.Cobalt.mc + +enum class MessageType { + COBALT, + DEBUG, + RAW +} + +object ChatUtils { + @JvmField + val CobaltPrefix = Component.literal("") + .append(Component.literal("[").withStyle(ChatFormatting.DARK_GRAY)) + .append(ColorUtils.buildTextGradient("Cobalt", 0x4CADD0, 0xB2F9FF)) + .append(Component.literal("] ").withStyle(ChatFormatting.DARK_GRAY)) + + @JvmField + val CobaltDebugPrefix = Component.literal("") + .append(Component.literal("[").withStyle(ChatFormatting.DARK_GRAY)) + .append(ColorUtils.buildTextGradient("Cobalt Debug", 0x369876, 0x71FF9E)) + .append(Component.literal("] ").withStyle(ChatFormatting.DARK_GRAY)) + + @JvmStatic + fun message(message: String, type: MessageType = MessageType.COBALT) { + val mcplayer = mc.player ?: run { + println("[Cobalt] Attempted to send message ($message) but mc.player is null") + return + } + + val component = when (type) { + MessageType.RAW -> { + stringToComponent(message) + } + + MessageType.DEBUG -> { + CobaltDebugPrefix.copy() + .append(stringToComponent(message)) + } + + MessageType.COBALT -> { + CobaltPrefix.copy() + .append(stringToComponent(message)) + } + } + + mcplayer.sendSystemMessage(component) + } + + @JvmStatic + fun stringToComponent(string: String): MutableComponent { + return Component.literal(string) + } + + @JvmStatic + fun say(message: String) { + if (mc.player == null) return println("[Cobalt] Attempted to send message ($message), but mc.player is null") + mc.player!!.connection.sendChat(message) + } + + @JvmStatic + fun sendCommand(command: String) { + if (mc.player == null) return println("[Cobalt] Attempted to send message ($command), but mc.player is null") + mc.player!!.connection.sendCommand(command) + } +}