Sistema de saque do Extractioncraft
O saque do Extractioncraft organiza-se em três níveis: os pacotes de conteúdo referenciam tabelas de saque, estas referenciam conjuntos de saque, e os conjuntos definem os itens que podem ser obtidos.
Visão geral
Content Package
-> chestLootTables / barrelLootTables (weighted selection)
-> Loot Table
-> lootTable entries (each has a chance to roll)
-> Loot Pool
-> eliteMobsLoot / vanillaLoot (weighted selection of one item)
Tabelas de saque
As configurações das tabelas ficam em loot_tables/. Cada ficheiro lista entradas de conjuntos de saque, cada uma com uma probabilidade independente de produzir um item.
| Chave | Tipo | Predefinição | Descrição |
|---|---|---|---|
isEnabled | Booleano | true | Defina como false para impedir que a tabela produza qualquer saque. Os contentores ignoram uma tabela desativada ao escolher uma, e as mortes de mobs também a ignoram. |
spawnPools | Lista de textos | [] | Nomes de conjuntos de aparecimento BetterStructures. Quando morre um EliteMob associado a um conjunto correspondente, esta tabela gera o seu saque. A comparação ignora maiúsculas/minúsculas e o sufixo .yml; kobold_miner_pool e Kobold_Miner_Pool.yml correspondem ao mesmo conjunto. |
lootTable | Lista de objetos | [] | Cada entrada indica um ficheiro de conjunto de saque e uma chance de 0.0 a 1.0 |
Formato das entradas da tabela
lootTable:
- filename: my_loot_pool.yml
chance: 0.5
- filename: another_pool.yml
chance: 0.2
Cada entrada é sorteada de forma independente. Uma chance de 0.5 dá 50% de probabilidade de esse conjunto produzir um item. chance pode ser um número ou um texto numérico. Uma entrada cujo ficheiro de conjunto não exista em loot_pools/, ou cuja chance esteja em falta ou fora do intervalo de 0 a 1, é ignorada com um aviso no arranque; as restantes entradas continuam a carregar.
Conjuntos de saque
As configurações dos conjuntos ficam em loot_pools/. Cada conjunto define os itens possíveis. Quando é sorteado, escolhe um item segundo os pesos relativos.
| Chave | Tipo | Predefinição | Descrição |
|---|---|---|---|
isEnabled | Booleano | true | Com false, as entradas das tabelas de saque que referenciam este conjunto nunca o sorteiam. |
eliteMobsLoot | Lista de objetos | [] | Itens personalizados EliteMobs que podem sair |
vanillaLoot | Lista de objetos | [] | Itens normais do Minecraft que podem sair |
Entrada de saque EliteMobs
eliteMobsLoot:
- filename: my_elite_item.yml
weight: 1.0
- filename: another_item.yml
weight: 0.5
filename referencia a configuração de um item personalizado EliteMobs. weight determina a sua probabilidade relativa entre todas as entradas do conjunto.
Alguns itens personalizados são excluídos antes de se fazer a escolha:
- Um item com
permissionsó pode sair de baús e barris, e apenas para um jogador que tenha essa permissão. O item que cai pertence a esse jogador, pelo que mais ninguém o pode apanhar. As mortes de mobs nunca deixam cair itens bloqueados por permissão. - Um item com
itemType: CLASS_LOOTsó é elegível quando o saque de classe do EliteMobs o permite para a dificuldade e a categoria desse saque. O saque de classe cai sem vínculo.
Entrada de saque vanilla
vanillaLoot:
- material: DIAMOND
weight: 1.0
- material: GOLD_INGOT
weight: 2.0
material é um nome do enum Bukkit Material. weight funciona como nas entradas EliteMobs. Todas as entradas EliteMobs e vanilla concorrem no mesmo sorteio ponderado, pelo que cada sorteio produz no máximo um item. Os itens vanilla saem sempre numa única unidade. Um material desconhecido, que não seja um item ou que seja ar é ignorado com um aviso no arranque. Um filename de eliteMobsLoot sem um item personalizado correspondente gera um aviso no momento do saque e não produz nada.
Os pesos aceitam decimais (0.5), inteiros (2) ou textos numéricos ("1.5") e têm de ser superiores a 0. Uma entrada com peso em falta, zero, negativo ou não numérico, ou sem filename ou material, é ignorada com um aviso no arranque; o resto do conjunto continua a carregar.
Saque de contentores: baús e barris
Quando a partida começa, o BetterStructures coloca um baú ou barril em cada marcador de contentor do mapa. Quando um jogador da partida clica com o botão direito num baú ou barril:
- O inventário vanilla não abre. A interação é cancelada e substituída pelo processo de saque Extractioncraft, que só funciona enquanto a partida está em curso e apenas para contentores colocados pela partida.
- O jogador deve ficar completamente imóvel durante 3 segundos. Um subtítulo apresenta a contagem decrescente.
- Qualquer alteração de posição cancela a interação ("Don't move while opening a container!"). É permitido olhar à volta sem sair do lugar. Cada jogador só pode abrir um contentor de cada vez, e cada contentor só pode ser aberto por um jogador de cada vez.
- A tabela já foi escolhida da lista ponderada
chestLootTablesoubarrelLootTablesdo pacote no início da interação. Ao concluir, gera o saque. - O contentor é substituído por ar e cada entrada da tabela escolhida é sorteada de forma independente. Os itens resultantes caem no chão na posição do contentor.
Os contentores ativos numa partida emitem partículas de portal a cada 10 ticks para serem visíveis aos jogadores.
O saque dos contentores usa o contentLevel do pacote (predefinição 10) como nível dos itens EliteMobs. A dificuldade do saque de classe vem da zona onde o contentor se encontra, conforme descrito em saque de mobs mortos, e a categoria é a mais baixa, trash.
Saque de mobs mortos
Quando um EliteMob morre no mundo de uma partida Extractioncraft em curso, o plugin lê o dado personalizado betterstructures:spawnpool que o BetterStructures associa aos bosses que gera. Mobs sem esse dado, e mortes fora do mundo de uma partida em curso, nunca geram saque Extractioncraft.
Todas as tabelas ativas cuja lista spawnPools corresponda ao conjunto do mob geram saque na posição da morte. Não se escolhe uma tabela por peso: indicar o mesmo conjunto em três tabelas produz três séries independentes de sorteios. O nível do próprio mob é transmitido ao EliteMobs para gerar itens adequados, juntamente com a dificuldade e a categoria de saque de classe do boss.
Quando a partida começa, o BetterStructures gera cada boss da instância no maxLevel do seu conjunto de aparecimento. Cada um desses bosses recebe também a dificuldade da zona onde apareceu. As zonas são faixas quadradas em torno do centro do mapa:
| Zona | Distância ao centro em qualquer eixo | Dificuldade predefinida do EliteMobs |
|---|---|---|
2 | Menos de um sexto da largura do mapa | Mythic |
1 | Menos de um terço da largura do mapa | Hard |
0 | O resto do mapa | Normal |
Os nomes das dificuldades vêm do mapeamento difficultyIds nas definições de saque de classe do EliteMobs. O EliteMobs também aplica poderes de boss limitados por difficultyID apenas nas zonas correspondentes, e os bosses de Kobold Mines usam-nos. O limite do mundo, ao encolher para o centro, empurra assim os jogadores para as zonas Hard e Mythic.
Comportamento dos itens à saída
- Uma extração bem-sucedida conserva todos os itens. O Extractioncraft vincula ao jogador todos os itens ainda não vinculados do inventário, do cursor e da grelha de fabrico; os itens já vinculados mantêm o seu proprietário. A vinculação só acontece com o encantamento Soulbind do EliteMobs ativo.
- Desligar o servidor ou recarregar o plugin durante uma partida em curso conta como uma extração.
- Qualquer outra saída de uma partida em curso limpa o inventário, o cursor e a grelha de fabrico quando
deleteItemsOnFailToExtractétrue(a predefinição). Comfalse, esses itens são vinculados em vez disso. - Sair enquanto a partida espera ou está em contagem decrescente deixa o inventário intacto. Consulte o decurso das partidas para todas as formas de sair.