MFF

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

    Entité Block

    Planifier Épinglé Verrouillé Déplacé Résolu 1.8.x
    1.8
    23 Messages 2 Publieurs 4.3k Vues 1 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.
    • robin4002R Hors-ligne
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
      dernière édition par

      Tu enregistre comment ton rendu ? Car franchement je ne vois pas pourquoi fallTile est null.

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

        Petite remarque surement intéressante:

        j’ai mis System.out.println(fallTile+" : "+this); au lieu de System.out.println(fallTile); et sa me met de manière alternée:
        [16:12:37] [Server thread/INFO] [STDOUT]: [com.maxyfactory.mod.entity.EntityConvoyingBlock:onUpdate:88]: minecraft:grass[snowy=false] : EntityConvoyingBlock[‘entity.maxyfactory.convoyingBlock.name’/166432, l=‘New World’, x=-635,50, y=5,00, z=-974,50]
        et
        [16:12:37] [Client thread/INFO] [STDOUT]: [com.maxyfactory.mod.entity.EntityConvoyingBlock:onUpdate:88]: null : EntityConvoyingBlock[‘entity.maxyfactory.convoyingBlock.name’/166432, l=‘MpServer’, x=-635,50, y=5,00, z=-974,50]
        quand fallTile est null, l = MpServeur alors que quand fallTile est correcte, l = New Wold (le nom de mon monde)

        Le Proxy Client :

        public class ClientProxy extends CommonProxy{
        
        @Override
        public void registerRenders()
        {
        ItemMod.registerRenders();
        BlockMod.registerRenders();
        RenderingRegistry.registerEntityRenderingHandler(EntityConvoyingBlock.class, new RenderConvoyingBlock(Minecraft.getMinecraft().getRenderManager()));
        
        }
        }
        
        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

          Ah surement car c’est null côté client.
          Problème de synchro du-coup.
          Utilises l’interface IAdditionnalEntityData pour synchroniser le bloc.

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

            Comment fait-on pour l’utiliser ?

            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

              Tu ajoutés implements IAdditionalEntityData après la déclaration de ta classe (il me semble que la classe s’appelle comme ça a vérifier) puis tu ajoutés les deux méthodes qu’il te demander d’implémenter. Elles s’utilisent comme celle d’un paquet

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

                Eclipse ne trouve pas IAdditionalEntityData, tu est sûr que c’est le bon mon ?
                (Désolé d’avoir été si long)

                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

                  Non je ne suis pas sûr et je l’ai même précisé dans mon message.
                  C’est IEntityAdditionalSpawnData

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

                    J’ai essayé de faire fonctionner IEntityAdditionalSpawnData mais je n’y arrives pas, je n’ai jamais utilisé de paquet.
                    J’ai n’arrive pas a écrire un IBlockState dans le ByteBuf, voici un essai que j’ai fait :

                    @Override
                        public void writeSpawnData(ByteBuf buffer)
                        {
                            Object[] arr = this.fallTile.getProperties().values().toArray();
                            for (int i = 0 ; i <= arr.length; i++)
                            {
                                Object obj = arr*;
                                buffer.writeByte((Integer) obj);
                            }
                    
                        }
                    
                        @Override
                        public void readSpawnData(ByteBuf additionalData)
                        {
                    
                            byte[] b = additionalData.array();
                            for (int i = 0 ; i <= b.length; i++)
                            {
                                this.fallTile.withProperty(additionalData.getByte(i)  /*ici, je ne sais pas quoi mettre*/, additionalData.getByte(i));
                            }
                    
                        }
                    

                    Puis-je avoir de l’aide, s’il vous plais.

                    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

                      Il faut envoyer l’id du bloc et le metadata.

                      1 réponse Dernière réponse Répondre Citer 0
                      • LeBossMax2L Hors-ligne
                        LeBossMax2
                        dernière édition par robin4002

                        Merci beaucoup, ça fonctionne maintenant voici le code ( plus simple au final ) :

                            @Override
                            public void writeSpawnData(ByteBuf buffer)
                            {
                        
                                int ID = Block.getIdFromBlock(this.fallTile.getBlock());
                                int meta = this.fallTile.getBlock().getMetaFromState(this.fallTile);
                        
                                buffer.writeInt(ID);
                                buffer.writeInt(meta);
                        
                            }
                        
                            @Override
                            public void readSpawnData(ByteBuf additionalData)
                            {
                        
                                int ID = additionalData.readInt();
                                int meta = additionalData.readInt();
                                this.fallTile = Block.getBlockById(ID).getStateFromMeta(meta);
                        
                            }
                        

                        Petit screen pour montrer la beauté de mon travail 😛 :
                        0_1537562444999_2016-01-30_17.34.06.png

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

                        MINECRAFT FORGE FRANCE © 2024

                        Powered by NodeBB