Effet de potion aléatoire ?



  • Bonjour, 
    j'aimerai savoir si c'est possible d'avoir que des effets positive ( Heal, Jump). Si il y a possibilité d'avoir la ligne de code merci !

    package fr.serveur.StrafeFight.common;

    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.potion.Potion;
    import net.minecraft.potion.PotionEffect;
    import net.minecraft.world.World;

    public class StickRDM extends Item {

    public StickRDM()
        {
            this.maxStackSize = 1; // on lui met un stack de 1
            this.setMaxDamage(10); // on met 15 de durabilité
            this.setCreativeTab(CreativeTabs.tabCombat); // on le met dans le tab Combat du créatif
        }

    public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer player)
        {
    par1ItemStack.damageItem(1, player); // on déclare la durabilite

    player.addPotionEffect(new PotionEffect(Potion.heal.getId(), 50, 0, true));

    return par1ItemStack;
        }

    public boolean isFull3D() // on met de la 3D a l'item
        {
        return true;
        }

    public Item setPotionEffect(int id, int i, int j, float f) {

    return null;
    }

    }

    Merci de vos réponses !
    Cordialement,



  • Je pense que t'es obligé de faire un tableau avec toutes les potions.



  • @'AymericRed':

    Je pense que t'es obligé de faire un tableau avec toutes les potions.

    Oui je pense mais comment mettre un pourcentage de change sur une potion ?



  • Je sais trop, mais regarde dans WeightedRandom (net.Minecraft.util)



  • @'AymericRed':

    Je sais trop, mais regarde dans WeightedRandom (net.Minecraft.util)

    WeightedRandom n'est pas dans (net.Minecraft.util)  😕



  • Ah, je suis en 1.8 donc ça doit être différent en 1.7.10, regarde dans les packages de la génération, il doit se trouver là dedans.
    Sinon j'essayerais de t'expliquer comment ça fonctionne. 😉


  • Rédacteurs

    Pour savoir si une potion est positive il y a la fonction isBadEffect() qui renvoie true si c'est une potion négative :

    
    Potion.regeneration.isBadEffect(); //Renvoie false
    Potion.blindness.isBadEffect(); //Renvoie true
    
    

    Pour le pourcentage de chance, le plus simple étant de faire un tableau avec les potions que tu veux, en mettant plusieurs fois la même potion pour augmenter son pourcentage de chance d'être tiré :

    
    Potion[] potions = new Potion[]{Potion.regeneration, Potion.heal, Potion.heal, Potion.digSpeed, Potion.moveSpeed, Potion.jump}; //On peut le mettre en dehors de la fonction
    Random rand = new Random(); //Possibilité d'utiliser celui du monde
    Potion randomPotion = potions[rand.nextInt(potions.length)];
    player.addPotionEffect(new PotionEffect(randomPotion.getId(), 50, 0, true));
    
    

    Ici, la potion de heal a 2 chances sur 6 d'être choisie et les autres ont 1 chance sur 6 d'être choisies



  • Ok je test sa et je te dit si sa fonctionne

    EDIT : Sa fonctionne correctement ! Comme je voulais ! 
    Merci à toi BrokenSwing !  😄