MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Event spawnmob lors d'un clique droit sur un bloc

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    40 Messages 8 Publieurs 6.8k Vues 1 Watching
    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.
    • SpyManS Hors-ligne
      SpyMan
      dernière édition par

      Bonjour alors voici la marche a suivre pour faire spawner ton mob :

      @Override
      public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int neighbor)
      {
         world.spawnEntityInWorld(new EntityLightningBolt(world, x, y, z)); 
          world.createExplosion((Entity)null, x, y, z, 4F, true);
         EntityWither wither = new EntityWither(world); // création d'une instance de le class "EntityWither"
         wither.setPosition((int) x, (int) y, (int) z); // La je donne les coordonnées de là ou il va spawner
         world.spawnEntityInWorld(wither); // Je le fait spawn
      }
      

      Voila J’ai testé et cela fonctionne
      Je te laisse modifier l’entité et les coordonnées à ta guise
      PS : là tu peut copier/coller 🙂

      1 réponse Dernière réponse Répondre Citer 0
      • DeletedD Hors-ligne
        Deleted
        dernière édition par

        Je crois me souvenir que lorsqu’on appelle spawnEntityInWorld dans une fonction client & server, il faut justement faire un !world.isRemote pour éviter d’avoir une image fixe du mob

        1 réponse Dernière réponse Répondre Citer 0
        • jbamineJ Hors-ligne
          jbamine
          dernière édition par

          @‘Plaigon’:

          Je crois me souvenir que lorsqu’on appelle spawnEntityInWorld dans une fonction client & server, il faut justement faire un !world.isRemote pour éviter d’avoir une image fixe du mob

          oui justement j’etait victime de se bug aussi quand je le faisait spawn merci 😉

          EDIT: et surtout merci @SpyMan 🙂

          ReEDIT: je viens d’essayer et ça ne marche pas, peut un porte l’événement. le pire, c’est qu’il n’y a aucun message d’erreur nule part ! 😢

          1 réponse Dernière réponse Répondre Citer 0
          • FolganskyF Hors-ligne
            Folgansky Correcteurs
            dernière édition par

            Dans ces cas là il faut que tu montres à quoi ressemble ton code maintenant et commencer à mettre des System.out.println(“Message”) pour voir où est ce que ton code foire par rapport à ce que tu veux.

            1 réponse Dernière réponse Répondre Citer 0
            • jbamineJ Hors-ligne
              jbamine
              dernière édition par

              @‘Toutoune1008’:

              Dans ces cas là il faut que tu montres à quoi ressemble ton code maintenant et commencer à mettre des System.out.println(“Message”) pour voir où est ce que ton code foire par rapport à ce que tu veux.

              public static Block panda_block;
              
              public static void init()
              {
              panda_block = new BlockBasic(Material.rock);
              panda_block.setBlockName("panda_block");
              panda_block.setCreativeTab(CreativeTabs.tabBlock);
              panda_block.setBlockTextureName(References.MOD_ID + ":panda_block_front");
              panda_block.setHardness(4).setResistance(2);
              }
              public void onBlockClicked (World world, int x, int y, int z, int neighbor)
              {
              world.spawnEntityInWorld(new EntityLightningBolt(world, x, y, z));
              world.createExplosion((Entity)null, x, y, z, 4F, true);
              EntityPanda Panda = new EntityPanda(world);
              Panda.setPosition((int) x, (int) y, (int) z);
              world.spawnEntityInWorld(Panda);
              }
              public static void register()
              {
              GameRegistry.registerBlock(panda_block, panda_block.getUnlocalizedName().substring(5));
              GameRegistry.addRecipe(new ItemStack(blocks.panda_block, 1), new Object[]{"zzz", "dnd", "ege", 'z', Items.skull, 'd', Blocks.diamond_block, 'e', Blocks.emerald_block, 'n', Items.nether_star, 'g', Items.golden_apple});
              }
              

              voila le code

              EDIT: j’ai essayé les print, et je pense que l’événement en lui même n’est pas pris en compte 😕

              1 réponse Dernière réponse Répondre Citer 0
              • robin4002R Hors-ligne
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                dernière édition par

                Tu n’as pas appliqué ce que je t’ai dit de faire.
                Donc normal que ta fonction n’est jamais appelé (fonction, pas événement).

                @‘robin4002’:

                Ouvres le fichier BlockBasic.java (si tu utilises ce fichier pour d’autres blocs, il faudrait plutôt créer une nouvelle classe sinon tous tes blocs utilisant cette classe vont avoir le même comportement) et dans cette classe ajoute la fonction suivante :

                   public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int metadata)
                  {
                  }
                

                Ainsi lorsque ton bloc sera cassé, au lieu de faire ce qui se trouve dans la fonction onBlockDestroyedByPlayer qui se trouve dans le fichier Block.java, il va faire ce qu’il se trouve dans ta fonction onBlockDestroyedByPlayer de ta classe BlockBasic.java. C’est ce qu’on appelle “override” une fonction en anglais (outrepasser en français).
                Ensuite entre les deux crochets tu vas pouvoir faire ce que tu veux, donc faire spawner l’entité.

                1 réponse Dernière réponse Répondre Citer 0
                • jbamineJ Hors-ligne
                  jbamine
                  dernière édition par

                  @‘robin4002’:

                  Tu n’as pas appliqué ce que je t’ai dit de faire.
                  Donc normal que ta fonction n’est jamais appelé (fonction, pas événement).

                  @‘robin4002’:

                  Ouvres le fichier BlockBasic.java (si tu utilises ce fichier pour d’autres blocs, il faudrait plutôt créer une nouvelle classe sinon tous tes blocs utilisant cette classe vont avoir le même comportement) et dans cette classe ajoute la fonction suivante :

                     public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int metadata)
                    {
                    }
                  

                  Ainsi lorsque ton bloc sera cassé, au lieu de faire ce qui se trouve dans la fonction onBlockDestroyedByPlayer qui se trouve dans le fichier Block.java, il va faire ce qu’il se trouve dans ta fonction onBlockDestroyedByPlayer de ta classe BlockBasic.java. C’est ce qu’on appelle “override” une fonction en anglais (outrepasser en français).
                  Ensuite entre les deux crochets tu vas pouvoir faire ce que tu veux, donc faire spawner l’entité.

                  je comprend pas, même en mettant onBlockDestroyedByPlayer ça marche pas. alors je fais quoi ? ou plus précisément je doit la placer où dans la classe ?
                  (désolé si je vous énèrve mais j’ai beaucoup de difficulté a comprendre si on me donne pas d’exemple :/(je parle dans n’importe quel domaine, pas qu’en codage))

                  1 réponse Dernière réponse Répondre Citer 0
                  • SpyManS Hors-ligne
                    SpyMan
                    dernière édition par

                    Revois ton code s’il te plait

                    1 réponse Dernière réponse Répondre Citer 0
                    • jbamineJ Hors-ligne
                      jbamine
                      dernière édition par

                      @‘SpyMan’:

                      Revois ton code s’il te plait

                      j’evois tout le code :

                      package com.mod.panda.init;
                      
                      import com.mod.panda.References;
                      import com.mod.panda.blocks.BlockBasic;
                      import com.mod.panda.entity.EntityPanda;
                      import cpw.mods.fml.common.registry.GameRegistry;
                      import net.minecraft.block.Block;
                      import net.minecraft.block.material.Material;
                      import net.minecraft.client.Minecraft;
                      import net.minecraft.creativetab.CreativeTabs;
                      import net.minecraft.entity.Entity;
                      import net.minecraft.entity.EntityList;
                      import net.minecraft.entity.EntityLiving;
                      import net.minecraft.entity.EntityLivingBase;
                      import net.minecraft.entity.effect.EntityLightningBolt;
                      import net.minecraft.entity.player.EntityPlayer;
                      import net.minecraft.init.Blocks;
                      import net.minecraft.init.Items;
                      import net.minecraft.item.ItemStack;
                      import net.minecraft.server.MinecraftServer;
                      import net.minecraft.tileentity.TileEntityMobSpawner;
                      import net.minecraft.util.ChatComponentText;
                      import net.minecraft.world.IBlockAccess;
                      import net.minecraft.world.World;
                      
                      public class blocks
                      {
                      public static Block panda_block;
                      
                      public static void init()
                      {
                      panda_block = new BlockBasic(Material.rock);
                      panda_block.setBlockName("panda_block");
                      panda_block.setCreativeTab(CreativeTabs.tabBlock);
                      panda_block.setBlockTextureName(References.MOD_ID + ":panda_block_front");
                      panda_block.setHardness(4).setResistance(2);
                      }
                      public void onBlockDestroyedByPlayer (World world, int x, int y, int z, int neighbor)
                      {
                      world.spawnEntityInWorld(new EntityLightningBolt(world, x, y, z));
                      world.createExplosion((Entity)null, x, y, z, 4F, true);
                      EntityPanda Panda = new EntityPanda(world);
                      Panda.setPosition((int) x, (int) y, (int) z);
                      world.spawnEntityInWorld(Panda);
                      }
                      public static void register()
                      {
                      GameRegistry.registerBlock(panda_block, panda_block.getUnlocalizedName().substring(5));
                      GameRegistry.addRecipe(new ItemStack(blocks.panda_block, 1), new Object[]{"zzz", "dnd", "ege", 'z', Items.skull, 'd', Blocks.diamond_block, 'e', Blocks.emerald_block, 'n', Items.nether_star, 'g', Items.golden_apple});
                      }
                      }
                      

                      ceci est la classe blockbasic car je n’ai qu’un bloc

                      1 réponse Dernière réponse Répondre Citer 0
                      • DeletedD Hors-ligne
                        Deleted
                        dernière édition par

                        Un conseil, revois tout depuis le début car là, t’as juste tout mélangé….
                        Tu ne peux pas tout faire tenir dans une seule classe, et puis tu m’étonnes que ta fonction onBlockDestroyedByPlayer, soit jamais appelée xD la clase hérite pas de Block

                        1 réponse Dernière réponse Répondre Citer 0
                        • jbamineJ Hors-ligne
                          jbamine
                          dernière édition par

                          @‘Plaigon’:

                          Un conseil, revois tout depuis le début car là, t’as juste tout mélangé….
                          Tu ne peux pas tout faire tenir dans une seule classe, et puis tu m’étonnes que ta fonction onBlockDestroyedByPlayer, soit jamais appelée xD la clase hérite pas de Block

                          comment  ça la classe hérite pas de bloc ?

                          aidez moi a corriger ces bug vous me perdez là 😢

                          1 réponse Dernière réponse Répondre Citer 0
                          • AymericRedA Hors-ligne
                            AymericRed
                            dernière édition par

                            La fonction onBlockDestroyedByPlayer doit être placé dans la classe BlockBasic.java (qu’il serait logique de renommer en BlocPanda), PAS dans la classe blocks.java, normal que ça ne marche pas.

                            Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                            AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                            Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                            Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                            1 réponse Dernière réponse Répondre Citer 0
                            • jbamineJ Hors-ligne
                              jbamine
                              dernière édition par

                              @‘AymericRed’:

                              La fonction onBlockDestroyedByPlayer doit être placé dans la classe BlockBasic.java (qu’il serait logique de renommer en BlocPanda), PAS dans la classe blocks.java, normal que ça ne marche pas.

                              mais ça change quoi car ça marche pas quand je crée la classe BlockPanda

                              1 réponse Dernière réponse Répondre Citer 0
                              • DeletedD Hors-ligne
                                Deleted
                                dernière édition par

                                Qu’est-ce’ qui ne marche pas ?

                                1 réponse Dernière réponse Répondre Citer 0
                                • robin4002R Hors-ligne
                                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                  dernière édition par

                                  Envoies ta classe BlockBasic / BlockPanda (si tu l’as renommé).

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • jbamineJ Hors-ligne
                                    jbamine
                                    dernière édition par

                                    @‘robin4002’:

                                    Envoies ta classe BlockBasic / BlockPanda (si tu l’as renommé).

                                    voilà. je sent que vous allez crier XD

                                    blocks.java:

                                    package com.mod.panda.init;
                                    
                                    import com.mod.panda.References;
                                    import com.mod.panda.blocks.BlockBasic;
                                    import com.mod.panda.entity.EntityPanda;
                                    import cpw.mods.fml.common.registry.GameRegistry;
                                    import net.minecraft.block.Block;
                                    import net.minecraft.block.material.Material;
                                    import net.minecraft.client.Minecraft;
                                    import net.minecraft.creativetab.CreativeTabs;
                                    import net.minecraft.entity.Entity;
                                    import net.minecraft.entity.EntityList;
                                    import net.minecraft.entity.EntityLiving;
                                    import net.minecraft.entity.EntityLivingBase;
                                    import net.minecraft.entity.effect.EntityLightningBolt;
                                    import net.minecraft.entity.player.EntityPlayer;
                                    import net.minecraft.init.Blocks;
                                    import net.minecraft.init.Items;
                                    import net.minecraft.item.ItemStack;
                                    import net.minecraft.server.MinecraftServer;
                                    import net.minecraft.tileentity.TileEntityMobSpawner;
                                    import net.minecraft.util.ChatComponentText;
                                    import net.minecraft.world.IBlockAccess;
                                    import net.minecraft.world.World;
                                    
                                    public class blocks
                                    {
                                    public static Block panda_block;
                                    
                                    public blocks(Material materialIn)
                                    {
                                    
                                    }
                                    public static void init()
                                    {
                                    
                                    }
                                    public static void register()
                                    {
                                    GameRegistry.registerBlock(panda_block, panda_block.getUnlocalizedName().substring(5));
                                    GameRegistry.addRecipe(new ItemStack(blocks.panda_block, 1), new Object[]{"zzz", "dnd", "ege", 'z', Items.skull, 'd', Blocks.diamond_block, 'e', Blocks.emerald_block, 'n', Items.nether_star, 'g', Items.golden_apple});
                                    }
                                    }
                                    

                                    BlockPanda.java:

                                    package com.mod.panda.init;
                                    
                                    import com.mod.panda.References;
                                    import com.mod.panda.blocks.BlockBasic;
                                    import com.mod.panda.entity.EntityPanda;
                                    import net.minecraft.block.material.Material;
                                    import net.minecraft.creativetab.CreativeTabs;
                                    import net.minecraft.entity.Entity;
                                    import net.minecraft.entity.effect.EntityLightningBolt;
                                    import net.minecraft.world.World;
                                    
                                    public class BlockPanda extends blocks
                                    {
                                    protected BlockPanda(Material materialIn)
                                      {
                                          super(materialIn);
                                          panda_block = new BlockBasic(Material.rock);
                                          panda_block.setBlockName("panda_block");
                                          panda_block.setCreativeTab(CreativeTabs.tabBlock);
                                          panda_block.setBlockTextureName(References.MOD_ID + ":panda_block_front");
                                          panda_block.setHardness(4).setResistance(2);
                                      }
                                    public void onBlockDestroyedByPlayer (World world, int x, int y, int z, int neighbor)
                                    {
                                    world.spawnEntityInWorld(new EntityLightningBolt(world, x, y, z));
                                    world.createExplosion((Entity)null, x, y, z, 4F, true);
                                    EntityPanda Panda = new EntityPanda(world);
                                    Panda.setPosition((int) x, (int) y, (int) z);
                                    world.spawnEntityInWorld(Panda);
                                    }
                                    }
                                    
                                    
                                    1 réponse Dernière réponse Répondre Citer 0
                                    • robin4002R Hors-ligne
                                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                      dernière édition par

                                      package com.mod.panda.init;
                                      
                                      import com.mod.panda.References;
                                      import com.mod.panda.blocks.BlockBasic;
                                      import com.mod.panda.entity.EntityPanda;
                                      import cpw.mods.fml.common.registry.GameRegistry;
                                      import net.minecraft.block.Block;
                                      import net.minecraft.block.material.Material;
                                      import net.minecraft.client.Minecraft;
                                      import net.minecraft.creativetab.CreativeTabs;
                                      import net.minecraft.entity.Entity;
                                      import net.minecraft.entity.EntityList;
                                      import net.minecraft.entity.EntityLiving;
                                      import net.minecraft.entity.EntityLivingBase;
                                      import net.minecraft.entity.effect.EntityLightningBolt;
                                      import net.minecraft.entity.player.EntityPlayer;
                                      import net.minecraft.init.Blocks;
                                      import net.minecraft.init.Items;
                                      import net.minecraft.item.ItemStack;
                                      import net.minecraft.server.MinecraftServer;
                                      import net.minecraft.tileentity.TileEntityMobSpawner;
                                      import net.minecraft.util.ChatComponentText;
                                      import net.minecraft.world.IBlockAccess;
                                      import net.minecraft.world.World;
                                      
                                      public class blocks
                                      {
                                      public static Block panda_block;
                                      
                                      public blocks(Material materialIn)
                                      {
                                      
                                      }
                                      public static void init()
                                      {
                                            panda_block = new BlockPanda(Material.rock).setBlockName("panda_block").setCreativeTab(CreativeTabs.tabBlock);.setBlockTextureName(References.MOD_ID + ":panda_block_front").setHardness(4).setResistance(2);
                                      }
                                      public static void register()
                                      {
                                      GameRegistry.registerBlock(panda_block, panda_block.getUnlocalizedName().substring(5));
                                      GameRegistry.addRecipe(new ItemStack(blocks.panda_block, 1), new Object[]{"zzz", "dnd", "ege", 'z', Items.skull, 'd', Blocks.diamond_block, 'e', Blocks.emerald_block, 'n', Items.nether_star, 'g', Items.golden_apple});
                                      }
                                      }
                                      

                                      BlockPanda.java:

                                      package com.mod.panda.init;
                                      
                                      import com.mod.panda.References;
                                      import com.mod.panda.blocks.BlockBasic;
                                      import com.mod.panda.entity.EntityPanda;
                                      import net.minecraft.block.material.Material;
                                      import net.minecraft.creativetab.CreativeTabs;
                                      import net.minecraft.block.Block;
                                      import net.minecraft.entity.effect.EntityLightningBolt;
                                      import net.minecraft.world.World;
                                      
                                      public class BlockPanda extends Block
                                      {
                                      protected BlockPanda(Material materialIn)
                                        {
                                            super(materialIn);
                                        }
                                      
                                      public void onBlockDestroyedByPlayer (World world, int x, int y, int z, int metadata)
                                      {
                                      world.spawnEntityInWorld(new EntityLightningBolt(world, x, y, z));
                                      world.createExplosion((Entity)null, x, y, z, 4F, true);
                                      EntityPanda panda = new EntityPanda(world);
                                      panda.setPosition((int) x, (int) y, (int) z);
                                      world.spawnEntityInWorld(panda);
                                      }
                                      }
                                      

                                      ça fonctionnera mieux comme ça.

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • LeBossMax2L Hors-ligne
                                        LeBossMax2
                                        dernière édition par

                                        Salut,
                                        Comme il a modifié le mon de la class, ce n’est pas “panda_block = new BlockBasic(Material.rock);” mais “panda_block = new BlockPanda(Material.rock);”.

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • robin4002R Hors-ligne
                                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                          dernière édition par

                                          Bien vu 😉

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • jbamineJ Hors-ligne
                                            jbamine
                                            dernière édition par

                                            @‘LeBossMax2’:

                                            Salut,
                                            Comme il a modifié le mon de la class, ce n’est pas “panda_block = new BlockBasic(Material.rock);” mais “panda_block = new BlockPanda(Material.rock);”.

                                            quand je fais ça, il y a plein d’erreurs

                                            EDIT: j’ai réussi en me posant quelques minute je me suis rendu compte de mes erreur ! merci beaucoup

                                            (pour ceux qui veulent savoir, j’ai tout simplement pas fait attention que j’avait déjà un package avec la classe de mon bloc x)

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 2 / 2
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB