• Récent
  • Mots-clés
  • Populaire
  • Utilisateurs
  • Groupes
  • S'inscrire
  • Se connecter
  • S'inscrire
  • Se connecter
  • Recherche
  • Récent
  • Mots-clés
  • Populaire
  • Utilisateurs
  • Groupes

Résolu Problème de collision

1.11.x
1.11.x
2
3
936
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.
  • Alexandre1156
    Alexandre1156 dernière édition par 7 juin 2017, 17:18

    Salut,

    Dans mon mod, je transforme mon joueur en poulpe et je change ainsi sa BoundingBox.
    Le problème est que celle-ci va avancer tout seul vers le sud-est jusqu’à rencontrer un bloc et glitcher dedans.
    Par contre, si je suis entouré de blocs, le problème disparaît.

    Voici où je change la BoundingBox :

    public class SquidshroomEvent extends ShroomEvent {
       @Override
       protected void onTickPlayer(EntityPlayer p, Phase phase, Side side) {
          IPlayerMush mush = p.getCapability(PlayerMushProvider.MUSH_CAP, null);
          if(phase == TickEvent.Phase.END){
             if(side.isClient() && this.isSquid && p.getName().equals(Minecraft.getMinecraft().player.getName())) 
                this.setSquidBoundingBoxToPlayer(p); //Permet d'afficher soit même en poulpe
             else if(side.isClient() && MushPowers.getInstance().isSquid(p.getName()))
                this.setSquidBoundingBoxToPlayer(p); //Permet d'afficher les autres en poulpe
             else if(side.isServer() && p.getCapability(PlayerMushProvider.MUSH_CAP, null).isSquid())
                this.setSquidBoundingBoxToPlayer(p); //Permet de changer la BoundingBox côté serveur
             else if(p.eyeHeight != p.getDefaultEyeHeight())
                p.eyeHeight = p.getDefaultEyeHeight(); //Lorsqu'on redevient normale, la BoundingBox normal du joueur est automatiquement remis mais pas les yeux
          }
       }
    }
    private void setSquidBoundingBoxToPlayer(EntityPlayer p){
    if (0.8f != p.width || 0.8f != p.height) {
                p.width = 0.8f;
                p.height = 0.8f;
                p.eyeHeight = 0.4f;
                AxisAlignedBB axisalignedbb = p.getEntityBoundingBox();
                p.setEntityBoundingBox(new AxisAlignedBB(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.minZ, 
                axisalignedbb.minX + (double)p.width, axisalignedbb.minY + (double)p.height, axisalignedbb.minZ + (double)p.width));
           }
    }

    J’ai fait une vidéo pour mieux voir le problème :
    https://youtu.be/N8LYrPjNsSM
    On peux ainsi voir que le cube rouge dépasse du cube blanc sauf si je suis piégé.

    Merci !

    1 réponse Dernière réponse Répondre Citer 0
    • robin4002
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 7 juin 2017, 20:20

      Salut,
      On avait exactement le même soucis sur NHG avec le kit mouton (qui a aussi une hitbox différente).
      Voila notre code actuel :

      /**
      *
      * @param player
      * @param width
      * @param height
      * @param eyeHeight
      */
      public static void setSize(EntityPlayer player, float width, float height, float eyeHeight)
      {
      if(width != player.width || height != player.height)
      {
      player.eyeHeight = eyeHeight;
      float f = player.width;
      player.width = width;
      player.height = height;
      double d0 = width / 2.0D;
      player.setEntityBoundingBox(new AxisAlignedBB(player.posX - d0, player.posY, player.posZ - d0, player.posX + d0, player.posY + player.height, player.posZ + d0));
      if (player.width < f)
      {
      return;
      }
      if(!player.world.isRemote && player.width > f)
      {
      boolean firstUpdate = ObfuscationReflectionHelper.getPrivateValue(Entity.class, player, "firstUpdate", "field_70148_d");
      if(firstUpdate)
      {
      player.move(MoverType.SELF, (f - player.width) / 2, 0.0D, (f - player.width) / 2);
      }
      }
      }
      }
      1 réponse Dernière réponse Répondre Citer 0
      • Alexandre1156
        Alexandre1156 dernière édition par 8 juin 2017, 18:00

        Marche parfaitement ! Merci Robin !

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

        MINECRAFT FORGE FRANCE © 2018

        Powered by NodeBB