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.
    • BrokenSwingB Hors-ligne
      BrokenSwing Moddeurs confirmés Rédacteurs
      dernière édition par

      Salut,
      Je vois que tu veux faire spawner le boss lorsque le joueur casse le bloc panda_block. Je te conseille alors de ne pas passer par un event, mais
      ré-écrire la fonction onBlockDestroyed de ton bloc, ce qui sera beaucoup plus propre, d’autant plus que tu aura les variables world, x, y et z directement
      dans les arguments de la fonction. Sinon dans le cas de l’event, tu peux trouver ces variables dans la variable event.
      Pour faire spawner le boss il te suffira de l’instancier et de le faire rejoindre le monde comme tu le fait ici avec EntityLightningBolt

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

        Si c’est un block custom, inutile de passer par les events. override plutôt la fonction onBlockDestroyed dans ta classe block.
        Pour la barre, y’a un tuto sur le forum.

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

          j’ai déja essayé de le faire depuis la classe bloc mais je n’arrive pas a insérer un event après

          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

            Inutile de passer par un événement si c’est ton propre bloc.
            Passes par la méthode breakBlock de la classe de ton bloc.

            EDIT : faudrait que je pense à faire un F5 avant de répondre lorsque je répond 40 minutes après avoir ouvert la discussion ….

            Comment ça tu n’arrives pas “insérer un event après” ??  de quel event parles-tu ?

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

              @‘robin4002’:

              Inutile de passer par un événement si c’est ton propre bloc.
              Passes par la méthode breakBlock de la classe de ton bloc.

              EDIT : faudrait que je pense à faire un F5 avant de répondre lorsque je répond 40 minutes après avoir ouvert la discussion ….

              Comment ça tu n’arrives pas “insérer un event après” ??  de quel event parles-tu ?

              voila ce que j’ai réussi a mettre, mais je ne sais pas quoi faire après:

              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);
              
              panda_block.onBlockDestroyedByPlayer(p_149664_1_, p_149664_2_, p_149664_3_, p_149664_4_, p_149664_5_);
              }
              

              EDIT: j’aimerais que l’orsqu’on casse le bloc, ce bloc explose avec un éclair, et mon mob spawn

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

                Il faut que tu crée un classe rien que pour ton bloc dans laquelle tu redéfinie la fonction onBlockDestroyedByPlayer

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

                  Ces temps-ci, je trouve que les nouveaux ont particulièrement du mal, nan ?

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

                    @‘Plaigon’:

                    Ces temps-ci, je trouve que les nouveaux ont particulièrement du mal, nan ?

                    a vrais dire, c’est presque la première fois que je code en java, je n’ai jamais essayé avant x)

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

                      Ils ne connaissent pas le Java malheureusement, mais malgré ça je me rappelle avoir eu du mal moi aussi alors que je connaissait le Java (je pense que je manquais surtout d’expérience). Et puis nous certaines choses nous paraissent logiques car on commence à avoir une certaines expérience.

                      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

                        C’est sûr que le début n’est pas simple. Après certaines personnes progresses plutôt vite, d’autres ont un peu plus de difficulté.

                        S’énerver dans cette situation ne sert à rien, même si c’est ce qu’on envie de faire quand on voit plusieurs questions / codes qui paraissent insensé pour quelqu’un d’expérimenté ^^.

                        Personnellement je fais partie des gens qui arrivent à se débrouiller plutôt bien, je n’ai pas fait une seule demande d’aide quand j’ai débuté (ce que je faisais se limitait par contre aux tutoriels quand je voyais que c’était trop compliqué pour moi je restai sur des choses moins complexe. Et à chaque fois que j’avais quelque chose de nouveau j’analysais au mieux la chose jusqu’à la comprendre).

                        Du-coup revenons au sujet. @jbamine, as-tu déjà lu (si ce n’est qu’en partie) le tutoriel sur Java ? J’ai essayé d’y mettre un maximum d’informations utiles pour les débutants.
                        Concernant l’utilisation de la méthode onBlockDestroyedByPlayer, ce que tu as fait actuellement c’est l’appeler. C’est à dire exécuter son contenu. Or ce n’est pas ce que tu cherches, toi tu veux modifier son comportement, donc la redéfinir.

                        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’:

                          C’est sûr que le début n’est pas simple. Après certaines personnes progresses plutôt vite, d’autres ont un peu plus de difficulté.

                          S’énerver dans cette situation ne sert à rien, même si c’est ce qu’on envie de faire quand on voit plusieurs questions / codes qui paraissent insensé pour quelqu’un d’expérimenté ^^.

                          Personnellement je fais partie des gens qui arrivent à se débrouiller plutôt bien, je n’ai pas fait une seule demande d’aide quand j’ai débuté (ce que je faisais se limitait par contre aux tutoriels quand je voyais que c’était trop compliqué pour moi je restai sur des choses moins complexe. Et à chaque fois que j’avais quelque chose de nouveau j’analysais au mieux la chose jusqu’à la comprendre).

                          Du-coup revenons au sujet. @jbamine, as-tu déjà lu (si ce n’est qu’en partie) le tutoriel sur Java ? J’ai essayé d’y mettre un maximum d’informations utiles pour les débutants.
                          Concernant l’utilisation de la méthode onBlockDestroyedByPlayer, ce que tu as fait actuellement c’est l’appeler. C’est à dire exécuter son contenu. Or ce n’est pas ce que tu cherches, toi tu veux modifier son comportement, donc la redéfinir.

                          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é.

                          merci j’ai réussi, enfin j’ai pas encore testé mais je sais que ça va marcher 😉
                          personnellement je fais un truc, (je sais que vous allez me tuer mais ) j’utilise Mcreator ou je créer les effet voulus puis je cherche le code pour voir comment ça marche x)
                          c’est une méthode idiote mais ça marche quoi  😄

                          EDIT: par contre pour la bossbar je trouve pas le tuto en 1.7.10 normalement il suffit de faire un implements IBossDisplayData mais ça marche pas

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

                            @‘jbamine’:

                            IBossDisplayData mais ça marche pas

                            C’est-à-dire ? Quelles sont les erreurs ? Faut être plus précis ^^

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

                              @‘Plaigon’:

                              @‘jbamine’:

                              IBossDisplayData mais ça marche pas

                              C’est-à-dire ? Quelles sont les erreurs ? Faut être plus précis ^^

                              justement aucune erreur j’ai juste mis comme le wither quand j’ai regarder le dossier src, c’est a dire:

                              public class EntityPanda extends EntityMob implements IBossDisplayData //<<<==============ceci
                              {
                              
                              public EntityPanda(World p_i1738_1_)
                              {
                              super(p_i1738_1_);
                              isImmuneToFire = true;
                              this.experienceValue = 200;
                              this.getNavigator().setBreakDoors(true);
                                     this.tasks.addTask(0, new EntityAISwimming(this));
                                     this.tasks.addTask(2, new EntityAIAttackOnCollide(this, EntityPlayer.class, 100.0D, false));
                                     this.tasks.addTask(5, new EntityAIMoveTowardsRestriction(this, 2.0D));
                                     this.tasks.addTask(7, new EntityAIWander(this, 20.0D));
                                     this.tasks.addTask(8, new EntityAIWatchClosest(this, EntityPlayer.class, 64.0F));
                                     this.tasks.addTask(8, new EntityAILookIdle(this));
                                     this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, true));
                                     this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true));
                                     this.setSize(0.6F, 1.8F);
                              }
                              
                              1 réponse Dernière réponse Répondre Citer 0
                              • DeletedD Hors-ligne
                                Deleted
                                dernière édition par

                                On vient de te dire de limiter un maximum tes copiés-collés, alors arrête d’en faire x)
                                Alors suis ce tuto, lis bien les explications de chaque bout de code donné, et tu verras que ça ira déjà mieux 😉
                                https://www.minecraftforgefrance.fr/showthread.php?tid=1420

                                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

                                  @‘jbamine’:

                                  personnellement je fais un truc, (je sais que vous allez me tuer mais ) j’utilise Mcreator ou je créer les effet voulus puis je cherche le code pour voir comment ça marche x)
                                  c’est une méthode idiote mais ça marche quoi  😄

                                  En effet.
                                  Cherches plutôt des exemples fait par des développeurs (https://github.com/TheGreyGhost/MinecraftByExample pour en citer un, on doit en trouver d’autres sur github) ou regardes le code source de mod open source simple (je précise simple car certains mods ont des dépendances de partout, pour un débutant c’est l’horreur à comprendre).

                                  MCreator génère un code pas propre du tout qui est en plus foireux. Apprendre avec ça est de loin une mauvaise idée.

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

                                    bon ça ne marche pas pour le bloc, je comprend pas pourquoi, j’a mis le : onBlockDestroyedByPlayer avec des evènements world dans les accolades pourtant.

                                    public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int metadata)
                                    {
                                    world.createExplosion((Entity)null, x, y, z, 4F, true);
                                    world.spawnEntityInWorld(new EntityLightningBolt(world, x, y, z));
                                    Entity sentity = EntityList.createEntityByName("Panda", world);if (sentity != null)
                                    {
                                    sentity.setLocationAndAngles(x, y, z, world.rand.nextFloat() * 360F, 0.0F);
                                    world.spawnEntityInWorld(sentity);
                                    ((EntityLiving)sentity).playLivingSound();
                                    }
                                    
                                    }
                                    
                                    1 réponse Dernière réponse Répondre Citer 0
                                    • 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
                                            • 1
                                            • 2
                                            • 1 / 2
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB