LogoyStore
yGuerraAddons

yGuerraDuelsAddon

Torneio por chaveamento com duelos sucessivos para o yGuerra.

Visão geral

O yGuerraDuelsAddon adiciona um modo de torneio ao yGuerra, transformando um tipo de guerra em um chaveamento onde clans ou jogadores se enfrentam em duelos sucessivos até restar um campeão.

O addon usa a seção Duelos do arquivo do tipo de evento.

No projeto, o tipo padrão fica em:

src/main/resources/tipos/duelos.yml

Em runtime, o arquivo equivalente é criado/carregado dentro da pasta do plugin:

plugins/yGuerra/tipos/duelos.yml

O addon só é considerado ativo quando a chave yGuerraDuelsAddon está ativada no bootstrap/licenciamento e quando o tipo atual possui:

Duelos:
  Ativar: true

Requisitos

RequisitoDescrição
yGuerraPlugin principal carregado corretamente.
yPluginsDependência obrigatória do yGuerra.
VaultDependência obrigatória do yGuerra.
Addon ativoBukkitBootstrap.isActivated("yGuerraDuelsAddon") deve retornar true.
Tipo configuradoO tipo precisa ter Duelos.Ativar: true.
Locais principaisSaida, Entrada e Espera precisam estar definidos.
Arena de duelosDuelos.LocalTeam1 e Duelos.LocalTeam2 devem estar definidos para teleporte correto.

Arquivo de configuração

O arquivo principal do modo duelos é tipos/duelos.yml.

Campos principais do tipo:

CampoPadrãoFunção
Comando.ComandoduelosComando principal do tipo.
Comando.Aliasesduelo, duel, duelsAtalhos do comando.
Minimo clans2Mínimo de clans para iniciar o evento.
Minimo jogadores2Mínimo de jogadores para iniciar o evento.
Precisa de clantrueDefine se os participantes precisam estar em clan.
Sala de esperatrueMantido pela estrutura do yGuerra, mas o modo duelos possui fluxo próprio de teleporte.
Itens setadostrueReequipa os jogadores selecionados a cada duelo.
Perder itenstrueRemove itens ao morrer, sair ou deslogar conforme a lógica do evento.

Seção Duelos

Duelos:
  Ativar: true
  JogadoresPorDuelo: 3
  TempoEntreDuelos: 30
  Local: 'none'
  LocalTeam1: 'none'
  LocalTeam2: 'none'
CampoFunção
Duelos.AtivarLiga o modo de chaveamento para o tipo. Se for false, o tipo funciona como uma guerra normal.
Duelos.JogadoresPorDueloQuantidade máxima de jogadores selecionados por clan em cada duelo. Se o clan tiver menos jogadores vivos/online, usa os disponíveis.
Duelos.TempoEntreDuelosTempo em segundos entre o fim de um duelo e o início do próximo.
Duelos.LocalLocal geral da arena. Usado como fallback.
Duelos.LocalTeam1Local de spawn do primeiro lado do duelo.
Duelos.LocalTeam2Local de spawn do segundo lado do duelo.

Formato dos locais:

mundo;x;y;z;yaw;pitch

Recomendação: configure os locais in-game usando /duelos setarena, em vez de editar manualmente.

Comandos

O tipo duelos.yml registra o comando próprio definido em Comando.Comando.

ComandoFunção
/duelosAbre o menu/informações do evento quando ele está ativo.
/duelos iniciarInicia diretamente o tipo duelos.
/guerra iniciar duelosInicia o tipo duelos pelo comando global do yGuerra.
/duelos pararPara o evento de duelos ativo.
/duelos forcestartForça o início, pulando chamadas restantes e indo para o warmup.
/duelos infoMostra informações do evento ativo.
/duelos camaroteTeleporta o jogador para o camarote, se configurado.
/duelos setarenaDefine a posição atual como arena dos dois lados.
/duelos setarena team1Define a posição atual como spawn do Team1.
/duelos setarena team2Define a posição atual como spawn do Team2.

Aliases padrão:

/duelo
/duel
/duels

Permissões

O yGuerra usa permissões globais por ação. A permissão yguerra.admin libera tudo.

