Entité invisible sous un bloc pour s'y asseoir



  • Bonjour, en ce moment-même, je developpe des mods simples avec des blocks, items, outils … mais je suis tombé par hasard sur ce lien : https://www.minecraftforgefrance.fr/showthread.php?tid=2844&pid=32952, qui permet de creer une entité invisible pour ensuite s'asseoir dessus, sauf que c'est en 1.7 et j'aimerais savoir, comment faire la meme chose que la personne a faite sur la page en 1.8. Merci



  • En clair, tu veux faire une chaise (comme ce que fait la personne) ou un block invisible sur lequel on pourrait s'assoir (et donc flotter) ?



  • oui c'est ca !



  • Salut, suis le tuto et dis nous les erreurs .



  • Ok, je te repondrais ce soir. Merci de votre aide !


    J'ai beaucoup d'erreur, je vous les envoies comment ?



  • Tu nous signales les classes qui en comportent, les lignes ainsi que les raisons données par eclipse.



  • Ok, c'est une grosse liste ! Enjoy :

    Il y'a les classes Chaise, TileEntityChaise et EntityChaiseSittable (celle-ci ne comportent pas d'erreur)

    Classes Chaise:

    Ligne 27 : IIcon (IIcon cannot be resolved to a type
    Ligne 33 : setBlockName  (The method setBlockName(String) is undefined for the type Chaise
    Ligne 53 : getBoundingBox  (The method getBoundingBox(int, int, int, double, double, double) is undefined for the type)
    Ligne 76 : getTileEntity  (The method getTileEntity(BlockPos) in the type World is not applicable for the arguments (int, int, int))
    Ligne 86 : ForgeDirection   (ForgeDirection cannot be resolved to a type)
    Ligne 88 : ForgeDirection  (ForgeDirection cannot be resolved to a variable) et getBlockMetadata (The method getBlockMetadata(int, int, int) is undefined for the type)
    Ligne 90 :getTileEntity (The method getTileEntity(BlockPos) in the type World is not applicable for the arguments (int, int, int))
    Ligne 110 : ForgeDirection (ForgeDirection cannot be resolved to a type)
    Ligne 112 : getBlockMetadata (The method getBlockMetadata(int, int, int) is undefined for the type World) et ForgeDirection (ForgeDirection cannot be resolved to a type)
    Ligne 118 : createTileEntity(World world, int metadata) (The method createTileEntity(World, int) of type Chaise must override or implement a supertype method)
    Ligne 124 : hasTileEntity(int metadata) (The method hasTileEntity(int) of type Chaise must override or implement a supertype method)
    Ligne 140 : @SideOnly (SideOnly cannot be resolved to a type) et Side (Side cannot be resolved to a variable)
    Ligne 143 : ProxyClient (ProxyClient cannot be resolved to a variable)

    PS : Je n'ai pas mis les erreurs dans les import

    Passons a la classe TileEntityChaise (beaucoup moins d'erreurs)

    Ligne 83 : xCoord, yCoord et zCoord ((x)(y)(z)Coord cannot be resolved or is not a field)
    Ligne 99 : Même erreurs pour xCoord, yCoord et zCoord
    Ligne 109 : func_148857_g (The method func_148857_g() is undefined for the type S35PacketUpdateTileEntity)
    Ligne 111 : Même erreurs pour xCoord, yCoord et zCoord.

    Merci beaucoup de votre aide vous etes vraiment super sympa !



  • La plupart de tes erreurs peuvent être résolues facilement, en cherchant dans la classe Block pour ta chaise par exemple, c'est juste des méthodes qui changent de noms pour la plupart.
    (exemple : setBlockName qui devient setUnlocalizedName)

    • Si tu as vraiment un problème avec une erreur après des recherches, postes ton code en intégralité c'est le minimum  😉


  • Ok merci, par exemple j'ai remplacé ForgeDirection par Direction …



  • J'ai résolu :

    • IIcon, j'ai changé en Icon
    • setBlockName par setUnlocalizedName
    • J'ai remplacé ForgeDirection par Direction
    • j'ai remplacé createTileEntity(World world, int metadata) par createTileEntity(World world, IBlockState state)
    • j'ai remplacé hasTileEntity(int metadata) par hasTileEntity(IBlockState state)

    Sinon le reste, j'y arrive pas. Merci de vos prochaines réponses



  • Pour le reste vous pouvez m aider svp



  • Pour la classe de l'entité, remplace :

    
     public Packet getDescriptionPacket()
     {
          NBTTagCompound nbttagcompound = new NBTTagCompound();
          this.writeToNBT(nbttagcompound);
          return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbttagcompound);
     }
    
     public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt)
     {
          this.readFromNBT(pkt.func_148857_g());
          this.worldObj.markBlockRangeForRenderUpdate(this.xCoord, this.yCoord, this.zCoord, this.xCoord, this.yCoord, this.zCoord);
     }
    
    }
    
    

    Par :

    
    public Packet getDescriptionPacket()
    {
         NBTTagCompound nbttagcompound = new NBTTagCompound();
         this.writeToNBT(nbttagcompound);
         return new S35PacketUpdateTileEntity(this.pos, 0, nbttagcompound);
    }
    
    public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt)
    {
         this.readFromNBT(pkt.getNBTCompound());
         this.worldObj.markBlockRangeForRenderUpdate(this.pos, this.pos);
    }
    
    }
    
    

    –----------------------------------

    Et pour cette partie :

    
    public void setDirection(byte direction)
    {
          this.direction = direction;
          this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
    }
    
    

    Essaye, en mettant :

    
    public void setDirection(byte direction)
    {
          this.direction = direction;
          this.worldObj.markBlockForUpdate(this.pos);
    }
    
    

    En espérant t'avoir aidé.



  • Merci je vais essayer mais la je peux pas, je suis en vacances ^


    Merci je vais tester cela plus tard car la je suis en canceva



  • Merci je vais tester plus tard car la je suis en vacances



  • Merci le code remplacé marche bien, pourrais tu m'aider pour la suite s'il te plait ? J'ai changé getBoudingBox par fromBounds