Pular para o conteúdo principal

O que é um arquivo de tesouro?

Arquivos de tesouro determinam as tabelas de saque para cofres do BetterStructures. Geralmente são atribuídos a [geradores](../Better Structures/creating_generators.md#treasurefilename), mas também podem ser definidos no nível de uma [configuração de construção individual](../Better Structures/creating_structures.md#treasurefile).

Essas tabelas de saque são bastante poderosas, mas também requerem conhecimento de alguns conceitos estatísticos básicos para entender.

Leia sobre esses conceitos aqui, o resto da página assume que você os compreende!

Probabilidade ponderada

O BetterStructures e o EliteMobs frequentemente usam o conceito de probabilidade ponderada. Isso serve para resolver um problema simples: como você pode definir a chance de escolher um item de uma lista de itens potencialmente infinitos?

A probabilidade ponderada resolve essa questão ao dar a cada item um peso. Se você tiver 100 itens e cada um tiver um peso de 1, então todos têm uma chance igual - 1% - de serem escolhidos. Se você adicionar mais um item, totalizando 101 itens, e der a esse último item uma chance de 1, todos os itens ainda têm a mesma chance - ~0.99% - de serem escolhidos. Se você der ao último item um peso de 2, a chance dele ser escolhido aumenta - o peso total novo é 102, o último elemento tem um peso de 2 e 100/102 = ~0.98%, então 0.98%+0.98% = 1.96% de chance de ser escolhido. Se você der ao último item um peso de 100, o novo peso é 200, e como metade desse peso é o seu novo item, seu novo item tem 50% de chance de ser escolhido.

Como você pode ver, isso é bom para usar quando você pode ter listas de centenas de coisas para aleatorizar.

Distribuição gaussiana

Uma distribuição gaussiana é uma função matemática em forma de sino.

Você pode estar se perguntando como isso é relevante para o sistema de loot. Uma coisa que o BetterStructures tem que decidir ao definir o loot nos cofres é exatamente quanto saque aparece nesses cofres. A quantidade deve ser consistentemente em torno de um número específico, mas idealmente não tão previsível que abrir um baú possa se tornar menos emocionante.

Para alcançar esse efeito semi-aleatório, a distribuição gaussiana é usada para aleatorizar quantos itens são escolhidos. Uma vez que essa quantidade é escolhida, a probabilidade ponderada escolhe um elemento da tabela de raridade aleatoriamente e levando os pesos em consideração.

Então, como funciona a distribuição gaussiana?

Felizmente, você não precisa se preocupar com como a matemática por trás disso funciona, e pode se concentrar nas duas configurações que a modificam: média e desvio padrão.

Média

Simplificando, mean define o meio da curva gaussiana, o que significa que define a quantidade mais provável de itens que aparecerão em um cofre. Essencialmente, se você quer que seus cofres geralmente tenham 5 itens, defina sua média como 5.

Desvio padrão

Imagine que o número médio de itens em um cofre é 5. O standard deviation ajuda a decidir o quanto esse número pode mudar de um baú para outro.

Pequeno Standard Deviation (por exemplo, 1): Isso significa que a maioria dos cofres terá itens muito próximos da média, como 4, 5 ou 6 itens. É uma experiência mais previsível. Por exemplo, se um baú tem um desvio padrão de 1, você pode esperar que quase todos os cofres tenham entre 4 a 6 itens.

Médio Standard Deviation (por exemplo, 2): Aqui, há mais variedade. Os cofres podem ter de 3 a 7 itens. Embora 5 itens ainda sejam comuns, não é incomum encontrar cofres com um pouco mais ou menos. Então, com um desvio padrão de 2, você pode ocasionalmente encontrar um baú com apenas 3 itens, ou se tiver sorte, um com 7 itens.

Grande Standard Deviation (por exemplo, 3 ou mais): Agora as coisas ficam realmente surpreendentes! Os cofres podem ter apenas 2 itens ou até 8 ou mais. Isso significa que você pode encontrar um baú com apenas alguns itens, mas também há uma chance de encontrar um baú carregado de tesouros. Por exemplo, com um desvio padrão de 3, um baú pode ter de 2 a 8 itens, tornando cada abertura de cofre uma aposta emocionante.

A média padrão é 4, e o desvio padrão padrão é 3.


Detalhes de ImplementaçãoEntender como o sistema de tesouro funciona internamente pode ajudá-lo a configurá-lo mais efetivamente:Itens Mínimos GarantidosO sistema garante que pelo menos um item sempre aparecerá em um cofre, mesmo se o cálculo de distribuição Gaussiana resultaria em zero itens. Isso evita que os jogadores encontrem cofres completamente vazios.Colocação Aleatória de SlotsOs itens são colocados em slots aleatórios dentro do cofre em vez de serem preenchidos sequencialmente a partir do primeiro slot. Isso cria uma distribuição de saque mais natural que parece menos artificial.Tratamento de ErrosSe um material de item não existir na sua versão do Minecraft (por exemplo, usando uma configuração mais antiga em uma versão mais nova onde os itens foram renomeados), esse item será silenciosamente ignorado em vez de causar erros. Encantamentos inválidos mostrarão um aviso uma vez no console, depois serão suprimidos nas ocorrências subsequentes para evitar spam no log.***

Formato especial

Os arquivos de tesouro têm um formato especial que se parece com isto:

isEnabled: true
mean: 4.0
standardDeviation: 3.0
items:
common:
weight: 60
items:
- amount: 1-1
material: STONE_PICKAXE
procedurallyGenerateEnchantments: true
weight: 1.0
- amount: 1-1
material: STONE_SHOVEL
procedurallyGenerateEnchantments: true
weight: 1.0
rare:
weight: 30
items:
- amount: 1-1
material: ANVIL
weight: 6.0
- amount: 1-6
material: BEETROOT
weight: 6.0
epic:
weight: 10
items:
- amount: 2-10
material: DIAMOND
weight: 1.0
- amount: 1-1
material: DIAMOND_AXE
weight: 6.0
procedurallyGeneratedItemSettings:
golden_sword:
bane_of_arthropods:
minLevel: 1
maxLevel: 5
chance: 0.2
looting:
minLevel: 1
maxLevel: 3
chance: 0.2

Nota: esta é uma versão muito reduzida do arquivo, o arquivo real tem 2599 linhas, pois cobre muito mais loot e todos os encantamentos possíveis.

isEnabled

KeyValuesDefault
isEnabledBooleantrue

mean

KeyValuesDefault
meanDouble4

Define a mean. Leia os detalhes sobre isso aqui.


standardDeviation

KeyValuesDefault
standardDeviationDouble3

Define o standardDeviation. Leia os detalhes sobre isso aqui.


items

É aqui que fica complicado, pois muitas das opções podem ser definidas pelos administradores. Vamos dar uma olhada mais de perto no exemplo do arquivo de configuração anterior.

items:
common:
weight: 60
items:
- amount: 1-1
material: STONE_PICKAXE
procedurallyGenerateEnchantments: true
weight: 1.0
- amount: 1-1
material: STONE_SHOVEL
procedurallyGenerateEnchantments: true
weight: 1.0
rare:
weight: 30
items:
- amount: 1-1
material: ANVIL
weight: 6.0
- amount: 1-6
material: BEETROOT
weight: 6.0

Aqui, você pode ver que sob a chave de configuração items temos um mapa com common e rare. Essas são rarities!


rarities

As raridades não têm um nome fixo. Você pode adicioná-las ou removê-las, e personalizá-las o quanto quiser, desde que use o mesmo formato.

Note que o que torna essas tabelas de raridade mais ou menos raras é o weight da tabela de loot!

Por padrão:

  • common tem um weight padrão de 60
  • rare tem um weight padrão de 30
  • epic tem um weight padrão de 10

Tornando itens comuns 6x mais prováveis de dropar do que itens épicos. Você pode ler mais sobre weights aqui!

Além do peso, cada tabela de raridade tem sua própria lista de items.


rarity items

Os itens de raridade são uma lista de mapa que lista todos os itens que a tabela de raridade possui.

Esses itens têm as seguintes configurações:

KeyValuesDefault
amountmin-max Integervariável
materialMaterialvariável
procedurallyGenerateEnchantmentsBooleanvariável
weightDoublevariável

amount


Define a quantidade a dropar. Isso é expresso como um intervalo da seguinte forma amount: MIN-MAX. Como exemplo, para dropar entre 1 a 5 itens: amount: 1-5.

material

Define o material usando os nomes da API Spigot do item que pode dropar.


Caso especial - serialized

Ao usar o comando lootify, em vez de um material, o lootify fornecerá uma configuração serialized. Isso é gerado automaticamente pelo plugin e não deve ser gerado manualmente. Está em um formato que não é legível por humanos.


weight

Define o peso para a chance ponderada. Mais sobre isso aqui.


procedurallyGenerateItems

Define se o item deve ser gerado proceduralmente com base nas configurações de procedurallyGeneratedItemSettings. Note que, com base nas configurações, isso pode resultar em um item sendo gerado sem encantamentos de qualquer forma.

procedurallyGeneratedItemSettings

Vamos dar outra olhada no nosso exemplo de arquivo de configuração:

procedurallyGeneratedItemSettings:
golden_sword:
bane_of_arthropods:
minLevel: 1
maxLevel: 5
chance: 0.2
looting:
minLevel: 1
maxLevel: 3
chance: 0.2

Como você pode ver, este arquivo lista os tipos de materiais, seguidos por encantamentos e então seguidos por níveis mínimos e máximos e uma chance.

Note que você não pode adicionar materiais personalizados de outros plugins nessas configurações, e você provavelmente não conseguirá adicionar encantamentos personalizados de outros plugins, a menos que o autor explicitamente diga que tornou seu sistema compatível.

Quanto às configurações de encantamento:

KeyValuesDefault
minLevelIntegervariável
maxLevelIntegervariável
chanceChancevariável

minLevel

Define o nível mínimo de encantamento.


maxLevel

Define o nível máximo de encantamento.


chance

Define a probabilidade do encantamento ser aplicado, como um valor decimal entre 0,0 (nunca) e 1,0 (sempre). Por exemplo, um valor de 0,2 significa uma chance de 20%. Isso usa uma verificação de probabilidade simples, não probabilidade ponderada como o sistema de seleção de itens.


Solução de Problemas

Itens não aparecendo em cofres

  • Verifique se o arquivo de tesouro tem isEnabled: true
  • Verifique o console para avisos sobre materiais ou itens inválidos
  • Certifique-se de que o MMOItems está instalado se estiver usando itens customizados
  • Materiais devem usar nomes exatos da API Spigot

Encantamentos não sendo aplicados

  • Defina procedurallyGenerateEnchantments: true no item
  • Verifique se os nomes dos encantamentos correspondem às chaves nomeadas do Minecraft
  • Verifique se os níveis mínimo/máximo estão dentro dos intervalos válidos para esse encantamento
  • Lembre-se de que valores de chance são probabilidades (0.2 = 20%), não garantias

Encantamentos de plugin customizado não funcionando

Apenas encantamentos customizados que explicitamente suportam integração com BetterStructures funcionarão. Verifique com o autor do plugin de encantamento sobre compatibilidade. Encantamentos inválidos mostrarão um aviso no console sugerindo essa possibilidade.

Cofres vazios aparecendo

Isso não deveria acontecer pois o sistema garante pelo menos um item. Se você estiver vendo cofres vazios, verifique:

  • O cofre está sendo preenchido por BetterStructures (não por outro plugin)
  • Todos os itens no seu arquivo de tesouro são válidos (verifique avisos do console)
  • O arquivo de tesouro está realmente sendo carregado (verifique logs de inicialização)