Résolu Entité Block
-
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.
-
Il faut envoyer l’id du bloc et le metadata.
-
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 :