Pular para o conteúdo principal

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:

ModoDificuldade
DesafioFácil
DesafioMédio
DesafioDifícil
InfinitoFácil
InfinitoMédio
InfinitoDifí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

ModoCritério principalCritério de desempate
DesafioTempo de conclusão mais rápido (ordem crescente)Entradas mais novas vencem empates
InfinitoOnda 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:

CampoDescrição
playerNameO nome de exibição do Bukkit no fim da partida.
playerUUIDO UUID do jogador.
timeSecondsDuração total da partida em segundos.
killsTotal de abates de não-chefes.
levelNível final do jogador.
highestWaveOnda mais alta alcançada. Estatística principal para o modo Infinito.
gameModeCHALLENGE ou ENDLESS.
difficultyEASY, MEDIUM ou HARD.
timestampEpoch 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.