Navigation

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    1. Home
    2. AymericRed
    • Profile
    • Following 0
    • Followers 2
    • Topics 12
    • Posts 2132
    • Best 110
    • Groups 0

    AymericRed

    @AymericRed

    327
    Reputation
    3153
    Profile views
    2132
    Posts
    2
    Followers
    0
    Following
    Joined Last Online
    Location Caen Age 20

    AymericRed Follow

    Best posts made by AymericRed

    • RE: Modifier l'overlay (HUD) du jeu

      Plaigon, l’homme plus rapide que son ombre ^^
      Sinon oui c’est possible mais comme l’a dit Plaigon, c’est pas propre du tout donc suis ses conseils.
      Et pour ton autre question, si tu utilises RenderGameOverlay au lieu de RenderGameOverlay.Post, ta fonction sera de mémoire appelée deux fois à chaque rendu ce qui est totalement inutile (ou sinon pas appellé du tout je suis plus sur).

      posted in Les interfaces (GUI) et les container
      AymericRed
      AymericRed
    • RE: Modifier l'overlay (HUD) du jeu

      Ajout d’une explication pour dessiner du texte.

      PS : J’ai pas oublié le bonus mais il faut que je trouve le temps de le faire.

      posted in Les interfaces (GUI) et les container
      AymericRed
      AymericRed
    • RE: Nouveau modèle pour le player

      Non il y a un endroit où mc appelle une fonction qui n’appartient que au ModelPlayer, donc il faut que ton modèle soit extends ModelPlayer.

      posted in 1.8.x
      AymericRed
      AymericRed
    • RE: Afficher une image lors de la connexion.

      Tu commence à dessiner ton gui en dehors de l’écran, normal que ça marche pas ^^ “this.drawTexturedModalRect(this.width, this.height, 0, 0, 256, 256);”

      posted in 1.8.x
      AymericRed
      AymericRed
    • RE: Bouton Invisible ?

      Pour la couleur noire, je sais pas, pour lancer le navigateur :

      URI uri = URI.create("http://www.minecraftforgefrance.fr/");
      Desktop.getDesktop().browse(uri);
      
      posted in 1.8.x
      AymericRed
      AymericRed
    • RE: La texture du livre au-dessus de la table de craft

      Regarde dans Minecraft.client.render et cherche dans les sous packages si y’a pas un truc en rapport, c’est là que y’a tous les rendus spéciaux

      posted in 1.8.x
      AymericRed
      AymericRed
    • RE: Aide pour faire un four

      Je ne sais pas si ça résoudra le problème, mais c’est mieux de mettre la fonction de forge pour ouvrir le gui dans ta fonction onBlockActivated() :
      remplace “playerIn.displayGUIChest((TileEntityFonderie)tileentityfonderie);” par “playerIn.openGui(id, mod, x, y, z)” (j’ai pas été exact dans les paramètres).

      posted in 1.8.x
      AymericRed
      AymericRed
    • RE: Problème IGUIHandler

      OK
      Et je précise, y un for, c’est le nombre de slots en largeur et l’autre en hauteur

      posted in 1.7.x
      AymericRed
      AymericRed
    • RE: Problème IGUIHandler

      Parce que lid du slot est trop élevé, là actuellement tu peux avoir 45 items (donc autant dids) et tu essayes tu mettre un slot avec 45 comme id

      posted in 1.7.x
      AymericRed
      AymericRed
    • Modifier l'overlay (HUD) du jeu

      Sommaire

      • Introduction
      • Pré-requis
      • Code
        • Classe de l’overlay
        • Retirer des éléments du HUD
        • Ajouter des éléments au HUD
        • Exemple
      • Résultat
      • Crédits

      Introduction

      Dans ce tutoriel vous allez apprendre à ajouter et retirer des éléments à/de l’overlay (ou HUD) de Minecraft.
      Etant donné qu’encore beaucoup de personnes l’utilisent (malheuresement), je précise que ce tutoriel marchera, à peu de choses près, en 1.7.10 (quelques changements de noms comme Gui.drawScaledCustomSizeModalRect qui devient Gui.func_152125_a mais à part ça rien de bien compliqué).

      Pré-requis

      Savoir utiliser les évènements

      Code

      Note : Pour enregistrer la classe d’évènements du HUD j’utilise l’annotation “@EventBusSubscriber(modid=TutorielMod.MODID, value={Side.CLIENT})” sur la classe, mais vous pouvez toujours l’enregistrer via la classe principale ou le proxy, comme présenté dans le tutoriel des pré-requis.

      Classe du HUD

      Vous pouvez utiliser une classe d’évènements existante ou en créer une, ce que je conseille pour avoir un code mieux organisé.
      ❗ Veillez bien à ce que la classe ne soit enregistrée que sur le client, comme c’est une classe qui touche au rendu, cela ferait crasher le serveur au lancement du jeu.

      Dans cette classe ajoutez les fonctions suivantes (à la fin du tutoriel vous n’aurez peut-être pas utilisé une des deux, vous pourrez l’enlever) :

          @SubscribeEvent
          public static void renderGameOverlayPre(RenderGameOverlayEvent.Pre event)
          {
      
          }
      
          @SubscribeEvent
          public static void renderGameOverlayPost(RenderGameOverlayEvent.Post event)
          {
      
          }
      

      Ensuite, tout va dépendre de ce que vous voulez faire :

      Retirer des éléments du HUD vanilla

      Ceci se fait dans la fonction “renderGameOverlayPre” (et pas renderGameOverlayPost car l’élément aura déjà été dessiné).
      Pour retirer une élément du HUD vanilla, c’est très simple, il suffit d’annuler l’évènement, mais attention, car il faut l’annuler seulement si c’est bien l’élément désiré, pour savoir quel élément est en train d’être dessiné, il suffit de faire

          if(event.getType().equals(ElementType.CEQUEVOUSVOULEZRETIRER))
      

      ce qui donnera

           if(event.getType().equals(ElementType.HEALTH))
          {
              event.setCanceled(true);
          }
      

      pour désactiver l’affichage de la vie.

      Je vous invite à regarder la classe ElementType pour voir tous les éléments modifiables.
      /!\ Si vous annulez “ElementType.ALL” plus rien ne sera affiché sur le HUD.

      Ajouter des éléments au HUD vanilla

      Cela doit être fait dans la fonction “renderGameOverlayPost”, pour éviter tout problème (par exemple couleur, lumière) par rapport aux éléments dessinés après l’appel de la fonction “renderGameOverlayPre”.
      Le code devra être placé dans un

          if(event.getType().equals(ElementType.ALL)) {}
      

      pour éviter qu’il ne soit appelé plusieurs fois par image dessinée.
      Maintenant je vais vous donner quelques fonctions utiles pour dessiner des choses sur le HUD mais ça restera à vous de faire le code (je ferais tout de même un exemple).

      • Pour obtenir les dimensions de la fenêtre, utilisez
          event.getResolution()
      

      cela peut permettre de dessiner en bas ou à droite de la fenêtre, à côté des ses bordures.

      • Pour dessiner un rectangle ayant la même texture que le rectangle affichant un score sur la droite avec le scoreboard :
          Gui.drawRect(x1, y1, x2, y2, Integer.MIN_VALUE);
      

      /!\ x2 et y2 ne représentent pas la largeur et la hauteur mais les coordonnées opposées du point (x1;y1) :

      (Ignorez x3,y3 et x4,y4).

      • Pour dessiner du texte vous pouvez utiliser
          MC.fontRendererObj.drawString(le texte, x, y, la couleur);
      

      Pour la couleur vous pouvez mettre une valeur hexadécimale ou alors simplement utiliser “Color.WHITE.getRGB()” (en changeant la couleur, Color appartient au package java.awt, n’utilisez pas les autres).
      ❗ “MC” correspond à une variable statique utilisée dans l’exemple, ajoutez “public static final Minecraft MC = Minecraft.getMinecraft();” en haut de votre classe.

      • Pour dessiner un rectangle avec une image, vous pouvez utiliser cette fonction :
        Gui.drawScaledCustomSizeModalRect(x, y, u, v, largeur sur l’image, hauteur sur l’image, largeur, hauteur, largeur du fichier de l’image, hauteur du fichier de l’image);

      Cette fonction prend 8 arguments qui sont :

      • x,y : coordonnées où l’image sera dessinée.
      • u,v : coordonnées de l’image dans son fichier.
      • largeur sur l’image,hauteur sur l’image : dimensions de l’image dans le fichier (pour ne pas dessiner la texture en entier, juste une partie).
      • largeur,hauteur : dimensions de l’image dessinée à l’écran (adaptées à la GuiScale choisie par le joueur).
      • largeur du fichier de l’image,hauteur du fichier de l’image : dimensions totales du fichier de l’image (même la partie qu’on ne dessine pas si il y en a).

      Si vous avez compris mes explications, vous comprendrez donc qu’il est facile de mettre plusieurs choses à dessiner dans un même fichier, et que l’on peut agrandir ou réduire une image par rapport à sa taille d’origine dans le fichier (en ayant des “largeur sur l’image” et “largeur” différents).
      (je vous laisse regarder la javadoc de cette fonction pour plus de détails sur son utilisation, en anglais).

      Exemple

      ❗ Je donne cette exemple pour vous montrer comment on peut utiliser ces différentes fonctions, mais ne le copiez collez pas sans le comprendre !

          package fr.mff.tutoriel;
      
          import java.awt.Color;
      
          import org.lwjgl.opengl.GL11;
      
          import net.minecraft.client.Minecraft;
          import net.minecraft.client.gui.Gui;
          import net.minecraft.client.gui.ScaledResolution;
          import net.minecraft.entity.player.EntityPlayer;
          import net.minecraft.util.ResourceLocation;
          import net.minecraftforge.client.event.RenderGameOverlayEvent;
          import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
          import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
          import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
          import net.minecraftforge.fml.relauncher.Side;
      
          @EventBusSubscriber(modid = TutorielMod.ID, value = {Side.CLIENT})
          public class GameOverlayHandler
          {
              private static final ResourceLocation emptyLife = new ResourceLocation(TutorielMod.ID, "textures/gui/emptylife.png");
              private static final ResourceLocation fullLife = new ResourceLocation(TutorielMod.ID, "textures/gui/fulllife.png");
      
              public static final Minecraft MC = Minecraft.getMinecraft();
      
              @SubscribeEvent
              public static void renderGameOverlayPre(RenderGameOverlayEvent.Pre event)
              {
                  if(event.getType().equals(ElementType.HEALTH))
                      event.setCanceled(true);
              }
      
              @SubscribeEvent
              public static void renderGameOverlayPost(RenderGameOverlayEvent.Post event)
              {
                  if(event.getType().equals(ElementType.ALL))
                  {
                      GL11.glColor4f(1, 1, 1, 1);
                      GL11.glEnable(GL11.GL_BLEND);
                      GL11.glBlendFunc(770, 771);
                      int width = event.getResolution().getScaledWidth();
      
                      if(!MC.player.capabilities.disableDamage)
                          drawHealth(event.getResolution(), MC.player);
      
                      String s = MC.getConnection().getPlayerInfoMap().size() + "/" + MC.getConnection().currentServerMaxPlayers + " joueurs";
                      Gui.drawRect(width - 5 - MC.fontRendererObj.getStringWidth(s), 2, width - 2, 4 + MC.fontRendererObj.FONT_HEIGHT, Integer.MIN_VALUE);
                      MC.fontRendererObj.drawString(s, width - 3 - MC.fontRendererObj.getStringWidth(s), 4, Color.WHITE.getRGB());
                  }
              }
      
              private static void drawHealth(ScaledResolution res, EntityPlayer player)
              {
                  MC.getTextureManager().bindTexture(emptyLife);
                  Gui.drawScaledCustomSizeModalRect(res.getScaledWidth() - 70, res.getScaledHeight() - 76, 0, 0, 64, 64, 64, 64, 64, 64);
      
                  int percent = (int)(player.getHealth() * 64 / player.getMaxHealth());
                  if(percent > 0)
                  {
                      MC.getTextureManager().bindTexture(fullLife);
                      Gui.drawScaledCustomSizeModalRect(res.getScaledWidth() - 70, res.getScaledHeight() - 76 + (64 - percent), 0, 64 - percent, 64, percent, 64, percent, 64, 64);
                  }
              }
          }
      

      Ceci permettra de ne pas dessiner la vie “vanilla” mais de dessiner notre propre icône (notez d’ailleurs que la texture utilisée fait du 64*64), et le nombre de joueurs en ligne est dessiné en haut à droite.

      Bonus

      Modifier l’overlay peut permettre différentes choses, en voici certaines avec une mini explication de comment faire, et des liens vers les tutoriels en rapport :

      • Créer une barre personnalisée, par exemple de soif ou de mana, pour faire ceci, vous devrez utiliser les capabilities.
      • Afficher un message personnalisé à partir d’une commande, pour le faire vous aurez besoin de ceci ainsi que ceci (nécessite un minimum de connaissances, maîtriser les packets n’est pas inné).
      • Vous pouvez proposer/demander d’autres choses dans les réponses au sujet 😉

      Résultat

      Voici le résultat de l’exemple donné dans le tutoriel, ce n’est bien sur qu’un exemple assez simple, on peut faire bien plus pour modifier le HUD.

      Crédits

      Rédaction :

      • AymericRed

      Correction :

      • non effectuée

      Creative Commons
      Ce tutoriel de Minecraft Forge France est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International

      retourRetour vers le sommaire des tutoriels

      posted in Les interfaces (GUI) et les container
      AymericRed
      AymericRed

    Latest posts made by AymericRed

    • RE: Changer des textures d'item dans custom noc

      Bonsoir,
      Il y a deux solutions simples :

      • Créer un pack de texture reprennant les mêmes noms de dossiers et de textures que CustomNpcs (la structure et les noms de textures étant dans le .jar de CustomNpcs), la solution la plus “propre”.
      • Modifier directement le jar du CustomsNpcs (avec WinRar par exemple) en remplaçant les textures par celles que tu veux, mais si tu veux redistribuer le mod après, je ne sais pas si sa license l’autorise, comme il sera modifié.
      posted in Discussion générale
      AymericRed
      AymericRed
    • RE: Problème de Slot dans mon Compressor Machine

      Salut,

      La fonction ‘getStackInSlot’ de ton TileEntity retourne null, donc le gui n’a pas d’item à afficher.

      posted in Sans suite
      AymericRed
      AymericRed
    • RE: Comment creer un item dans son mod qui est le même qu'un autre mod (pour les mêmes recettes)

      Bonjour,
      Il y a déjà des tutoriels sur le forum je te laisse utiliser la fonction de recherche.
      Et si tu veux utiliser ceux d’un autre mod, si tu peux avoir les sources de ce mod ajoutes les avec les tiennes (solution la plus simple), sinon tu dois prendre le jar du mod, le mettre dans le dossier ‘libs’ de ta workspace (crées-le si il n’existe pas), faire un ‘.\gradlew eclipse’ et ajouter le mod CodeChickenCore au dossier ‘eclipse/mods’ de la workspace.

      posted in Sans suite
      AymericRed
      AymericRed
    • RE: Recrutement dév plugin/skript

      Salut,
      Détailler le projet et surtout ce qu’il y aura à faire serait un plus.
      De plus tu met “Skript” dans ton titre mais pas beaucoup de personnes font du skript ici je pense (et “créer/modif des plugins de façon avancé, en programmant” correspond pas vraiment à Skript xD). Bref en java ou en skript ?

      posted in Recrutement
      AymericRed
      AymericRed
    • RE: Aide pour creer un mod dépendants [1.7.10]

      J’en déduis que tu as un problème avec les boutons, montres ta classe en entier.

      posted in 1.7.x
      AymericRed
      AymericRed
    • RE: Aide pour creer un mod dépendants [1.7.10]

      De l’activer ?
      Sachant que cette classe (GuiMainMenu$Staff) n’est pas une classe à part entière, mais une sous classe dans GuiMainMenu (et que seule elle ne fera rien du tout).

      posted in 1.7.x
      AymericRed
      AymericRed
    • RE: Aide pour creer un mod dépendants [1.7.10]

      Salut,

      Déjà, expliques clairement ce que tu veux faire. Tu dis vouloir créer une dépendance mais tu ajoutes diretement ton code dans le mod.

      posted in 1.7.x
      AymericRed
      AymericRed
    • RE: Présentation Mamy la Puce

      Bienvenue sur le forum !

      J’ai bien aimé ta présentation, bonne chance pour tes projets, en évitant McCreator 😉

      posted in Présentations
      AymericRed
      AymericRed
    • RE: Véhicules Flan's Mod invisibles uniquement sur mon IDE

      Salut,
      Le problème est que Minecraft, en environnement de dev, n’as pas les mêmes mappings que Minecraft hors environnement de dev. Pour remédier à cela, soit tu mets les .java des modèles dans ton src, soit tu mets le mod CodeChickenCore qui corrige automatiquement les mappings.

      posted in Sans suite
      AymericRed
      AymericRed
    • RE: Armure bug texture

      Bonjour,

      La texture n’est surement pas trouvée, tu pourrais au moins donner le log d’erreur ou l’arbrescence de tes fichiers.
      Et relire ton code aussi, je pense que le nom ‘texutres’ n’est pas voulu.

      posted in 1.7.x
      AymericRed
      AymericRed
    Design by Woryk
    Contact / Mentions Légales / Faire un don

    MINECRAFT FORGE FRANCE © 2018

    Powered by NodeBB