PermissãoUso
yguerra.adminAcesso completo aos comandos administrativos.
yguerra.usarUsar o comando principal e abrir menus.
yguerra.ajudaVer ajuda.
yguerra.iniciarIniciar eventos.
yguerra.pararParar eventos.
yguerra.forcestartForçar início do evento.
yguerra.setarenaConfigurar arena de duelos.
yguerra.infoVer informações do evento.
yguerra.camaroteUsar camarote.
yguerra.kickplayerRemover jogador do evento.
yguerra.kickclanRemover clan do evento.
yguerra.banplayerBanir jogador do evento.
yguerra.banclanBanir clan do evento.
yguerra.unbanplayerDesbanir jogador.
yguerra.unbanclanDesbanir clan.

Configuração inicial recomendada

  1. Ative o addon yGuerraDuelsAddon no sistema de ativação/licença.
  2. Reinicie ou recarregue o plugin para garantir que o tipo duelos.yml seja carregado.
  3. Confirme que plugins/yGuerra/tipos/duelos.yml possui Duelos.Ativar: true.
  4. Configure os locais principais do evento: Saida, Entrada e Espera.
  5. Vá até o spawn do primeiro lado da arena e use /duelos setarena team1.
  6. Vá até o spawn do segundo lado da arena e use /duelos setarena team2.
  7. Configure o camarote se quiser teleportar eliminados para uma área de espectador.
  8. Ajuste Duelos.JogadoresPorDuelo e Duelos.TempoEntreDuelos.
  9. Inicie o evento com /guerra iniciar duelos ou /duelos iniciar.

Fluxo do evento

O fluxo do modo duelos é controlado por DuelsManager e DuelsController.

  1. O staff inicia o tipo duelos.
  2. O yGuerra entra na fase de chamada, permitindo jogadores/clans entrarem no evento.
  3. Ao acabar a chamada, o evento valida Minimo clans e Minimo jogadores.
  4. O evento entra em warmup.
  5. Quando o PVP é liberado, o addon cria a lista do chaveamento.
  6. A lista é embaralhada para gerar confrontos aleatórios.
  7. O primeiro par é escolhido como CLA_A e CLA_B.
  8. O addon seleciona até Duelos.JogadoresPorDuelo jogadores vivos e online de cada clan.
  9. Os jogadores selecionados recebem o setup do evento e são teleportados para LocalTeam1 e LocalTeam2.
  10. Quando todos os jogadores selecionados de um lado morrem, deslogam ou saem, o outro lado vence o duelo.
  11. O clan perdedor é removido do evento e enviado ao camarote ou saída.
  12. O clan vencedor volta para Entrada ou Espera enquanto aguarda o próximo duelo.
  13. O vencedor é colocado na lista de vencedores da rodada.
  14. Quando todos os confrontos da rodada terminam, os vencedores formam a próxima rodada.
  15. O processo se repete até sobrar apenas um campeão.
  16. Ao final, o yGuerra usa a lógica padrão de ganhador para tags e recompensas.

Bye

Quando uma rodada possui quantidade ímpar de participantes, um clan ou jogador pode passar automaticamente para a próxima rodada.

Esse comportamento usa a mensagem:

Duelos:
  Mensagens:
    Bye: '&6[Duelos] &b{clan} &epassa automaticamente para a proxima rodada!'

Modos suportados

Duelos entre clans

Configuração padrão:

Precisa de clan: true
Duelos:
  JogadoresPorDuelo: 3

Neste modo, cada entrada do chaveamento representa um clan. Em cada confronto, o addon seleciona até JogadoresPorDuelo jogadores vivos e online de cada clan.

1x1 entre clans

Precisa de clan: true
Duelos:
  JogadoresPorDuelo: 1

Neste modo, cada duelo seleciona apenas um jogador por clan. O campeão continua sendo tratado como clan, mas o addon preserva o sobrevivente final para a lógica de finalização.

Solo 1x1 sem clan

Precisa de clan: false
Duelos:
  JogadoresPorDuelo: 1

Neste modo, cada entrada do chaveamento representa um jogador, não um clan. O addon remove jogadores do chaveamento quando eles saem, morrem ou deixam o evento.

Mensagens do chaveamento

As mensagens específicas do addon ficam em Duelos.Mensagens.

