Loja de mobília do FreeMinecraftModels
Para uma economia baseada apenas em compras, defina registerCraftingRecipes: false em config.yml e reinicie. As entradas válidas e ativadas continuam no catálogo da loja, mas são removidas do fabrico Bukkit e do menu de itens fabricáveis /fmm dos jogadores. A opção tem a predefinição true.
O FreeMinecraftModels inclui uma loja opcional integrada com o Vault, onde os jogadores podem comprar elementos decorativos fabricáveis com moeda do jogo. A loja está desativada por predefinição. Só é registada quando está explicitamente ativada e existe um fornecedor de economia compatível com o Vault.
Instalação rápida
- Instale o Vault e um fornecedor de economia compatível, como EssentialsX ou CMI.
- Inicie o servidor uma vez para gerar
plugins/FreeMinecraftModels/shop_config.yml. - Defina
enabled: trueemshop_config.yml. - Reinicie o servidor ou conclua
/fmm reloadcom sucesso; a loja é registada durante a inicialização completa. - Execute
/fmm shopno jogo e confirme que o menu abre.
Se faltar algum requisito, o subcomando da loja não é registado, pelo que a mensagem configurável de desativação não é usada através desse processamento. Se a loja estiver ativada mas faltar Vault ou o seu fornecedor de economia, o FMM regista um aviso específico.
Funcionamento
- A loja lê as receitas de
plugins/FreeMinecraftModels/recipes/. - Apresenta as receitas carregadas com
isEnabled: trueeshopEnabled: true. As receitas são carregadas como um único catálogo: um erro de sintaxe YAML, dois ficheiros de receita ativos para o mesmomodel_idou uma receita rejeitada pelo servidor fazem falhar o catálogo inteiro, em vez de descartar uma só entrada, por isso consulte a consola após/fmm reload. O registo continua a construir e validar a receita quando o fabrico está desativado. - Cada entrada usa um item de papel com o aspeto do modelo quando disponível, uma linha de preço, uma indicação de compra e o ID do modelo. As compras entregam o item de papel para colocar o modelo; este caminho não cria uma arma definida pelo seu
material:e encantamentos. - Ao clicar,
PurchaseHandlerconsulta o saldo através do Vault, desconta o preço e entrega o item de colocação. Os itens que não couberem no inventário caem aos pés do jogador.
Permissões
| Permissão | Predefinição | Descrição |
|---|---|---|
freeminecraftmodels.shop | true | Necessária para abrir a loja. O valor true permite o acesso a todos os jogadores |
A permissão, por si só, não ativa a loja. Continua a ser necessário definir enabled: true em shop_config.yml e ter um fornecedor de economia funcional.
shop_config.yml
Consulte a página de configuração para conhecer todas as opções. As principais são:
enabled: ativa ou desativa a loja; predefiniçãofalse.defaultPrice: valor usado nas receitas semshopPrice; um valor nulo ou negativo passa a100.0. Alterá-lo não substitui os preços já guardados nas receitas.menuTitle,priceLoreFormat,clickToBuyLoreFormat: apresentação visual.messages.*: cinco mensagens de resposta personalizáveis.
Todas as mensagens aceitam códigos de cor & e os marcadores indicados na referência de configuração.
Campos de cada receita
Cada receita em plugins/FreeMinecraftModels/recipes/<model_id>.yml tem dois campos específicos da loja:
isEnabled: true
model_id: "wooden_chair"
shape:
- "L L"
- "LLL"
- "L L"
ingredients:
L: OAK_LOG
shopEnabled: true
shopPrice: 250.0
| Campo | Predefinição | Comportamento |
|---|---|---|
shopEnabled | true | Com false, a receita fica oculta nas compras. O fabrico continua a depender da ativação da receita e de registerCraftingRecipes |
shopPrice | defaultPrice de shop_config.yml | Preço em moeda do Vault cobrado ao clicar no item |
O editor /fmm craftify escreve ambos os campos ao guardar. Para ajustar o preço, edite o ficheiro da receita e execute /fmm reload.
Resultados das compras
PurchaseHandler reconhece sete resultados. Os cinco primeiros estão associados a mensagens configuráveis em shop_config.yml; as duas mensagens de falha na entrega são fixas:
| Resultado | Quando ocorre | Chave da mensagem |
|---|---|---|
SUCCESS | O débito foi aceite e o item coube no inventário | messages.purchaseSuccess |
SUCCESS_WITH_OVERFLOW | O débito foi aceite, mas o item teve de cair aos pés do jogador | messages.purchaseSuccess + messages.inventoryFull |
INSUFFICIENT_FUNDS | O saldo é inferior ao preço ou o fornecedor de economia recusou o débito | messages.insufficientFunds |
NOT_FOR_SALE | A receita está desativada, tem shopEnabled: false ou o seu modelo não está carregado | messages.itemNotForSale |
SHOP_DISABLED | A configuração da loja ou a ligação Vault em cache indica que está desativada | messages.shopDisabled |
DELIVERY_FAILED_REFUNDED | O débito foi aceite, a entrega falhou e o montante não entregue foi reembolsado | Fixa: The item could not be delivered. The undelivered amount was refunded. |
DELIVERY_FAILED_REFUND_PENDING | O débito foi aceite, a entrega falhou e o reembolso falhou ou não foi possível determinar a quantidade entregue | Fixa: The purchase could not be settled. The shop has been disabled; contact an administrator to review your payment. |
Use valores shopPrice finitos e não negativos. O processamento da compra não os valida antes de chamar o Vault. Uma resposta de débito recusado devolve INSUFFICIENT_FUNDS, mas as exceções do fornecedor durante o débito não são capturadas aqui. A ligação guarda o fornecedor na inicialização e não deteta continuamente a sua remoção.
Se a entrega lançar uma exceção depois do débito, o FMM conta a parte da compra que chegou ao inventário ou ao chão e deposita de volta o preço do restante. Se esse reembolso falhar, ou se não for possível determinar a quantidade entregue, o FMM desativa a loja e regista [FMM Shop] Disabled after unresolved purchase com o UUID do jogador e o montante a rever. A loja permanece desativada até regularizar o pagamento e executar /fmm reload.
Resolução de problemas
/fmm shop não existe.
A loja não foi registada. Confirme os três pontos seguintes:
- O Vault está instalado.
- Existe um fornecedor de economia registado; execute
/balanceou/ecopara confirmar que responde. shop_config.ymlcontémenabled: true.
Depois reinicie o servidor ou conclua /fmm reload. Um recarregamento apenas de conteúdo iniciado pelo importador não reinicializa a configuração da loja nem regista o comando.
Faltam itens no menu.
Abra o ficheiro da receita em plugins/FreeMinecraftModels/recipes/ e confirme que isEnabled e shopEnabled estão ambos em true. Execute /fmm reload após editar.
Os jogadores pagam, mas não recebem o item.
Procure um item que tenha caído aos pés do jogador por falta de espaço e consulte a consola no momento do clique. Uma resposta de débito recusado devolve INSUFFICIENT_FUNDS; uma exceção do fornecedor durante o débito não é convertida nesse resultado. Uma entrega falhada regista [FMM Shop] Item delivery failed com a quantidade entregue e o reembolso. Se a consola mostrar [FMM Shop] Disabled after unresolved purchase, o reembolso não foi efetuado: regularize esse pagamento manualmente, conserve o registo da consola e a prova da transação do fornecedor e execute /fmm reload para voltar a ativar a loja.