MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    [BUG] Escaliers de verre font du xRay

    Planifier Épinglé Verrouillé Déplacé Non résolu Sans suite
    1.12.2
    30 Messages 5 Publieurs 1.8k Vues 5 Watching
    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.
    • blixow14B Hors-ligne
      blixow14
      dernière édition par

      Alors là je comprends pas car j’ai bien vérifié dans les classes des block et c’est bien ça qui est mit. Et pour moi ça marche 😕 . Le problème vient peut-être d’ailleurs

      J'aime les pâtes

      Flow ArgF 1 réponse Dernière réponse Répondre Citer 0
      • Flow ArgF Hors-ligne
        Flow Arg Moddeurs confirmés @blixow14
        dernière édition par

        @blixow14 Peut etre que ca vient du registering ?
        Voici une ligne qui register un de mes escaliers :

        public static final Block GLASS_STAIRS = new BlockStairGlassBase("glass_stairs");
        

        Je ne pense pas que ca ait de rapport mais la, je seche.

        Mon GitHub
        Mon repo Maven
        Mon Updater
        Je suis un membre apprécié et joueur, j'ai déjà obtenu 10 points de réputation.

        1 réponse Dernière réponse Répondre Citer 0
        • blixow14B Hors-ligne
          blixow14
          dernière édition par blixow14

          non ce n’est pas ça. Peut-être quelqu’un d’autre aura une idée.

          J'aime les pâtes

          1 réponse Dernière réponse Répondre Citer 0
          • Flow ArgF Hors-ligne
            Flow Arg Moddeurs confirmés
            dernière édition par

            Je l’espère…

            Mon GitHub
            Mon repo Maven
            Mon Updater
            Je suis un membre apprécié et joueur, j'ai déjà obtenu 10 points de réputation.

            1 réponse Dernière réponse Répondre Citer 0
            • B Hors-ligne
              Blackbalrog
              dernière édition par Blackbalrog

              public boolean isOpaqueCube() {
              return false;
              }

              public boolean isFullCube() {
              return false;
              }

              Et comme ça ?
              si on retire les Override et se qui était entre parenthèse.
              Perso j’ai pas besoin d’Override ni de rajouter quoi que se soit.

              isadorI 1 réponse Dernière réponse Répondre Citer 0
              • isadorI Hors-ligne
                isador Moddeurs confirmés Modérateurs @Blackbalrog
                dernière édition par

                @Blackbalrog a dit dans [BUG] Escaliers de verre font du xRay :

                public boolean isOpaqueCube() {
                return false;
                }

                public boolean isFullCube() {
                return false;
                }

                Et comme ça ?
                si on retire les Override et se qui était entre parenthèse.
                Perso j’ai pas besoin d’Override ni de rajouter quoi que se soit.

                Les @Override permettent de s’assurer que la fonction que tu utilises est bien déclarée dans la classe mère, donc c’est très important de toujours l’utiliser pour ce genre de fonction

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

                  Sérieusement, arrêter de mettre / retirer du code sans savoir ce qu’il fait et aller apprendre les bases de Java.

                  Là ça devient juste désespérant de lire la section support …

                  1 réponse Dernière réponse Répondre Citer 0
                  • blixow14B Hors-ligne
                    blixow14
                    dernière édition par blixow14

                    Je devais me sentir visait ? Car j’avais eu un problème similaire et justement on m’avait dit de mettre ces 2 méthodes (isOpaqueCube, isFullCube ) et mon problème avait été réglé. Après je crois que ces classes sont mal foutu, il y a une couille dans le pâté je crois bien.

                    J'aime les pâtes

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

                      Non, c’est le message de Blackbalrog indiquant de retirer le @Override qui m’a fait écrire ça.

                      Parce qu’effectivement ces méthodes sont nécessaires.
                      Je crois que ce qu’il manque c’est la méthode shoudRenderSide ou quelque chose du genre.

                      1 réponse Dernière réponse Répondre Citer 0
                      • B Hors-ligne
                        Blackbalrog
                        dernière édition par Blackbalrog

                        Au pire tiens car c’est vrai que t’as class tout en haut es bizard

                        je te fais un mini tuto
                        déjà tu créé un package que tu appel comme tu veux c’est dedans qu’on va plus ou moins tous mettre (Les Class)

                        Ensuite dans se package tu va créé une Class BlockMod ensuite tu créé un Objet.

                        Donc:

                        public static Block stair;
                        

                        ensuite dessous tu créé une méthode donc:

                        public static void init()
                        {
                        }
                        

                        et une 2ème méthode:

                        public static void registerBlock()
                        {
                        }
                        

                        ensuite dans init tu cales les paramètre de ton Objet:

                        stair = new Stairs(BlockMod.block_stair, 0).setBlockName("stair").setCreativeTab(CreativeTabs.tabblock).setHardness(5.0F);
                        

                        ensuite tu passe t’as souris sur Stairs et tu créé une nouvelle Class qui doit se trouver dans le package que tu as créé
                        ensuite tu fais un exporte de BlockStairs ensuite tu passe souris sur Stairs et tu fais add constructor …

                        ensuite dans registerBlock tu cales:

                        GameRegistry.registerBlock(stair, stair.getUnlocalizedName().substring(5));
                        

                        ensuite tu vas dans ta Class principal et tu vas dans PreInit et dedans tu marque:

                        BlockMod.init;
                        BlockMod.registerBlock
                        

                        Et ensuite dans la Class Stairs
                        dessous le constructor tu créé cette méthodes

                        public boolean isOpaqueCube()
                        {
                        return false;
                        }
                        

                        Avant qu’on me dise que ça marche pas je précise que se code viens de la 1 7 10 donc je ne sais pas si sa peux marcher en 1.12.2

                        1 réponse Dernière réponse Répondre Citer 0
                        • blixow14B Hors-ligne
                          blixow14
                          dernière édition par blixow14

                          Ah oui, alors désolé d’avoir cru que c’était pour moi ^^'. Je crois pas qu’il y ait besoin d’une autre fonction, je pense que ça vient de la façon très bizarre qu’il a eu de faire son block. Il doit dégager ces 2 classes puis en créer une seule l’extends à BlockStairs et ajouter son implements. Après il ajoute le block à L’ArrayList et met les fonctions que je lui ai dit de mettre.

                          J'aime les pâtes

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

                            @Blackbalrog le problème c’est pas que ça fonctionne au non, c’est que tu répands des mauvaises pratiques en disant d’enlever @Override sans même savoir ce qu’il fait. Et ça cela m’agace beaucoup.

                            1 réponse Dernière réponse Répondre Citer 0
                            • B Hors-ligne
                              Blackbalrog
                              dernière édition par Blackbalrog

                              Non j’ai jamais su à quoi il servait car les explication avec des mot technique c’est pas mon truc à chaque fois j y comprend rien

                              1 réponse Dernière réponse Répondre Citer 0
                              • blixow14B Hors-ligne
                                blixow14
                                dernière édition par

                                Blackbalrog ce que tu proposes ne peut pas marcher justement parce que ça vient de la 1.7.10, or la version est la 1.12.2.
                                Et retirer un Override ne régle pas les problèmes, car justement les overrides permettent d’appeler la méthodes de la classe. Pour faire simple comme tu ne comprends pas avec des mots techniques, c’est comme si tu disais : Cette méthode utiliser dans la classe , je vais signaler que je m’en sert, donc je mets un @Override pour cela (à noter que tu dois soit extends à une classe, soit implémenté quelque chose pour que tu puisses faire un Override, parce que justement tu appelles la méthode de la classe). Voilà j’espère tu as compris le principe.

                                J'aime les pâtes

                                robin4002R 1 réponse Dernière réponse Répondre Citer 0
                                • B Hors-ligne
                                  Blackbalrog
                                  dernière édition par Blackbalrog

                                  Haaa ok là j’ai compris ^^’ merci honnêtement j’ai demander à plein de gens personne n’a su me le dire avec des mot simple mais là j’ai compris merci. Et hop sa part sur mon discord là où je note tous pour pas oublié ^^'.

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • robin4002R Hors-ligne
                                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs @blixow14
                                    dernière édition par

                                    @blixow14 a dit dans [BUG] Escaliers de verre font du xRay :

                                    les overrides permettent d’appeler la méthodes de la classe. Pour faire simple comme tu ne comprends pas avec des mots techniques, c’est comme si tu disais : Cette méthode utiliser dans la classe , je vais signaler que je m’en sert, donc je mets un @Override pour cela (à noter que tu dois soit extends à une classe, soit implémenté quelque chose pour que tu puisses faire un Override, parce que justement tu appelles la méthode de la classe). Voilà j’espère tu as compris le principe.

                                    Non, pas exactement.
                                    D’un point de vue fonctionnel @Override ne fait rien. Ils ne sont pas garder après compilation.
                                    @Override sert simplement à s’assurer qu’une méthode identique (même nom, même signature) existe dans la classe mère ou plus haut dans l’héritage.
                                    Cela permet d’éviter les erreurs de méthode non surchargé (et donc jamais appelé) car elles n’ont pas la bonne signature.
                                    Et dans le cas de Minecraft c’est d’autant plus important que les mises à jour ont tendances à changer le nom et les signatures des méthodes. Sans @Override suite à un changement de version, tu auras juste une méthode non appelée et donc un comportement inattendu en jeu. Avec un @Override tu auras une erreur de compilation, donc avant même de lancer ton jeu tu verra qu’il y a un problème et sur quelle méthode le problème est.

                                    1 réponse Dernière réponse Répondre Citer 1
                                    • blixow14B Hors-ligne
                                      blixow14
                                      dernière édition par

                                      Il a demandé une explication simple x) donc bon, car la pas sur qu’il comprenne.

                                      J'aime les pâtes

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • blixow14B Hors-ligne
                                        blixow14
                                        dernière édition par

                                        Bref, je pense qu’on s’est tout de même bien écarté du sujet de base qui est le problème d’xray du block.

                                        J'aime les pâtes

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • Flow ArgF Hors-ligne
                                          Flow Arg Moddeurs confirmés
                                          dernière édition par

                                          Et ben et ben, ça à discuté à ce que je vois ^^.

                                          Bonjour @robin4002 , j’ai regardé la fonction shouldSideBeRendered (je pense que tu pensais à cette méthode). J’ai cherché sur le net (pas de javaDoc sur cette méthode puisqu’elle est dépréciée, pas non plus de renseignements sur quelle méthode utiliser a la place 😕 ) et je n’ai rien trouvé d’intéressant. De même, que je mette true ou false (c’est un boolean), je n’ai rien de concluant, au contraire, ça empire les choses. Peux tu éclairer ma lanterne ? Merci d’avance 😃.

                                          Flow

                                          Mon GitHub
                                          Mon repo Maven
                                          Mon Updater
                                          Je suis un membre apprécié et joueur, j'ai déjà obtenu 10 points de réputation.

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

                                            Je viens de garder en détails, les deux méthodes que tu as surchargé (getBlockLayer et isFullCube) ne sert à rien, les fonctions dans BlockStairs renvoie déjà sur false pour le second et pour le premier il prend la valeur du bloc envoyé en argument (donc celui du verre dans ton cas).

                                            La seule méthode qu’il y a dans la classe du verre (enfin dans une de ces classes parentes) c’est celle-ci :

                                                @SideOnly(Side.CLIENT)
                                                public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side)
                                                {
                                                    IBlockState iblockstate = blockAccess.getBlockState(pos.offset(side));
                                                    Block block = iblockstate.getBlock();
                                            
                                                    if (this == Blocks.GLASS || this == Blocks.STAINED_GLASS)
                                                    {
                                                        if (blockState != iblockstate)
                                                        {
                                                            return true;
                                                        }
                                            
                                                        if (block == this)
                                                        {
                                                            return false;
                                                        }
                                                    }
                                            
                                                    return !this.ignoreSimilarity && block == this ? false : super.shouldSideBeRendered(blockState, blockAccess, pos, side);
                                                }
                                            

                                            Sachant que dans le cas du verre ignoreSimilarity est sur false, donc il te faudrait quelque chose comme ça :

                                                @SideOnly(Side.CLIENT)
                                                public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side)
                                                {
                                                    IBlockState iblockstate = blockAccess.getBlockState(pos.offset(side));
                                                    Block block = iblockstate.getBlock();
                                            
                                                    if (blockState != iblockstate)
                                                    {
                                                        return true;
                                                    }
                                            
                                                    if (block == this)
                                                    {
                                                        return false;
                                                    }
                                            
                                                    return block == this ? false : super.shouldSideBeRendered(blockState, blockAccess, pos, side);
                                                }
                                            
                                            Flow ArgF 1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 1 / 2
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB