Possible ou pas ?



  • Bonjour à tous, voila j'aimerais savoir si déjà c'est possible :

    j'aimerais faire le système de colorisation des rayons des beacon en fonction du verre situé sur le rayon.

    je sais que cela existe en 1.8 mais j'aimerais savoir si c'est possible en 1.7.10.

    merci de votre réponse.

    cordialement,
    Sventus


  • Correcteurs

    Eh beh il faudrait que tu regardes dans les sources de la 1.8 justement.


  • Administrateurs

    Salut,
    Oui c'est possible, par contre tu risques de devoir faire un beacon custom. Sauf s'il y a moyen de retirer le TesrRenderer et le remplacer par un autre.



  • Au pire si y'a pas moyen de remplacer la tesr du beacon par un custom, tu utilises l'event de block placé, et lorsqu'il s'agit de beacon tu cancel l'event et place ton beacon custom (celui avec le bon tesr) à la place.



  • ok merci, je vais voir tout ça du coup 🙂



  • En fait je suis allé trop vite lorsque je t'ai répondu, il n'y a pas d'event lorsqu'un block est posé.
    Du coup tu devrais dans un tick handler (côté serveur) check à l'aide de Chunk.chunkTileEntityMap toutes les TileEntity qui instanceof TileEntityBeacon. Pour ce faire tu fais une boucle for qui parcours la HashMap et à chaque tour tu fais ta condition et si elle est vérifiée, tu get les coords de ta tile entity, de manière à avoir une instance du BlockBeacon avec cette méthode World.getBlock(int x, int y, int z). Une fois que as l'instance, tu appelles breakBlock pour qu'il soit retiré du monde, et ensuite tu places aux mêmes coordonnées ton nouveau block beacon, ayant une nouvelle TileEntity et une nouvelle TESR 😃
    Pose des questions si tu ne comprends pas.



  • Il existe bien un event lancé lors de la pose d'un bloc, il se trouve dans la classe net.minecraftforge.event.world.BlockEvent et il s'agit de la sous classe PlaceEvent donc:

    @SubscribeEvent
    public void onPlaceBlock(BlockEvent.PlaceEvent event)
    {
    
    }