Posted August 13, 20187 yr Hi, What's the best way to open custom GUI when player opens inventory? I don't want to replace inventory GUI but add some text on left side. Tried player.openGui on GuiOpenEvent but nothing is displayed. @SubscribeEvent public void OnGuiOpen(GuiOpenEvent event) { if(event.getGui() != null && event.getGui() instanceof GuiInventory) { EntityPlayer player = Minecraft.getMinecraft().player; if(!player.capabilities.isCreativeMode) { player.openGui(Main.instance, GuiHandler.INV_GUI, player.getEntityWorld(), player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ()); } } } GuiHandler public class GuiHandler implements IGuiHandler { public static final int TEST_GUI = 0; public static final int INV_GUI = 1; @Override public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) { return null; } @Override public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) { switch (id) { case TEST_GUI: return new TestGUI(); case INV_GUI: return new InvGUI(); } return null; } } InvGUI @SideOnly(Side.CLIENT) public class InvGUI extends Gui { public InvGUI() { super(); } @SubscribeEvent public void onRenderOverlay(RenderGameOverlayEvent.Pre event) { } @SubscribeEvent public void onRenderOverlayText(RenderGameOverlayEvent.Text event) { ScaledResolution sr = event.getResolution(); EntityPlayer player = Minecraft.getMinecraft().player; if (!player.capabilities.isCreativeMode) { String health = (int) player.getHealth() + " / " + (int) player.getMaxHealth(); GL11.glPushMatrix(); GL11.glScalef(1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().fontRenderer.drawStringWithShadow( health, 0, 0, 0xFFFFFF); GL11.glPopMatrix(); } } } GUI works if displayed on button press or when player joins game. So there is nothing wrong. Edited August 13, 20187 yr by Oen44
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.