From 1bbc90c18bda390464a5c94736b038b0a17d18e6 Mon Sep 17 00:00:00 2001 From: DrPerkyLegit Date: Fri, 10 Apr 2026 16:38:27 -0400 Subject: [PATCH] expose jukebox label as action bar like java --- Minecraft.Client/ClientConnection.cpp | 4 ++++ Minecraft.Client/Common/UI/UIScene_HUD.cpp | 1 + Minecraft.Client/Gui.cpp | 9 ++++++++- Minecraft.Client/Gui.h | 2 ++ Minecraft.World/ChatPacket.h | 1 + 5 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Minecraft.Client/ClientConnection.cpp b/Minecraft.Client/ClientConnection.cpp index 95b9d9fb2..603c8a079 100644 --- a/Minecraft.Client/ClientConnection.cpp +++ b/Minecraft.Client/ClientConnection.cpp @@ -1561,6 +1561,7 @@ void ClientConnection::handleChat(shared_ptr packet) switch(packet->m_messageType) { case ChatPacket::e_ChatCustom: + case ChatPacket::e_ChatActionBar: if (stringArgsSize >= 1) { message = packet->m_stringArgs[0]; @@ -1574,6 +1575,7 @@ void ClientConnection::handleChat(shared_ptr packet) } else { message = L"empty message"; } + displayOnGui = (packet->m_messageType == ChatPacket::e_ChatCustom); break; case ChatPacket::e_ChatBedOccupied: message = app.GetString(IDS_TILE_BED_OCCUPIED); @@ -1959,6 +1961,8 @@ void ClientConnection::handleChat(shared_ptr packet) bool bIsDeathMessage = (packet->m_messageType>=ChatPacket::e_ChatDeathInFire) && (packet->m_messageType<=ChatPacket::e_ChatDeathIndirectMagicItem); if( displayOnGui ) minecraft->gui->addMessage(message, m_userIndex, bIsDeathMessage); + + if (!displayOnGui && !message.empty()) minecraft->gui->setActionBarMessage(message); } void ClientConnection::handleAnimate(shared_ptr packet) diff --git a/Minecraft.Client/Common/UI/UIScene_HUD.cpp b/Minecraft.Client/Common/UI/UIScene_HUD.cpp index 06aea4fa2..4c8c66df4 100644 --- a/Minecraft.Client/Common/UI/UIScene_HUD.cpp +++ b/Minecraft.Client/Common/UI/UIScene_HUD.cpp @@ -26,6 +26,7 @@ UIScene_HUD::UIScene_HUD(int iPad, void *initData, UILayer *parentLayer) : UISce IggyValueSetBooleanRS(m_labelChatText[i].getIggyValuePath(), 0, "m_bUseHtmlText", true); } m_labelJukebox.init(L""); + IggyValueSetBooleanRS(m_labelJukebox.getIggyValuePath(), 0, "m_bUseHtmlText", true); addTimer(0, 100); } diff --git a/Minecraft.Client/Gui.cpp b/Minecraft.Client/Gui.cpp index 5e3a954fe..103bfb7bf 100644 --- a/Minecraft.Client/Gui.cpp +++ b/Minecraft.Client/Gui.cpp @@ -1575,6 +1575,13 @@ float Gui::getOpacity(int iPad, DWORD index) return opacityPercentage; } +//just like java functionality it overwrites the jukebox label +void Gui::setActionBarMessage(wstring message) +{ + overlayMessageString = message; + overlayMessageTime = 20 * 4; //idk how long it should last, need to check java usage +} + float Gui::getJukeboxOpacity(int iPad) { float t = overlayMessageTime - lastTickA; @@ -1590,7 +1597,7 @@ void Gui::setNowPlaying(const wstring& string) // overlayMessageString = L"Now playing: " + string; overlayMessageString = app.GetString(IDS_NOWPLAYING) + string; overlayMessageTime = 20 * 3; - animateOverlayMessageColor = true; + animateOverlayMessageColor = true; //appears to be unused, @DrPerkyLegit plans to add in later pr } void Gui::displayClientMessage(int messageId, int iPad) diff --git a/Minecraft.Client/Gui.h b/Minecraft.Client/Gui.h index 64b8dfbe8..5397823bc 100644 --- a/Minecraft.Client/Gui.h +++ b/Minecraft.Client/Gui.h @@ -63,6 +63,8 @@ public: wstring getMessage(int iPad, DWORD index) { return guiMessages[iPad].at(index).string; } float getOpacity(int iPad, DWORD index); + void setActionBarMessage(wstring message); //uses jukebox label + wstring getJukeboxMessage(int iPad) { return overlayMessageString; } float getJukeboxOpacity(int iPad); diff --git a/Minecraft.World/ChatPacket.h b/Minecraft.World/ChatPacket.h index ea9b38061..7ffebc5e0 100644 --- a/Minecraft.World/ChatPacket.h +++ b/Minecraft.World/ChatPacket.h @@ -98,6 +98,7 @@ public: e_ChatCommandTeleportMe, e_ChatCommandTeleportToMe, + e_ChatActionBar, }; public: