Aller au contenu principal

Déguisements des joueurs

FreeMinecraftModels peut déguiser tout joueur en ligne en un modèle chargé. Les déguisements sont pilotés par des commandes, une DisguiseAPI publique et un PlayerDisguiseEntity par joueur qui gère l'invisibilité et le rendu du modèle pour le joueur déguisé.

Commandes

CommandePermissionNotes
/fmm disguise <modelID>freeminecraftmodels.disguise.selfDéguise l'expéditeur. Réservé aux joueurs
/fmm disguise <modelID> <player>freeminecraftmodels.disguise.othersDéguise le joueur nommé. Fonctionne depuis la console
/fmm undisguisefreeminecraftmodels.disguise.selfRetire le déguisement de l'expéditeur. Réservé aux joueurs
/fmm undisguise <player>freeminecraftmodels.disguise.othersRetire le déguisement du joueur nommé. Fonctionne depuis la console
/fmm disguiselistfreeminecraftmodels.disguise.othersListe tous les joueurs déguisés et le modèle dont chacun est déguisé

Le wildcard freeminecraftmodels.* accorde les trois permissions (admin, disguise.self, disguise.others) avec la valeur OP par défaut.

Comportement

  • Déguiser un joueur déjà déguisé remplace proprement le déguisement précédent — pas besoin de dé-déguiser d'abord.
  • Le joueur déguisé est rendu invisible aux autres joueurs afin que seul le modèle soit visible. Le joueur déguisé continue de se voir normalement.
  • L'invisibilité persiste à travers les seaux de lait, les effets de balise et autres interactions qui supprimeraient normalement l'effet.
  • La hitbox du joueur est inchangée. Le ciblage des mobs, la collision et le PvP fonctionnent tous comme d'habitude.
  • Les déguisements ne survivent pas à un redémarrage de serveur. Ils sont suivis uniquement en mémoire.
  • Lors de /fmm reload, tous les déguisements actifs sont démontés dans le cadre de l'arrêt du plugin. Les joueurs doivent être re-déguisés après un reload.

Clients Bedrock

Les déguisements dépendent du rendu du modèle personnalisé par FMM. Pour rendre les déguisements visibles aux joueurs Bedrock, vous devez définir sendCustomModelsToBedrockClients: true dans config.yml et avoir une chaîne de resource pack compatible Bedrock (Floodgate + Geyser + resource pack converti). Si cela n'est pas configuré, les joueurs Bedrock ne verront ni le modèle ni le joueur invisible sous-jacent — concrètement, ils ne verront rien là où le joueur déguisé se tient.

DisguiseAPI

Les plugins tiers peuvent piloter les déguisements programmatiquement via com.magmaguy.freeminecraftmodels.api.DisguiseAPI.

import com.magmaguy.freeminecraftmodels.api.DisguiseAPI;

// Déguiser (retourne false si l'ID de modèle n'est pas chargé)
boolean ok = DisguiseAPI.disguise(player, "dragon");

// Dé-déguiser (retourne true si un déguisement a été retiré)
DisguiseAPI.undisguise(player);

// Requêtes
boolean isDisguised = DisguiseAPI.isDisguised(player);
String modelID = DisguiseAPI.getDisguiseModelID(player); // null si non déguisé

// Snapshot non modifiable de tous les joueurs déguisés
Collection<Player> all = DisguiseAPI.getDisguisedPlayers();

L'API est le point d'entrée public, sûr face aux refactorisations. Les plugins devraient appeler DisguiseAPI plutôt que le DisguiseManager interne.

Cas d'utilisation courants

  • Serveurs roleplay et RPG : déguisez les joueurs en modèles de boss pour les cinématiques ou scripts de quête.
  • Hébergement d'événements : déguisez un annonceur en modèle personnalisé géant.
  • Montures et véhicules : combinez /fmm mount avec /fmm disguise pour des configurations de transport créatives.
  • Intégration EliteMobs : les scripts de boss peuvent déguiser le joueur qui a déclenché un événement pour un effet de transformation temporaire.

Dépannage

Rien ne se passe quand j'exécute /fmm disguise dragon. L'ID de modèle doit correspondre exactement à un modèle chargé. Vérifiez /fmm admin ou /fmm stats pour vérifier le nom du modèle. Si l'expéditeur n'a pas freeminecraftmodels.disguise.others, FMM retourne intentionnellement un message générique « invalid entity ID » même lorsque le modèle existe — c'est pour éviter de divulguer la liste des IDs de modèle chargés aux joueurs non autorisés.

Mon déguisement a disparu après /fmm reload. Attendu. Tous les déguisements sont démontés lors d'un reload. Écoutez FmmReloadedEvent si vous avez besoin de réappliquer les déguisements automatiquement.

Les joueurs Bedrock ne peuvent pas voir le déguisement. Voir Clients Bedrock ci-dessus.

Le joueur déguisé est toujours visible aux autres. L'invisibilité est appliquée comme un effet au niveau paquet. Si un autre plugin retire de force l'invisibilité à chaque tick (certains plugins anti-cheat le font), il peut entrer en conflit avec la réapplication de FMM. Whitelistez FMM ou désactivez la vérification conflictuelle.