• Bonjour,

    J'aimerais faire un couteau ayant les attributs suivant :

    -L'item à la même fonction qu'une arme (Elle fait des dégâts, mais ce n'est pas un ItemSword)
    -Il soit utile à un craft (Mais une fois le craft fais, le couteau ne doit pas disparaître mais l'outil deviens un peu usée(La barre verte sous les outils))

    J'ai essayé un truc comme ça :

    import net.minecraft.client.renderer.texture.IIconRegister;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.item.Item;
    
    public class Couteau extends Item
    {
        @Override
         public void registerIcons(IIconRegister iconregister)
        {
            this.itemIcon = iconregister.registerIcon(Nawak.MODID + ":Couteau");
        }
    
        protected Couteau()
        {
            this.setCreativeTab(CreativeTabs.tabCombat);
        }
    }
    

    Mais rien ne correspond à ce que je voudrait dans la partie protected Couteau()
    Les this.etc ne vont pas à ce que je recherche.

    Merci d'avance 🙂


  • avant de commencer réorganise ton code (ne fait pas les mêmes erreurs que moi !)

    
    import net.minecraft.client.renderer.texture.IIconRegister;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.item.Item;
    
    public class Couteau extends Item
    {
    protected Couteau()
    {
    this.setCreativeTab(CreativeTabs.tabCombat);
    }
    
    @SideOnly(SIDE.CLIENT)
    public void registerIcons(IIconRegister iconregister)
    {
    this.itemIcon = iconregister.registerIcon(Nawak.MODID + ":Couteau");
    }
    }
    
    

  • Ok, c'est bon je l'ai réorganisé. Mais vu le nombre de réponses, je suppose que ça doit obligatoirement être un itemSword ?

    J'aimerais qu'il fasse des dêgats, mais en créant un addToolMaterial (Ou un truc comme ça), il y a forcément une possibilité d'enchantement, ce que je ne veux pas.


  • je te conseille de faire une sorte de item 3D, et de créer la classe couteau, si tu veux faire un couteau de lancer il te faut créer un projectile.

  • Moddeurs confirmés Rédacteurs Administrateurs

    @'zery59':

    J'aimerais qu'il fasse des dêgats, mais en créant un addToolMaterial (Ou un truc comme ça), il y a forcément une possibilité d'enchantement, ce que je ne veux pas.

    Non. Tu mets le dernier nombre (qui correspond à la facilité d'enchantement) sur 0, et il ne pourra pas être enchanté.


  • Ok, merci robin4002. Je vais le faire.

    Diangle : Je ne veux pas qu'il se lance. Je veut juste qu'il fasse un peu de dégâts et qu'il soit utilisé dans un craft (Mais une fois le craft terminé, le couteau reste dans la table comme le sceau de lait avec les gâteaux)


  • Je fais un UP

    Comment je peux faire pour que le couteau ne disparaisse pas lors d'un craft ?

  • Moddeurs confirmés Rédacteurs Administrateurs

    Il faut un custom IRecipe, regarde les classes de minecraft, si tu as besoin d'aide prévient.


  • D'accord, je vais regarder

    Je vois pas trop quoi faire 😕

    Il y a bien une class IRecipe :

    package net.minecraft.item.crafting;
    
    import net.minecraft.inventory.InventoryCrafting;
    import net.minecraft.item.ItemStack;
    import net.minecraft.world.World;
    
    public interface IRecipe
    {
    /**
    * Used to check if a recipe matches current crafting inventory
    */
    boolean matches(InventoryCrafting var1, World var2);
    
    /**
    * Returns an Item that is the result of this recipe
    */
    ItemStack getCraftingResult(InventoryCrafting var1);
    
    /**
    * Returns the size of the recipe area
    */
    int getRecipeSize();
    
    ItemStack getRecipeOutput();
    }
    

    Mais je dois en faire quoi ? Je devrais utiliser le code suivant ?

    GameRegistry.addRecipe(IRecipe recipe)
    

    Mais ça me donne ça :

    GameRegistry.addRecipe(recipe);
    

    Première fois que je comprends vraiment rien 😮


  • Up 😕

  • Moddeurs confirmés Rédacteurs Administrateurs

    Je viens de faire des tests, en fait pas besoin d'utiliser un custom IRecipe.
    Suffit juste de mettre ça dans la classe de ton item :

    public boolean hasContainerItem(ItemStack stack)
    {
         return true;
    }
    
    public ItemStack getContainerItem(ItemStack stack)
    {
         return new ItemStack(stack.getItem(), 1, stack.getItemDamage() + 1);
    }
    
    public boolean doesContainerItemLeaveCraftingGrid(ItemStack stack)
    {
        return false;
    }
    

    Par contre pour ajouter la recette, fait comme ça :

    GameRegistry.addRecipe(new ItemStack(itemTutoriel2), new Object[] {"X", "Y", 'X', new ItemStack(swordTuto, 1, OreDictionary.WILDCARD_VALUE), 'Y', itemTutoriel});
    

    Le OreDictionary.WILDCARD_VALUE est important, sinon tu pourra que crafter avec une épée neuf.


  • Effectivement, ça marche parfaitement !

    Merci beaucoup robin4002 🙂 🙂