Integração com Vault
O EliteMobs pode usar um fornecedor de economia Vault em vez do saldo interno. O plugin compila com a VaultAPI 1.7; instale plugins Vault e de economia compatíveis no servidor.
Efeitos na progressão
A progressão do EliteMobs combina competências de armas e armadura, loot e treino opcional de classes. Os jogadores normalmente ganham equipamento e moeda através do combate do EliteMobs. Introduzir dinheiro de outra economia altera a rapidez com que podem comprar equipamento e serviços.
Reveja os preços das lojas, valores de revenda do loot e serviços pagos antes de ligar uma economia externa.
Os requisitos separados de competências continuam a aplicar-se quando ativados. O Vault não dá XP de competências, não desbloqueia classes nem ignora provas dos treinadores. Se ativar a integração, ajuste a economia aos preços das lojas e serviços do EliteMobs para que os rendimentos externos não tornem irrelevantes as recompensas do combate.
Requisitos
Para usar a integração com o Vault, tem de ter:
- Um plugin Vault ativado e compatível com as chamadas VaultAPI do EliteMobs
- Um plugin de economia que registe um serviço Vault
Economy - Ambos os plugins corretamente configurados e em funcionamento
O EliteMobs deteta o Vault ativado durante a inicialização e seleciona o respetivo caminho de economia quando useVault é true. A deteção, por si só, não prova que tenha encontrado um fornecedor de economia.
Configuração
Para ativar a integração com o Vault:
- Garanta que o plugin Vault está instalado no seu servidor
- Garanta que o plugin de economia regista o fornecedor Vault antes de o EliteMobs inicializar
- Abra o
EconomySettings.ymlna pasta do plugin EliteMobs - Defina
useVault: true - Reinicie o servidor
Exemplo de configuração:
# Whether to use Vault for the economy instead of the built-in system.
# NOT RECOMMENDED! See: https://wiki.nightbreak.io/EliteMobs/vault
useVault: false
Como Funciona
Quando a integração com o Vault está ativa com um fornecedor funcional:
- As operações futuras usam o fornecedor de economia do Vault. Os Elite Coins existentes na base de dados do EliteMobs não são convertidos nem transferidos automaticamente.
- Os jogadores ganham a moeda da sua economia em vez de Elite Coins ao matar Elite Mobs
- As transações das lojas e outros serviços que cobram moeda usam a economia do servidor. As reparações continuam a consumir sucata.
- O Vault gere o saldo monetário; o EliteMobs continua a registar a dívida de jogo e a descontá-la dos rendimentos recebidos no EliteMobs antes de depositar o restante.
Operações de moeda:
- Depósitos: O dinheiro é adicionado ao saldo Vault do jogador
- Levantamentos: O dinheiro é removido do saldo Vault do jogador
- Verificações de saldo: Consulta o saldo Vault do jogador
- Definição direta de saldo: DESATIVADA por segurança (use o seu plugin de economia)
Na inicialização, o Vault ativado com useVault: true define VAULT_ENABLED antes de procurar o fornecedor. Um fornecedor em falta pode, por isso, deixar o modo Vault ativo sem uma economia utilizável. As consultas de saldo dão então um aviso e devolvem zero; os depósitos ou levantamentos normais podem falhar, enquanto as funções de compra com verificação devolvem uma falha. Se o Vault estiver ausente ou desativado num arranque novo, mantém-se a economia interna. Uma exceção capturada durante a configuração do Vault também desativa esse modo.
Depois de o modo Vault estar ativo, não há mudança automática para a economia interna nem nova ligação ao fornecedor durante a execução. Corrija o registo do fornecedor e reinicie antes de aceitar transações. currencyName continua a ser uma definição visual separada do EliteMobs; ativar o Vault não a renomeia automaticamente.
Funcionalidades de Segurança
Por razões de segurança, o EliteMobs NÃO suporta definir diretamente o saldo de moeda de um jogador através do Vault. Qualquer tentativa de o fazer será bloqueada e registada. Use os comandos do seu plugin de economia para definir saldos diretamente, se necessário.
Exemplo de Cenário
Suponha que uma recompensa paga 100 moedas e que o jogador não tem dívida de jogo. É um valor ilustrativo, não um pagamento fixo por cada mob de nível 50.
Sem o Vault:
- O jogador mata um Elite Mob de nível 50
- Recebe 100 Elite Coins (guardados na base de dados do EliteMobs)
- Pode gastar Elite Coins nas lojas e serviços do EliteMobs
Com o Vault:
- O jogador mata um Elite Mob de nível 50
- Recebe 100 [moeda da sua economia] (guardados no Vault/plugin de economia)
- Pode gastar dinheiro no EliteMobs e noutros sistemas que usem esse fornecedor
- As transferências de outros jogadores dependem das funcionalidades do plugin de economia
- A economia é unificada entre todos os plugins
Os rendimentos externos podem acelerar o acesso a equipamento e serviços. Os requisitos de competências e os desbloqueios de classes continuam a aplicar-se de forma independente.
Resolução de Problemas
Se a integração com o Vault estiver ativada mas não funcionar:
-
Verifique os registos do servidor à procura de: "Vault detected." (numa linha de registo do EliteMobs)
- Se faltar: o plugin Vault não está instalado ou não está a carregar
-
Procure pelo aviso: "Vault preference detected. This is not the recommended setting."
- Isto é esperado quando a integração com o Vault está ativada — é um lembrete, não um erro
- Se o Vault continuar a não funcionar, garanta que o seu plugin de economia está corretamente registado junto do Vault
-
Procure por: "Player tried to check currency when they had no economy entry"
- É um aviso genérico de referência nula, não uma prova de falta de conta do jogador. O próprio fornecedor de economia guardado pode ser nulo.
- Verifique se o fornecedor estava registado antes da inicialização do EliteMobs e depois consulte a gestão de contas e os registos do plugin de economia.
-
Se estiver ativado mas o EliteMobs continuar a usar Elite Coins:
- Verifique que a chave de configuração é exatamente:
useVault: true - Reinicie o servidor após alterar a configuração
- Verifique que existe um plugin de economia registado junto do Vault
- Verifique que a chave de configuração é exatamente:
-
Se os saldos mostrarem zero ou as transações falharem apesar da mensagem de deteção:
- Confirme que existia um fornecedor disponível na inicialização; a mensagem só confirma o próprio Vault.
- Restabeleça o fornecedor e reinicie. O EliteMobs não se liga automaticamente a um fornecedor recém-registado.
Para Programadores
Se estiver a desenvolver um addon ou uma integração:
- Seleção do Vault:
VaultCompatibility.VAULT_ENABLEDnão prova a disponibilidade do fornecedor;getEconomy()pode ser nulo - API de economia: Use os métodos de
EconomyHandler(não diretamente oVaultCompatibility) - Operações suportadas: adicionar, subtrair, consultar, crédito com verificação, levantamento com verificação para compras e reembolso de compras (definir saldo está desativado)
- Todas as alterações de saldo têm de correr na thread do servidor e para um jogador cujos dados do EliteMobs estejam carregados (
EconomyHandler.isReady); caso contrário, lançamIllegalStateException. tryCredit,tryWithdrawerefundPaymentlançamIllegalArgumentExceptionpara um montante negativo ou não finito, e devolvemfalsequando o Vault rejeita a transação ou já está em curso outra alteração para esse jogador.tryCreditcobra primeiro a dívida de jogo e só guarda a nova dívida depois de o Vault aceitar o depósito;refundPaymentnão cobra a dívida.addCurrencyesubtractCurrencylançamIllegalStateExceptionquando o fornecedor rejeita a alteração, em vez de falharem silenciosamente.- Precisão da moeda: o sistema interno usa 2 casas decimais
- Sem recurso em tempo de execução: quando
VAULT_ENABLEDé verdadeiro, oEconomyHandlerdelega sempre no Vault; não existe qualquer reversão automática para a economia interna
Localização do código-fonte:
- src/main/java/com/magmaguy/elitemobs/economy/VaultCompatibility.java
- src/main/java/com/magmaguy/elitemobs/economy/EconomyHandler.java
O EliteMobs usa a VaultAPI 1.7 como dependência apenas de compilação. O JAR do plugin Vault tem de estar presente no servidor em tempo de execução.