Duelos:
  Mensagens:
    InicioTorneio: '&6[Duelos] &eTorneio de Clans iniciado com &b{clans_quantia} &eclans!'
    InicioRodada: '&6[Duelos] &eRodada &b{rodada} &einiciada! &b{clans_quantia} &eclans restantes.'
    InicioDuelo: '&6[Duelos] &eDuelo Rodada &b{rodada}&e: &b{clan_a} &evs &b{clan_b}&e!'
    VencedorDuelo: '&6[Duelos] &b{vencedor} &evenceu o duelo contra &c{perdedor}&e! (Rodada {rodada})'
    Bye: '&6[Duelos] &b{clan} &epassa automaticamente para a proxima rodada!'
    Campeao: '&6[Duelos] &b{clan} &ee o grande &6&lCAMPEAO &eapos &b{rodadas} &erodadas!'

Placeholders disponíveis:

PlaceholderOnde usarDescrição
{clans_quantia}InicioTorneio, InicioRodadaQuantidade de participantes/clans restantes.
{rodada}InicioRodada, InicioDuelo, VencedorDuelo, ByeRodada atual.
{clan_a}InicioDueloPrimeiro participante do duelo.
{clan_b}InicioDueloSegundo participante do duelo.
{vencedor}VencedorDueloVencedor do duelo atual.
{perdedor}VencedorDueloPerdedor do duelo atual.
{clan}Bye, CampeaoParticipante que passou por bye ou campeão final.
{rodadas}CampeaoTotal de rodadas até o título.

Recompensas e tags

O addon não possui um sistema separado de recompensas. Ao declarar o campeão, ele delega a finalização para a lógica padrão do yGuerra.

No duelos.yml, as recompensas usam colocações (Primeiro, Segundo, Terceiro) com Colocacao e Cargos:

Tag:
  Display: '&6[Duelos]'

Recompensas:
  Primeiro:
    Colocacao: 1
    Cargos:
      Lider:
        - 'give {player} emerald 64'
      Capitao:
        Numeros:
          - 1: 9000
        Arredondar decimal: true
        Comandos:
          - 'give {player} emerald 64'
          - 'cash add {player} {numero1}'
      Confiavel: []
      Membro: []
      Sem clan:
        - 'give {player} wood 64'

  Segundo:
    Colocacao: 2
    Cargos:
      Lider:
        - 'give {player} diamond 64'
      # ... demais cargos

  Terceiro:
    Colocacao: 3
    Cargos:
      Lider:
        - 'give {player} gold_ingot 64'
      # ... demais cargos

  # Recompensa opcional para quem entrou e ficou do início ao fim.
  # Quem sair no meio (menu, quit, kick) não recebe. Morrer ainda conta.
  # Por padrão, quem já ganhou 1º/2º/3º não recebe esta.
  Participacao:
    Ativar: false
    Dar para colocados: false
    Cargos:
      Lider: []
      Capitao: []
      Confiavel: []
      Membro: []
      Sem clan: []
CampoFunção
Primeiro / Segundo / TerceiroRecompensas por colocação final.
ColocacaoNúmero da colocação (1, 2, 3...).
CargosComandos por cargo (Lider, Capitao, Confiavel, Membro, Sem clan).
Participacao.AtivarLiga a recompensa de participação.
Participacao.Dar para colocadosSe true, quem já ganhou 1º/2º/3º também recebe a de participação.

Desclassificar no void

No arquivo do tipo (ex: duelos.yml e gladiador.yml):

# Desclassificar o jogador ao cair no void (false = teleporta para a entrada)
Desclassificar no void: true

Também pode ser alternado no menu admin do tipo (menus/admin/tipo.yml, item Desclassificar no void).

Deathmatch

O modo duelos não precisa de deathmatch. O arquivo padrão vem com:

Temporizador:
  Deathmatch:
    Tempo: 0

Recomendação: mantenha Tempo: 0 para evitar conflito de fluxo. O chaveamento já elimina participantes rodada por rodada.

Locais

O tipo precisa dos locais principais do yGuerra:

