Giter Club home page Giter Club logo

titansbattle's Introduction

TitansBattle

Highly customizable battle plugin for Spigot servers

Spiget Downloads Discord Crowdin

titansbattle's People

Contributors

github-actions[bot] avatar n-tdi avatar roinujnosde avatar srbedrock avatar thiagogebrimm avatar tomut0 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

titansbattle's Issues

Using multiple kits in game

How about make possibility for players to pick one of defined kits and use it in games?
I think, it could be a GUI.


Original author of an idea: antidude?!#4048

Erro quando é definido vencedor do evento

Ao definir um vencedor do evento com o comando /tb setwin [jogador], todos os jogadores vivos na partida recebem o prêmio definido para o primeiro colocado.

Exemplo do prêmio:

  prizes:
    FIRST:
      ==: prize
      items_give_interval: 30
      leader.commands.command_list:
      - give %player% diamond_sword %some_number%
      - eco give %player% %some_number%
      leader.commands.enabled: false
      leader.commands.some_number.divided: false
      leader.commands.some_number.value: 100.0
      leader.items.enabled: false
      leader.items.item_list: null
      member.commands.command_list:
      - eco give %player% 50000
      member.commands.enabled: true
      member.commands.some_number.divided: false
      member.commands.some_number.value: 100.0
      member.items.enabled: false
      member.items.item_list: null
      treat_leaders_as_members: true
    SECOND:
      ==: prize
      items_give_interval: 30
      leader.commands.command_list:
      - give %player% diamond_sword %some_number%
      - eco give %player% %some_number%
      leader.commands.enabled: false
      leader.commands.some_number.divided: false
      leader.commands.some_number.value: 100.0
      leader.items.enabled: false
      leader.items.item_list: null
      member.commands.command_list:
      - give %player% diamond_sword %some_number%
      - eco give %player% %some_number%
      member.commands.enabled: false
      member.commands.some_number.divided: false
      member.commands.some_number.value: 100.0
      member.items.enabled: false
      member.items.item_list: null
      treat_leaders_as_members: false
    THIRD:
      ==: prize
      items_give_interval: 30
      leader.commands.command_list:
      - give %player% diamond_sword %some_number%
      - eco give %player% %some_number%
      leader.commands.enabled: false
      leader.commands.some_number.divided: false
      leader.commands.some_number.value: 100.0
      leader.items.enabled: false
      leader.items.item_list: null
      member.commands.command_list:
      - give %player% diamond_sword %some_number%
      - eco give %player% %some_number%
      member.commands.enabled: false
      member.commands.some_number.divided: false
      member.commands.some_number.value: 100.0
      member.items.enabled: false
      member.items.item_list: null
      treat_leaders_as_members: false
    KILLER:
      ==: prize
      items_give_interval: 30
      leader.commands.command_list:
      - give %player% diamond_sword %some_number%
      - eco give %player% %some_number%
      leader.commands.enabled: false
      leader.commands.some_number.divided: false
      leader.commands.some_number.value: 100.0
      leader.items.enabled: false
      leader.items.item_list: null
      member.commands.command_list:
      - give %player% diamond_sword %some_number%
      - eco give %player% %some_number%
      member.commands.enabled: false
      member.commands.some_number.divided: false
      member.commands.some_number.value: 100.0
      member.items.enabled: false
      member.items.item_list: null
      treat_leaders_as_members: false

Permitir o uso de Placeholders nas configurações

Integrar Placeholders do PlaceholderAPI para que possa ser usado nas configurações, exemplo de uso:

Exemplo usando a expansão Server e o comando do EssentialsX:

  prizes:
    FIRST:
      ==: prize
      items_give_interval: 30
      leader.commands.command_list: null
      leader.commands.enabled: false
      leader.commands.some_number.divided: false
      leader.commands.some_number.value: 100.0
      leader.items.enabled: false
      leader.items.item_list: null
      member.commands.command_list:
      - "give %player% bow name:Super_Arco lore:Vencedor_do_Evento_Arqueiro|Data: %server_time_dd/MM/YY%"
      member.commands.enabled: true
      member.commands.some_number.divided: false
      member.commands.some_number.value: 100.0
      member.items.enabled: false
      member.items.item_list: null
      treat_leaders_as_members: true

