Créer différentes grenades



  • Bonjour/Bonsoir

    J'ai voulus créer des grenades (explosives, fumigènes et molotoves) mais j'ai quelques soucis :

    Pour la grenade explosive, j'ai une erreur dans mon code et je ne sais pas pourquoi :

    Classe Grenade :

    package fr.browneez.grenades;
    
    import fr.browneez.entity.EntityGrenade;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.world.World;
    
    public class explodingGrenade extends Item
    {
    
            public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
           {
               if (player.capabilities.isCreativeMode)
               {
                   –stack.stackSize;
               }
    
               world.playSoundAtEntity(player, "explode1", 0.7F, 0.8F);
    
               if (world.isRemote)
               {
                   world.spawnEntityInWorld(new EntityGrenade(world, player));
               }
    
               return stack;
           }
    
    }
    
    

    l’erreur est sûr " world.spawnEntityInWorld(new EntityGrenade(world, player));" et c'est The method spawnEntityInWorld(Entity) in the type World is not applicable for the arguments (EntityGrenade)

    Classe entity :

    package fr.browneez.entity;
    
    import cpw.mods.fml.common.registry.EntityRegistry;
    import fr.browneez.main.Main;
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.EntityList;
    import net.minecraft.nbt.NBTTagCompound;
    
    public class EntityMod
    {
    
       public static void mainRegistry()
       {
           registerEntity();
       }
    
       public static void registerEntity()
       {
           createEntity(GrenadeEntity.class, "Explosive Grenade", 0x00BFFF, 0x00A1D6);
       }
    
       public static void createEntity(Class entityClass, String entityName,int solidColour, int spotColour )
       {
           int randomID = EntityRegistry.findGlobalUniqueEntityId();
    
           EntityRegistry.registerGlobalEntityID(entityClass, entityName, randomID);
           EntityRegistry.registerModEntity(entityClass, entityName, randomID, Main.modInstance, 64, 1, true);
           createEgg(randomID, solidColour, spotColour);
       }
    
       private static void createEgg(int randomID, int solidColour, int spotColour)
       {
           EntityList.entityEggs.put(Integer.valueOf(randomID), new EntityList.EntityEggInfo(randomID, solidColour, spotColour));
       }
    }
    
    

    Classe entity de la grenade:

    package fr.browneez.entity;
    
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.EntityLivingBase;
    import net.minecraft.entity.projectile.EntityThrowable;
    import net.minecraft.util.MovingObjectPosition;
    import net.minecraft.world.World;
    
    public class GrenadeEntity extends EntityThrowable
    {
    
       public GrenadeEntity(World world)
       {
           super(world);
    
       }
    
       public GrenadeEntity(World world, EntityLivingBase entity)
       {
           super(world , entity);
       }
    
       @Override
       protected void onImpact(MovingObjectPosition var1)
       {
           for(int i = 0; i < 10; i++)
           {
               this.worldObj.spawnParticle("hugeexplosion", this.posX, this.posY, this.posZ, 0.9F, 0.9F, 0.9F);
           }
    
           if(this.worldObj.isRemote)
           {
               this.setDead();
               if(!this.worldObj.isRemote)
               {
                   this.worldObj.createExplosion((Entity) null, this.posX, this.posY, this.posZ, 4.5F, true);
               }
           }
       }
    
    }
    
    

    Pour les fumigènes et les molotoves, je ne sais pas comment faire :

    Pour la fumigène il suffit de mettre les particules ? est il possible de modifier la taille du nuage de particules ?
    Pour la molotove, je ne sais pas comment faire spawn des flammes autour.

    Cordialement, BrowNeez


  • Administrateurs

    Salut,
    En effet c'est étrange car EntityThrowable et extends Entity, donc il n'y a pas de raison pour que cela cause cette erreur. Essaies de clean le projet (menu project, clean …).

    Par contre dans l'enregistrement de ton entité ...
    createEgg(randomID, solidColour, spotColour);
    Sérieusement ? Un œuf pour une entité lançable ?
    Et la fonction registerGlobalEntityID ne devrait pas être utilisé.



  • J'ai suivie un tuto donc je ne sait pas c'est quoi le problème de l'oeuf ni pour le registerGlobalEntityID.

    Tu n'aurais pas un lien (anglophone ou francophone) pour faire les grenades ? parce qu'ici il n'y en a pas 😕

    EDIT : Pour le clean, rien n'a changé.



  • On ne fait pas de tutoriel pour des chose aussi précises, sinon on aurai pas finit d'en faire : il faut te débrouiller par toi-même



  • je suis dessus depuis une semaine et j'arrive à rien donc …


  • Administrateurs

    Je viens de voir en passant que cette condition n'est pas bonne :
    if (world.isRemote)
    ça devrait être l'inverse. Envoies-moi un zip de ton dossier src, je vais regarder de mon côté.


  • Administrateurs

    Ou alors tu peux regarder sur mon github, j'ai fait des projectiles similaires. https://github.com/elias54 (Fake Ores 1)



  • Elias54, j'y comprend rien a ton github mais merci quand même ^^

    Robin : http://download1323.mediafire.com/i7duss57b6wg/8jdbe4dlcxssgwu/src+grenade+modforge-1.7.10-10.13.4.1492-1.7.10.zip


  • Administrateurs

    Le code qu'il y avait dans ton zip ne correspondait pas a ce que tu avais envoyé …
    J'ai corrigé l'erreur et en passant j'ai corrigé le code de l'explosion.



  • Merci 😄

    Du coup pour les deux autre je fais pareil ?

    Parce que pour la fumigène j'ai juste à faire spawn les particules "explode" mais pour la Molotov j'en ai aucune idée 😕

    EDIT : je vien d'y penser mais pour l'obsidian, si je veux qu'elle explose avec 6 grenades minimum et 9 grenades minimum je fais comment ?


  • Administrateurs

    Les particules smoke sont plus appropriés que explode.



  • Oui mais on peut voir dans le nuage et il n'est pas asser grand


  • Administrateurs

    @'BrowNeez':

    Merci 😄

    Du coup pour les deux autre je fais pareil ?

    Parce que pour la fumigène j'ai juste à faire spawn les particules "explode" mais pour la Molotov j'en ai aucune idée 😕

    EDIT : je vien d'y penser mais pour l'obsidian, si je veux qu'elle explose avec 6 grenades minimum et 9 grenades minimum je fais comment ?

    Démolition de l'obsi ça va pas être possible avec un certain nombre de grenade. Car il n'y a pas de système d'usure dans Minecraft.

    Pour le molotov utilise un boucle for avec un world.setBlock(x, y, z, Blocks.fire) si le bloc est de l'air et que le bloc en dessous est solide.



  • @'robin4002':

    @'BrowNeez':

    Merci 😄

    Du coup pour les deux autre je fais pareil ?

    Parce que pour la fumigène j'ai juste à faire spawn les particules "explode" mais pour la Molotov j'en ai aucune idée 😕

    EDIT : je vien d'y penser mais pour l'obsidian, si je veux qu'elle explose avec 6 grenades minimum et 9 grenades minimum je fais comment ?

    Démolition de l'obsi ça va pas être possible avec un certain nombre de grenade. Car il n'y a pas de système d'usure dans Minecraft.

    Pour le molotov utilise un boucle for avec un world.setBlock(x, y, z, Blocks.fire) si le bloc est de l'air et que le bloc en dessous est solide.

    Absolument rien compris 😕

    et pour la fumigène si je met smoke, je peut choisir la durée des particules et la taille du nuage de particules ? ( je pose beaucoup de question pour ne pas les poser par la suite)


  • Administrateurs

    Faut apprendre la programmation en Java sinon tu n'arriveras à rien.

    Pour la fumée il me semble qu'on ne peut que régler le vitesse des particules, donc non 😕


  • Administrateurs

    Il y a smoke, et largesmoke 😉