Résolu Affichage texte en jeu
-
Bonjour,
Mon problème peut paraître tout bête mais je n’arrive pas à afficher du texte à l’écran.
J’ai essayé avec : Minecraft.getMinecraft().ingameGUI.displayTitle(“Nombre de coffre présent”, “” + compteur, 1, 10, 1);
ça marche cependant le texte est bien trop gros et ne tient pas sur tout l’écran.J’ai donc essayé avec :
Minecraft.getMinecraft().ingameGUI.drawString(Minecraft.getMinecraft().ingameGUI.getFontRenderer(), "Nombre de coffre présent : " + compteur , 100, 100, 16777215);
ou
Minecraft.getMinecraft().ingameGUI.getFontRenderer().drawStringWithShadow("Nombre de coffre présent : " + compteur , 100, 100, 16777215);mais ça plante à chaque fois :
:::
java.util.concurrent.ExecutionException: java.lang.RuntimeException: No OpenGL context found in the current thread.
at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_141]
at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_141]
at net.minecraft.util.Util.runTask(Util.java:30) [Util.class:?]
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:754) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:699) [MinecraftServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:156) [IntegratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:548) [MinecraftServer.class:?]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_141]
Caused by: java.lang.RuntimeException: No OpenGL context found in the current thread.
at org.lwjgl.opengl.GLContext.getCapabilities(GLContext.java:124) ~[lwjgl-2.9.4-nightly-20150209.jar:?]
at org.lwjgl.opengl.GL11.glEnable(GL11.java:1012) ~[lwjgl-2.9.4-nightly-20150209.jar:?]
at net.minecraft.client.renderer.GlStateManager$BooleanState.setState(GlStateManager.java:932) ~[GlStateManager$BooleanState.class:?]
at net.minecraft.client.renderer.GlStateManager$BooleanState.setEnabled(GlStateManager.java:921) ~[GlStateManager$BooleanState.class:?]
at net.minecraft.client.renderer.GlStateManager.enableAlpha(GlStateManager.java:61) ~[GlStateManager.class:?]
at net.minecraft.client.gui.FontRenderer.enableAlpha(FontRenderer.java:1010) ~[FontRenderer.class:?]
at net.minecraft.client.gui.FontRenderer.drawString(FontRenderer.java:327) ~[FontRenderer.class:?]
at net.minecraft.client.gui.FontRenderer.drawStringWithShadow(FontRenderer.java:311) ~[FontRenderer.class:?]
at fr.sebenforce.mod.ChestFinder.onItemRightClick(ChestFinder.java:39) ~[ChestFinder.class:?]
at net.minecraft.item.ItemStack.useItemRightClick(ItemStack.java:213) ~[ItemStack.class:?]
at net.minecraft.server.management.PlayerInteractionManager.processRightClick(PlayerInteractionManager.java:387) ~[PlayerInteractionManager.class:?]
at net.minecraft.network.NetHandlerPlayServer.processTryUseItem(NetHandlerPlayServer.java:740) ~[NetHandlerPlayServer.class:?]
at net.minecraft.network.play.client.CPacketPlayerTryUseItem.processPacket(CPacketPlayerTryUseItem.java:43) ~[CPacketPlayerTryUseItem.class:?]
at net.minecraft.network.play.client.CPacketPlayerTryUseItem.processPacket(CPacketPlayerTryUseItem.java:9) ~[CPacketPlayerTryUseItem.class:?]
at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_141]
at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_141]
at net.minecraft.util.Util.runTask(Util.java:29) ~[Util.class:?]
… 5 more
:::Merci d’avance
-
Salut, depuis qu’elle méthode exécutes-tu le drawString ? Car il semblerait que ce ne soit pas dans le thread d’OpenGL
-
Salut,
Il a appelé la fonction dans la fonction onRightClick de son bloc, sûrement côté serveur.
La méthode propre pour mettre du texte est d’utiliser RenderGameOverlayEvent -
Oui c’est bien dans la fonction onItemRightClick. Du coup je dois mettre un @SideOnly(value = Side.CLIENT) ou pas ?
Pour le RenderGameOverlayEvent je ne vois pas trop comment l’utiliser. Il faut que dans ma méthode onItemRightClick je fasse appel à l’évenement ?
-
Ou alors mettre une condition if(world.isRemote) (sans le !)
Pour l’event RenderGameOverlayEvent tu le mets dans une classe d’event dans laquelle il faudra aussi mettre une variable correspondant au texte à draw, et depuis la fonction du clic droit tu changes la valeur du texte. -
D’accord merci