Mob qui loot plusieurs items avec chance random



  • Bonjour, 
    Tout est dans le titre,
    Je n'arrive pas a faire un random loot avec un certain pour-cent de chance.

    Code de mon entité:

    package fr.playflop.legitium.common.entity;
    
    import fr.playflop.legitium.common.item.ItemRegistry;
    import net.minecraft.entity.SharedMonsterAttributes;
    import net.minecraft.entity.monster.EntityMob;
    import net.minecraft.item.Item;
    import net.minecraft.world.World;
    
    public class EntityRaka extends EntityMob
    {
    public EntityRaka(World world)
    {
    super(world);
    }
    public void applyEntityAttributes()
    {
    super.applyEntityAttributes();
    this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(5D);
    this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(6D);
    this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.8D);
    
    }
    public Item getDropItem()
    {
    return Items.leather;
    }
    }
    


  • Voilà comment le squelette fait pour drop des os et des flèches :

    
    @Override
       protected void dropFewItems(boolean p_70628_1_, int p_70628_2_)
       {
           int j;
           int k;
    
           j = this.rand.nextInt(3 + p_70628_2_);
    
           for (k = 0; k < j; ++k)
           {
               this.dropItem(Items.arrow, 1);
           }
    
           j = this.rand.nextInt(3 + p_70628_2_);
    
           for (k = 0; k < j; ++k)
           {
               this.dropItem(Items.bone, 1);
           }
       }
    
    

    Si tu as d'autres questions, n'hésite pas.

    Edit : Juste pour préciser, le j = this.rand.nextInt(3 + p_70628_2_); correspond aux chances de drop aléatoires entre 0 et (3 + p_70628_2_), donc 2 drops si j = 2. La valeur de p_70628_2_ correspond au looting sur l'arme utilisée. Donc si tu veux entre 0 et 5 drops par exemple, tu remplaces 3 par 5 tout simplement.



  • @'Dylem':

    Voilà comment le squelette fait pour drop des os et des flèches :

    
    @Override
       protected void dropFewItems(boolean p_70628_1_, int p_70628_2_)
       {
           int j;
           int k;
    
           j = this.rand.nextInt(3 + p_70628_2_);
    
           for (k = 0; k < j; ++k)
           {
               this.dropItem(Items.arrow, 1);
           }
    
           j = this.rand.nextInt(3 + p_70628_2_);
    
           for (k = 0; k < j; ++k)
           {
               this.dropItem(Items.bone, 1);
           }
       }
    
    

    Si tu as d'autres questions, n'hésite pas.

    Edit : Juste pour préciser, le j = this.rand.nextInt(3 + p_70628_2_); correspond aux chances de drop aléatoires entre 0 et (3 + p_70628_2_), donc 2 drops si j = 2. La valeur de p_70628_2_ correspond au looting sur l'arme utilisée. Donc si tu veux entre 0 et 5 drops par exemple, tu remplaces 3 par 5 tout simplement.

    Merci beaucoup, je teste ça mais je pense que c'est bien ce dont j'avais besoin ❤