Problèmes de positionnement


  • Bonjour,

    J’avance dans un mod insérant des IA dans minecraft mais j’ai un soucis tout bête : je n’arrive pas à mettre l’entité dans la bonne direction.

    J’essaye de l’aligner sur le quadrillage de minecraft. Au début je voulais lui imposer sont rotationYaw à un multiple de 90° mais j’ai fini par remarqué qu’apparemment (corrigez moi si je me trompe) les angles de références pour être aligné sur les axes sont 45,135,225 et 315° dans le cas des mobs. Bon, à la limite OK …

    Ca devient plus space quand mes sorties consoles me disent que l’entité est mise à un angle de X et que sur mon écran elle s’affiche avec un angle Y.

    Donc si quelqu’un à une explication logique faites le moi savoir … je suppose que le serveur n’avertit pas le client du changement à répercuter mais comment le forcer à le faire. (Je ne peut pas le faire sur le client directement vu que l’entité est créée coté serveur). J’ai du loupé une subtilité qque part …

    Merci d’avance 🙂

    EDIT : de la même façon si je pousse l’entité dans le jeu, le code qui est censé ré-aligné l’entité ne perçoit pas le changement d’angle.


  • Tu passe bien par le render pour ça ?

    Mais explique quel entitée ça serait, pour avoir une idée de ce qu’il te faut


  • Voila ma fonction d’alignement :

    public void alignOnGrid()
    {
    this.setPosition(this.posX = Math.round(this.posX - 0.5) + 0.5,
    this.posY,
    this.posZ = Math.round(this.posZ - 0.5) + 0.5);
    
    if(this.rotationYaw < 0)
    this.rotationYaw += 360;
    
    int quarter = (int) Math.floor(this.rotationYaw / 90);
    
    switch(quarter)
    {
    case 0:
    case 4:
    move_dx = 0;
    move_dz = 1;
    this.rotationYaw = 45;
    break;
    
    case 1:
    move_dx = -1;
    move_dz = 0;
    this.rotationYaw = 135;
    break;
    
    case 2:
    move_dx = 0;
    move_dz = -1;
    this.rotationYaw = 225;
    break;
    
    case 3:
    move_dx = 1;
    move_dz = 0;
    this.rotationYaw = 315;
    break;
    }
    }
    

    (NB : ce code s’exécute coté serveur vu que c’est la que l’entité est créée, je suppose que c’est le problème)

    J’ai aussi essayé avec “setRotation”, qui en fait fait la même chose avec un modulo en plus et j’ai essayé de changer “newrotationyaw” et “prevrotationyaw” à la place mais sans succès.

    En passant par le render je devrais utiliser quoi ?
    Ici mon entité est une créature mécanique que je construit à partir de EntityLiving.


  • personne ?

    😞


  • Le model viens d’un modelBiped ?


  • Non,

    L’entité étend EntityLiving.
    Le modèle étend ModelBase (créé avec Techne).
    Le render étend RenderLiving.