Pular para o conteúdo principal

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

ComandoPermissãoNotas
/fmm disguise <modelID>freeminecraftmodels.disguise.selfDisfarça o remetente. Somente jogador
/fmm disguise <modelID> <player>freeminecraftmodels.disguise.othersDisfarça o jogador nomeado. Funciona pelo console
/fmm undisguisefreeminecraftmodels.disguise.selfRemove o disfarce do remetente. Somente jogador
/fmm undisguise <player>freeminecraftmodels.disguise.othersRemove o disfarce do jogador nomeado. Funciona pelo console
/fmm disguiselistfreeminecraftmodels.disguise.othersLista 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 mount com /fmm disguise para 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.