Controle de Servidores
Guia técnico para administradores de rede e desenvolvedores integrarem e gerenciarem os recursos do Fear Client usando o protocolo de mensagens de plugin (Plugin Messaging).
Respeitando as Regras do Servidor
O Fear Client foi desenvolvido com o compromisso fundamental de respeitar a autoridade dos servidores. Embora muitos recursos melhorem a experiência em jogo individual ou em servidores permitidos, certos módulos (como câmera em terceira pessoa de 360°, aumento artificial de brilho ou impressão de schematics) podem violar o regulamento de redes competitivas ou modos de jogo específicos.
Para evitar banimentos injustos e garantir conformidade total, o Fear Client implementa canais padrão
de mensagens de plugin do Minecraft (fearclient:disable). Quando seu servidor envia um
pacote de desativação na entrada do jogador, o Fear Client desativa imediatamente o recurso
correspondente durante toda a sessão.
Como Funciona o Plugin Messaging
O protocolo de mensagens de plugin (Plugin Messaging) é um padrão nativo da rede do Minecraft. Ele
permite que clientes e servidores troquem mensagens personalizadas através de canais nomeados (como
fearclient:disable) sem exigir nenhuma modificação no protocolo básico.
Tabela de Canais e Cargas (Payloads)
| Recurso | Canal | Direção | Payload UTF-8 | Efeito |
|---|---|---|---|---|
| Modo Espectador | fearclient:disable |
Servidor → Cliente | spectate |
Bloqueia o modo espectador / freecam no cliente |
| Câmera Livre (Freelook) | fearclient:disable |
Servidor → Cliente | freelook |
Bloqueia a câmera orbital 360° em terceira pessoa |
| FullBright | fearclient:disable |
Servidor → Cliente | fullbright |
Força o cálculo de iluminação padrão do jogo |
| Fast Builder | fearclient:disable |
Servidor → Cliente | fastbuilder |
Bloqueia a colocação automática de schematics |
Desativando o Modo Espectador
O modo espectador permite que jogadores desacoplem a câmera do corpo para visualizar o ambiente. Para
desativar esse recurso no seu servidor em cada conexão de jogador, envie a carga
spectate no canal fearclient:disable.
Bukkit / Spigot / Paper / Purpur
@Override
public void onEnable () {
getServer().getMessenger ().registerOutgoingPluginChannel (this , "fearclient:disable" );
getServer().getPluginManager ().registerEvents (new Listener () {
@EventHandler
public void onJoin (PlayerJoinEvent e) {
byte [] payload = "spectate" .getBytes (StandardCharsets .UTF_8);
e.getPlayer ().sendPluginMessage (plugin, "fearclient:disable" , payload);
}
}, this );
}
Velocity
@Subscribe
public void onPostLogin (PostLoginEvent event) {
ChannelIdentifier channel = MinecraftChannelIdentifier .from ("fearclient:disable" );
server.getChannelRegistrar ().register (channel);
byte [] payload = "spectate" .getBytes (StandardCharsets .UTF_8);
event.getPlayer ().sendPluginMessage (channel, payload);
}
BungeeCord / Waterfall
@Override
public void onEnable () {
getProxy().registerChannel ("fearclient:disable" );
getProxy().getPluginManager ().registerListener (this , new Listener () {
@EventHandler
public void onJoin (PostLoginEvent e) {
byte [] payload = "spectate" .getBytes (StandardCharsets .UTF_8);
e.getPlayer ().sendData ("fearclient:disable" , payload);
}
});
}
Fabric (mod no lado do servidor)
Identifier channel = Identifier .of ("fearclient" , "disable" );
PayloadTypeRegistry .playS2C().register (channel, ...);
// No evento de entrada do jogador:
ServerPlayNetworking .send (player, new CustomPayload ("spectate" ));
Desativando o Freelook no Seu Servidor
Se o seu servidor deseja impedir que jogadores usem Freelook (câmera orbital em terceira pessoa), você pode desativá-lo no lado do servidor na entrada do jogador. O mecanismo é idêntico ao controle de Espectador: uma mensagem de plugin leve enviada uma vez na entrada.
Bukkit / Spigot / Paper / Purpur
@Override
public void onEnable () {
getServer().getMessenger ().registerOutgoingPluginChannel (this , "fearclient:disable" );
getServer().getPluginManager ().registerEvents (new Listener () {
@EventHandler
public void onJoin (PlayerJoinEvent e) {
byte [] payload = "freelook" .getBytes (StandardCharsets .UTF_8);
e.getPlayer ().sendPluginMessage (plugin, "fearclient:disable" , payload);
}
}, this );
}
Velocity
@Subscribe
public void onPostLogin (PostLoginEvent event) {
ChannelIdentifier channel = MinecraftChannelIdentifier .from ("fearclient:disable" );
server.getChannelRegistrar ().register (channel);
byte [] payload = "freelook" .getBytes (StandardCharsets .UTF_8);
event.getPlayer ().sendPluginMessage (channel, payload);
}
BungeeCord
@Override
public void onEnable () {
getProxy().registerChannel ("fearclient:disable" );
getProxy().getPluginManager ().registerListener (this , new Listener () {
@EventHandler
public void onJoin (PostLoginEvent e) {
byte [] payload = "freelook" .getBytes (StandardCharsets .UTF_8);
e.getPlayer ().sendData ("fearclient:disable" , payload);
}
});
}
Detalhes do canal
| Propriedade | Valor |
|---|---|
| canal | fearclient:disable |
| direção | Servidor → Cliente (apenas S2C) |
| payload | String UTF-8: "freelook" |
| momento de envio | Na entrada do jogador |
| persistência | Apenas na sessão, reseta ao desconectar |
| seguro para enviar a todos | Sim, clientes vanilla ignoram silenciosamente |
fearclient:disable é unificado: envie "spectate",
"freelook" ou "fullbright" como pacotes separados no mesmo canal para
desativar múltiplos recursos simultaneamente.
Desativando o FullBright no Seu Servidor
O FullBright contorna o motor de iluminação do Minecraft para que o jogador veja sempre com brilho máximo. Se o seu servidor possui jogabilidade dependente de escuridão (mapas de terror, exploração de cavernas, etc.), você pode desativá-lo no lado do servidor na entrada.
Bukkit / Spigot / Paper / Purpur
@Override
public void onEnable () {
getServer().getMessenger ().registerOutgoingPluginChannel (this , "fearclient:disable" );
getServer().getPluginManager ().registerEvents (new Listener () {
@EventHandler
public void onJoin (PlayerJoinEvent e) {
byte [] payload = "fullbright" .getBytes (StandardCharsets .UTF_8);
e.getPlayer ().sendPluginMessage (plugin, "fearclient:disable" , payload);
}
}, this );
}
Velocity
@Subscribe
public void onPostLogin (PostLoginEvent event) {
ChannelIdentifier channel = MinecraftChannelIdentifier .from ("fearclient:disable" );
server.getChannelRegistrar ().register (channel);
byte [] payload = "fullbright" .getBytes (StandardCharsets .UTF_8);
event.getPlayer ().sendPluginMessage (channel, payload);
}
Detalhes do canal
| Propriedade | Valor |
|---|---|
| canal | fearclient:disable |
| direção | Servidor → Cliente (apenas S2C) |
| payload | String UTF-8: "fullbright" |
| momento de envio | Na entrada do jogador |
| persistência | Apenas na sessão, reseta ao desconectar |
| seguro para enviar a todos | Sim, clientes vanilla ignoram silenciosamente |
fearclient:disable é unificado: você pode enviar "spectate",
"freelook", "fullbright" e "fastbuilder" como pacotes
separados no mesmo canal para desativar múltiplos recursos simultaneamente.
Desativando o Fast Builder no Seu Servidor
O Fast Builder (impressor de schematics) permite que jogadores coloquem blocos automaticamente a partir de um schematic carregado em alta velocidade. Se o seu servidor proíbe a colocação automatizada de blocos ou assistência de construção, você pode desativá-lo no lado do servidor na entrada.
Bukkit / Spigot / Paper / Purpur
@Override
public void onEnable () {
getServer().getMessenger ().registerOutgoingPluginChannel (this , "fearclient:disable" );
getServer().getPluginManager ().registerEvents (new Listener () {
@EventHandler
public void onJoin (PlayerJoinEvent e) {
byte [] payload = "fastbuilder" .getBytes (StandardCharsets .UTF_8);
e.getPlayer ().sendPluginMessage (plugin, "fearclient:disable" , payload);
}
}, this );
}
Velocity
@Subscribe
public void onPostLogin (PostLoginEvent event) {
ChannelIdentifier channel = MinecraftChannelIdentifier .from ("fearclient:disable" );
server.getChannelRegistrar ().register (channel);
byte [] payload = "fastbuilder" .getBytes (StandardCharsets .UTF_8);
event.getPlayer ().sendPluginMessage (channel, payload);
}
Detalhes do canal
| Propriedade | Valor |
|---|---|
| canal | fearclient:disable |
| direção | Servidor → Cliente (apenas S2C) |
| payload | String UTF-8: "fastbuilder" |
| momento de envio | Na entrada do jogador |
| persistência | Apenas na sessão, reseta ao desconectar |
| seguro para enviar a todos | Sim, clientes vanilla ignoram silenciosamente |
fearclient:disable é unificado: você pode enviar "spectate",
"freelook", "fullbright" e "fastbuilder" como pacotes
separados no mesmo canal para desativar múltiplos recursos simultaneamente.