Loja de Mobília do FreeMinecraftModels
O FreeMinecraftModels vem com uma loja opcional baseada em Vault que permite jogadores comprarem props craftáveis com moeda do jogo. A loja está desabilitada por padrão — ela só se registra quando explicitamente habilitada e um provedor de economia Vault estiver disponível.
Configuração Rápida
- Instale o Vault e um provedor de economia compatível com Vault (EssentialsX, CMI, etc.).
- Inicie o servidor uma vez para que
plugins/FreeMinecraftModels/shop_config.ymlseja gerado. - Defina
enabled: trueemshop_config.yml. - Reinicie o servidor (a loja se registra durante a inicialização).
- Execute
/fmm shopno jogo para confirmar que o menu abre.
Se qualquer uma dessas pré-condições estiver faltando, o comando /fmm shop permanece não registrado e jogadores veem um erro de "comando não encontrado" em vez da mensagem configurável de desabilitação.
Como Funciona
- A loja lê receitas de
plugins/FreeMinecraftModels/recipes/. - Toda receita com
isEnabled: trueeshopEnabled: trueé listada na loja. - Cada entrada mostra o item de saída da receita (o item de papel de colocação do prop) com duas linhas de lore adicionadas: uma linha
Price:e um promptClick to purchase. - Clicar em uma entrada chama
PurchaseHandler, que verifica o saldo do jogador via Vault, retira o preço e dá o item de colocação ao jogador. Itens que não cabem no inventário são dropados aos pés do jogador.
Permissões
| Permissão | Padrão | Descrição |
|---|---|---|
freeminecraftmodels.shop | true | Necessária para abrir a loja. O padrão é true para que todos os jogadores possam navegar |
A permissão sozinha não habilita a loja — enabled: true em shop_config.yml e um provedor de economia funcional ainda são necessários.
shop_config.yml
Veja a página de Configuração para a referência completa de chaves. As chaves principais são:
enabled— toggle mestre (padrãofalse)defaultPrice— escrito em arquivos de receita que não definem seu próprioshopPricemenuTitle,priceLoreFormat,clickToBuyLoreFormat— estilo visualmessages.*— cinco mensagens de feedback customizáveis
Todas as strings de mensagem suportam códigos de cor & e os placeholders listados na referência de configuração.
Campos por Receita
Cada receita em plugins/FreeMinecraftModels/recipes/<model_id>.yml carrega dois campos específicos de loja:
isEnabled: true
model_id: "wooden_chair"
shape:
- "L L"
- "LLL"
- "L L"
ingredients:
L: OAK_LOG
shopEnabled: true
shopPrice: 250.0
| Campo | Padrão | Comportamento |
|---|---|---|
shopEnabled | true | Quando false, a receita ainda é craftável mas nunca aparece em /fmm shop |
shopPrice | defaultPrice de shop_config.yml | Custo em moeda Vault quando o jogador clica no item |
O construtor /fmm craftify escreve ambos os campos ao salvar, então ajustar o preço é apenas uma edição de texto no arquivo de receita seguido de /fmm reload.
Resultados de Compra
O PurchaseHandler reconhece cinco resultados. Cada um mapeia para uma mensagem configurável em shop_config.yml:
| Resultado | Disparado quando | Chave de mensagem |
|---|---|---|
SUCCESS | Retirada bem-sucedida e o item coube no inventário | messages.purchaseSuccess |
SUCCESS_WITH_OVERFLOW | Retirada bem-sucedida mas o item teve de ser dropado aos pés do jogador | messages.purchaseSuccess + messages.inventoryFull |
INSUFFICIENT_FUNDS | Saldo do jogador abaixo do preço, ou o provedor de economia subjacente rejeitou a retirada | messages.insufficientFunds |
NOT_FOR_SALE | Receita está desabilitada ou shopEnabled: false | messages.itemNotForSale |
SHOP_DISABLED | Forçadamente desabilitada em runtime (ex.: provedor de economia foi embora) | messages.shopDisabled |
Solução de Problemas
/fmm shop não existe.
A loja não está registrada. Verifique todos os três:
- Vault está instalado
- Um provedor de economia está registrado (rode
/balanceou/ecopara confirmar que algum está respondendo) enabled: trueemshop_config.yml
Então reinicie o servidor. O comando só se registra na inicialização.
Itens que eu espero ver estão faltando no menu.
Abra o arquivo de receita em plugins/FreeMinecraftModels/recipes/. Verifique que tanto isEnabled quanto shopEnabled estão como true. Execute /fmm reload após editar.
Jogadores são cobrados mas não recebem item.
Verifique o console do servidor por erros do Vault. O handler só consome moeda após uma verificação de saldo bem-sucedida, mas um provedor de economia downstream ainda pode falhar a retirada real — o handler captura isso e retorna INSUFFICIENT_FUNDS. Se a retirada teve sucesso e o item falhou ao spawnar, abra um bug report com o log de console completo em torno do clique.