Faire des hologrammes sous Sponge
Dans ce nouveau tuto, je vais vous expliqué comment faire des hologrammes. Une petit exemple:
Une petite définition s’impose: un hologramme est une entité qui est dans notre qu’a une Armor Stand qui a un nom(c’est le but) et qu’on rend invisible. Voici l’envers du décors:
L’avantage comme vous pouvez le voir c’est qu’on peut fait des hologrammes en couleur^^, chose qu’on ne peut pas faire avec les commandes de bases.
Je vais donc vous montrer comment faire sous Sponge. Pour cela j’ai créé une méthode qui va créer notre hologramme très simplement.
La méthode prend deux paramètres qui sont:
– Une location: pour pouvoir utiliser la méthode pour diverse fonction…
– Le texte à écrire: Oui il faut bien écrire quelque chose.
Pour finir, la méthode renvoie l’UUID de l’entité créé pour pouvoir la supprimer plus tard. C’est fort utile surtout pour la modifier^^.
Il y a un seul hic dans le code!!! Je n’ai pas réussi et ça doit être pareil pour les autres pour le moment a afficher le nom ET à rendre invisible l’ARMOR_STAND. On doit donc le faire en deux étapes:
– Dans un premier temps on crée notre ARMOR_STAND avec sont nom, si elle est sensible à la gravité…
– Puis grâce à la commande entitydata et l’UUID de l’ARMOR_STAND on la rend invisible.
C’est sans doute du bricolage, mais ça fonctionne, le seul truck que j’aime pas c’est qu’en utilisant une commande de minecraft ça « spam » le chat des admin, mais ça doit être temporaire vu que Sponge n’est pas terminé.
Le code:
public static UUID spawnHologramme(Location location, Text texte) { Optional<Entity> optional = location.getExtent().createEntity(EntityTypes.ARMOR_STAND, location.getPosition()); if (optional.isPresent()) { Entity armorStand = optional.get(); armorStand.offer(Keys.DISPLAY_NAME, texte); // Le nom armorStand.offer(Keys.CUSTOM_NAME_VISIBLE, true); // On affiche le nom armorStand.offer(Keys.ARMOR_STAND_HAS_GRAVITY, false); // Pas sensible à la gravité location.getExtent().spawnEntity(armorStand, Cause.source(SpawnCause.builder().type(SpawnTypes.CUSTOM).build()).build()); // On crée ARMOR_STAND Sponge.getGame().getCommandManager().process(Sponge.getGame().getServer().getConsole(), "entitydata "+armorStand.getUniqueId()+" {Invisible:1}"); return armorStand.getUniqueId(); } return null; }
Tous les codes sont testés et sont fonctionnels, si il arrive qu'un de ces codes ne fonctionne pas chez vous, merci de me le signaler.