Pular para o conteúdo principal

Sistema de Saque do Extractioncraft

O Extractioncraft tem um sistema de saque em camadas construído sobre três conceitos: pacotes de conteúdo referenciam tabelas de saque, tabelas de saque referenciam pools de saque, e pools de saque definem os itens reais que podem dropar.

Visão Geral

Pacote de Conteúdo
-> chestLootTables / barrelLootTables (seleção ponderada)
-> Tabela de Saque
-> entradas lootTable (cada uma tem chance de rolar)
-> Pool de Saque
-> eliteMobsLoot / vanillaLoot (seleção ponderada de um item)

Tabelas de Saque

Configurações de tabelas de saque ficam na pasta loot_tables/. Cada arquivo define uma lista de entradas de pool de saque, onde cada entrada tem uma chance independente de produzir um item.

ChaveTipoPadrãoDescrição
isEnabledBooleantrueEscrito no arquivo, mas não aplicado: as tabelas de saque são registradas e utilizáveis independentemente de isto estar true ou não. Para impedir o uso de uma tabela, remova-a das listas chestLootTables / barrelLootTables do pacote de conteúdo e esvazie seus spawnPools.
spawnPoolsLista de String[]Nomes de pools de spawn do BetterStructures. Quando um EliteMob associado a um pool de spawn correspondente é morto, esta tabela de saque é usada para seus drops. A comparação não diferencia maiúsculas de minúsculas e ignora um .yml no final, então kobold_miner_pool e Kobold_Miner_Pool.yml correspondem igualmente.
lootTableLista de objetos[]Cada entrada referencia um nome de arquivo de pool de saque e uma chance (0.0 a 1.0)

Formato de Entrada da Tabela de Saque

lootTable:
- filename: my_loot_pool.yml
chance: 0.5
- filename: another_pool.yml
chance: 0.2

Cada entrada rola independentemente. Uma chance de 0.5 significa 50% de probabilidade de que este pool produza um drop.

Pools de Saque

Configurações de pools de saque ficam na pasta loot_pools/. Cada pool define um conjunto de itens possíveis. Quando um pool é rolado, um item é selecionado com base em probabilidade ponderada.

ChaveTipoPadrãoDescrição
isEnabledBooleantrueEscrito no arquivo, mas não aplicado: os pools de saque são registrados e utilizáveis independentemente de isto estar true ou não. Para impedir o uso de um pool, remova sua entrada das tabelas de saque que o referenciam.
eliteMobsLootLista de objetos[]Itens personalizados do EliteMobs que podem dropar
vanillaLootLista de objetos[]Itens vanilla do Minecraft que podem dropar

Entrada de Saque EliteMobs

eliteMobsLoot:
- filename: my_elite_item.yml
weight: 1.0
- filename: another_item.yml
weight: 0.5

O filename referencia uma configuração de item personalizado do EliteMobs. O weight determina a probabilidade relativa de drop entre todas as entradas no pool.

Entrada de Saque Vanilla

vanillaLoot:
- material: DIAMOND
weight: 1.0
- material: GOLD_INGOT
weight: 2.0

O material é um nome do enum Material do Bukkit. O weight funciona da mesma forma que para entradas de saque elite. Todas as entradas elite e vanilla em um pool competem em uma única seleção ponderada, então um pool sempre produz no máximo um item por rolagem. Itens vanilla sempre caem como uma unidade. Um material não reconhecido é ignorado com um aviso na inicialização, e um nome de arquivo em eliteMobsLoot que não corresponda a um item personalizado do EliteMobs registra um aviso no momento do drop e não produz nada.

Os pesos podem ser escritos como decimais (0.5), números inteiros (2) ou strings entre aspas ("1.5"); os três são lidos corretamente. Um weight ausente ou não numérico é tratado como 0 e registra um aviso.

Saque de Recipientes (Baús e Barris)

Durante uma partida, baús e barris são colocados pelo BetterStructures quando a partida começa. Quando um jogador clica com o botão direito em um baú ou barril:

  1. O recipiente vanilla nunca abre — a interação é cancelada e substituída pelo fluxo de saque do Extractioncraft.
  2. O jogador deve ficar perfeitamente parado por 3 segundos. Uma contagem regressiva é mostrada como subtítulo.
  3. Qualquer movimento cancela a interação ("Don't move while opening a container!"). Um jogador só pode estar abrindo um recipiente de cada vez.
  4. Em caso de sucesso, uma tabela de saque é selecionada da lista chestLootTables ou barrelLootTables do pacote de conteúdo (seleção ponderada).
  5. As entradas da tabela de saque selecionada rolam independentemente, e os itens resultantes caem no chão na localização do recipiente.
  6. O recipiente é destruído após o saque (substituído por ar), então cada recipiente só pode ser saqueado uma vez.

Os recipientes exibem partículas de portal a cada 10 ticks enquanto estão ativos em uma partida, tornando-os visíveis para os jogadores.

O saque de recipientes é sempre gerado no nível 10

Os drops de recipientes passam um nível fixo de 10 ao EliteMobs, independentemente do pacote de conteúdo usado pela partida. A faixa de níveis anunciada pelos pacotes Kobold Mines vem dos mobs do mapa, não do saque de baús e barris.

Saque de Morte de Mobs

Quando um EliteMob morre durante uma partida, o plugin lê o dado personalizado betterstructures:spawnpool no mob. Mobs sem esse dado (qualquer coisa que não tenha sido invocada pelo gerador de módulos do BetterStructures) nunca geram saque do Extractioncraft.

Todas as tabelas de saque cuja lista spawnPools corresponda ao pool de spawn do mob geram drops na localização da morte — isto não é uma escolha ponderada, então listar o mesmo pool de spawn em três tabelas de saque lhe dá três conjuntos independentes de rolagens. O nível do próprio mob é passado ao EliteMobs para geração de itens apropriados ao nível.

O nível do mob em si é decidido pelo BetterStructures quando o mapa é gerado: chefes mais próximos do centro do mapa nascem perto do nível máximo do seu pool de spawn, e chefes nas bordas nascem perto do mínimo. A borda do mundo encolhendo em direção ao centro, portanto, empurra os jogadores para território progressivamente mais difícil — e mais recompensador.

Comportamento de Itens na Saída

  • Todo jogador que sai de uma partida, com sucesso ou não, tem seu inventário vinculado à alma primeiro (usando o encantamento soulbind do EliteMobs), então tudo o que ele leva embora fica vinculado a ele.
  • Jogadores que extraem com sucesso mantêm todos os itens.
  • Jogadores que falham na extração perdem todos os itens do inventário quando deleteItemsOnFailToExtract é true no config.yml (o padrão). Isso abrange sair com /exc leave, desconectar e sofrer dano letal.
  • Nada é apagado enquanto a partida ainda está em espera ou em contagem regressiva; a regra só se aplica depois que a partida está ao vivo.