Placar do MegaBlock Survivors
O MegaBlock Survivors registra cada partida concluída sem trapaça em um placar persistente armazenado em plugins/MegaBlockSurvivors/leaderboard.yml. Partidas com trapaça (qualquer partida em que /mbs cheat tenha sido usado) são explicitamente excluídas.
Categorias
Cada entrada carrega uma tag de modo de jogo e uma de dificuldade, então o placar é dividido em 6 categorias independentes:
| Modo | Dificuldade |
|---|---|
| Desafio | Fácil |
| Desafio | Médio |
| Desafio | Difícil |
| Infinito | Fácil |
| Infinito | Médio |
| Infinito | Difícil |
As categorias são classificadas de forma independente, e cada uma comporta até 100 entradas em disco. As 10 primeiras são mostradas aos jogadores.
Regras de Classificação
| Modo | Critério principal | Critério de desempate |
|---|---|---|
| Desafio | Tempo de conclusão mais rápido (ordem crescente) | Entradas mais novas vencem empates |
| Infinito | Onda mais alta alcançada (ordem decrescente) | Tempo sobrevivido (mais longo vence), depois timestamp |
Essa divisão faz sentido porque o modo Desafio tem um ponto final fixo (o chefe final), então "conclusão mais rápida" é a métrica de habilidade óbvia. O modo Infinito não tem fim, então "onda mais alta alcançada" é a medida significativa.
Holograma no Mundo
Um único holograma TextDisplay é gerado no mundo de lobby mbs_spawn (em coordenadas mundiais ~4.5, 67, -14.5). O holograma é ancorado pela base -- a borda inferior do texto sempre fica na coordenada Y de âncora, então adicionar novas seções faz a exibição crescer para cima em vez de para baixo, atravessando o chão.
O holograma renderiza até seis seções (Desafio x {Fácil, Médio, Difícil}, seguidas de Infinito x {Fácil, Médio, Difícil}). Seções com zero entradas são silenciosamente puladas, então um servidor novo não exibe seis categorias vazias. Se todas as categorias estiverem vazias, uma única linha "no highscores yet" é exibida no lugar.
O holograma é re-gerado automaticamente:
- Ao habilitar / recarregar o plugin.
- Após cada nova entrada de placar ser registrada.
- Quando o chunk de âncora em
mbs_spawné recarregado (o Paper remove entidades de display não-persistentes ao descarregar chunks, então o listener re-gera o holograma toda vez que o chunk do lobby retorna).
Se mbs_spawn não existir em disco, o holograma é silenciosamente pulado e um WARN é registrado.
Exibição por Partida no Chat
Quando uma partida sem trapaça termina, o jogador vê as 10 melhores entradas da categoria daquela partida em um bloco de chat. A linha do próprio jogador é destacada (> #N). Se o rank do jogador estiver fora do top 10, uma linha de reticências é exibida, seguida da linha de rank real.
Vitórias com trapaça mostram um aviso "Leaderboard not updated (cheating detected)" no lugar.
Esquema da Entrada
Cada entrada acompanha:
| Campo | Descrição |
|---|---|
playerName | O nome de exibição do Bukkit no fim da partida. |
playerUUID | O UUID do jogador. |
timeSeconds | Duração total da partida em segundos. |
kills | Total de abates de não-chefes. |
level | Nível final do jogador. |
highestWave | Onda mais alta alcançada. Estatística principal para o modo Infinito. |
gameMode | CHALLENGE ou ENDLESS. |
difficulty | EASY, MEDIUM ou HARD. |
timestamp | Epoch em milissegundos de quando a partida terminou. |
Entradas legadas anteriores a essa divisão são automaticamente marcadas com Challenge / Medium na leitura, então placares antigos continuam sendo renderizados.
Limpando o Placar
Não há comando dentro do jogo para apagar o placar. Para resetar, pare o servidor e exclua plugins/MegaBlockSurvivors/leaderboard.yml.