Fluxo de Partida do Extractioncraft
Esta página documenta o que realmente acontece desde o momento em que uma partida é criada até o momento em que o mundo instanciado é apagado, incluindo os cronômetros, as regras de extração e a forma como os jogadores perdem seu equipamento.
Criando a Partida
/exc createMatch <contentPackage.yml> entrega o betterStructuresModulesContainerName do pacote ao BetterStructures, que gera um mundo instanciado totalmente novo de forma assíncrona. Quando a geração termina:
- Uma
ExtractionMatché criada para aquele mundo e começa no estado de espera. - O jogador que executou o comando é adicionado à partida e teleportado para um ponto de spawn escolhido aleatoriamente no novo mundo.
- Os chefes instanciados definidos pelos pools de spawn do mapa são invocados.
Qualquer pessoa que entra na partida é colocada em modo Aventura, e seu modo de jogo e localização anteriores são memorizados para poderem ser restaurados na saída.
Não há fila nem matchmaking. Uma partida existe porque alguém a criou.
Esperando por Jogadores
/exc createMatch é o único caminho de código que coloca um jogador em uma partida. O Extractioncraft não registra nenhum subcomando join e nada mais chama o método de entrada do runtime compartilhado, portanto uma partida atualmente contém exatamente um jogador: a pessoa que a criou. Tudo o que está descrito abaixo sobre entrar na partida descreve o runtime de partidas compartilhado do MagmaCore sobre o qual o Extractioncraft é construído — está configurado, mas nada chega até ele ainda.
Enquanto a partida está em espera:
- O caminho de entrada permitiria jogadores até o
maxPlayersdo pacote (8 em todos os pacotes pré-fabricados Kobold Mines), rejeitando uma instância cheia comfailedToJoinOngoingMatchAsPlayerInstanceIsFull. - Assim que a partida está ao vivo, mais ninguém pode entrar — quem chega tarde recebe
failedToJoinOngoingMatchAsPlayerMessage. - Assistir como espectador não está disponível. O Extractioncraft nunca marca suas partidas como assistíveis, então entradas de espectador são sempre rejeitadas, e as mensagens de espectador em
messaging.ymlnunca são enviadas. - Sair agora não custa nada: a regra de apagar itens só se aplica depois que a partida está ao vivo.
Iniciando
Qualquer jogador dentro da partida pode executar /exc start.
- Se houver menos jogadores do que
minPlayers, a partida se recusa a começar e todos são avisados através dematchFailedToStartNotEnoughPlayersMessage($amounté substituído pela contagem necessária). - Caso contrário, uma contagem regressiva de 3 segundos é executada, com uma atualização de título por segundo.
- Se a contagem de jogadores cair abaixo de
minPlayersdurante a contagem regressiva, a partida é abortada e termina de imediato.
No momento em que a contagem regressiva termina:
- Baús e barris são colocados por todo o mapa.
- A interação com redstone, que fica bloqueada enquanto o mapa está sendo preparado, é liberada para que as alavancas de extração possam ser usadas.
- O cronômetro de 15 minutos, a borda do mundo que encolhe e a barra de chefe da bússola começam todos juntos.
- A versão decorativa (inutilizável) de cada ponto de extração é colada no mapa.
Cronômetros
| Cronômetro | Duração | Efeito |
|---|---|---|
| Cronômetro da partida | 15 minutos | Mostrado como Timer MM:SS no placar lateral Extractioncraft, atualizado uma vez por segundo. Trava em 00:00. |
| Liberação dos pontos de extração | 1 minuto após o início | A versão utilizável de cada ponto de extração é colada, completa com sua alavanca. |
| Janela de extração | 20 segundos | Iniciada ao puxar a alavanca de um ponto de extração. |
| Abertura de recipiente | 3 segundos | Tempo que você deve ficar parado para saquear um baú ou barril. |
O cronômetro da partida não termina a partida por si só — quem termina é a borda do mundo.
A Borda do Mundo
A borda começa com 740 blocos de largura e encolhe um bloco a cada aproximadamente 24 ticks (cerca de 1,2 segundos), chegando a zero pouco antes da marca dos 15 minutos (740 passos de encolhimento a 24 ticks cada dá 14 minutos e 48 segundos).
A distância de aviso da borda é definida como a largura atual da borda menos 50 (690 blocos no início). Como o Minecraft mede a distância de aviso como "a quantos blocos da borda a tela começa a ficar tingida", um valor tão grande cobre toda a área jogável, então a sobreposição vermelha de aviso fica ligada para todo mundo durante a partida inteira, em vez de só quando você se aproxima da borda.
Como o BetterStructures escala o nível dos chefes pela distância até o centro do mapa — os níveis mais altos no meio, os mais baixos nas bordas — a borda que encolhe empurra continuamente os jogadores para a parte mais difícil e mais recompensadora do mapa.
Assim que a borda chega a zero, o dano da borda se torna letal, e dano letal remove os jogadores da partida (veja abaixo). Quando o último jogador sai, a partida termina e seu mundo é apagado.
Extraindo
- Encontre um ponto de extração. A barra de chefe no topo da tela é uma faixa de bússola: ela mostra um marcador
⦿para cada ponto de extração dentro de 90° da direção para onde você está olhando, a cerca de 3° por caractere. A barra aparece assim que a partida começa, mas fica vazia durante o primeiro minuto — os marcadores só são desenhados para os pontos de extração utilizáveis, que não são colocados até o cronômetro de liberação disparar. - Clique com o botão direito na alavanca do ponto de extração. A alavanca é consumida, todos num raio de 10 blocos recebem a mensagem "You have triggered an exit!", e uma única janela de extração de 20 segundos abre para aquele ponto.
- Fique dentro da zona de extração — um cubo que se estende 3 blocos a partir do ponto de extração em todas as direções. Enquanto você estiver dentro dela, verá
Extracting! in N seconds!. - Sair da zona mostra
Extraction cancelled!, mas a janela continua correndo. Voltar para dentro antes que ela feche ainda conta. - Quando a janela fecha, todos que estiverem dentro extraem ao mesmo tempo:
Victory / Extraction successful!. Eles são removidos da partida e mantêm tudo o que estiverem carregando.
Puxar a alavanca a destrói. Se você acionar um ponto e depois perder a janela de 20 segundos, aquele ponto de extração está gasto — procure outro.
Morte e Perda de Itens
As partidas do Extractioncraft dão a cada jogador uma única vida, e não há respawn nem baú de morte.
- Dano que mataria um jogador é cancelado por completo. Em vez disso, o jogador é removido da partida.
- Ao ser removido, sua vida é restaurada ao máximo, seu modo de jogo anterior é restaurado e ele é teleportado de volta para onde estava antes de entrar.
- Tudo no seu inventário é vinculado à alma (encantamento soulbind do EliteMobs) — e depois, se a remoção não foi uma extração bem-sucedida e
deleteItemsOnFailToExtractfortrue(o padrão), o inventário inteiro é apagado.
O mesmo caminho de remoção é usado por /exc leave, /exc quit e por desconexões, então os três fazem você perder o saque em uma partida ao vivo.
| Como você saiu | Mantém o saque? |
|---|---|
| Extraiu em um ponto de extração | Sim |
| Morto por um mob, por um jogador ou pela borda | Não (com a configuração padrão) |
/exc leave ou /exc quit no meio da partida | Não (com a configuração padrão) |
| Desconectou no meio da partida | Não (com a configuração padrão) |
| Saiu enquanto a partida ainda estava em espera ou em contagem regressiva | Sim |
Proteções do Mundo
O mundo instanciado da partida fica protegido durante toda a sua existência:
- Os jogadores não podem quebrar ou colocar blocos, usar farinha de osso, nem danificar o terreno.
- A interação com redstone fica bloqueada até a partida começar.
- O PvP é bloqueado quando o pacote de conteúdo define
pvpEnabled: false. - Teleportes para dentro ou para fora do mundo da partida são cancelados. Só os teleportes do próprio plugin passam.
- Enquanto a partida está ao vivo, o runtime procura por intrusos no mundo da partida. Operadores estão isentos e recebem um aviso na barra de ação em vez de serem removidos. Note que a remoção em si só funciona com jogadores para os quais o servidor ainda tem um registro de jogador de partida (qualquer um que tenha estado em uma partida desde o último reinício); um jogador que nunca esteve em uma partida é detectado, mas não é de fato movido.
- Um watchdog também verifica jogadores que saíram da região da partida, mas ele tenta colocá-los de volta na localização inicial da instância, que o Extractioncraft nunca define — então essa rede de segurança em particular não funciona atualmente. Na prática, os teleportes para fora do mundo da partida já são cancelados por completo.
Os admins podem desativar essas proteções para si mesmos com /exc protection bypass.
Encerrando a Partida
Uma partida termina quando o último jogador é removido dela — tendo ele extraído, morrido, saído ou desconectado. Encerrar a partida apaga permanentemente o mundo instanciado, então nada que tenha ficado para trás nele sobrevive.
As partidas também são desmontadas quando o plugin é desativado, o que inclui /exc reload e o desligamento do servidor.