Problème de block update
-
Bonjour.
J’avais il y a peu ouvert un topic à propos de textures dynamiques. Je reviens sur le sujet : j’ai fait ce code dans le BlockAtomizationChamber :
@SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iiconRegister) { this.blockIcon = iiconRegister.registerIcon(VirtualCraft.MODID + ":topmultiblock"); this.on = iiconRegister.registerIcon(VirtualCraft.MODID + ":atomizationchamber"); this.onU = iiconRegister.registerIcon(VirtualCraft.MODID + ":atomizationchamberU"); this.onD = iiconRegister.registerIcon(VirtualCraft.MODID + ":atomizationchamberD"); this.onB = iiconRegister.registerIcon(VirtualCraft.MODID + ":atomizationchamberB"); this.off = iiconRegister.registerIcon(VirtualCraft.MODID + ":atomizationchamberoff"); this.offU = iiconRegister.registerIcon(VirtualCraft.MODID + ":atomizationchamberoffU"); this.offD = iiconRegister.registerIcon(VirtualCraft.MODID + ":atomizationchamberoffD"); this.offB = iiconRegister.registerIcon(VirtualCraft.MODID + ":atomizationchamberoffB"); } @SideOnly(Side.CLIENT) public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { if (world.getBlockMetadata(x, y, z) == 0) { if (side == 1 || side == 0) return this.blockIcon; TileEntity teTemp = world.getTileEntity(x, y, z); TileEntity teD = world.getTileEntity(x, y - 1, z); TileEntity teU = world.getTileEntity(x, y + 1, z); if (teTemp instanceof TileEntityAtomizationChamber) { TileEntityAtomizationChamber te = (TileEntityAtomizationChamber) teTemp; if (te.getWorking() == true) { if ((teD instanceof TileEntityMultiblock) && (teU instanceof TileEntityMultiblock)) return this.onB; else if (teD instanceof TileEntityMultiblock) return this.onD; else if (teU instanceof TileEntityMultiblock) return this.onU; return this.on; } } if ((teD instanceof TileEntityMultiblock) && (teU instanceof TileEntityMultiblock)) return this.offB; else if (teD instanceof TileEntityMultiblock) return this.offD; else if (teU instanceof TileEntityMultiblock) return this.offU; return this.off; } return this.getIcon(side, world.getBlockMetadata(x, y, z)); } @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { if (side == 1 || side == 0) return this.blockIcon; return this.on; }
et sous certaines conditions, TileEntityAtomizationChamber exécute :
this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
Pourtant, même lorsque cette fonction est exécutée, les textures ne se mettent pas à jour. En revanche, en mettant à jour un voisin manuellement en jeu, les textures se rafraîchissent. Une idée de pourquoi ?
Merci d’avance !
-
http://www.minecraftforgefrance.fr/showthread.php?tid=1304#partie3-2
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); }