Disfarces de Jogadores
O FreeMinecraftModels pode disfarçar qualquer jogador online como um modelo carregado. Disfarces são controlados por comandos, uma DisguiseAPI pública e uma PlayerDisguiseEntity por jogador que cuida da invisibilidade e renderização do modelo para o jogador disfarçado.
Comandos
| Comando | Permissão | Notas |
|---|---|---|
/fmm disguise <modelID> | freeminecraftmodels.disguise.self | Disfarça o remetente. Somente jogador |
/fmm disguise <modelID> <player> | freeminecraftmodels.disguise.others | Disfarça o jogador nomeado. Funciona pelo console |
/fmm undisguise | freeminecraftmodels.disguise.self | Remove o disfarce do remetente. Somente jogador |
/fmm undisguise <player> | freeminecraftmodels.disguise.others | Remove o disfarce do jogador nomeado. Funciona pelo console |
/fmm disguiselist | freeminecraftmodels.disguise.others | Lista todos os jogadores disfarçados e o modelo de cada |
O wildcard freeminecraftmodels.* concede todas as três permissões (admin, disguise.self, disguise.others) com padrão OP.
Comportamento
- Disfarçar um jogador que já está disfarçado substitui o disfarce anterior de forma limpa — não é preciso retirar o disfarce primeiro.
- O jogador disfarçado fica invisível para outros jogadores, de forma que apenas o modelo seja visível. O jogador disfarçado continua se vendo normalmente.
- A invisibilidade persiste através de baldes de leite, limpezas de efeito por beacon e outras interações que normalmente removeriam o efeito.
- A hitbox do jogador não muda. Targeting de mobs, colisão e PvP funcionam normalmente.
- Disfarces não sobrevivem a uma reinicialização do servidor. Eles são rastreados apenas em memória.
- Em
/fmm reload, todos os disfarces ativos são derrubados como parte do desligamento do plugin. Jogadores precisam ser redisfarçados após um reload.
Clientes Bedrock
Disfarces dependem do FMM renderizar o modelo customizado. Para tornar disfarces visíveis para jogadores Bedrock você deve definir sendCustomModelsToBedrockClients: true em config.yml e ter um pipeline de resource pack compatível com Bedrock (Floodgate + Geyser + resource pack convertido). Se isso não estiver configurado, jogadores Bedrock não verão nem o modelo nem o jogador invisível subjacente — efetivamente, eles veem nada onde o jogador disfarçado está.
DisguiseAPI
Plugins de terceiros podem controlar disfarces programaticamente via com.magmaguy.freeminecraftmodels.api.DisguiseAPI.
import com.magmaguy.freeminecraftmodels.api.DisguiseAPI;
// Disfarça (retorna false se o ID do modelo não estiver carregado)
boolean ok = DisguiseAPI.disguise(player, "dragon");
// Retira o disfarce (retorna true se um disfarce foi removido)
DisguiseAPI.undisguise(player);
// Consultas
boolean isDisguised = DisguiseAPI.isDisguised(player);
String modelID = DisguiseAPI.getDisguiseModelID(player); // null se não estiver disfarçado
// Snapshot imutável de todos os jogadores disfarçados
Collection<Player> all = DisguiseAPI.getDisguisedPlayers();
A API é o ponto de entrada público e seguro para refatorações. Plugins devem chamar DisguiseAPI em vez do DisguiseManager interno.
Casos de Uso Comuns
- Servidores de roleplay e RPG: disfarce jogadores como modelos de chefes para cinemáticas ou scripts de quest.
- Hospedagem de eventos: disfarce um anunciante como um modelo customizado gigante.
- Montarias e veículos: combine
/fmm mountcom/fmm disguisepara setups criativos de transporte. - Integração com EliteMobs: scripts de chefe podem disfarçar o jogador que disparou um evento para um efeito de transformação temporária.
Solução de Problemas
Nada acontece quando rodo /fmm disguise dragon.
O ID do modelo deve corresponder a um modelo carregado exatamente. Verifique /fmm admin ou /fmm stats para conferir o nome do modelo. Se o remetente não tem freeminecraftmodels.disguise.others, o FMM intencionalmente retorna uma mensagem genérica de "ID de entidade inválido" mesmo quando o modelo existe — isso é para evitar vazar a lista de IDs de modelo carregados a jogadores não autorizados.
Meu disfarce sumiu após /fmm reload.
Esperado. Todos os disfarces são derrubados em reload. Escute FmmReloadedEvent se você precisa reaplicar disfarces automaticamente.
Jogadores Bedrock não conseguem ver o disfarce. Veja Clientes Bedrock acima.
O jogador disfarçado ainda está visível para os outros. A invisibilidade é aplicada como efeito em nível de pacote. Se outro plugin está forçando a remoção da invisibilidade a cada tick (alguns plugins anticheat fazem isso), ele pode brigar com a reaplicação do FMM. Coloque o FMM em whitelist ou desabilite a verificação conflitante.