Barre de saturation
-
Salut,
j’ai essayé avec le RenderGameOverlayEvent.POST. Voici mon code java :@SubscribeEvent public void postRenderGameOverlay(RenderGameOverlayEvent.Post event){ if(type(event)) return; GuiIngame.drawRect(0, 0, 10, 10, Color.RED.getRGB()); } private boolean type(RenderGameOverlayEvent.Post event){ if(event.type==ElementType.HEALTH||event.type==ElementType.HEALTHMOUNT||event.type==ElementType.FOOD) return true; return false; }Ma barre de vie et ma barre de faim sont rouges.
Edit :
en fait c’est bon à la place de faire des conditions exclusives, il faut faire une condition inclusive :@SubscribeEvent public void postRenderGameOverlay(RenderGameOverlayEvent.Post event){ if(event.type==ElementType.ALL) Minecraft.getMinecraft().ingameGUI.drawRect(0, 0, 10, 10, Color.RED.getRGB()); }Maintenant que j’ai réussi à faire ça, je voudrais savoir comment dessiner une icone dans le inGameGUI
-
Il faut simplement bind la texture avant de faire un drawRect.
-
J’ai fait ça :
RsourceLocation location=new ResourceLocation("tuto", "textures/gigot.png"); Minecraft.getMinecraft().renderEngine.bind(location); Minecraft.getMinecraft().ingameGui.drawTexturedModalRect(10, 10, 5, 5, 9, 10);L’image fait 9 pixels de largeur pour 10 pixels de longueur. Je suis sous linux. Mon mod s’appelle tuto. gigot.png est placé dans le dossier #src/main/resources/assets/tuto/textures/(src/main/resources/assets/tuto/textures/)
Et ça ne ma’affiche rien. -
L’image doit avoir comme longueur et largeur un multiple de 2.
-
Ok je vais voir ça.
-
Toujours pas !
Jai redimensionné l’image en 8 par 8, voici mon codeRsourceLocation location=new ResourceLocation("tuto","textures/gigot.png"); mc.renderEngine.bindTexture(location); mc.ingameGUI.drawTexturedModalRect(10, 10, 0, 0, 8, 8);Je suis sur d’avoir mis la bonne resourceLocation autrement ca m’aurait fait un carre rose en haut à gauche.
-
Je ne vois pas trop d’où ça peut venir

-
Moi non plus. Surtout que ça ne me met même pas de message d’erreur.
-
Je suis même pas sur que ce soit bon ta taille d’image, pour moi c’est un multiple de 16 qu’il faut, mais t’aurais un message d’erreur normalement…
-
Je vais essayer, je vous tient au courant.
-
Bon bah ça ne marche toujours pas, avec une image de 16/16.
EDIT : enfaîte c’est bon, il fallait utiliser drawTexturedModalRectWithSpecialSize (ou un truc comme ça), mais maintenant je voudrais pouvoir l’afficher à un endroit précis de l’écran, j’ai utilisé currentScreen.width mais currentScreen vaut null. Donc je me demandais q’il n’y avait pas un autre moyen de get la width (et la height) -
Tu peux utiliser mc.displayWidth pour avoir le largeur de l’écran (existe aussi avec la hauteur).
-
Merci !
EDIT : Par contre pour afficher une icone au centre de l’écran (je joue en petit écran) je suis obligé de faire displayWidth/4 et displayHeight/4, c’est normal ? J’ai essayé de mettre le jeu en pleine écran et ça ne fait absolument pas le résultat attendu
EDIT 2 : Je crois que les réglages de la taille de l’interface jouent. Lorceque c’est en auto mais qu’on est en plein écran ça ne marche pas alors que quand la taille de l’interface est en normal ça marche. -
Il faut que tu mettes mc.displayWidth/2 - lalargeurdetonicone/2 pour l’avoir bien au milieu dans tous les cas (et la même chose en hauteur).
-
Ca get la largeur de l’écran ou de minecraft ? Si ca get la largeur de l 'écran, c’est normal que ça ne marche pas vu que je joue en petit écran. Et, existe-t-il une méthode pour get les dimensions de Minecraft à la place de celle de l’écran ?
J ai remarqué que dans les settings du launcher, il y a : scaled rezolution et les valeurs correspondent au mc.displayWidth et height -
La largeur de la fenêtre de mc.
-
ça get la largeur de l’écran, mais si tu veux la largeur en fonction de la taille d’interface choisie dans les settings, il faut utiliser
ScaledResolution res = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); int width = res.getScaledWidth(); int height = res.getScaledHeight(); -
Merci !! Je teste ça et je vous dis si ça marche !
EDIT : c’est bon merci beaucoup !