• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu Créer un outil mangeable

    1.7.x
    1.7.2
    2
    3
    803
    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.
    • Squix
      Squix dernière édition par robin4002

      Bonjour,

      Aussi étrange et loufoque que ça peut-être, j’ai besoin de créer un kit d’outils “mangeable”.

      J’ai donc essayé d’implémenter la classe ItemFood à ItemSword sans grand succès. Je ne peut pas non plus faire extends ItemSword et ItemFood à la classe de l’outil.

      J’ai donc trouvé une solution : j’ai modifié la classe de l’outil pour que quand on clique droit avec, on obtient un item avec le même nom et la même texture qui lui est mangeable et l’outil se consume.

      Code de la classe de mon outil :

      
      package com.squixdev.cookieparty.item;
      
      import com.squixdev.cookieparty.common.CookieParty;
      
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.init.Items;
      import net.minecraft.item.Item;
      import net.minecraft.item.Item.ToolMaterial;
      import net.minecraft.item.ItemStack;
      import net.minecraft.item.ItemSword;
      import net.minecraft.world.World;
      
      public class ItemCookieSwordNormal extends ItemSword
      {
      public ItemCookieSwordNormal(ToolMaterial material)
      {
      super(material);
      }
      
      @Override
      public ItemStack onItemRightClick(ItemStack stack, World par2World,
      EntityPlayer p) {
      p.inventory.addItemStackToInventory(new ItemStack(CookieParty.cookieSwordNormalEat));
      p.inventory.consumeInventoryItem(stack.getItem());
      // TODO Auto-generated method stub
      return super.onItemRightClick(stack, par2World, p);
      }
      
      public boolean getIsRepairable(ItemStack input, ItemStack repair)
      {
      if(repair.getItem() == Items.cookie)
      {
      return true;
      }
      return false;
      }
      }
      
      

      Code de la classe de l’item mangeable :

      
      package com.squixdev.cookieparty.item;
      
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.ItemFood;
      import net.minecraft.item.ItemStack;
      import net.minecraft.world.World;
      
      public class ItemCookieSwordNormalEat extends ItemFood {
      
      public ItemCookieSwordNormalEat(int foodAmount, float saturation, boolean isWolfFood)
      {
      super(foodAmount, saturation, isWolfFood);
      }
      
      }
      
      

      Et voilà le problème ! J’aimerais que l’item qui est donné “suive” en quelque sorte l’action du clique droit (onItemRightClick) et se mette automatiquement à être mangé ! De plus, il faudrait que le joueur reçoivent l’item mangeable à l’emplacement où se trouvait l’outil.

      C’est peut-être impossible, mais bon je tente le coup, alors si vous pouvez me donner des pistes ou m’aider, n’hésitez pas !

      Merci d’avance,

      Squix

      System.crash(); //Petite instruction marrante  :D

      Développeur de : RemoveHUDbut…

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

        Salut,
        Pas besoin d’avoir deux items.

        package fr.minecraftforgefrance.tutoriel.common;
        
        import java.util.List;
        
        import net.minecraft.command.IEntitySelector;
        import net.minecraft.entity.Entity;
        import net.minecraft.entity.EntityLivingBase;
        import net.minecraft.entity.monster.EntityMob;
        import net.minecraft.entity.passive.EntityAnimal;
        import net.minecraft.entity.player.EntityPlayer;
        import net.minecraft.item.EnumAction;
        import net.minecraft.item.ItemStack;
        import net.minecraft.item.ItemSword;
        import net.minecraft.nbt.NBTTagCompound;
        import net.minecraft.potion.PotionEffect;
        import net.minecraft.util.ChatComponentTranslation;
        import net.minecraft.world.World;
        
        public class ItemTutoSword extends ItemSword
        {
        public ItemTutoSword(ToolMaterial material)
        {
        super(material);
        }
        
        public boolean getIsRepairable(ItemStack input, ItemStack repair)
        {
        if(repair.getItem() == ModTutoriel.itemTutoriel)
        {
        return true;
        }
        return false;
        }
        
        public EnumAction getItemUseAction(ItemStack stack)
        {
        return EnumAction.eat;
        }
        
        public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
        {
        if (player.canEat(false)) // a mettre sur true pour que le joueur puisse manger même si il a la barre de fin pleins
        {
        player.setItemInUse(stack, this.getMaxItemUseDuration(stack));
        }
        return stack;
        }
        
        public int getMaxItemUseDuration(ItemStack stack)
        {
        return 32;
        }
        
        public ItemStack onEaten(ItemStack stack, World world, EntityPlayer player)
        {
        –stack.stackSize;
        player.getFoodStats().addStats(4, 4); // nombre de demi-jambon + saturation
        world.playSoundAtEntity(player, "random.burp", 0.5F, world.rand.nextFloat() * 0.1F + 0.9F);
        return stack;
        }
        }
        
        1 réponse Dernière réponse Répondre Citer 0
        • Squix
          Squix dernière édition par

          Merci beaucoup robin !

          System.crash(); //Petite instruction marrante  :D

          Développeur de : RemoveHUDbut…

          1 réponse Dernière réponse Répondre Citer 0
          • 1 / 1
          • Premier message
            Dernier message
          Design by Woryk
          Contact / Mentions Légales

          MINECRAFT FORGE FRANCE © 2018

          Powered by NodeBB