Visão Geral

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.

Todos os pacotes de desativação são recebidos silenciosamente pelo cliente. Se um jogador usar o cliente vanilla ou outro launcher, o pacote é simplesmente descartado sem erros.

Arquitetura

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
Você pode enviar múltiplos comandos de desativação na mesma conexão caso deseje restringir vários recursos simultaneamente.

Controle de Espectador

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

Java, plugin Bukkit
@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

Java, plugin 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

Java, plugin BungeeCord
@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)

Java, mod de servidor Fabric
Identifier channel = Identifier.of("fearclient", "disable");
PayloadTypeRegistry.playS2C().register(channel, ...);

// No evento de entrada do jogador:
ServerPlayNetworking.send(player, new CustomPayload("spectate"));
As mensagens de plugin fazem parte do protocolo básico do Minecraft e não são exclusivas do Bukkit. Qualquer software de servidor que implemente o protocolo do Minecraft pode enviar mensagens de plugin.

Controle de Freelook

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.

O Freelook possui escopo de sessão. Ele é reativado automaticamente quando o jogador se desconecta e reconecta. Envie o pacote de desativação a cada conexão de jogador.

Bukkit / Spigot / Paper / Purpur

Java, plugin Bukkit
@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

Java, plugin 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

Java, plugin 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
O canal fearclient:disable é unificado: envie "spectate", "freelook" ou "fullbright" como pacotes separados no mesmo canal para desativar múltiplos recursos simultaneamente.

Controle de FullBright

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.

O FullBright possui escopo de sessão. Ele é reativado automaticamente quando o jogador se desconecta e reconecta. Envie o pacote de desativação a cada conexão de jogador.

Bukkit / Spigot / Paper / Purpur

Java, plugin Bukkit
@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

Java, plugin 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
O canal fearclient:disable é unificado: você pode enviar "spectate", "freelook", "fullbright" e "fastbuilder" como pacotes separados no mesmo canal para desativar múltiplos recursos simultaneamente.

Controle de Fast Builder

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.

O Fast Builder possui escopo de sessão. Ele é reativado automaticamente quando o jogador se desconecta e reconecta. Envie o pacote de desativação a cada conexão de jogador.

Bukkit / Spigot / Paper / Purpur

Java, plugin Bukkit
@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

Java, plugin 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
O canal fearclient:disable é unificado: você pode enviar "spectate", "freelook", "fullbright" e "fastbuilder" como pacotes separados no mesmo canal para desativar múltiplos recursos simultaneamente.