diff options
| author | Rosa <rosaontheweb@proton.me> | 2026-06-25 12:52:38 -0400 |
|---|---|---|
| committer | Rosa <rosaontheweb@proton.me> | 2026-06-25 12:52:38 -0400 |
| commit | 81730854520247a312ea32b4ff428100cd6e44d7 (patch) | |
| tree | dcf3a96956ef5914552e018235f3a88edaeb5ef3 /src/main/java/net/girlonthe | |
| parent | 559868c123e10e1fcefba51d02be240ff3cd2e05 (diff) | |
Diffstat (limited to 'src/main/java/net/girlonthe')
| -rw-r--r-- | src/main/java/net/girlonthe/chattweaks/mixin/ChatComponentMixin.java | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/src/main/java/net/girlonthe/chattweaks/mixin/ChatComponentMixin.java b/src/main/java/net/girlonthe/chattweaks/mixin/ChatComponentMixin.java index a228b10..5395c9e 100644 --- a/src/main/java/net/girlonthe/chattweaks/mixin/ChatComponentMixin.java +++ b/src/main/java/net/girlonthe/chattweaks/mixin/ChatComponentMixin.java @@ -1,14 +1,20 @@ package net.girlonthe.chattweaks.mixin; import net.minecraft.ChatFormatting; +import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.ChatComponent; import net.minecraft.client.multiplayer.chat.GuiMessage; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.HoverEvent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.Style; import net.minecraft.network.chat.TextColor; +import net.minecraft.network.chat.contents.objects.PlayerSprite; +import net.minecraft.world.entity.EntityTypes; +import net.minecraft.world.entity.player.Player; +import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArg; -import org.spongepowered.asm.mixin.Mixin; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -19,13 +25,29 @@ public abstract class ChatComponentMixin { method = "addMessage", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/components/ChatComponent;addMessageToDisplayQueue(Lnet/minecraft/client/multiplayer/chat/GuiMessage;)V") ) - private GuiMessage rosasChatTweaks$prependTimestamp(GuiMessage original) { - Component newComponent = Component.empty() + private GuiMessage rosasChatTweaks$applyComponentModifications(GuiMessage original) { + MutableComponent modifiedContent = Component.empty(); + for (Component component : original.content().toFlatList()) { + if ((component.getStyle().getHoverEvent() != null) && (component.getStyle().getHoverEvent().action() == HoverEvent.Action.SHOW_ENTITY)) { + HoverEvent.ShowEntity hoverEvent = (HoverEvent.ShowEntity) component.getStyle().getHoverEvent(); + if (hoverEvent.entity().type.equals(EntityTypes.PLAYER)) { + Player maybePlayer = Minecraft.getInstance().level.getPlayerInAnyDimension(hoverEvent.entity().uuid); + if (maybePlayer != null) { + modifiedContent.append(Component.object(new PlayerSprite(maybePlayer.getProfile(), true))) + .append(" "); + } + } + } + + modifiedContent.append(component); + } + + Component finalComponent = Component.empty() .append( Component.literal(DateTimeFormatter.ofPattern("HH:mm:ss ").format(LocalDateTime.now())) .setStyle(Style.EMPTY.withColor(ChatFormatting.GRAY)) ) - .append(original.content()); - return new GuiMessage(original.addedTime(), newComponent, original.signature(), original.source(), original.tag()); + .append(modifiedContent); + return new GuiMessage(original.addedTime(), finalComponent, original.signature(), original.source(), original.tag()); } } |