Exemplo usando a expansão do SimpleClans e comando do EssentialsX:

  prizes:
    FIRST:
      ==: prize
      items_give_interval: 30
      leader.commands.command_list: null
      leader.commands.enabled: false
      leader.commands.some_number.divided: false
      leader.commands.some_number.value: 100.0
      leader.items.enabled: false
      leader.items.item_list: null
      member.commands.command_list:
      - "give %player% dragon_egg name:%simpleclans_tag_label%_%simpleclans_clan_name% lore:Troféu_da_Guerra_de_Clãs|Data:_%server_time_dd/MM/YY%"
      member.commands.enabled: true
      member.commands.some_number.divided: false
      member.commands.some_number.value: 100.0
      member.items.enabled: false
      member.items.item_list: null
      treat_leaders_as_members: true

Enviar game_info_duels assim que o evento começar

Enviar a lista de duelos assim que o evento começar:

Mensagens: game_info_duels e game_info_next_duels
image

No momento está demorando muito, as vezes passa até 3 duelos até a lista ser enviada no chat.

Mensagem de aliados aparecendo durante o combate.

Mensagem ao atacar aliados com fogo amigo desativo do plugin SimpleClans é exibido durante o evento.

Os jogadores conseguem dar dano de forma normal, só a mensagem que é exibida.

O certo seria não exibir a mensagem durante o evento.

Bloquear teleporte após entrar em evento

Estamos tendo problemas com jogadores burlando eventos, segue abaixo passo a passo do problema:

  1. Jogador envia um comando com cooldown de 3 segundos para determinado local (spawn).
  2. Jogador envia o comando /batalha entrar que não tem cooldown e entra no evento.
  3. Jogador é teleportado para spawn devido ao comando enviado na etapa 1.
  4. Jogador pega itens do enderchest, baú e etc para usar no evento ou guarda os itens entregues no evento.
  5. Jogador é teleportado para a arena quando é iniciado o tempo de preparação e combate.

Modo Arqueiro

Adicionar uma forma para habilitar o dano apenas da Flecha para que seja possível realizar um evento arqueiro.

Definir 2 pontos de teleporte em eventos de torneio

Sugestão

Poder definir 2 pontos de spawn quando o evento for elimination_tournament: true

Exemplo: /tb setdestination <evento> ARENA <1|2>

  • /tb setdestination boxe ARENA 1
  • /tb setdestination boxe ARENA 2

image

Ao inciar o duelo entre dois jogadores, puxar cada um para um ponto diferente.

Remover efeitos ao finalizar FREEFORALL_FUN e GROUPS_FUN

Sugestão

Ao finalizar os eventos FREEFORALL_FUN e GROUPS_FUN remover também todos os efeitos.

Motivo

Ao finalizar os eventos FREEFORALL_FUN e GROUPS_FUN é removido todos os itens porém não é removido os efeitos, com isso possíveis efeitos entregues por comandos caso a sugestão #4 seja implementada ou por poções entregues em kits dos eventos continuam após o evento.

Adicionar itens do kit em locais pré-definidos

Sugestão

Ao criar um kit com o item equipado como por exemplo armaduras, quando o jogador entrar no evento o item ser colocado nos slots definidos.

Exemplo:

Criar o kit com armadura equipada:

armadura

Jogador ao entrar no evento terá a armadura nos slots corretos:

slots

Motivo

Caso a sugestão #4 seja implementada, é preciso que as armaduras estejam no local correto para que o jogador possa receber por exemplo: efeitos de invisibilidade.

TitansBattle is not properly shutting down its async tasks

