MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Créer une table de craft compatible avec JEI et NEI

    Planifier Épinglé Verrouillé Déplacé Les interfaces (GUI) et les container
    1.8.91.9.x
    90 Messages 11 Publieurs 23.4k Vues 3 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • AymericRedA Hors-ligne
      AymericRed
      dernière édition par

      Montre la fonction onCraftMatrixChanged de ton Container (j’ai regardé sur le pastebin que tu as fait hier mais les lignes ne correspondent pas).

      Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

      AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

      Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
      Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

      1 réponse Dernière réponse Répondre Citer 0
      • leo01418L Hors-ligne
        leo01418
        dernière édition par

        tient 🙂

        @Override
        public void onCraftMatrixChanged(IInventory iiventory)
        {
        //On met le résultat du craft dans le slot de résultat
        craftResult.setInventorySlotContents(0, TutorielCraftingManager.getInstance().findMatchingRecipe(craftMatrix, worldObj));
        }
        

        Voila ma signature

        1 réponse Dernière réponse Répondre Citer 0
        • AymericRedA Hors-ligne
          AymericRed
          dernière édition par

          Ah j’avais mal lu le rapport, l’erreur est dans ton constructeur, le problème est que ceci : TutorielCraftingManager.getInstance() appelle le constructeur qui lui-même appele ceci : TutorielCraftingManager.getInstance(), il faut que tu retires les trois “TutorielCraftingManager.getInstance()” du constructeur.

          Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

          AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

          Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
          Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

          1 réponse Dernière réponse Répondre Citer 0
          • leo01418L Hors-ligne
            leo01418
            dernière édition par

            J’ai donc fait 
            sa 🙂

            private TutorielCraftingManager()
              {
               addShapelessRecipe(new ItemStack(Blocks.anvil), Items.carrot, Items.golden_apple);
            addRecipe(new ItemStack(cratingTable), " C ", "X X", " C ", 'C', "slabWood", 'X', Blocks.planks); //"slabWood" est le nom des dalles de bois dans l'ore dictionnary, ceci est ajouté par Forge
            addRecipe(new ItemStack(Items.golden_apple), "A  A", "X  X", "X  X", "A  A", 'A', Items.carrot, 'X', Blocks.planks);
            
              }
            

            Le crash est plus la mais maintenant quand je fais clique droit sur le block cela me fait rien x)
            logs
            [19:39:54] [Server thread/INFO] [STDOUT]: [ed.enderdeath.mod.AnvilDragon.BlockAnvilDragon:onBlockActivated:21]: je suis dans le onblockactivated

            [19:39:54] [Server thread/INFO] [STDOUT]: [ed.enderdeath.mod.AnvilDragon.BlockAnvilDragon:onBlockActivated:24]: je suis dans la condition world.IsRemote

            Voila ma signature

            1 réponse Dernière réponse Répondre Citer 0
            • AymericRedA Hors-ligne
              AymericRed
              dernière édition par

              ça ne devrait pas, vu qu’il s’ouvrait avant, mets des print un peu partout, dans le GuiHandler, les constructeurs du gui et du container, et si ils sont appelés, dans la fonction de draw.

              Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

              AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

              Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
              Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

              1 réponse Dernière réponse Répondre Citer 0
              • leo01418L Hors-ligne
                leo01418
                dernière édition par

                Merci de ta réponse 🙂
                donc j’ai mis des system.out
                et donc sa me affiche sa
                [17:48:36] [Client thread/INFO] [STDOUT]: [ed.enderdeath.mod.AnvilDragon.BlockAnvilDragon:onBlockActivated:21]: je suis dans le onblockactivated
                [17:48:36] [Server thread/INFO] [STDOUT]: [ed.enderdeath.mod.AnvilDragon.BlockAnvilDragon:onBlockActivated:21]: je suis dans le onblockactivated
                [17:48:36] [Server thread/INFO] [STDOUT]: [ed.enderdeath.mod.AnvilDragon.BlockAnvilDragon:onBlockActivated:24]: je suis dans la condition world.IsRemote
                [17:48:36] [Server thread/INFO] [STDOUT]: [ed.enderdeath.mod.common.GuiHandler:getServerGuiElement:33]: Je suis dans le getServGuiElement
                [17:48:36] [Server thread/INFO] [STDOUT]: [ed.enderdeath.mod.common.GuiHandler:getServerGuiElement:36]: Je suis dans la condition container
                [17:48:36] [Client thread/INFO] [STDOUT]: [ed.enderdeath.mod.common.GuiHandler:getClientGuiElement:45]: Je suis dans le getCLientGuiElement
                [17:48:36] [Client thread/INFO] [STDOUT]: [ed.enderdeath.mod.common.GuiHandler:getClientGuiElement:57]: Je suis dans la condition gui

                et la je ne comprend plus rien car tout est bien appelé

                Merci de ton aide 😄

                Voila ma signature

                1 réponse Dernière réponse Répondre Citer 0
                • AymericRedA Hors-ligne
                  AymericRed
                  dernière édition par

                  Oui c’est bizarre, il y a d’ailleurs un post semblable dans le support… As-tu essayé des print dans les constructeurs du gui et du container, et dans la fonction draw ?

                  Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                  AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                  Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                  Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                  1 réponse Dernière réponse Répondre Citer 0
                  • leo01418L Hors-ligne
                    leo01418
                    dernière édition par

                    je l’ai fait 🙂
                    [20:13:07] [Client thread/INFO] [STDOUT]: [ed.enderdeath.mod.AnvilDragon.BlockAnvilDragon:onBlockActivated:21]: je suis dans le onblockactivated
                    [20:13:07] [Server thread/INFO] [STDOUT]: [ed.enderdeath.mod.AnvilDragon.BlockAnvilDragon:onBlockActivated:21]: je suis dans le onblockactivated
                    [20:13:07] [Server thread/INFO] [STDOUT]: [ed.enderdeath.mod.AnvilDragon.BlockAnvilDragon:onBlockActivated:24]: je suis dans la condition world.IsRemote
                    [20:13:07] [Server thread/INFO] [STDOUT]: [ed.enderdeath.mod.common.GuiHandler:getServerGuiElement:33]: Je suis dans le getServGuiElement
                    [20:13:07] [Server thread/INFO] [STDOUT]: [ed.enderdeath.mod.common.GuiHandler:getServerGuiElement:36]: Je suis dans la condition container
                    [20:13:07] [Server thread/INFO] [STDOUT]: [ed.enderdeath.mod.AnvilDragon.ContainerDragonAnvil:<init>:39]: Test Container
                    [20:13:07] [Server thread/INFO] [STDOUT]: [ed.enderdeath.mod.AnvilDragon.DragonSlotCrafting:<init>:35]: Test Slot
                    [20:13:07] [Client thread/INFO] [STDOUT]: [ed.enderdeath.mod.common.GuiHandler:getClientGuiElement:45]: Je suis dans le getCLientGuiElement
                    [20:13:07] [Client thread/INFO] [STDOUT]: [ed.enderdeath.mod.common.GuiHandler:getClientGuiElement:57]: Je suis dans la condition gui
                    [20:13:07] [Client thread/INFO] [STDOUT]: [ed.enderdeath.mod.AnvilDragon.ContainerDragonAnvil:<init>:39]: Test Container
                    [20:13:07] [Client thread/INFO] [STDOUT]: [ed.enderdeath.mod.AnvilDragon.DragonSlotCrafting:<init>:35]: Test Slot
                    [20:13:07] [Client thread/INFO] [STDOUT]: [ed.enderdeath.mod.AnvilDragon.GuiAnvilDragon:<init>:25]: Test Gui
                    [20:13:07] [Client thread/INFO] [STDOUT]: [ed.enderdeath.mod.AnvilDragon.TutorielCraftingManager:<init>:32]: Test CraftManager
                    [20:13:07] [Client thread/INFO] [STDOUT]: [ed.enderdeath.mod.AnvilDragon.TutorielShapelessRecipe:<init>:27]: Test ShapelessRecipe
                    [20:13:07] [Client thread/INFO] [STDOUT]: [ed.enderdeath.mod.AnvilDragon.TutorielShapedRecipes:<init>:45]: Test ShapedR
                    [20:13:07] [Client thread/INFO] [STDOUT]: [ed.enderdeath.mod.AnvilDragon.TutorielShapedRecipes:<init>:45]: Test ShapedR

                    et sa affiche bien bizarree</init></init></init></init></init></init></init></init></init>

                    Voila ma signature

                    1 réponse Dernière réponse Répondre Citer 0
                    • AymericRedA Hors-ligne
                      AymericRed
                      dernière édition par

                      Tout est là, maintenant, enlève ces prints (on a vu que ça marchait) et mets-en 1 dans la fonction draw, si il n’est pas appelé, mais en un dans la fonction initGui() (créées la si tu ne l’as pas).

                      Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                      AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                      Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                      Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                      1 réponse Dernière réponse Répondre Citer 0
                      • leo01418L Hors-ligne
                        leo01418
                        dernière édition par

                        la fonctions draw ou initgui de quel classe ?

                        Voila ma signature

                        1 réponse Dernière réponse Répondre Citer 0
                        • AymericRedA Hors-ligne
                          AymericRed
                          dernière édition par

                          Bah du gui ^^
                          Et c’est pas draw, c’est drawMachinChose.

                          Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                          AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                          Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                          Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                          1 réponse Dernière réponse Répondre Citer 0
                          • leo01418L Hors-ligne
                            leo01418
                            dernière édition par

                            oki 🙂
                            Donc j’ai mis system.out sur c’est 2 fonction

                             @Override
                            protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) 
                            { 
                            fontRendererObj.drawString(I18n.format("container.crafting_table"), 100, 5, 0xFFFFFF); //On dessine le "titre" du gui, le I18n.format va traduire le texte donné, n'oubliez pas de l'ajouter dans votre fichier de langues !
                            System.out.println("Test draw");
                            }
                             /**
                            * Fonction pour dessiner l'arrière plan
                            */
                            @Override
                            protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY)
                            {
                            mc.getTextureManager().bindTexture(texture); //On bind la texture
                            drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); //Et on la dessine
                            System.out.println("Test draw");
                            }
                            

                            et quand je fais clique droit cela ne fait rien

                            Voila ma signature

                            1 réponse Dernière réponse Répondre Citer 0
                            • leo01418L Hors-ligne
                              leo01418
                              dernière édition par

                              au passage ma classe

                              package ed.enderdeath.mod.AnvilDragon;
                              
                              import java.util.HashMap;
                              
                              import org.lwjgl.opengl.GL11;
                              
                              import ed.enderdeath.mod.Extractor.ContainerAlloyer;
                              import ed.enderdeath.mod.Extractor.GuiAlloyer;
                              import ed.enderdeath.mod.Extractor.TileEntityAlloyer;
                              import ed.enderdeath.mod.common.enderdeath;
                              import net.minecraft.client.gui.Gui;
                              import net.minecraft.client.gui.inventory.GuiContainer;
                              import net.minecraft.client.resources.I18n;
                              import net.minecraft.entity.player.InventoryPlayer;
                              import net.minecraft.inventory.IInventory;
                              import net.minecraft.util.ResourceLocation;
                              import net.minecraft.world.World;
                              
                              public class GuiAnvilDragon extends GuiContainer
                              {
                              private static final ResourceLocation texture = new ResourceLocation(enderdeath.MODID,"textures/gui/container/GuiAlloyer.png");
                              public GuiAnvilDragon(InventoryPlayer invPlayer, World world, int x,int y,int z) 
                              {
                              super(new ContainerDragonAnvil(invPlayer, world,x,y,z));
                              this.xSize = 176; //La largeur du gui en pixels (supprimez-le pour laisser celle par défaut)
                              this.ySize = 188; //La hauteur du gui en pixels (supprimez-le pour laisser celle par défaut)
                              
                              }
                              
                              /**
                              * Fonction pour dessiner le premier plan
                              */
                              @Override
                              protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) 
                              { 
                              fontRendererObj.drawString(I18n.format("container.crafting_table"), 100, 5, 0xFFFFFF); //On dessine le "titre" du gui, le I18n.format va traduire le texte donné, n'oubliez pas de l'ajouter dans votre fichier de langues !
                              System.out.println("Test draw");
                              }
                               /**
                              * Fonction pour dessiner l'arrière plan
                              */
                              @Override
                              protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY)
                              {
                              mc.getTextureManager().bindTexture(texture); //On bind la texture
                              drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); //Et on la dessine
                              System.out.println("Test draw");
                              }
                              }
                              
                              

                              Voila ma signature

                              1 réponse Dernière réponse Répondre Citer 0
                              • leo01418L Hors-ligne
                                leo01418
                                dernière édition par

                                Re 
                                Nn ne t’inquiète pas tout est réglé mais c’est une demande que je te fais tu pourrai me passé la texture stp 😛

                                Voila ma signature

                                1 réponse Dernière réponse Répondre Citer 0
                                • AymericRedA Hors-ligne
                                  AymericRed
                                  dernière édition par

                                  La texture du gui ? Oui sans pb (je vais edit).

                                  Ici : http://imgur.com/csgvbSN

                                  Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                  AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                  Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                  Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                                  1 réponse Dernière réponse Répondre Citer 1
                                  • AymericRedA Hors-ligne
                                    AymericRed
                                    dernière édition par

                                    Un tutoriel sur JEI est en cours de rédaction, il expliquera comment adapter la table de cratf à JEI aussi comment l’utiliser pour un four custom.
                                    Un peut plus tard suivra une partie sur NEI.

                                    Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                    AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                    Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                    Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • MajorSquirrelM Hors-ligne
                                      MajorSquirrel
                                      dernière édition par

                                      Salutations,

                                      Je me permets d’ajouter une petite amélioration sur la classe Container qui est exposé dans ce tutoriel.

                                      Pour la fonction transferStackInSlot, il est en fait possible d’adapter les transferts d’item dans le slots en fonction de la taille du craft.
                                      En effet, les valeurs du slotIndex dans les différents if nécessitent juste d’être ajustées. 🙂

                                      Je vous redirige vers ce topic pour adapter correctement vos valeurs (elles sont modifiées exprès pour une table de craft 5x5 mais vous ne devriez pas avoir de gros problème d’ajustement pour une 4x4)

                                      Si vous patinez un peu, je vous conseille d’aller regarder la classe ContainerWorkbench dans le package package net.minecraft.inventory pour voir un peu la logique de tout le bidule. 😄

                                      EDIT: voir ma réponse ici pour avoir les vraies bonnes valeurs !

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • AymericRedA Hors-ligne
                                        AymericRed
                                        dernière édition par

                                        Je dois dire que ce n’est pas une mauvaise idée, l’adapterais donc le tuto prochainement, mais par contre dans le lien que tu as donné les valeurs dand la fonction sont les mêmes qu’ici.

                                        Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                        AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                        Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                        Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • MajorSquirrelM Hors-ligne
                                          MajorSquirrel
                                          dernière édition par

                                          @‘AymericRed’:

                                          Je dois dire que ce n’est pas une mauvaise idée, l’adapterais donc le tuto prochainement, mais par contre dans le lien que tu as donné les valeurs dand la fonction sont les mêmes qu’ici.

                                          Woops, effectivement ! Le comble c’est que je n’arrive plus à retrouver l’endroit exact où j’ai chopé ces valeurs, haha.
                                          Pour me faire pardonner, je mets directement mon code ci-dessous (fonctionnant pour une table de craft 5x5 */!*)

                                          
                                             @Override
                                             public ItemStack    transferStackInSlot(EntityPlayer player, int slotId) {
                                                 ItemStack       itemstack = null;
                                                 Slot            slot = this.inventorySlots.get(slotId);
                                          
                                                 if (slot != null && slot.getHasStack()) {
                                                     ItemStack   itemstack1 = slot.getStack();
                                          
                                                     itemstack = itemstack1.copy();
                                          
                                                     /**
                                                      *  If the slot belongs to the craftResult slot,
                                                      *  Put the itemStack in the 27 slots player inventory
                                                      */
                                                     if (slotId == 0) {
                                                         if (!this.mergeItemStack(itemstack1, 26, 62, true)) {
                                                             return (null);
                                                         }
                                                         slot.onSlotChange(itemstack1, itemstack);
                                                     }
                                          
                                                     /**
                                                      *  If the slot belongs to the 27 slots player inventory,
                                                      *  Put the itemStack in the 9 slots player hotbar
                                                      */
                                                     else if (slotId >= 26 && slotId < 53) {
                                                         if (!this.mergeItemStack(itemstack1, 53, 62, false)) {
                                                             return (null);
                                                         }
                                                     }
                                          
                                                     /**
                                                      *  If the slot belongs to the 9 slots player hotbar,
                                                      *  Put the itemStack in the 27 slots player inventory
                                                      */
                                                     else if (slotId >= 53 && slotId < 62) {
                                                         if (!this.mergeItemStack(itemstack1, 26, 53, false)) {
                                                             return (null);
                                                         }
                                                     }
                                          
                                                     /**
                                                      * If the slot doesn't match with any of the if condition above,
                                                      * Put the itemStack in the whole player inventory (hotbar + 27 slots)
                                                      */
                                                     else if (!this.mergeItemStack(itemstack1, 26, 62, false)) {
                                                         return (null);
                                                     }
                                          
                                                     if (itemstack1.stackSize == 0) {
                                                         slot.putStack((ItemStack) null);
                                                     } else {
                                                         slot.onSlotChanged();
                                                     }
                                          
                                                     if (itemstack1.stackSize == itemstack.stackSize) {
                                                         return (null);
                                                     }
                                          
                                                     slot.onPickupFromSlot(player, itemstack1);
                                                 }
                                                 return (itemstack);
                                             }
                                          
                                          

                                          J’ai même commenté pour que ce soit plus clair ! 😄

                                          Je me permets encore une fois aux personnes qui liront ce message plus tard, qu’en fin de compte ces fameuses valeurs (26, 53, 62) sont propres à la taille du inventorySlots de votre container (qui change à chaque fois que vous faites this.addSlotToContainer). À vous d’adapter ces valeurs en fonction de la grille de craft 4x4, 6x6 ou 100x100, etc…

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • AymericRedA Hors-ligne
                                            AymericRed
                                            dernière édition par

                                            Merci d’avoir mis ça, je m’en inspirerait, mais avec un truc dynamique changeant selon la taille de la grille ^^
                                            EDIT : C’est fait 🙂

                                            Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                            AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                            Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                            Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 5
                                            • 5 / 5
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB