MFF

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

    OnEntityCollidedWithBlock ne fonctionne pas

    Planifier Épinglé Verrouillé Déplacé Résolu 1.9.x et 1.10.x
    1.10.x
    10 Messages 4 Publieurs 1.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.
    • loustakL Hors-ligne
      loustak
      dernière édition par

      Bonjour,

      J’ai le code suivant :

      package com.loustak.flask.proxy;
      
      import net.minecraft.block.material.Material;
      import net.minecraft.block.state.IBlockState;
      import net.minecraft.entity.Entity;
      import net.minecraft.world.World;
      
      public class BlockBasicJumper extends BlockBase {
      
      public BlockBasicJumper() {
      super(Material.ROCK, "basic_jumper");
      }
      
      public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) {
      entity.motionY += 1;
      System.out.println("Walking! Motion: " + entity.motionY);
         }
      
      @Override
      @Deprecated
      public boolean isOpaqueCube(IBlockState state) {
      return false;
      }
      
      @Override
      @Deprecated
      public boolean isFullCube(IBlockState state) {
      return false;
      }
      
      }
      
      

      Qui hérite de :

      package com.loustak.flask.proxy;
      
      import com.loustak.flask.ModFlask;
      
      import net.minecraft.block.Block;
      import net.minecraft.block.material.Material;
      import net.minecraft.creativetab.CreativeTabs;
      import net.minecraft.entity.Entity;
      import net.minecraft.item.ItemBlock;
      import net.minecraft.world.World;
      
      public class BlockBase extends Block {
      
      protected String name;
      
      public BlockBase(Material material, String name) {
      super(material);
      
      this.name = name;
      
      setUnlocalizedName(name);
      setRegistryName(name);
      }
      
      public void registerItemModel(ItemBlock itemBlock) {
      ModFlask.proxy.registerItemRenderer(itemBlock, 0, name);
      }
      
      @Override
      public BlockBase setCreativeTab(CreativeTabs tab) {
      super.setCreativeTab(tab);
      return this;
      }
      
      }
      

      Je n’ai aucun message d’erreur par contre le code à l’intérieur de onEntityCollidedWithBlock ne s’exécute jamais et je ne comprends pas pourquoi.

      Merci de votre aide !

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

        Car cette fonction n’est pas la même en 1.11 qu’en 1.7.70 ^^ Tapes le début de son nom et fait ctrl+space dans ta classe pour l’avoir.
        PS: utilises des balises java la prochaine fois 😉

        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
        • loustakL Hors-ligne
          loustak
          dernière édition par

          Merci de ta réponse   🙂
          J’ai essayer de faire control+espace mais éclipse m’affiche une boite blanche avec écrit no déeault proposal

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

            public void onEntityCollidedWithBlock(World worldIn, BlockPos pos, IBlockState state, Entity entityIn)
            
            1 réponse Dernière réponse Répondre Citer 0
            • loustakL Hors-ligne
              loustak
              dernière édition par

              Ah j’avais pas vu le in après modification :

              @Override
              public void onEntityCollidedWithBlock(World worldIn, BlockPos pos, IBlockState state, Entity entityIn) {
                  entityIn.motionY += 1;
                  System.out.println("Walking! Motion: " + entityIn.motionY);
              }
              

              Mais le message n’apparait pas et les entités ne sautes toujours pas.
              Est-ce que ça peut venir du fait que mon bloc à un rendu spécial ?

              @Override
              @Deprecated
              public boolean isOpaqueCube(IBlockState state) {
                  return false;
              }
              
              @Override
              @Deprecated
              public boolean isFullCube(IBlockState state) {
                   return false;
              }
              
              1 réponse Dernière réponse Répondre Citer 0
              • BrokenSwingB Hors-ligne
                BrokenSwing Moddeurs confirmés Rédacteurs
                dernière édition par

                onEntityCollidedWithBlock -> Collision sur les côtés

                Lorsqu’il marche dessus :

                public void onEntityWalk(World world, BlockPos pos, Entity entity)
                
                
                GameRegistry.<block>register(new Block(Material.ROCK) {
                @Override
                public void onEntityWalk(World worldIn, BlockPos pos, Entity entity) {
                entity.motionY++;
                }
                
                @Override
                public boolean isOpaqueCube(IBlockState state) {
                return false;
                }
                
                @Override
                public boolean isFullCube(IBlockState state) {
                return false;
                }
                }.setRegistryName("blockTest"));
                ```</block>
                1 réponse Dernière réponse Répondre Citer 1
                • loustakL Hors-ligne
                  loustak
                  dernière édition par

                  Merci beaucoup ça fonctionne parfaitement!

                  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

                    @‘BrokenSwing’:

                    onEntityCollidedWithBlock -> Collision sur les côtés

                    Pas exactement.
                    La fonction onEntityCollidedWithBlock est appelé pour tous les blocs où la boite de collision du joueur se trouve dans leur x, y, z.
                    Or par défaut la boite de collision d’un bloc est de 111, donc le joueur sera toujours au dessus, en dessous où à côté du bloc.
                    Pour que la fonction onEntityCollidedWithBlock soit appelé il faut obligatoirement que la boite de collision d’un bloc soit inférieur à 1.

                    C’est pour ça que les cactus ne sont pas des blocs de 111 mais de 0.8750.93750.875

                    Quand la fonction onEntityWalk n’existait pas, le seul moyen de faire une action quand une entité marchait sur le bloc, était de faire un bloc avec une boite de collision de 10,991 et d’utiliser onEntityCollidedWithBlock.
                    Et c’est pour cela qu’on s’enfonce dans la soulsand (qui a une boite de collision de 1 * 0.875 * 1).

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

                      Pourtant, avec une boite de collision de 111, en tapant le côté du bloc, ça me faisait sauter

                      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

                        Ah bon ? Donc la fonction ne fonctionne pas exactement comme il me semblait.

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

                        MINECRAFT FORGE FRANCE © 2024

                        Powered by NodeBB