[17:59:28 INFO]: [TitansBattle] Error while saving a Warrior: [SQLITE_BUSY] The database file is locked (database is locked)
[17:59:32 ERROR]: Nag author(s): '[RoinujNosde]' of 'TitansBattle v6.2.1-SNAPSHOT-5992f6f' about the following: This plugin is not properly shutting down its async tasks when it is being shut down. This task may throw errors during the final shutdown logs and might not complete before process dies.
[17:59:32 ERROR]: Craft Scheduler Thread - 5144 - TitansBattle Stacktrace
[17:59:32 ERROR]:   org.sqlite.core.NativeDB.step(Native Method)
[17:59:32 ERROR]:   org.sqlite.core.DB.execute(DB.java:1012)
[17:59:32 ERROR]:   org.sqlite.core.DB.lambda$execute$1(DB.java:974)
[17:59:32 ERROR]:   org.sqlite.core.DB$$Lambda$7959/0x000000080263c120.run(Unknown Source)
[17:59:32 ERROR]:   org.sqlite.core.SafeStmtPtr.safeRunInt(SafeStmtPtr.java:84)
[17:59:32 ERROR]:   org.sqlite.core.DB.execute(DB.java:974)
[17:59:32 ERROR]:   org.sqlite.core.DB.executeUpdate(DB.java:1054)
[17:59:32 ERROR]:   org.sqlite.jdbc3.JDBC3PreparedStatement.lambda$executeLargeUpdate$2(JDBC3PreparedStatement.java:118)
[17:59:32 ERROR]:   org.sqlite.jdbc3.JDBC3PreparedStatement$$Lambda$9956/0x0000000802df9e28.call(Unknown Source)
[17:59:32 ERROR]:   org.sqlite.jdbc3.JDBC3Statement.withConnectionTimeout(JDBC3Statement.java:454)
[17:59:32 ERROR]:   org.sqlite.jdbc3.JDBC3PreparedStatement.executeLargeUpdate(JDBC3PreparedStatement.java:117)
[17:59:32 ERROR]:   org.sqlite.jdbc3.JDBC3PreparedStatement.executeUpdate(JDBC3PreparedStatement.java:99)
[17:59:32 ERROR]:   TitansBattle-6.2.1-SNAPSHOT.jar//me.roinujnosde.titansbattle.managers.DatabaseManager.update(DatabaseManager.java:274)
[17:59:32 ERROR]:   TitansBattle-6.2.1-SNAPSHOT.jar//me.roinujnosde.titansbattle.managers.DatabaseManager$$Lambda$16414/0x0000000804a9cb10.accept(Unknown Source)
[17:59:32 ERROR]:   [email protected]/java.lang.Iterable.forEach(Iterable.java:75)
[17:59:32 ERROR]:   TitansBattle-6.2.1-SNAPSHOT.jar//me.roinujnosde.titansbattle.managers.DatabaseManager.lambda$saveAll$8(DatabaseManager.java:497)
[17:59:32 ERROR]:   TitansBattle-6.2.1-SNAPSHOT.jar//me.roinujnosde.titansbattle.managers.DatabaseManager$$Lambda$16412/0x0000000804a9c6b0.run(Unknown Source)
[17:59:32 ERROR]:   org.bukkit.craftbukkit.v1_19_R3.scheduler.CraftTask.run(CraftTask.java:101)
[17:59:32 ERROR]:   org.bukkit.craftbukkit.v1_19_R3.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57)
[17:59:32 ERROR]:   com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
[17:59:32 ERROR]:   [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[17:59:32 ERROR]:   [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[17:59:32 ERROR]:   [email protected]/java.lang.Thread.run(Thread.java:833)
[17:59:32 ERROR]: Nag author(s): '[RoinujNosde]' of 'TitansBattle v6.2.1-SNAPSHOT-5992f6f' about the following: This plugin is not properly shutting down its async tasks when it is being shut down. This task may throw errors during the final shutdown logs and might not complete before process dies.
[17:59:32 ERROR]: Craft Scheduler Thread - 4869 - TitansBattle Stacktrace
[17:59:32 ERROR]:   org.sqlite.core.SafeStmtPtr.safeRunConsume(SafeStmtPtr.java:140)
[17:59:32 ERROR]:   org.sqlite.jdbc3.JDBC3PreparedStatement.executeLargeUpdate(JDBC3PreparedStatement.java:111)
[17:59:32 ERROR]:   org.sqlite.jdbc3.JDBC3PreparedStatement.executeUpdate(JDBC3PreparedStatement.java:99)
[17:59:32 ERROR]:   TitansBattle-6.2.1-SNAPSHOT.jar//me.roinujnosde.titansbattle.managers.DatabaseManager.update(DatabaseManager.java:274)
[17:59:32 ERROR]:   TitansBattle-6.2.1-SNAPSHOT.jar//me.roinujnosde.titansbattle.managers.DatabaseManager$$Lambda$16414/0x0000000804a9cb10.accept(Unknown Source)
[17:59:32 ERROR]:   [email protected]/java.lang.Iterable.forEach(Iterable.java:75)
[17:59:32 ERROR]:   TitansBattle-6.2.1-SNAPSHOT.jar//me.roinujnosde.titansbattle.managers.DatabaseManager.lambda$saveAll$8(DatabaseManager.java:497)
[17:59:32 ERROR]:   TitansBattle-6.2.1-SNAPSHOT.jar//me.roinujnosde.titansbattle.managers.DatabaseManager$$Lambda$16412/0x0000000804a9c6b0.run(Unknown Source)
[17:59:32 ERROR]:   org.bukkit.craftbukkit.v1_19_R3.scheduler.CraftTask.run(CraftTask.java:101)
[17:59:32 ERROR]:   org.bukkit.craftbukkit.v1_19_R3.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57)
[17:59:32 ERROR]:   com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
[17:59:32 ERROR]:   [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[17:59:32 ERROR]:   [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[17:59:32 ERROR]:   [email protected]/java.lang.Thread.run(Thread.java:833)
[17:59:32 ERROR]: Nag author(s): '[RoinujNosde]' of 'TitansBattle v6.2.1-SNAPSHOT-5992f6f' about the following: This plugin is not properly shutting down its async tasks when it is being shut down. This task may throw errors during the final shutdown logs and might not complete before process dies.
[17:59:32 ERROR]: Craft Scheduler Thread - 5059 - TitansBattle Stacktrace
[17:59:32 ERROR]:   org.sqlite.core.SafeStmtPtr.safeRunConsume(SafeStmtPtr.java:140)
[17:59:32 ERROR]:   org.sqlite.jdbc3.JDBC3PreparedStatement.executeLargeUpdate(JDBC3PreparedStatement.java:111)
[17:59:32 ERROR]:   org.sqlite.jdbc3.JDBC3PreparedStatement.executeUpdate(JDBC3PreparedStatement.java:99)
[17:59:32 ERROR]:   TitansBattle-6.2.1-SNAPSHOT.jar//me.roinujnosde.titansbattle.managers.DatabaseManager.update(DatabaseManager.java:274)
[17:59:32 ERROR]:   TitansBattle-6.2.1-SNAPSHOT.jar//me.roinujnosde.titansbattle.managers.DatabaseManager$$Lambda$16414/0x0000000804a9cb10.accept(Unknown Source)
[17:59:32 ERROR]:   [email protected]/java.lang.Iterable.forEach(Iterable.java:75)
[17:59:32 ERROR]:   TitansBattle-6.2.1-SNAPSHOT.jar//me.roinujnosde.titansbattle.managers.DatabaseManager.lambda$saveAll$8(DatabaseManager.java:497)
[17:59:32 ERROR]:   TitansBattle-6.2.1-SNAPSHOT.jar//me.roinujnosde.titansbattle.managers.DatabaseManager$$Lambda$16412/0x0000000804a9c6b0.run(Unknown Source)
[17:59:32 ERROR]:   org.bukkit.craftbukkit.v1_19_R3.scheduler.CraftTask.run(CraftTask.java:101)
[17:59:32 ERROR]:   org.bukkit.craftbukkit.v1_19_R3.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57)
[17:59:32 ERROR]:   com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
[17:59:32 ERROR]:   [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[17:59:32 ERROR]:   [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[17:59:32 ERROR]:   [email protected]/java.lang.Thread.run(Thread.java:833)
[17:59:32 ERROR]: Nag author(s): '[RoinujNosde]' of 'TitansBattle v6.2.1-SNAPSHOT-5992f6f' about the following: This plugin is not properly shutting down its async tasks when it is being shut down. This task may throw errors during the final shutdown logs and might not complete before process dies.
[17:59:32 ERROR]: Craft Scheduler Thread - 4959 - TitansBattle Stacktrace
[17:59:32 ERROR]:   org.sqlite.core.DB.prepare(DB.java:258)
[17:59:32 ERROR]:   org.sqlite.core.CorePreparedStatement.<init>(CorePreparedStatement.java:46)
[17:59:32 ERROR]:   org.sqlite.jdbc3.JDBC3PreparedStatement.<init>(JDBC3PreparedStatement.java:31)
[17:59:32 ERROR]:   org.sqlite.jdbc4.JDBC4PreparedStatement.<init>(JDBC4PreparedStatement.java:25)
[17:59:32 ERROR]:   org.sqlite.jdbc4.JDBC4Connection.prepareStatement(JDBC4Connection.java:34)
[17:59:32 ERROR]:   org.sqlite.jdbc3.JDBC3Connection.prepareStatement(JDBC3Connection.java:226)
[17:59:32 ERROR]:   org.sqlite.jdbc3.JDBC3Connection.prepareStatement(JDBC3Connection.java:206)
[17:59:32 ERROR]:   TitansBattle-6.2.1-SNAPSHOT.jar//me.roinujnosde.titansbattle.managers.DatabaseManager.update(DatabaseManager.java:261)
[17:59:32 ERROR]:   TitansBattle-6.2.1-SNAPSHOT.jar//me.roinujnosde.titansbattle.managers.DatabaseManager$$Lambda$16414/0x0000000804a9cb10.accept(Unknown Source)
[17:59:32 ERROR]:   [email protected]/java.lang.Iterable.forEach(Iterable.java:75)
[17:59:32 ERROR]:   TitansBattle-6.2.1-SNAPSHOT.jar//me.roinujnosde.titansbattle.managers.DatabaseManager.lambda$saveAll$8(DatabaseManager.java:497)
[17:59:32 ERROR]:   TitansBattle-6.2.1-SNAPSHOT.jar//me.roinujnosde.titansbattle.managers.DatabaseManager$$Lambda$16412/0x0000000804a9c6b0.run(Unknown Source)
[17:59:32 ERROR]:   org.bukkit.craftbukkit.v1_19_R3.scheduler.CraftTask.run(CraftTask.java:101)
[17:59:32 ERROR]:   org.bukkit.craftbukkit.v1_19_R3.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57)
[17:59:32 ERROR]:   com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
[17:59:32 ERROR]:   [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[17:59:32 ERROR]:   [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[17:59:32 ERROR]:   [email protected]/java.lang.Thread.run(Thread.java:833)

GuerraStatus

Informar a um jogador as facções que ainda restam juntamente com seus membros vivos.
Comando: /tb status
Mensagem de exemplo:

[NGD] - 1 membro vivo.
[HHT] - 3 membros vivos.
[YOU] - 7 membros vivos.

Kits not cleared on death

When use kits is set to true and someone dies, it only clears the inventory of the winner after the event.
The kits don't get cleared for other players, I only tested on free for all mode.

[Sugestão] Salvar data em um arquivo separado do config.yml

Salvar informações de data em um arquivo separado para que seja possível o compartilhamento do arquivo entre servidores diferente e para que facilite a exclusão de configurações quando necessário.

Linhas no config.yml:

data:
  respawn:
  clear_inv:

Problemas com o modo GROUPS_REAL

Acredito que seja devido ao game info.

Erro:

[19:21:49 WARN]: [TitansBattle] Task #3135814 for TitansBattle v3.0.2 generated an exception
java.lang.NullPointerException: null
at me.roinujnosde.titansbattle.Helper.lambda$getStringFromGroupSet$3(Helper.java:860) ~[?:?]
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[?:?]
at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1694) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[?:?]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[?:?]
at me.roinujnosde.titansbattle.Helper.getStringFromGroupSet(Helper.java:860) ~[?:?]
at me.roinujnosde.titansbattle.managers.TaskManager$ArenaAnnouncementTask$1.run(TaskManager.java:198) ~[?:?]
at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftTask.run(CraftTask.java:99) ~[patched_1.15.2.jar:git-Tuinity-"eedc3fc"]
at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:468) ~[patched_1.15.2.jar:git-Tuinity-"eedc3fc"]
at net.minecraft.server.v1_15_R1.MinecraftServer.b(MinecraftServer.java:1324) ~[patched_1.15.2.jar:git-Tuinity-"eedc3fc"]
at net.minecraft.server.v1_15_R1.DedicatedServer.b(DedicatedServer.java:432) ~[patched_1.15.2.jar:git-Tuinity-"eedc3fc"]
at net.minecraft.server.v1_15_R1.MinecraftServer.a(MinecraftServer.java:1239) ~[patched_1.15.2.jar:git-Tuinity-"eedc3fc"]
at net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:970) ~[patched_1.15.2.jar:git-Tuinity-"eedc3fc"]
at java.lang.Thread.run(Thread.java:832) [?:?]

Config: https://hasteb.in/axayadib.yaml

Juntar aviso killer_by com has_killed_times

Sugestão:

Juntar duas mensagens em apenas uma para diminuir o spam de avisos do evento.

Como é atualmente:

killed_by: '&8[&aEvento&8]&7 {0} foi morto por {1}!'
has_killed_times: '&8[&4Evento&8]&7 {0} matou {1}x no jogo!'

Exemplo:
killed_by: '&8[&aEvento&8]&7 ThiagoROX foi morto por Koyote!'
has_killed_times: '&8[&4Evento&8]&7 Koyote matou 6x no jogo!'

Como poderia ser:

killed_by: '&8[&aEvento&8]&7 {0}({1}) foi morto por {2}({3})!'

Exemplo:
killed_by: '&8[&aEvento&8]&7 ThiagoROX(6) foi morto por Koyote(2)!'

Adicionar comando para eliminar jogador do evento

Sugestão:

Adicionar um comando para eliminar determinado jogador.

Motivo:

Facilitar a criação de eventos que o PVP não chegue a morte como por exemplo, spleef, sinuca, sumô, folha e etc.

Quando o jogador entra/cai em determinada área outros plugins (WorldGuard) forçam a execução do comando para que o jogador seja eliminado.

Como poderia ser implementado:

  • Através de um comando como por exemplo:
    /tb [eliminar/remover/retirar] <jogador> - Comando para eliminar um jogador do evento.

  • Quando jogador for eliminado por comando enviar uma mensagem no chat como por exemplo:
    eliminated_player: "&b» {0} was eliminated from the game!"

  • Quando tentar remover um jogador que não esteja em um evento:
    player_not_in_game: "&b» {0} is not in a game."

Adicionar opção para executar comandos

Sugestão

Opção para executar comandos pré-definidos na configuração no inicio de cada etapa do evento como por exemplo ao iniciar o tempo de preparação.

Exemplo:

#The time for the players to get ready
preparation_time: 30

#Comandos a serem executados no incio da preparação
command_preparation: ["effect give %player% minecraft:invisibility 1000 1 true"]

#If join/quit messages are on and the player is both killer and winner, choose wich one will be used
join_or_quit_message_priority: KILLER #Available option: KILLER | WINNER

Criar vários eventos e definir os modos de jogo

Sugestão

Adicionar um sistema onde é possível criar vários modos de jogo e não apenas 4.

Exemplo:

Dentro da pasta games criar um .yml com nome do evento.

├── Plugins
├── TitansBattle
├── games
└── <evento>.yml

Usando gladiador.yml você poderia configurar todo o evento com sua própria arena, traduções, kits e etc..

#Nome do evento
game_name: Gladiador

#Modo de jogo
game_type: FREEFORALL_FUN

#Game announcements
announcements:
  #Before the game starts, how much messages will be sent to players and how much time between them?
  starting:
    times: 2
    interval: 30
  #Insert the interval of the message with informations of the game
  game_info:
    interval: 30

#Minimum to start the game
minimum:
    players: 10

#The time to finish the game if no one wins (in seconds)
expiration_time: 3600

#The time for the players to gegt ready
preparation_time: 30

#If join/quit messages are on and the player is both killer and winner, choose wich one will be used
join_or_quit_message_priority: KILLER #Available option: KILLER | WINNER

#Should join/quit messages be sent when a winner/killer joins the server?
winner-quit-message: true

winner-join-message: true

killer-quit-message: true

killer-join-message: true

#Inventory the players will get to use
kit:

#Prizes for the winners
prizes:
    #If player's inventory is full, this is the frequency in seconds to ask to clear the inventory
    items_give_interval: 30
    members:
        items:
            enabled: false
            item_list:
        commands:
            enabled: false
            some_number:
                value: 10
                divide: true
            command_list: ["give %player% diamond_sword %some_number%", "eco give %player% %some_number%"]
        money:
            enabled: false
            divide: false
            amount: 10000.0
            
#Destinations used by the plugin
destinations:
    exit:
    lobby:
    watchroom:
    arena:      
    
#Hooks configuration
hooks:
  #If you use Legendchat, add {tb_freeforallfun_killer} and {tb_freeforallfun_winner} in its chat format settings
  legendchat:
      killer:
          prefix: "[Killer] "
      winner:
          prefix: "[Winner] "

#Use this to set a specific message for this game mode.
language:
    #Since it is a non-group game, these messages in their original form would make no sense
    watch_to_the_end: " "
    winners: "&a[TitansBattle] The current winners are:\nKiller: {0}\nWinner: {2}"
    who_won: "&a[TitansBattle] Game over! The winner is: {0}."
    not_enough_participants: "&a[TitansBattle] There was not enough players to start the game!"
    game_info: "&a[TitansBattle] There is {0} players participating!"
    starting_game: "&a[TitansBattle] Starting game in {0} seconds! Join using /tb join.\nNeeded: {2} players\nParticipating: {4} players."

Motivo

Com essa mudança seria possível criar diversos tipos de batalhas e não somente Gladiador.

Adicionar Placeholders com o plugin PlaceholderAPI

Sugestão

Adicionar placeholders para ser utilizados em outros plugins como de GUI ou leadboard.

Alguns placeholders que tenho em mente no momento:

  • - Vencedor do último evento realizado; %titansbattle_last_winner_<game>%
  • - Matador do último evento realizado; %titansbattle_last_killer_<game>%
  • - Nome do grupo vencedor do ultimo evento realizado; %titansbattle_last_winner_group_<game>%
  • - Quantidade de vitórias de um jogador; %titansbattle_group_total_victories%
  • - Quantidade de vitórias de um grupo. %titansbattle_group_total_victories%
  • - TAG do grupo vencedor do ultimo evento realizado;
  • - Quantidade de abates eventos; %titansbattle_total_kills%
  • - Quantidade de mortes em eventos; %titansbattle_total_deaths%

Improve tab auto complete

Sugestão

Atualmente é sugerido apenas o comando principal.

Seria interessante sugerir também sub comandos.

Desabilitar fogo amigo em GROPS_REAL e GROUPS_FUN

Sugestão

Adicionar opção para desabilitar fogo amigo entre membros do próprio clã ou facção durante os eventos.

Motivo

Em eventos com muitos jogadores é quase impossível não acertar membros do próprio clã.
Existe uma habilidade do mcMMO que dá dano em área e sempre acaba atingindo os membros do próprio clã.

Remover jogadores expulsos do clã durante evento GROUPS

Jogadores expulsos durante a guerra continuam no evento sem clã.
Isso faz com que ele não seja contabilizado como morto pelo clã que ele entrou.
Temos algumas soluções para o problema:

  1. Remover o jogador do evento com uma mensagem explicando o motivo;
  2. Não permitir a remoção do jogador até o evento acabar.

Acredito que a primeira opção é a melhor.

Aceitar nome de evento em minúsculo

Remover case-sensitive do comando /tb winners <evento>

Sugestão do comando:
image

Comando /tb winners arqueiro-mcmmo-off não funciona:
image

Comando /tb winners Arqueiro-mcMMO-OFF funciona:
image

Nome do arquivo:

  • arqueiro-mcmmo-off.yml

Nome na configuração:

  • game.name: Arqueiro-mcMMO-OFF

Plugin 'TitansBattle' is creating timing 'Commands'

[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Commands' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/INFO]: [TitansBattle] [ACF] Enabled Asynchronous Tab Completion Support!
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha entrar' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha iniciar' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha recarregar' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha cancel' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha ajuda' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: camarote' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha sair' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha vencedores' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha setvenc' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha expulsar' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha top grupos' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha top jogadores' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha desafiar aceitar' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha desafiar jogador' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha desafiar group' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha setloc general_exit' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha desafiar criar' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha desafiar setkit' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha desafiar setloc' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha desafiar setprem' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha desafiar editar premio' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha desafiar editar config' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha desafiar setloc' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha evento criar' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha evento setkit' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha evento setloc' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha evento setprem' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha evento editar premio' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha evento editar config' - this is deprecated behavior, please report it to the authors: RoinujNosde
[17:17:39] [Server thread/WARN]: Plugin 'TitansBattle' is creating timing 'Command: batalha evento setloc' - this is deprecated behavior, please report it to the authors: RoinujNosde

Adicionar comando para definir jogador como vencedor do evento

Sugestão:

Adicionar um comando para definir um determinado jogador como vencedor do evento.

Motivo:

Facilitar a criação de eventos que não seja PVP e que o objetivo seja chegar a algum ponto do mapa como por exemplo labirinto, parkour, caça ao tesouro, detetive e etc.

Quando o jogador entrar/cair em determinada área, outros plugins (WorldGuard) forçam a execução do comando para que o jogador seja o vencedor.

Como poderia ser implementado:

  • Através de um comando como por exemplo:
    /tb setwinner <jogador> - Comando para definir jogador como vencedor do evento.

Modo de Desafio

Adicionar um sistema de desafio entre dois grupos ou jogadores.

Desafio entre grupos

O líder do clã ou facção desafia outros clãs ou facções, caso o líder desafiado aceite a guerra, todos os membros dos dois grupos precisam entrar para a guerra dentro de um tempo definido;

Sugestão de nome para o tipo de evento:

  • Itens dos próprios jogadores;
  • Itens definidos pelo servidor.

Comandos

  • /tb challenge [tag] [arena] - Desafiar outro clã ou facção.
  • /tb accept ou /tb challenge accept - Aceitar um desafio.
  • /tb deny ou /tb challenge deny - Negar um desafio.

Caso uma arena não seja especificada, escolher uma aleatória disponível?


Desafio entre jogadores

Jogadores desafiam uns aos outros para batalhar até a morte!

Sugestão de nome para o tipo de evento:

  • Itens dos próprios jogadores;
  • Itens definidos pelo servidor.

Comandos

  • /tb challenge [jogador] [arena] - Desafiar outro clã ou facção.
  • /tb accept ou /tb challenge accept - Aceitar um desafio.
  • /tb deny ou /tb challenge deny - Negar um desafio.

Caso uma arena não seja especificada, escolher uma aleatória disponível?

Integração com plugin EssentialsX para não roubarem kits do evento

Sugestão

Adicionar integração com o plugin EssentialsX para que o jogador não possa entrar em eventos usando /tb entrar enquanto espera a aceitação ou negação de um pedido de teleporte.

Motivo

Jogadores estão abusando desse bug e enviam um pedido de teleporte antes de entrar no evento com o comando /tb entrar, após enviar o pedido de teleporte o jogador entra no evento e recebe o kit, após receber o kit o jogador que recebeu a solicitação de teleporte aceita o pedido e o jogador que estava no evento agora está em outro local do server com todos os itens do kit.

Enviar mensagem ao usar /tb sair ou desconectar durante o evento

Sugestão:

Adicionar uma mensagem no chat quando jogadores saírem do evento através do comando /batalha sair ou desconectar.

Motivo:

Vários jogadores estão saindo através do comando /batalha sair ou desconectando do servidor para não serem executados eliminados por outros jogadores, isso é ruim para o evento, caso seja adicionado uma mensagem isso pode ser controlado, colocando mensagens como "» {player} ficou com medo e saiu no meio do evento!" ou em eventos de clã "» {player} correu da luta e deixou seu clã na mão!"

Como poderia ser implementado:

Enviar uma mensagem quando o jogador for removido do evento através do comando ou ao ser desconectando.

  • player-left-game: "» {0} left during the match!"

Não enviar mensagens vazias no chat

Sugestão:

Não enviar no chat mensagens customizadas por evento que estejam sem nenhum caractere.

Motivo:

As vezes não é necessário uma informação no evento devido as suas mecânicas

Exemplo:

Evento que não necessita de tempo de preparação ou explicação, eu coloquei preparation_over: ' ' e preparation_over: '' mas nos dois casos a mensagem foi enviada vazia no chat.

image

Erro no console java.util.ConcurrentModificationException: null

Às vezes esse erro é enviado no console, não faço ideia do motivo, não tinha evento acontecendo.

[19:49:44 WARN]: [TitansBattle] Plugin TitansBattle 6.0.1-SNAPSHOT-a20381c generated an exception while executing task 14931686
java.util.ConcurrentModificationException: null
        at java.util.HashMap$HashIterator.nextNode(HashMap.java:1597) ~[?:?]
        at java.util.HashMap$KeyIterator.next(HashMap.java:1620) ~[?:?]
        at java.lang.Iterable.forEach(Iterable.java:74) ~[?:?]
        at java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1092) ~[?:?]
        at me.roinujnosde.titansbattle.managers.DatabaseManager.lambda$saveAll$8(DatabaseManager.java:500) ~[TitansBattle-6.0.2.10.jar:?]
        at org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftTask.run(CraftTask.java:101) ~[pufferfish-1.18.2.jar:git-Pufferfish-71]
        at org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57) ~[pufferfish-1.18.2.jar:git-Pufferfish-71]
        at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[pufferfish-1.18.2.jar:git-Pufferfish-71]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:833) ~[?:?]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.