Item variant



  • Salut,

    Je veux créer un item dont la texture peut changer suivant un item dans son craft. Après avoir enregistré et créé tous les modèles et textures :

    
    ResourceLocation[] resLoc = new ResourceLocation[this.mushPowersItems.size()+1];
    resLoc[0] = new ResourceLocation(Reference.MOD_ID, "shroomrodstick");
    for(int i = 0; i < this.mushPowersItems.size(); i++)
       resLoc[i+1] = new ResourceLocation(Reference.MOD_ID, "shroomrodstick_"+this.mushPowersItems.get(i).getRegistryName().getResourcePath());
    ModelLoader.registerItemVariants(itemShroomRodStick, resLoc);
    
    

    je ne sais pas comment m'y prendre pour afficher la bonne texture, sachant que la méthode getIcons n'existe plus :s  .

    Merci  😄



  • Salut
    a mon avis, faut un peu de ces ingrédients là :

    • ta classe CustomRecipe implémentant de IRecipe, qui retournera le stack "result" avec le metadata variant en fonction des itemstacks "input" constituant ta recette.
    • ton item enregistrant plusieurs métadatas.
    • tes fichiers .jsons affichants la bonne texture en fonction du bon métadata.

    Voilà, à toi de voir quels sont les étapes de ta recette, temps de cuissons, températures, etc…

    PS = Il est tard, je voulais user de métaphores à travers ma réponse, mais je me rends compte que ça n'a rien de comique…



  • @'Plaigon':

    Salut
    a mon avis, faut un peu de ces ingrédients là :

    • ta classe CustomRecipe implémentant de IRecipe, qui retournera le stack "result" avec le metadata variant en fonction des itemstacks "input" constituant ta recette.
    • ton item enregistrant plusieurs métadatas.
    • tes fichiers .jsons affichants la bonne texture en fonction du bon métadata.

    Voilà, à toi de voir quels sont les étapes de ta recette, temps de cuissons, températures, etc…

    PS = Il est tard, je voulais user de métaphores à travers ma réponse, mais je me rends compte que ça n'a rien de comique…

    Justement, je ne veux pas utiliser les metadatas car mon objet peut prendre jusqu'à 12 textures actuellement, mais ce chiffre va augmenter et dépassé un jour 16…


  • Administrateurs

    Les item peuvent avoir jusqu'à 32767 metadata différent.
    Autant dire que tu as de la marge.

    (les variantes sont de toute façon a un moment relié à un metadata, sauf si la valeur de la variante est calculable).



  • Bon, j'ai finalement réussis ^^

    MAIS, un autre problème intervient : dans la méthode onItemRightClick, je veux savoir si le joueur fait clic droit sur une entity. Pour cela, j'utilise la méthode rayTrace. Problème : elle ne prend en compte que les blocs et pas les entities. J'ai donc fait ainsi :

    
    @Override
    protected RayTraceResult rayTrace(World worldIn, EntityPlayer playerIn, boolean useLiquids) {
    if(playerIn instanceof EntityPlayerMP){
       MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance();
       return null;
    } else 
       return Minecraft.getMinecraft().objectMouseOver;
    }
    
    

    Mais je ne sais pas quoi mettre pour avoir un *RayTraceResult *côté serveur  :s



  • Quelqu'un a déjà posé cette question :

    https://www.minecraftforgefrance.fr/showthread.php?tid=4657&page=2



  • Eh bien merci à vous tous, tous marche marche parfaitement !