Block créant des dégats et repoussant les mobs.



  • Bonjour 😊, c'est encore moi , voilà j’ai créer il y a peu mon bloc barrière ( cependant ) cette une barrière electrique donc j'aimerais qu'elle inflige des dégâts quand on s'y colle j'ai donc été chercher le code dans le BlockCactus et j'ai trouvé celui-ci :

     public void onEntityCollidedWithBlock(World p_149670_1_, int p_149670_2_, int p_149670_3_, int p_149670_4_, Entity p_149670_5_)
       {
           p_149670_5_.attackEntityFrom(DamageSource.cactus, 1.0F);
       }
    

    Et j'ai essayé mais ca ne marche pas je me suis donc dit que c'est à cause de tout c'est "p_149670_1_" etc je viens donc vous demander votre aide car je ne sais pas par quoi remplacer , j'aimerais également que mon block repousse les mobs cet à dire que quand un mob veut s'en approcher il fasse demi tour car il sait que sa créer des dégâts , en gros qu'il le repousse 😄 😄 Comment faire ? J'ai chercher sur le fofo j'ai trouvé pour tuer les mobs dans un rayon mais ce n'est pas ca que je veut 😕


  • Administrateurs

    
    public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
    {
    entity.attackEntityFrom(DamageSource.cactus, 1.0F);
    }
    
    


  • Oh merci bien Superloup10 !! Tu sais ou on peut trouver la signification de toute c'est p_149670 etc pour éviter que je ne vous dérange plus pour ce genre de problème ??

    Cependant ca ne créer pas de dégâts ..


  • Administrateurs

    world, x, y, z, entity
    Et non ça vient pas de ça, mais du fait que aucune entité ne sera jamais en collision avec ton bloc.
    Il faut réduire la collision.

    public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z)
    {
    float f = 0.0625F;
    return AxisAlignedBB.getBoundingBox((double)((float)x + f), (double)y, (double)((float)z + f), (double)((float)(x + 1) - f), (double)((float)(y + 1) - f), (double)((float)(z) - f));
    }
    

    Pour ton second problème, regardes dans le tutoriel sur les outils, j'ai montré comment faire brûler tous les mobs sur un certain rayon, tu peux t'en inspirer.



  • tu as des fichier dans build/unpacked/mapping



  • Le problème c'est que j'ai déjà un code de ce genre pour la collision donc bon :S Ca créer des probleme maintenant car mon block est un block avec rendu techne donc mtn je peut passer à travers , mon code d'avant permettait d'arranger le problème hitbox etc voici mon ancien code qui était parfait que dois-je régler ?

    public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z)
    {
    return AxisAlignedBB.getAABBPool().getAABB((double)x + this.minX, (double)y + this.minY, (double)z + this.minZ, (double)x + this.maxX, (double)y + 2.700D, (double)z + this.maxZ);
    
    }
    

    @'isador34':

    tu as des fichier dans build/unpacked/mapping

    Je ne trouve pas ces fameux fichier..


  • Administrateurs

    Il faut que tu réduises légèrement les bords.

    public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z)
    {
    float f = 0.0025F;
    return AxisAlignedBB.getAABBPool().getAABB((double)x + this.minX + f, (double)y + this.minY + f, (double)z + f + this.minZ, (double)x + this.maxX - f, (double)y + 2.700D - f, (double)z + this.maxZ - f);
    }
    

    Les correspondances se trouvent pas quelque part, il faut les déduire soit même.



  • Ca marche je suis entrein de voir pour faire le système qui repousse les mobs.


    J'ai essayé quelques trucs mais sans succès , le truc c'est qu'il faudrait que le block vérifie tout le temps se qu'il y a dans un rayon de 2 , la j'ai l'impression qu'il ne vérifie pas donc ca ne repousse pas /:


  • Administrateurs

    Dans le pire des cas, tile entity, tu as la fonction onUpdate dedans.



  • Je suis entrain devoir avec Elias , car lui même à créer de l'eau qui repousse , je viens de lui demander , et je vais essayer d'ajouter les codes 🙂