• Récent
  • Mots-clés
  • Populaire
  • Utilisateurs
  • Groupes
  • S'inscrire
  • Se connecter
  • 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
854
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 8 août 2018, 00:25 17 juin 2014, 20:06

    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 17 juin 2014, 21:04

      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 19 juin 2014, 00:05

        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
        1 sur 3
        • Premier message
          1/3
          Dernier message
        Design by Woryk
        Contact / Mentions Légales

        MINECRAFT FORGE FRANCE © 2018

        Powered by NodeBB