Posted May 4, 20214 yr I want to draw string over an itemStack, but string is rendering below an itemStack Here's my code: // i = index (0-9) // j = rows int count = listStack.get(i + (j * 9)).getCount(); Minecraft.getInstance().getItemRenderer().renderItemAndEffectIntoGUI(listStack.get(i + (j * 9)), startPointX + (i * 18), startPointY + (j * 18)); if (count > 1) { this.font.drawStringWithShadow(matrixStack, String.valueOf(count), (float) (startPointX + (i * 18) + 16) - this.font.getStringWidth(String.valueOf(count)), (float) (startPointY + (j * 18) + 10), FontColor.WHITE.getColorCodes()); } Edited May 5, 20214 yr by Th1Minecraft
May 5, 20214 yr Author This code is in MixinContainerScreen and I've tried for RenderGameOverlayEvent.Pre but it is just the same private final ContainerScreen that = (ContainerScreen) (Object) this; Method RenderExtraContainer: private void renderExtraContainer(MatrixStack matrixStack, Slot slot) throws CommandSyntaxException { if (!slot.getStack().isEmpty()) { RenderSystem.disableDepthTest(); RenderSystem.enableBlend(); RenderSystem.enableAlphaTest(); RenderUtils.bindTexture(EXTRA_CONTAINER); AbstractGui.blit(matrixStack, this.that.getGuiLeft() + this.that.getXSize() + 10, this.that.getGuiTop(), 0.0F, 0.0F, 176, 80, 176, 80); RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); RenderSystem.blendFunc(770, 771); GL11.glTexEnvi(8960, 8704, 3042); GL11.glTexEnvi(8960, 8704, 8448); RenderSystem.enableDepthTest(); RenderSystem.disableAlphaTest(); RenderSystem.enableRescaleNormal(); this.font.drawString(matrixStack, slot.getStack().getDisplayName().getString(), this.that.getGuiLeft() + this.that.getXSize() + 18, this.that.getGuiTop() + 6, FontColor.GRAY.getColorCodes()); ArrayList<ItemStack> listStack = this.getInventoryFromShulkerBoxItem(slot.getStack()); assert this.minecraft != null; ItemRenderer itemRenderer = this.minecraft.getItemRenderer(); int startPointX = this.that.getGuiLeft() + this.that.getXSize() + 18; int startPointY = this.that.getGuiTop() + 18; if (!listStack.isEmpty()) { for (int i = 0; i < 9; i++) { for (int j = 0; j < 3; j++) { if ((i + j * 9) <= listStack.size() - 1) { int count = listStack.get(i + (j * 9)).getCount(); matrixStack.push(); itemRenderer.renderItemAndEffectIntoGUI(listStack.get(i + (j * 9)), startPointX + (i * 18), startPointY + (j * 18)); matrixStack.pop(); if (count > 1) { this.font.drawStringWithShadow(matrixStack, String.valueOf(count), (float) (startPointX + (i * 18) + 16) - this.font.getStringWidth(String.valueOf(count)), (float) (startPointY + (j * 18) + 10), FontColor.WHITE.getColorCodes()); } } } } } } }
May 5, 20214 yr Author Oh I just found out that is a method called ItemRenderer::renderItemOverlayIntoGUI. Thanks for your help. I solved it!
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.