add color code support (ohio code)

<3
This commit is contained in:
Chayapak 2023-05-06 14:14:26 +07:00
parent 60a1074759
commit 8ae88917e1
2 changed files with 16 additions and 1 deletions

View file

@ -31,6 +31,8 @@ dependencies {
modImplementation include("net.kyori:adventure-platform-fabric:5.8.0") // for Minecraft 1.19.4 modImplementation include("net.kyori:adventure-platform-fabric:5.8.0") // for Minecraft 1.19.4
modImplementation include("net.kyori:adventure-text-serializer-legacy:4.13.1")
// Uncomment the following line to enable the deprecated Fabric API modules. // Uncomment the following line to enable the deprecated Fabric API modules.
// These are included in the Fabric API production distribution and allow you to update your mod to the latest modules at a later more convenient time. // These are included in the Fabric API production distribution and allow you to update your mod to the latest modules at a later more convenient time.

View file

@ -6,6 +6,8 @@ import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.client.network.ClientPlayNetworkHandler;
@ -40,6 +42,11 @@ public class CustomChat {
.replace("\\", "\\\\") .replace("\\", "\\\\")
.replace("\"", "\\\""); .replace("\"", "\\\"");
final LegacyComponentSerializer serializer = LegacyComponentSerializer.legacyAmpersand();
final Component deserialized = serializer.deserialize(sanitizedMessage);
final String messageWithColor = GsonComponentSerializer.gson().serialize(deserialized);
try { try {
// final MutablePlayerListEntry entry = Players.INSTANCE.getEntry(client.getNetworkHandler().getProfile().getId()); // final MutablePlayerListEntry entry = Players.INSTANCE.getEntry(client.getNetworkHandler().getProfile().getId());
@ -48,11 +55,17 @@ public class CustomChat {
// final String prefix = GsonComponentSerializer.gson().serialize(Component.join(JoinConfiguration.separator(Component.empty()), displayNameComponent.children().get(0))); // final String prefix = GsonComponentSerializer.gson().serialize(Component.join(JoinConfiguration.separator(Component.empty()), displayNameComponent.children().get(0)));
// final String displayName = GsonComponentSerializer.gson().serialize(Component.join(JoinConfiguration.separator(Component.empty()), displayNameComponent.children().get(1))); // final String displayName = GsonComponentSerializer.gson().serialize(Component.join(JoinConfiguration.separator(Component.empty()), displayNameComponent.children().get(1)));
// TODO: make this code not ohio code.,.,
final String sanitizedFormat = format final String sanitizedFormat = format
// .replace("\"PREFIX\"", prefix) // .replace("\"PREFIX\"", prefix)
// .replace("\"DISPLAYNAME\"", displayName) // .replace("\"DISPLAYNAME\"", displayName)
.replace("USERNAME", username) .replace("USERNAME", username)
.replace("MESSAGE", sanitizedMessage);
// these 2 lines are toooooo ohio code
.replace("{\"text\":\"MESSAGE\"}", messageWithColor)
.replace("\"extra\":[\"MESSAGE\"],\"color\":", "\"extra\":[" + messageWithColor + "],\"color\":")
.replace("MESSAGE", sanitizedMessage.replaceAll("&.", "")); // TODO: make this not use regex
CommandCore.INSTANCE.run("minecraft:tellraw @a " + sanitizedFormat); CommandCore.INSTANCE.run("minecraft:tellraw @a " + sanitizedFormat);
} catch (Exception e) { } catch (Exception e) {