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.
    • leo01418L Hors-ligne
      leo01418
      dernière édition par

      J’ai enlevé c’est méthode et sa ne marche pas

      voici mes classes
      Container
      http://pastebin.com/hiLFTGHV

      BlockCraftCustom
      http://pastebin.com/49s4j5pR

      Slot
      http://pastebin.com/PPY9L6kC

      gui
      http://pastebin.com/UPSfxNUX

      TutorielCraftingManager
      http://pastebin.com/ZsSRGZWZ

      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

        Non il ne faut pas enlever les fonctions d’ajout de recette, juste getRemainingItems, sinon tes classes sont bonnes (le container, le slot et le craftingmanager en tout cas), sauf ça : ```java
        @Override
        public boolean canInteractWith(EntityPlayer player)
        {
        return this.worldObj.getBlock(x, y, z) != enderdeath.AnvilDragon;
        }

        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
        • leo01418L Hors-ligne
          leo01418
          dernière édition par

          Bonjour AymericRed 🙂
          Merci infiniment de ton aide 😉
          J’ai 1 dernier problème sur une ligne
          c’est cette ligne

              return stack1.getItem() == stack2.getItem() && (stack1() == OreDictionary.WILDCARD_VALUE || stack1.getMetadata() == stack2.getMetadata());
          

          ici il me propose de crée une méthode

          stack1() 
          

          et ici

          stack1.getMetadata() == stack2.getMetadata());
          

          la méthode Metadata n’existe pas j’ai cherché mais je n’ai pas trouvé 😞

          et ma question c’est comment ajouté un craft? (je sais qu’il faut faire this.addRecipe dans la classe TutorielCraftingManager) mais je sais pas comment géré cela 🙂

          Voila ma signature

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

            1. c’est stack1.getItemDamage.
            2. pareil, c’est getItemDamage, je changerais le tuto pour la 1.8.9.
            3. regarde le résultat, j’ai ajouté 3 craft, ça fonctionne comme avec le GameRegistry.addRecipe

            Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

            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

              Re ^^
              Merci de ton aide après avoir tout fait j’était tellement précipité pour la testé

              J’arrive dans mon monde solo et la je me give la table custom et je tente de me la givé et suspect rien ne se passe 😞
              J’ai essaye de revoir le tuto mais je ne vois pas mon érreur je pense que cela viens d’une certaine classe mais je ne sais pas la quelle

              donc je te l’ai passe tous x)
              block
              http://pastebin.com/Vb4Rf3Nv

              container
              http://pastebin.com/4UzxzZiZ

              slot
              http://pastebin.com/J7LDKtRL

              gui
              http://pastebin.com/u4ECnZwQ

              CraftingManager
              http://pastebin.com/bJtDiNEj

              TutorielShapelessRecipe
              http://pastebin.com/RiSzNbNS

              Merci de ton aide et merci beacuoup pour ton tuto

              Voila ma signature

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

                Tu veux dire que tu ne reçois pas le block ? Tu l’as bien enregistré avec le game registry ? Passe ta classe principale.
                PS : si tu ajoutes tes recettes via le constructeur, tu n’as pass besoin du “TutorielCraftingManager.getInstance().” devant chaque addRecipe.

                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

                  @‘AymericRed’:

                  Tu veux dire que tu ne reçois pas le block ? Tu l’as bien enregistré avec le game registry ? Passe ta classe principale.
                  PS : si tu ajoutes tes recettes via le constructeur, tu n’as pass besoin du “TutorielCraftingManager.getInstance().” devant chaque addRecipe.

                  Non au faite quand je fais clique droit dessus cela ne marche pas 😞
                  j’ai oublié le gui halnder
                  http://pastebin.com/t29G6Qsq

                  et de ma classe

                  
                  BlockAnvilDragon = new BlockAnvilDragon();
                  
                  GameRegistry.registerBlock(BlockAnvilDragon, "BlockAnvilDragon");
                  

                  Voila ma signature

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

                    Bizarre… mets un System.out.println dans ta fonction onBlockActivated et dans ton GuiHandler, si ce n’est pas appelé, mets un @Override au deussus de la fonction.

                    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 je l’ai system.out et tu simplement quand je fais clique droit cela ne fait rien je vais regardé dans la classe de la table de craft pour voir 😉

                      Edit:j’ai trouvé as     p_149727_5_.displayGUIWorkbench(p_149727_2_, p_149727_3_, p_149727_4_); le problème est que p_149727_5_ est  le player en gros nommé c’est sa
                      player.displayGUIWorkbench(x, y, z);
                      et pour le @Override je l’avais déjà mis

                      Voila ma signature

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

                        Oui mais cela ne va pas ouvrir ton gui. Est-ce que le println de onBlockActivated est bien appelé au moins ? Et pout le @Override, en tout cas il n’est pas sur le pastebin de ton block.

                        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

                          ha ok  🙂

                          J’avais pas compris ^^ et

                          Au faite pour le @Override je pensé que tu parlé pour le gui Handler

                          Au final j’ai réussi à le méttre mais sa me fait un crash

                          crash
                          http://pastebin.com/FJAjFU2m

                          Voila ma signature

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

                            Tu as modifié la classe TutorielShapedRecipes (à part retirer getRemainingItems) ? Il y a un problème ligne 61, montre la classe si tu trouves 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

                              ma classe x)

                              http://pastebin.com/gPjpfXaZ

                              mais au faite j’ai modifié pas mal de chose car elles sont pas disponible en 1.7.10 😉

                              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

                                for (int i = 0; i <= this.recipeWidth - this.recipeWidth; ++i)
                                {
                                for (int j = 0; j <= ((IBlockAccess) inv).getHeight() - this.recipeHeight; ++j)//Ligne 61
                                {
                                

                                Première ligne : remplace le premier this.recipeWidth par inv.width (ou getWidth()) sinon ça ne marchera pas.
                                Troisième ligne : whhaaatttt ?? Et eclipse est d’accord ? IBlockAccess et InventoryCrafting sont totalement différent, je ne comprends pas ce qui t’a fait mettre ça… remplace par la même chose que la première ligne, mais cette fois ci avec height et pas width.

                                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

                                  Re 🙂

                                  Excuse j’avais pas vu ton commentaire x).

                                  Donc j’ai essaye de [font=Ubuntu, sans-serif inv.width (ou getWidth()) mais pourquoi cela n’existe pas (peut être ma version de forge )]

                                  [font=Ubuntu, sans-serifJe voudrais te remercié de m’avoir suivis pour passé le code de 1.8 ou 1.9 à 1.7.10][size=small ][size=small:)]

                                  Voila ma signature

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

                                    Alors c’est que les variables ne sont pas visibles, tu dois remplacer par les variables de largeur (width) et hauteur (height) de craft que tu as dans ton Container, le seul truc est que si tu as une autre table avec une taille de craft différente, tu devras refaire les classes de recette.

                                    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

                                      Comme cela?

                                      package ed.enderdeath.mod.AnvilDragon;
                                      
                                      import java.util.ArrayList;
                                      import java.util.List;
                                      
                                      import com.google.common.collect.Lists;
                                      
                                      import net.minecraft.inventory.InventoryCrafting;
                                      import net.minecraft.item.ItemStack;
                                      import net.minecraft.item.crafting.IRecipe;
                                      import net.minecraft.nbt.NBTTagCompound;
                                      import net.minecraft.world.IBlockAccess;
                                      import net.minecraft.world.World;
                                      import net.minecraftforge.common.ForgeHooks;
                                      import net.minecraftforge.oredict.OreDictionary;
                                      
                                      public class TutorielShapedRecipes implements IRecipe
                                      
                                      {  /** How many horizontal slots this recipe is wide. */
                                        public final int recipeWidth;
                                        /** How many vertical slots this recipe uses. */
                                        public final int recipeHeight;
                                        /** Is a array of ItemStack that composes the recipe. */
                                        public final Object[] recipeItems;
                                        /** Is the ItemStack that you get when craft the recipe. */
                                        private final ItemStack recipeOutput;
                                        private boolean copyIngredientNBT;
                                      private ContainerDragonAnvil con;
                                      
                                        public TutorielShapedRecipes(int width, int height, Object[] items, ItemStack output)
                                        {
                                            this.recipeWidth = width;
                                            this.recipeHeight = height;
                                            this.recipeItems = items;
                                            this.recipeOutput = output;
                                        }
                                      
                                        public ItemStack getRecipeOutput()
                                        {
                                            return this.recipeOutput;
                                        }
                                      
                                        public ItemStack[] getRemainingItems(InventoryCrafting inv)
                                        {
                                            ItemStack[] aitemstack = new ItemStack[inv.getSizeInventory()];
                                            for (int i = 0; i < aitemstack.length; ++i)
                                            {
                                                ItemStack itemstack = inv.getStackInSlot(i);
                                                aitemstack* = recipeOutput.getItem().getContainerItem(recipeOutput);
                                            }
                                            return aitemstack;
                                        }
                                      
                                        /**
                                         * Used to check if a recipe matches current crafting inventory
                                         * Retourne true si la recette correspond à la matrice donnée (le craft que le joueur a fait)
                                         */
                                        public boolean matches(InventoryCrafting inv, World worldIn)
                                        {
                                            for (int i = 0; i <= con.craftWidth - this.recipeWidth; ++i)
                                            {
                                                for (int j = 0; j <= con.craftHeigth - this.recipeHeight; ++j)
                                                {
                                                    if (this.checkMatch(inv, i, j, true))
                                                    {
                                                        return true;
                                                    }
                                                    if (this.checkMatch(inv, i, j, false))
                                                    {
                                                        return true;
                                                    }
                                                }
                                            }
                                            return false;
                                        }
                                      
                                        /**
                                         * Checks if the region of a crafting inventory is match for the recipe.
                                         * Compare deux parties du craft
                                         */
                                        private boolean checkMatch(InventoryCrafting inv, int regionX, int regionY, boolean mirror)
                                        {
                                          for (int x = 0 ; x < con.craftWidth ; ++x)
                                            {
                                                for (int y = 0 ; y < con.craftHeigth ; ++y)
                                                {
                                                    int x1 = x - regionX;
                                                    int y1 = y - regionY;
                                                    Object patternStack = null;
                                                    if (x1 >= 0 && y1 >= 0 && x1 < this.recipeWidth && y1 < this.recipeHeight)
                                                    {
                                                     if (mirror) 
                                                     patternStack = this.recipeItems[this.recipeWidth - x1 - 1 + y1 * this.recipeWidth];
                                                     else
                                                     patternStack = this.recipeItems[x1 + y1 * this.recipeWidth];
                                                     if(patternStack instanceof String)
                                                     {
                                                     List <itemstack>stacks = OreDictionary.getOres((String) patternStack);
                                                     boolean matches = false;
                                                     for(ItemStack stack : stacks)
                                                     {
                                                     if(areItemStacksEquals(stack, inv.getStackInRowAndColumn(x, y))) //If the pattern's stack doesn't match with the stack in the inv crafting
                                                     {
                                                     matches = true;
                                                     }
                                                     }
                                                     if(!matches)
                                                     return false;
                                                     }
                                                     else if(!areItemStacksEquals((ItemStack) patternStack, inv.getStackInRowAndColumn(x, y)))
                                                     {
                                                     return false;
                                                     }
                                                    }
                                                }
                                            }
                                            return true;
                                        }
                                      
                                        /**
                                         * Compare les deux stacks
                                         */
                                        public static boolean areItemStacksEquals(ItemStack stack1, ItemStack stack2)
                                        {
                                         if(stack1 == null || stack2 == null) return stack1 == stack2;
                                         return stack1.getItem() == stack2.getItem() && (stack1.getItemDamage() == OreDictionary.WILDCARD_VALUE || stack1.getItemDamage() == stack2.getItemDamage());
                                        }
                                      
                                        /**
                                         * Returns an Item that is the result of this recipe
                                         */
                                        public ItemStack getCraftingResult(InventoryCrafting inv)
                                        {
                                            ItemStack itemstack = this.getRecipeOutput().copy();
                                            if (this.copyIngredientNBT)
                                            {
                                                for (int i = 0; i < inv.getSizeInventory(); ++i)
                                                {
                                                    ItemStack itemstack1 = inv.getStackInSlot(i);
                                                    if (itemstack1 != null && itemstack1.hasTagCompound())
                                                    {
                                                        itemstack.setTagCompound((NBTTagCompound)itemstack1.getTagCompound().copy());
                                                    }
                                                }
                                            }
                                            return itemstack;
                                        }
                                      
                                        /**
                                         * Returns the size of the recipe area
                                         */
                                        public int getRecipeSize()
                                        {
                                            return this.recipeWidth * this.recipeHeight;
                                        }
                                      
                                        /**
                                         * Set this crafting recipe to copy the NBT tag compound of the last ItemStack that has one in the crafting table.
                                         */
                                        public TutorielShapedRecipes setCopyIngredientNBT()
                                        {
                                            this.copyIngredientNBT = true;
                                            return this;
                                        }
                                      
                                      }
                                      
                                      ```</itemstack>

                                      Voila ma signature

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

                                        “con” des insultes même dans le code ^^
                                        Oui c’est ça mais tétais pas obligé de créer une variable, d’ailleurs il faut que tu l’initialises.

                                        Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

                                        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

                                          @‘AymericRed’:

                                          “con” des insultes même dans le code ^^
                                          Oui c’est ça mais tétais pas obligé de créer une variable, d’ailleurs il faut que tu l’initialises.

                                          Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

                                          xD je te jure j’ai pas fait exprès 
                                          Je vais l’initialises la variable tout de suite :)___et pour la variable je peux directement la mettre dans la classe TutorielShapedRecipes???

                                          Voila ma signature

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

                                            Tu peux la mettre partout mais de toute façon du n’en n’a pas besoin, tu peux directement mettre ContainerCrafingTable.craftWidth et ContainerCrafingTable.craftHeight dans ton for.

                                            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
                                            • 3 / 5
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB