Creer une explosion avec un item mangeable



  • Bonjour,
    J'ai essayer de faire spawner une explosion quand le joueur mange un item
    j'ai donc fait cette classe:

    
    package fr.minecraftforgefrance.mogame.common;
    
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.item.EntityTNTPrimed;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.ItemFood;
    import net.minecraft.item.ItemStack;
    import net.minecraft.world.Explosion;
    import net.minecraft.world.World;
    
    public class ItemDonutBoum extends ItemFood
    {
    public ItemDonutBoum(int gigot, float saturation, boolean wolf) {
    super(gigot, saturation, wolf);
    this.setCreativeTab(CreativeTabs.tabFood);
    }
    public ItemStack onEaten(ItemStack p_77654_1_, World world, EntityPlayer p_77654_3_)
       {
        if (!world.isRemote) {
        EntityTNTPrimed tnt = new EntityTNTPrimed(world);
        world.newExplosion(tnt, x, y, z, 2.0F, true, true);
        }
       }
    }
    

    le probleme c'est que des que j'ai modifier tous les arguments de world.newExplosion tout le code est une erreur et la seul proposition de eclipse est de tous suprimer…
    Mon but est donc de creer une explosion a cote du joueur quand il mange l'item.

    Merci d'avance de votre aide!!
    Thegamer9112



  • Utilise la balise java pour citer du code, c'est mieux pour la mise en page ; l'erreur vient surement du fait que les variables x, y et z ne sont jamais définies ?
    Et ensuite, je ne connaissais pas cette méthode createExplosion, mais d'habitude pour faire spawner une entité on utilise :

    EntityTNTPrimed tnt = new EntityTNTPrimed(w);
    tnt.setPosition(x, y, z);
    w.spawnEntityInWorld(tnt);
    

    où x, y et z doivent être remplacés par les coordonées x, y et z du joueur dans ton cas (avec p.lastTickPosX, p.lastTickPosY et p.lastTickPosZ ou p est l'EntityPlayer).



  • Met null à la place de "tnt". Et la fonction est createNewExplosion il me semble.

    Envoyé de mon iPhone en utilisant Tapatalk



  • Ok j'ai essayé ça mais une fois que j'ai remplacer x y x la première ligne du code que tu m'a donner devient une erreur et toujours le même problème pour résoudre cette erreur éclipse ne propose que de supprimer le code…

    Merci quand meme...
    Si tu as une solution c'est la bienvenue

    Thegamer9112



  • La ligne [size=xx-smallEntityTNTPrimed][size=xx-small tnt ][size=xx-small=] [size=xx-smallnew] [size=xx-smallEntityTNTPrimed]size=xx-small; [size=x-small? Il faut juste remplacer le w par ton world, mais tu pouvais (même il fallait) garder la tienne  EntityTNTPrimed tnt = new EntityTNTPrimed(world);]

    Tu ne serai pas débutant en Java ? Si oui, je te conseille les tutos d'OpenClassrooms (le nouveau Site du Zéro)  : http://fr.openclassrooms.com/informatique/cours/apprenez-a-programmer-en-java



  • C'est bon avec votre aide j'ai reussi a creer cet item
    Je poste mon code final au cas ou ca interresse quelqun plus tard

    
    package fr.minecraftforgefrance.mogame.common;
    
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.item.EntityTNTPrimed;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.ItemFood;
    import net.minecraft.item.ItemStack;
    import net.minecraft.world.Explosion;
    import net.minecraft.world.World;
    
    public class ItemDonutBoum extends ItemFood
    {
    public ItemDonutBoum(int gigot, float saturation, boolean wolf) {
    super(gigot, saturation, wolf);
    this.setCreativeTab(CreativeTabs.tabFood);
    }
    public ItemStack onEaten(ItemStack p_77654_1_, World world, EntityPlayer p_77654_3_)
       {
    if (!world.isRemote) {
       EntityTNTPrimed tnt = new EntityTNTPrimed(world);
       world.newExplosion(null, p_77654_3_.posX + 5, p_77654_3_.posY + 5, p_77654_3_.posZ + 5, 2.0F, true, true);
       }
    return p_77654_1_;
       }
    }
    


  • %(#000000)[[font=monospace]EntityTNTPrimed]%(#000000)[[font=monospace] tnt ]%(#666600)[[font=monospace]=] %(#7f0055)[[font=monospace]**new**] %(#000000)[[font=monospace]EntityTNTPrimed]%(#666600)[[font=monospace](]%(#000000)[[font=monospace]world]%(#666600)[[font=monospace]);]
    

    … ne sert à rien.



  • Et puis renom les paramètres pour que ce soit plus propre