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



  • En fait il prend juste pas le OreDictionnary.WILCARD_VALUE
    parce que si je fait ça :

    addShapelessRecipe(new ItemStack(ItemMod.speedStick), new ItemStack(ItemMod.woodenHammer, 1), new ItemStack(Item.getItemFromBlock(Blocks.planks)));
    

    ça fonctionne
    mais si, je fais ça :

    addShapelessRecipe(new ItemStack(ItemMod.speedStick), new ItemStack(ItemMod.woodenHammer, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(Item.getItemFromBlock(Blocks.planks)));
    

    ça fonctionne pas, le craft ne s'affiche pas alors que j'ai mis les bons objets.

    Je sais pas d'ou ça vient mais j'aimerai corriger ceci.



  • Alors oui effectivemet il y a un petit défaut, la fonction "TutorielShapedRecipes.areItemStacksEquals" ne check cette valeur que sur le premier ItemStack (normal vu qu'un joueur ne peut pas posséder un item avec cette valeur), dans la classe "TutorielShapedRecipes", les arguments sont dans le bon ordre mais pas dans la classe "TutorielShapelessRecipe", je m'en vais corriger ceci, mais il suffit juste d'inverser les deux stacks dans les appels de "TutorielShapedRecipes.areItemStacksEquals" qui sont dans la fonction "TutorielShapelessRecipe.matches".



  • Je dois inverser les stacks itemstack et itemstack1 dans ceci ? :

    public boolean matches(InventoryCrafting inv, World worldIn)
        {
            ArrayList arraylist = Lists.newArrayList(this.recipeItems);
            for (int i = 0; i < ContainerAdvancedCraftingTab.craftHeight; ++i)
            {
                for (int j = 0; j < ContainerAdvancedCraftingTab.craftWidth; ++j)
                {
                    ItemStack itemstack = inv.getStackInRowAndColumn(j, i);
                    if (itemstack != null)
                    {
                        boolean flag = false;
                        for(Object component : arraylist)
                        {
                         if(component instanceof String)
                         {
                         List <itemstack>stacks = OreDictionary.getOres((String) component);
                         for(ItemStack itemstack1 : stacks)
                         {
                         if (AdvancedShapedRecipes.areItemStacksEquals(itemstack, itemstack1))
                                {
                                    flag = true;
                                    arraylist.remove(itemstack1);
                                    break;
                                }
                         }
                         }
                         else
                         {
                            ItemStack itemstack1 = (ItemStack)component;
                            if (AdvancedShapedRecipes.areItemStacksEquals(itemstack, itemstack1))
                            {
                                flag = true;
                                arraylist.remove(itemstack1);
                                break;
                            }
                         }
                        }
                        if (!flag)
                         return false;
                    }
                }
            }
            return arraylist.isEmpty();
        }
    

    J'ai pas trop compris.</itemstack>



  • Oui exactement (sinon tu peux regarder cette fonction dans le tuto je l'ai changée).



  • Merci beaucoup  😄



  • Bonjour,

    Version de forge : 1.11.2

    Crash :
    latest : https://hastebin.com/palugowara.vbs
    fml : https://hastebin.com/tefohojewu.sql

    Problème 1 :
    En suivant le tutoriel comme indiqué ci-dessus, j'ai du toucher à quelques petites choses pour l'adapter en 1.11.2, hier soir (jusqu'à tard), mon code fonctionner et je n'avais pas ce crash [J'ai enlever la TileEntity et si je la remet je n'est plus de crash], hors en faisant cela, mes recettes de crafts ne fonctionne absolument pas, je n'avais aucun craft qui pouvais être utiliser.

    Problème 2 :
    Si je supprime ma TileEntity, le crash est le suivant (Voir au dessus), cela ce passe dès que je met un item dans ma table de craft, minecraft crash. En revanche je peux bel et bien m'amuser dans les slots de l'inventaire.

    Voici mes classes :

    PolishTableBlock : https://hastebin.com/zipiyobomi.scala

    ContainerPolishTable : https://hastebin.com/fihamaxaro.java

    PolishSlotCrafting : https://hastebin.com/iwesuxosex.cpp

    [Gui]
    GuiHandler : https://hastebin.com/keyefabuba.java
    GuiPolishTable : https://hastebin.com/asezayutop.scala

    [Crafting]
    CraftingManager : https://hastebin.com/tipogelale.js
    ShapedRecipe : https://hastebin.com/xizerubaqi.java
    ShapelessRecipe : https://hastebin.com/gowaheziko.java

    Merci de m'aider car la je bloque x).



  • Salut,

    Pour le problème de crash, cela vient de là : "this.addSlotToContainer(new Slot(craftMatrix, x + 1 * craftWidth, 38/2 + (x * 18), yCraft));" (classe du Container) et plus précisément de "x + 1 * craftWidth", cela va donner des ids entre 8 et 16, alors que la craftMatrix a une taille de 0 à 8 avec les arguments que tu lui donne, il faut donc changer les ids que tu donnes à ces slots.

    Pour le problème des recettes non fonctionnelles, si tu l'as toujours par la suite, tu me diras et je regarderais de mon côté avec ton code essayer de faire marcher ça.



  • Merci de ta réponse !

    En effet maintenant je peux replacer mes items dans la table, sauf que les recettes ne marche pas, j'ai du modifier à peux prêt toutes les classes des recettes et du craftingmanager en fonction du workbench de minecraft et j'ai bien le recettes qui marche, à partir de là j'ai juste à modifier mon code comme je le veux. (Faires des crafts avec des items qui ont x > 1 en quantités)

    Je te remercie 🙂



  • This post is deleted!


  • Le tuto marche il toujours en 1.12.2


Log in to reply