LocalUso
Locais.SaidaPara onde jogadores são enviados ao sair, serem eliminados ou quando não há camarote.
Locais.EntradaÁrea usada para vencedores aguardarem o próximo duelo.
Locais.EsperaFallback para vencedores aguardarem caso Entrada não esteja válida.
Locais.CamaroteÁrea de espectador para perdedores, se configurada.
Duelos.LocalTeam1Spawn do lado A na arena.
Duelos.LocalTeam2Spawn do lado B na arena.

Se Duelos.LocalTeam1 ou Duelos.LocalTeam2 estiverem como none, o addon tenta usar Duelos.Local. Se nenhum local válido existir, o duelo é anunciado, mas os jogadores não são teleportados para a arena.

Comportamento em mortes, saídas e WO

O addon considera o estado real dos participantes vivos no evento.

SituaçãoComportamento
Jogador morreEle é removido do evento pela lógica normal e o addon verifica se o lado do duelo foi eliminado.
Jogador sai/deslogaO jogador é removido; se era essencial para o lado ativo, o addon reavalia o duelo.
Clan fica sem jogadores vivosO outro lado vence o duelo.
Um lado não tem jogador online/válido ao iniciar o dueloO outro lado vence por WO.
Ambos os lados não têm jogadores válidosO duelo é pulado e o chaveamento segue.
Quantidade ímpar de participantesUm participante recebe bye e avança automaticamente.

Checklist de setup

Use este checklist antes de abrir o evento em produção:

ItemStatus
Addon yGuerraDuelsAddon ativoPendente
Duelos.Ativar: truePendente
Minimo clans e Minimo jogadores ajustadosPendente
Locais.Saida configuradoPendente
Locais.Entrada configuradoPendente
Locais.Espera configuradoPendente
Locais.Camarote configurado, se necessárioPendente
/duelos setarena team1 executadoPendente
/duelos setarena team2 executadoPendente
Duelos.JogadoresPorDuelo revisadoPendente
Duelos.TempoEntreDuelos revisadoPendente
Recompensas revisadasPendente
Tags revisadasPendente
Deathmatch mantido em 0Pendente

Problemas comuns

O evento inicia como guerra normal

Verifique:

CausaCorreção
Addon não está ativoAtive yGuerraDuelsAddon no bootstrap/licenciamento.
Duelos.Ativar está falseAltere para true no arquivo do tipo.
Tipo errado foi iniciadoUse /guerra iniciar duelos ou /duelos iniciar.

Mensagem de local nulo ao iniciar

O comando de início valida os locais principais antes de abrir o evento.

Confira se os locais abaixo não estão como none:

Locais:
  Saida: 'none'
  Entrada: 'none'
  Espera: 'none'

Duelo é anunciado, mas jogadores não são teleportados

Configure a arena:

/duelos setarena team1
/duelos setarena team2

Também é possível usar /duelos setarena para definir a mesma posição para os dois lados, mas isso não é recomendado para arena real.

Participante vence sem lutar

Isso pode acontecer por bye ou WO.

MotivoDescrição
ByeA rodada tinha quantidade ímpar de participantes.
WOO adversário não tinha jogadores vivos e online para o duelo.

Eliminados não vão para o camarote

Se Locais.Camarote não estiver configurado ou estiver inválido, o addon usa Locais.Saida como fallback. Configure o camarote se quiser espectadores.

Recompensa não foi entregue como esperado

O addon usa a finalização padrão do yGuerra. Revise as seções Primeiro, Segundo, Terceiro e Participacao, os cargos e se o modo é com clan ou sem clan.

Referências no código

ArquivoFunção
com.ystoreplugins.yguerra.util.ContainerUtilVerifica se o addon está ativo e se o evento atual é de duelos.
com.ystoreplugins.yguerra.method.controller.WarmUPDispara o torneio quando o PVP é liberado.
com.ystoreplugins.yguerra.method.controller.duels.DuelsControllerMantém o estado estático do chaveamento ativo.
com.ystoreplugins.yguerra.method.controller.duels.DuelsManagerControla rodadas, duelos, WO, bye, campeão e teleportes.
com.ystoreplugins.yguerra.command.TypeCommandRegistra comandos do tipo e implementa /duelos setarena.
com.ystoreplugins.yguerra.config.TipoManagerCarrega os campos da seção Duelos do YAML.

Nesta página