@@ -19,7 +19,7 @@ extern ItemStack shulkerInventory[27];
1919
2020mce::Color panelBackground (27 .0f / 255 .0f , 12 .0f / 255 .0f , 27 .0f / 255 .0f , 1 .0f );
2121
22- void ShulkerRenderer::Render (UIRenderContext* ctx, std::string& hoverText ) {
22+ void ShulkerRenderer::Render (UIRenderContext* ctx, HoverRenderer* hoverRenderer ) {
2323 if (ctx == nullptr || ctx->mClient ->getLocalPlayer () == nullptr ) return ;
2424
2525 // Only load inventory resources once
@@ -32,14 +32,17 @@ void ShulkerRenderer::Render(UIRenderContext* ctx, std::string& hoverText) {
3232 float panelWidth = slotSize * 9 ;
3333 float panelHeight = slotSize * 3 + textHeight;
3434
35- RectangleArea background = {0 .0f , panelWidth, 0 .0f , panelHeight};
35+ float panelX = hoverRenderer->mCursorPosition .x + hoverRenderer->mOffset .x ;
36+ float panelY = hoverRenderer->mCursorPosition .y + hoverRenderer->mOffset .y ;
37+
38+ RectangleArea background = {panelX, panelX + panelWidth, panelY, panelY + panelHeight};
3639 ctx->drawRectangle (&background, &panelBackground, 1 .0f , 1 );
3740
3841 // Draw the item slots
3942 for (int x = 0 ; x < 9 ; x++) {
4043 for (int y = 0 ; y < 3 ; y++) {
4144 glm::tvec2<float > size (slotSize, slotSize);
42- glm::tvec2<float > position (slotSize * x, slotSize * y + textHeight );
45+ glm::tvec2<float > position (panelX + slotSize * x, panelY + textHeight + slotSize * y );
4346
4447 ctx->drawImage (*itemSlotTexture, &position, &size, &itemSlotUvPos, &itemSlotUvSize, 0 );
4548 }
@@ -56,10 +59,10 @@ void ShulkerRenderer::Render(UIRenderContext* ctx, std::string& hoverText) {
5659 const ItemStack* itemStack = &shulkerInventory[y * 9 + x];
5760 if (itemStack->mItem == nullptr ) continue ;
5861
59- float xPos = (x * slotSize) + borderSize;
60- float yPos = (y * slotSize) + borderSize;
62+ float xPos = (x * slotSize) + borderSize + panelX ;
63+ float yPos = (y * slotSize) + borderSize + textHeight + panelY ;
6164
62- renderCtxPtr.itemRenderer ->renderGuiItemNew (&renderCtxPtr, itemStack, 0 , xPos, yPos + textHeight , false , 1 .f , 1 .f , 1 .f );
65+ renderCtxPtr.itemRenderer ->renderGuiItemNew (&renderCtxPtr, itemStack, 0 , xPos, yPos, false , 1 .f , 1 .f , 1 .f );
6366 }
6467 }
6568
@@ -80,10 +83,10 @@ void ShulkerRenderer::Render(UIRenderContext* ctx, std::string& hoverText) {
8083 if (itemStack->mItem == nullptr ) continue ;
8184 if (itemStack->count == 1 ) continue ;
8285
83- float top = (y * slotSize) + borderSize + textHeight;
86+ float top = (y * slotSize) + borderSize + textHeight + panelY ;
8487 float bottom = top + 16 .f ;
8588
86- float left = (x * slotSize) + borderSize;
89+ float left = (x * slotSize) + borderSize + panelX ;
8790 float right = left + 16 .f ;
8891
8992 std::string text = fmt::format (" {}" , itemStack->count );
@@ -95,7 +98,7 @@ void ShulkerRenderer::Render(UIRenderContext* ctx, std::string& hoverText) {
9598
9699 ctx->flushText (0 .0f );
97100
98- RectangleArea rect = { 0 . 0f , 0 . 0f , 0 . 0f , 0 . 0f };
99- ctx->drawDebugText (&rect , &hoverText , &mce::Color::WHITE, 1 .0f , ui::Left, &textData, &caretData);
101+ RectangleArea rect = { panelX, panelX + panelWidth, panelY, panelY + panelHeight };
102+ ctx->drawDebugText (&background , &hoverRenderer-> mFilteredContent , &mce::Color::WHITE, 1 .0f , ui::Left, &textData, &caretData);
100103 ctx->flushText (0 .0f );
101104}
0 commit comments