Pas forcement. Dans certaines situations on est sûr que le cast fonctionnera à chaque fois.
Justement avec les blocs et les tile entity. Si ton bloc à un tile entity associer, en général le tile entity qui se trouve aux coordonnées de ton bloc sera toujours celui-ci. Or la fonction getTileEntity de world renvoie un TileEntity et non TileEntityQuelqueChose qui correspond au tile entity de ton bloc. Donc cast sans check l’instance est utile et normalement sans risque.
Le cas ici présent est plus délicat car decocraft semble get les tile entity voisin (x + 1 ou - 1, z + 1 ou - 1).
Enfin, même dans le cas où on get le tile entity qui se trouve sur le bloc, j’ai déjà vu des ClassCastException alors que ce n’est pas sensé arriver (sûrement car le tile entity ne s’était pas retiré quand le bloc a été cassé et l’ajout d’un autre bloc à la place a causé l’erreur). Donc dans cette situation on n’est pas à l’abri d’un problème, c’est bien pour ça que dans les tutoriels j’utilise toujours un instanceof.
Mais il existe réellement des situations où on peut cast sans instanceof.