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

    Non résolu localiser un bloc avec une boussole

    Sans suite
    1.12.2
    2
    3
    118
    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.
    • Arca30
      Arca30 dernière édition par

      Re : Une boussole

      J’ai suivie cet ancien tuto et j’ai réussi à refaire correctement la boussole mais impossible de localiser un bloc a l’aide de celle-ci. Si quelqu’un sais comment récupérer les coordonnées d’un minerais généré dans le monde merci de prendre le temps de me répondre,
      bonne journée.

      Le code de ma boussole:

      package fr.arca.arcadia.items;
       
      public class FindiumCompass extends Item 
      {
       
          public FindiumCompass(String name) 
          {
              super();
          	setUnlocalizedName(name);
      		setRegistryName(name);
      		setCreativeTab(Arcadia.ArcadiaTab);
              setMaxStackSize(1);
       
              addPropertyOverride
              (
              		new ResourceLocation("angle"), new IItemPropertyGetter() 
                {
       
                  @SideOnly(Side.CLIENT)
                  double rotation;
                  @SideOnly(Side.CLIENT)
                  double rota;
                  @SideOnly(Side.CLIENT)
                  long lastUpdateTick;
       
                  double blockX = 0;
                  double blockZ = 0;
       
                  @SideOnly(Side.CLIENT)
                  @Override
                  public float apply(ItemStack stack, World world, EntityLivingBase entityLiving) 
                  {
                      if (entityLiving == null && !stack.isOnItemFrame()) return 0.0F;
                      final boolean entityExists = entityLiving != null;
       
                      final Entity entity = (Entity) (entityExists ? entityLiving : stack.getItemFrame());
       
                      if (world == null) world = entity.world;
       
                      double rotation = entityExists ? (double) entity.rotationYaw : getFrameRotation((EntityItemFrame) entity);
                      rotation %= 360.0D;
       
                      double adjusted = Math.PI - ((rotation - 90.0D) * 0.01745329238474369D - getAngle(world, entity, stack));
       
                      if (entityExists) adjusted = wobble(world, adjusted);
       
                      final float f = (float) (adjusted / (Math.PI * 2D));
                      return MathHelper.positiveModulo(f,    1.0F);
                  }
       
                  @SideOnly(Side.CLIENT)
                  private double getFrameRotation(EntityItemFrame itemFrame) 
                  {
                      return (double) MathHelper.wrapDegrees(180 + itemFrame.facingDirection.getHorizontalIndex() * 90);
                  }
       
                  @SideOnly(Side.CLIENT)
                  private double getAngle(World world, Entity entity, ItemStack stack) 
                  {
                      return Math.atan2((double) blockZ - entity.posZ, (double) blockX - entity.posX);
                  }
       
                  @SideOnly(Side.CLIENT)
                  private double wobble(World world, double amount) 
                  {
                      if (world.getTotalWorldTime() != lastUpdateTick) 
                      {
                          lastUpdateTick = world.getTotalWorldTime();
                          double d0 = amount - rotation;
                          d0 %= Math.PI * 2D;
                          d0 = MathHelper.clamp(d0, -1.0D, 1.0D);
                          rota += d0 * 0.1D;
                          rota *= 0.8D;
                          rotation += rota;
                      }
       
                      return rotation;
                  }
                  
                }
              
              );
          }
       
      }
      
      
      1 réponse Dernière réponse Répondre Citer 0
      • LeBossMax2
        LeBossMax2 dernière édition par

        Bonjour,
        Pour récupérer un block qui est généré dans le monde, c’est assez compliqué parce que la manière la plus simple c’est de parcourir les blocks autour du joueur et check si c’est ton block, mais le problème c’est que ça prend beaucoup de temps de faire ça, donc tu peux que check dans un rayon assez faible. ça peut aussi être une bonne idée de sauvegardé la position du block trouvé pour éviter de parcourir les blocks autour du joueur à chaque frame

        1 réponse Dernière réponse Répondre Citer 0
        • Arca30
          Arca30 dernière édition par

          D’accord ça a l’air extrêmement complexe donc bon je vais pas chercher plus je pense, j’ai pas les compétences pour me lancer la dedans.
          merci de ta réponse

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

          MINECRAFT FORGE FRANCE © 2018

          Powered by NodeBB