Módulo Structures¶
O NexusPrism possui apenas o hook, não o conteúdo de loot. Ele escuta o
LootGenerateEvent do Paper e repassa para qualquer addon que tenha registrado um
StructureProvider — ele não fornece nenhuma tabela de loot de estruturas
própria.
Anteriormente este módulo tinha seu próprio sistema de tabelas de loot personalizadas em YAML (
structures/loot-tables.yml). Isso foi removido em 2026-08-06 — a parte de resolução de itens foi confirmada como não-funcional (sempre resolvia para nada), e qualquer conteúdo real de loot agora pertence aos plugins addon via a APIStructureProviderabaixo. VejaNexusATS/docs/planning/PLAN-presplit-core-infra.mdpara as notas de design se você estiver construindo um sistema substituto de tabelas de loot no NexusATS.
Como Funciona¶
- Um baú de estrutura gera loot (qualquer estrutura vanilla, ou uma modificada).
- O NexusPrism identifica a chave da tabela de loot (ex:
minecraft:chests/simple_dungeon). - Cada
StructureProviderregistrado é consultado por itens extras viagenerateLoot(...). - Os itens retornados pelos provedores são adicionados ao baú.
Nenhum comando, nenhum arquivo de configuração — a injeção de loot é totalmente passiva e inteiramente controlada por addons.
API de Addon¶
Plugins addon registram um provedor de loot personalizado via StructureRegistry
(io.github.otiger.nexusprism.api.structures):
public class MeuStructureProvider implements StructureProvider {
@Override
public String getProviderId() { return "meu_addon"; }
@Override
public List<ItemStack> generateLoot(String lootTableKey, Inventory inventory, Random rng) {
if (!handles(lootTableKey)) return List.of();
// ... calcule sua própria tabela de loot aqui ...
return List.of(meuItem);
}
}
// onEnable():
StructureRegistry.register(new MeuStructureProvider());
// onDisable():
StructureRegistry.unregister(provider);
generateLoot recebe a chave completa da tabela de loot, o inventário do baú (referência
somente-leitura), e um Random com seed — tudo o que é necessário para implementar qualquer
formato de tabela de loot personalizado de forma independente, sem que o NexusPrism precise
saber sobre isso.