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

    Résolu Sur écrire une fonction personelle

    1.8.x
    1.8
    3
    8
    1392
    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.
    • J
      Jodge dernière édition par

      Je pensais avoir compris le principe du codage de minecraft avec ce principe de redéfinir les fonctions, mais au final, j’ai du mal comprendre ^^’

      Je m’explique (question à la fin) :

      J’ai une premier classe JWeapons (Extension de ItemSword). Dans cette classe j’ai définis une nouvelle fonction :

      ​    /**
           * Check Block which can be destroy by special use. 
           * @param block block check
           * @param pos position of the world check (BlockPos)
           * @param worldIn actual word
           * @return Boolean : true if block can be destroy 
           */
          public static boolean destructibleBlock(Block block, BlockPos pos, World worldIn)
          {
          return false;
          }
      

      (oui je suis très carré, j’ai documenté mon code, et oui je suis très con, je l’ai documenter en Anglais 😛 )

      Dans ma classe JScythe (ma premiers sous classe de JWeapons). J’ai redéfinis ma fonction sous la forme suivant :

      ​    public static boolean destructibleBlock(Block block, BlockPos pos, World worldIn)
          {
          boolean isDestructible = false;
          if(!block.isAir(worldIn, pos))
          {
          if(block.isReplaceable(worldIn, pos))
          {
          isDestructible = true;
          }
          else if (Block.isEqualTo(block, Blocks.fire))
          {
          isDestructible = true;
          }
          else if (block instanceof BlockBush)
          {
          if(block instanceof BlockCrops)
          {
          if(!(((BlockCrops) block).canGrow(worldIn, pos, worldIn.getBlockState(pos), true)))
          {
          isDestructible = true;
          }
          }
          else
          {
          isDestructible = true;
          }
          }
          }
      return isDestructible;
          }
      

      Jusque la pas de problème. Dans cette même classe (JScythe), je fais appel a la fonction suivante un peu plus loin :

      ​ JFunction.destroyBlock(playerIn.getPosition(), (int) bonus, worldIn, this, 2, 3);
      

      Cette fonction est la racine de mon problème :

      ​    public static void destroyBlock(BlockPos pos, int maxRange, World worldIn, JWeapons itemUse, int minRange, int rangeMultiplier)
          {
          int x, z;
          int posX = pos.getX();
          int posY = pos.getY();
          int posZ = pos.getZ();
          BlockPos temps;
          Block myBlock;
      
          if (maxRange < minRange)
          {
      maxRange = minRange;
          }
          maxRange *= rangeMultiplier;
      
          for (x = 0; x < maxRange; x++)
          {
              for (z = 0; z < maxRange - x; z++)
              {
              temps = new BlockPos(posX + x, posY, posZ + z);
              myBlock = worldIn.getBlockState(temps).getBlock();
              if(itemUse.destructibleBlock(myBlock, temps, worldIn))
              {
              worldIn.destroyBlock(pos, true);
              }
      
              if(z != 0)
              {
              temps = new BlockPos(posX + x, posY, posZ - z);
              myBlock = worldIn.getBlockState(temps).getBlock();
              if(itemUse.destructibleBlock(myBlock, temps, worldIn))
              {
              worldIn.destroyBlock(pos, true);
              }        
              }
      
              if(x != 0)
              {
                  temps = new BlockPos(posX - x, posY, posZ + z);
                  myBlock = worldIn.getBlockState(temps).getBlock();
                  if(itemUse.destructibleBlock(myBlock, temps, worldIn))
                  {
                  worldIn.destroyBlock(pos, true);
                  }
                  if(z != 0)
                  {
                  temps = new BlockPos(posX - x, posY, posZ - z);
                  myBlock = worldIn.getBlockState(temps).getBlock();
                  if(itemUse.destructibleBlock(myBlock, temps, worldIn))
                  {
                  worldIn.destroyBlock(pos, true);
                  }            
                  }
              }
              } // end of for y
          } // end of for x
          }
      

      Si vous avez pris le temps de lire, vous aurez remarquer que je fais appel a la fonction “destructibleBlock” Jusqu’à tous a l’heure, cela fonctionnais. C’étais la fonction dans JScythe qui étais utilisé et qui fonctionnais. Mais voila, après avoir tenter un build (et m’être rendu compte que le compilateurs Forge n’acceptais pas les Switch avec String T-T) , ma fonction ne marche plus. Elle refait appel à la fonction contenu dans JWeapons…

      Ma question est donc : Ai-je commis une erreur lors d’une modification quelconque qui pourrai expliqué le problème, et surtout, comment je peu fixer le problème ^^’ J’ai beau chercher, je ne vois pas d’ou peu venir 😞

      Merci d’avance pour votre aide, et que la caféine soit votre amis 😄

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

        C’est ce qu’on appel override une méthode. Et pour faire ça la méthode en question ne doit pas être static. Donc devant destructibleBlock il ne devrait pas avoir static.

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

          Ajouter des commentaires est une bonne habitude à prendre, et c’est conseillé de la mettre en anglais, tu n’as rien fait de mal 😉 .

          Pour le switch : minecraft utilises la version 1.6 de java donc si tu veux utiliser les blocks switch avec des Strings ainsi que toutes les nouvelles fonctionnalités, il faudra rajouter dans la section minecraft de ton build.gradle ces 2 lignes :
          "targetCompatibility = ‘1.7’ "
          "sourceCompatibility = ‘1.7’ "
          (ou avec 1.8 si tu veux utiliser la version 8 de java. Mais attention : certaines personnes utilisent encore java 6 !)

          Pour la ré-écriture : rajoute l’annotation @Override sur ta classe fille, si eclipse te trouve une erreur, çà veut dire que tu n’as pas mis les bons paramètres ou que ta fonction ne peux pas être ré-écrite, à ce moment fait Alt + shift + S puis “override/implement methods”.

          Site web contenant mes scripts : http://SCAREXgaming.github.io

          Pas de demandes de support par MP ni par skype SVP.
          Je n'accepte sur skype que l…

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

            Rha mais l’erreur de merddddeeeeee !!! Ça fait 50 fois que j’y passe devant, j’ai même fait la même une erreur similaire en cours 😢

            Pour le switch, étant donner que ce n’est pas une fonction destiné a être utilisé tous les 4 matin, j’ai remplacer par un bon vieux if else, j’y perdrai un peu sur l’exécution (encore que), mais uniquement au démarrage du jeu dans le pire des cas.

            Bon ducoup je vais profiter de vous avoir sur la main pour vous poser une autre question plus technique : vers qu’elle classe il faut que je me tourne pour animer une entité depuis ma classe d’arme ? Je n’ai pas trouver de fonction très intéressent au niveau des classes d’entités (il faut toujours attendre un tick pour que le joueurs soit uptade, mais a cause de la vitesse d’exécution, seul la dernier modification ce joue)

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

              C’est à dire ? Tu veux animer une entité ou une arme ?

              Site web contenant mes scripts : http://SCAREXgaming.github.io

              Pas de demandes de support par MP ni par skype SVP.
              Je n'accepte sur skype que l…

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

                Animé l’entité porteuse de l’arme pour être exacte. En l’occurance, dans ce cas la, uniquement une rotation à 360, avec un effet sur l’écran type confusion (mais pas celui la, il m’es trop de temps a réagir)

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

                  IItemRenderer ou event de rendu

                  Site web contenant mes scripts : http://SCAREXgaming.github.io

                  Pas de demandes de support par MP ni par skype SVP.
                  Je n'accepte sur skype que l…

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

                    mouai, bon j’ai rien trouver d’utilisable, je vais me renseigner plus sur le sujet, et au besoin je demanderai peu être un tuto, ou une astuce sur un autre sujet ^^

                    Merci pour ton aide, et bonne soirée !.. Enfin nuit ^^’

                    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