Disfraces de Jugador
FreeMinecraftModels puede disfrazar a cualquier jugador conectado como un modelo cargado. Los disfraces se controlan mediante comandos, una DisguiseAPI pública y una PlayerDisguiseEntity por jugador que gestiona la invisibilidad y el renderizado del modelo para el jugador disfrazado.
Comandos
| Comando | Permiso | Notas |
|---|---|---|
/fmm disguise <modelID> | freeminecraftmodels.disguise.self | Disfraza al emisor. Solo para jugadores |
/fmm disguise <modelID> <player> | freeminecraftmodels.disguise.others | Disfraza al jugador indicado. Funciona desde consola |
/fmm undisguise | freeminecraftmodels.disguise.self | Elimina el disfraz del emisor. Solo para jugadores |
/fmm undisguise <player> | freeminecraftmodels.disguise.others | Elimina el disfraz del jugador indicado. Funciona desde consola |
/fmm disguiselist | freeminecraftmodels.disguise.others | Lista todos los jugadores disfrazados y el modelo bajo el que está disfrazado cada uno |
El comodín freeminecraftmodels.* otorga los tres permisos (admin, disguise.self, disguise.others) con valor predeterminado OP.
Comportamiento
- Disfrazar a un jugador que ya está disfrazado reemplaza limpiamente el disfraz previo — no es necesario quitarlo antes.
- El jugador disfrazado se vuelve invisible para los demás jugadores de modo que solo se ve el modelo. El jugador disfrazado se sigue viendo a sí mismo normalmente.
- La invisibilidad persiste a través de cubos de leche, clears de efectos por baliza y otras interacciones que normalmente eliminarían el efecto.
- La hitbox del jugador no cambia. El targeting de mobs, la colisión y el PvP funcionan como siempre.
- Los disfraces no sobreviven a un reinicio del servidor. Se rastrean solo en memoria.
- Con
/fmm reload, todos los disfraces activos se derriban como parte del shutdown del plugin. Los jugadores deben volver a disfrazarse tras una recarga.
Clientes Bedrock
Los disfraces dependen de que FMM renderice el modelo personalizado. Para hacer los disfraces visibles a los jugadores Bedrock debes establecer sendCustomModelsToBedrockClients: true en config.yml y tener una cadena de resource pack compatible con Bedrock (Floodgate + Geyser + resource pack convertido). Si eso no está configurado, los jugadores Bedrock no verán ni el modelo ni al jugador invisible subyacente — efectivamente, no verán nada donde está el jugador disfrazado.
DisguiseAPI
Los plugins de terceros pueden controlar disfraces programáticamente a través de com.magmaguy.freeminecraftmodels.api.DisguiseAPI.
import com.magmaguy.freeminecraftmodels.api.DisguiseAPI;
// Disfrazar (devuelve false si el ID del modelo no está cargado)
boolean ok = DisguiseAPI.disguise(player, "dragon");
// Quitar el disfraz (devuelve true si se eliminó un disfraz)
DisguiseAPI.undisguise(player);
// Consultas
boolean isDisguised = DisguiseAPI.isDisguised(player);
String modelID = DisguiseAPI.getDisguiseModelID(player); // null si no está disfrazado
// Snapshot inmutable de todos los jugadores disfrazados
Collection<Player> all = DisguiseAPI.getDisguisedPlayers();
La API es el punto de entrada público y seguro frente a refactorizaciones. Los plugins deben llamar a DisguiseAPI en lugar del DisguiseManager interno.
Casos de Uso Comunes
- Servidores de rol y RPG: disfrazar jugadores como modelos de jefes para cinemáticas o scripts de misiones.
- Hosting de eventos: disfrazar a un anunciador como un modelo personalizado gigante.
- Monturas y vehículos: combinar
/fmm mountcon/fmm disguisepara configuraciones creativas de transporte. - Integración con EliteMobs: los scripts de jefe pueden disfrazar al jugador que desencadenó un evento para un efecto temporal de transformación.
Solución de Problemas
No pasa nada cuando ejecuto /fmm disguise dragon.
El ID del modelo debe coincidir exactamente con un modelo cargado. Verifica /fmm admin o /fmm stats para confirmar el nombre del modelo. Si el emisor carece de freeminecraftmodels.disguise.others, FMM devuelve intencionalmente un mensaje genérico de "ID de entidad inválido" incluso cuando el modelo existe — esto es para evitar filtrar la lista de IDs de modelos cargados a jugadores no autorizados.
Mi disfraz desapareció después de /fmm reload.
Esperado. Todos los disfraces se derriban en la recarga. Escucha FmmReloadedEvent si necesitas reaplicar los disfraces automáticamente.
Los jugadores Bedrock no pueden ver el disfraz. Consulta Clientes Bedrock más arriba.
El jugador disfrazado sigue siendo visible para los demás. La invisibilidad se aplica como un efecto a nivel de paquete. Si otro plugin está eliminando la invisibilidad de forma forzada cada tick (algunos plugins anti-cheat hacen esto), puede entrar en conflicto con la reaplicación de FMM. Pon a FMM en lista blanca o deshabilita la comprobación conflictiva.