Configuração e permissões do ResurrectionChest
Permissões
| Permissão | Função | Valor predefinido |
|---|---|---|
resurrectionchest.* | Dá aos administradores acesso ao comando base e aos subcomandos downloadall, forcereinstallcontent, downloadpluginupdate, applypluginupdate, reload e clear, e mostra-lhes o lembrete do primeiro arranque. setup e initialize verificam as suas próprias permissões, indicadas abaixo | op |
resurrectionchest.setup | Dá acesso a /resurrectionchest setup, recommendedplugins, downloadallcontent e updatecontent | op |
resurrectionchest.initialize | Abre o menu de configuração inicial com /resurrectionchest initialize | op |
resurrectionchest.use | Permite registar um baú e enviar para ele os itens perdidos ao morrer | true |
resurrectionchest.model.free | Permite usar os modelos gratuitos de baú FreeMinecraftModels do pacote Wooden Chest | true |
resurrectionchest.model.premium | Permite usar os modelos premium de baú FreeMinecraftModels do pacote Angelic Chest | op |
resurrectionchest.use controla o funcionamento do baú. As permissões de administrador e de modelo afetam apenas os comandos e os modelos opcionais, respetivamente.
Comandos
| Comando | Permissão | Função |
|---|---|---|
/resurrectionchest | resurrectionchest.* | Apresenta uma breve informação sobre como iniciar a configuração |
/resurrectionchest initialize | resurrectionchest.initialize | Abre a configuração inicial guiada. As opções de configuração recomendada, configuração manual e utilização do conteúdo atual marcam a configuração como concluída. |
/resurrectionchest setup | resurrectionchest.setup | Abre o menu para consultar e ativar pacotes de baús, verificar atualizações, ver plugins recomendados e ativar atualizações automáticas |
/resurrectionchest recommendedplugins | resurrectionchest.setup | Abre os plugins complementares recomendados para o ResurrectionChest, ou apresenta-os numa lista na consola: FreeMinecraftModels e ResourcePackManager |
/resurrectionchest downloadall | resurrectionchest.* | Descarrega a atualização do plugin, se existir, e todos os pacotes de conteúdo disponíveis no Nightbreak |
/resurrectionchest downloadallcontent | resurrectionchest.setup | Descarrega todos os pacotes de conteúdo disponíveis no Nightbreak |
/resurrectionchest updatecontent, também disponível como updateallcontent | resurrectionchest.setup | Volta a descarregar apenas os pacotes instalados que estejam desatualizados |
/resurrectionchest forcereinstallcontent <package|all> | resurrectionchest.* | Volta a descarregar um pacote ou todos os pacotes já descarregados, mesmo que a versão instalada esteja atualizada. Ao premir Tab, sugere os identificadores Nightbreak wooden-chest e angelic-chest, além de all. |
/resurrectionchest downloadpluginupdate | resurrectionchest.* | Descarrega uma atualização do ResurrectionChest, se existir |
/resurrectionchest applypluginupdate | resurrectionchest.* | Aplica uma atualização do plugin já descarregada sem reiniciar o servidor. Consulte Atualizações do plugin sem reinício |
/resurrectionchest reload | resurrectionchest.* | Recarrega o ResurrectionChest |
/resurrectionchest clear | resurrectionchest.* | Elimina todos os blocos acompanhados pelo ResurrectionChest, larga o inventário de cada baú e remove os blocos dos baús e das placas |
/resurrectionchestchangelog [dismiss|disable] | op, resurrectionchest.*, resurrectionchest.setup ou resurrectionchest.initialize | Mostra no jogo as notas de lançamento do ResurrectionChest ainda não lidas. Consulte Notificações de notas de lançamento |
As atualizações descarregadas do plugin ficam na pasta de atualizações do servidor. Entram em vigor após o próximo reinício, a menos que as aplique antes com /resurrectionchest applypluginupdate ou com a definição nightbreak.applyPluginUpdatesWithoutRestart.
As ferramentas MagmaCore incluídas também registam os comandos partilhados /nightbreak, /nightbreaklogin, /nightbreaklogout e /logify quando nenhum outro plugin tiver ocupado esses nomes. Consulte Tokens do Nightbreak.
Ficheiros do plugin
| Caminho | Função |
|---|---|
plugins/ResurrectionChest/config.yml | Todas as definições da tabela abaixo |
plugins/ResurrectionChest/playerData.yml | Uma entrada por baú registado, identificada pelo UUID do jogador, com a location do baú, o prefixo chestModel escolhido no registo e trackedBlockSchemaVersion, usado para migrar registos antigos para as marcas atuais de proprietário dos blocos |
plugins/ResurrectionChest/content_packages/ | Definições dos pacotes wooden_chest.yml / angelic_chest.yml, com isEnabled, name, description, version, folderName, nightbreakSlug, contentFilePrefixes e os campos opcionais downloadLink e category |
plugins/ResurrectionChest/nightbreak-changelogs.yml | Estado de leitura ou dispensa da caixa de entrada partilhada de notas de lançamento, acessível através de /resurrectionchestchangelog. Consulte Notificações de notas de lançamento. |
plugins/ResurrectionChest/imports/ | Pasta para importações manuais. O conteúdo é extraído no arranque, os modelos são encaminhados para o FreeMinecraftModels e este é atualizado automaticamente. Consulte Importações manuais e gestão no jogo. |
plugins/ResurrectionChest/resource_pack/ | Ícones de menu e tipos de letra partilhados do Nightbreak, exportados do MagmaCore incluído quando o plugin carrega e exportados novamente quando a cópia incluída muda |
Não edite playerData.yml manualmente enquanto o servidor estiver a funcionar. O ResurrectionChest reescreve-o sempre que regista ou remove um baú.
Definições disponíveis
O config.yml disponibiliza atualmente estas definições:
| Chave de configuração | Tipo | Valor predefinido |
|---|---|---|
setupDone | boolean | false |
nightbreak.autoDownloadPluginUpdates | boolean | false |
nightbreak.applyPluginUpdatesWithoutRestart | string | never |
Input name for death chest | string | [DeathChest] |
Enable high compatibility / low security mode for plugin conflicts | boolean | false |
Lower worn armor's durability on death | boolean | true |
Amount of durability to lower on death | int | 100 |
Chest creation message | string | &8[ResurrectionChest] &aYou've created your Death Chest! |
Chest destruction message | string | &8[ResurrectionChest] &cYour Death Chest has been destroyed! |
Chest missing message | string | &8[ResurrectionChest] &4Your Death Chest is missing! |
Chest protected region message | string | &8[ResurrectionChest] &cYou can't create a Death Chest here - this area is protected! |
Death message | string | &8[ResurrectionChest] &aYour items have been moved to your Death Chest! |
deathChestRemovedMessage | string | &8[ResurrectionChest] &cYour Death Chest has been removed! |
Enable particle effects for death chests | boolean | true |
Particle effect 1 | string | ENCHANTMENT_TABLE |
Particle effect 2 | string | ENCHANTMENT_TABLE |
Particle effect 3 | string | PORTAL |
blacklistedWorlds | list | [none] |
storeXP | boolean | true |
xpPercentageKept | double | 0.75 |
deathChestNameTag | string | $playerName's &fResurrection Chest |
freeSingleDeathChestModelName | string | resurrectionchest_free_single |
freeDoubleDeathChestModelName | string | resurrectionchest_free_double |
premiumSingleDeathChestModelName | string | resurrectionchest_angelic_single |
premiumDoubleDeathChestModelName | string | resurrectionchest_angelic_double |
Atualizações automáticas do plugin e do conteúdo
nightbreak.autoDownloadPluginUpdates é uma definição partilhada do Nightbreak/MagmaCore incluída no ResurrectionChest. O valor predefinido é false.
- Com
false, não há descargas automáticas. O ResurrectionChest continua a procurar atualizações do plugin alguns minutos após o arranque (com um atraso diferente por plugin) e depois aproximadamente de hora a hora, para mostrar o resultado no botão de atualização do jogo. A descarga tem de ser iniciada manualmente. - Com
true, descarrega uma atualização disponível do plugin e os pacotes de conteúdo desatualizados alguns minutos após o arranque. As atualizações de conteúdo descarregadas são utilizadas depois de reiniciar o servidor. Uma atualização do plugin descarregada também aguarda um reinício, a menos quenightbreak.applyPluginUpdatesWithoutRestarta aplique antes. - A descarga automática de atualizações do plugin exige um token de conta Nightbreak válido e uma subscrição de apoiante ativa.
Pode alterar esta definição no jogo através da opção Atualizações automáticas na barra de ferramentas de /resurrectionchest setup, ou editar diretamente config.yml.
O menu também tem uma opção de Atualização do plugin, que mostra a versão instalada e a disponível e descarrega a atualização ao clicar, e uma opção de Plugins recomendados, com a mesma lista de /resurrectionchest recommendedplugins.
Atualizações do plugin sem reinício
Uma atualização do plugin descarregada fica à espera na pasta de atualizações do servidor. /resurrectionchest applypluginupdate instala-a sem reiniciar o servidor. O ResurrectionChest é desativado, o jar é substituído e a nova versão é carregada e ativada. Os outros plugins do MagmaGuy que dependem do ResurrectionChest são recarregados com ele.
O comando recusa, com uma mensagem, quando:
- não há nenhuma atualização descarregada à espera
- a atualização à espera não é mais recente do que a versão em execução, ou o seu jar não é válido
- um plugin de outro autor depende (ou tem uma dependência opcional) do ResurrectionChest. Nesse caso, reinicie o servidor
- já está a decorrer outra troca de plugin
Se a nova versão não conseguir ativar, o jar anterior é carregado novamente e a atualização fica na pasta de atualizações para o próximo reinício. Use este comando em vez de um plugin de recarregamento de terceiros.
nightbreak.applyPluginUpdatesWithoutRestart no config.yml decide o que acontece logo após qualquer descarga de uma atualização do plugin, seja através de downloadpluginupdate, downloadall, da opção Atualização do plugin do menu de configuração ou de uma descarga automática:
| Valor | Comportamento |
|---|---|
never | Predefinição. A atualização aguarda o próximo reinício. Os administradores online com resurrectionchest.* são informados de que é necessário reiniciar e veem o comando applypluginupdate |
when-empty | Aplica a atualização imediatamente se não houver jogadores online; caso contrário, verifica a cada 30 segundos e aplica-a quando o servidor ficar vazio |
immediately | Aplica a atualização assim que a descarga termina |
Qualquer outro valor funciona como never.
Uma troca desativa e volta a ativar o ResurrectionChest, por isso, tal como acontece com /resurrectionchest reload, o XP que os jogadores ainda não recolheram dos seus baús é descartado. Os itens nos baús não são afetados.
Proteção de regiões
Registar um baú de morte conta como construir. Antes de aceitar a placa, o ResurrectionChest consulta o LocationQueryRegistry partilhado do MagmaCore para saber se o jogador pode construir no bloco do baú.
- O WorldGuard e o GriefPrevention são integrados automaticamente. Os fornecedores partilhados de propriedade de locais também podem recusar o registo ao indicar que o local está protegido. Sem fornecedores de proteção ou propriedade, não há restrições adicionais.
- Se um plugin de proteção não permitir construir, o registo é recusado e o jogador recebe
Chest protected region message. - Se um adaptador de proteção lançar um erro, o registo é recusado em vez de ignorar a proteção.
Os adaptadores integrados são ligados primeiro no arranque e comparados novamente com os plugins ativos nas consultas posteriores. Se o WorldGuard ou o GriefPrevention estiver ativo, mas o respetivo adaptador não se conseguir ligar, a falha é registada e todos os registos são recusados enquanto esse plugin se mantiver ativo. /resurrectionchest reload não volta a tentar a ligação. A ligação é tentada novamente depois de esse plugin de proteção ser desativado ou recarregado, após uma atualização do ResurrectionChest sem reinício ou após reiniciar o servidor.
Penalização de durabilidade da armadura
Lower worn armor's durability on death, predefinida como true, e Amount of durability to lower on death, predefinida como 100, aplicam-se à armadura equipada quando esta é enviada para o baú de morte:
- cada peça equipada que conste dos itens perdidos ao morrer recebe
Amount of durability to lower on deathno seu valor de dano - se esse valor atingir ou ultrapassar a durabilidade máxima, a peça é removida dos itens da morte e destruída, em vez de ser guardada
- caso contrário, a peça danificada é colocada no baú
Uma penalização de durabilidade igual a zero ou negativa não tem efeito.
A penalização só se aplica às mortes processadas pelo ResurrectionChest. Não se aplica com keepInventory ativo, em mundos excluídos, quando o jogador não tem resurrectionchest.use ou quando o baú registado desapareceu.
Modo de alta compatibilidade
Enable high compatibility / low security mode for plugin conflicts, predefinida como false, controla o rigor da verificação dos blocos antes de o ResurrectionChest atuar sobre eles.
- Com
false, uma placa ou um baú só é reconhecido como pertencente ao ResurrectionChest se ainda tiver a marca de proprietário que o plugin escreve nos dados persistentes do bloco. - Com
true, é aceite a ausência de uma marca numa localização registada. Uma marca de outro proprietário continua a ser rejeitada e um baú registado tem de continuar a ser um bloco de baú.
Use este modo se outro plugin remover as marcas de proprietário do ResurrectionChest. O modo permite marcas ausentes, mas não aceita blocos de substituição arbitrários nem marcas de outros proprietários.
Tratamento de XP
Com storeXP ativo:
- o ResurrectionChest acompanha o XP total durante o jogo, mas lê o total atual no momento da morte; assim, também conta o XP atribuído diretamente pela API de outro plugin
- ao morrer, guarda
round(total XP * xpPercentageKept), limitado ao intervalo dos inteiros não negativos - define o XP largado como
0 - devolve o XP guardado quando o proprietário voltar a abrir o baú registado; qualquer metade de um baú duplo serve
- se o jogador voltar a morrer antes de recolher o XP, o novo valor é somado ao existente
xpPercentageKept é limitado ao intervalo 0-1 ao ler a configuração. Valores superiores a 1 contam como 1; valores negativos ou inválidos contam como 0.
Exceções importantes:
- Com
keepInventoryativo, o ResurrectionChest não faz nada. - Com
keepLevelativo, o armazenamento de XP é ignorado e o tratamento vanilla do nível mantém-se. - O XP guardado fica apenas na memória. Não é escrito em
playerData.yml. Reiniciar o servidor, executar/resurrectionchest reload, recarregar o plugin ou aplicar uma atualização do plugin sem reinício descarta o XP ainda não recolhido. Os itens já guardados no baú não são afetados.
Tratamento de excedentes
Os itens são inseridos no baú uma pilha de cada vez, permitindo inserções parciais:
- tudo o que couber é guardado, incluindo quantidades que completem pilhas existentes
- só a quantidade que não couber permanece na lista normal de itens largados no local da morte
- o jogador recebe um aviso de que o baú estava cheio
Integração com FreeMinecraftModels
Com o FreeMinecraftModels instalado, o ResurrectionChest pode criar um modelo visual sobre o baú real.
Comportamento atual:
- o modelo premium Angelic Chest tem preferência se o jogador tiver
resurrectionchest.model.premiume o modelo premium estiver carregado - caso contrário, usa o modelo gratuito Wooden Chest se o jogador tiver
resurrectionchest.model.free - se nenhuma permissão der acesso a um modelo utilizável, não é criado um modelo e o baú vanilla mantém-se
- o modelo alterna entre as variantes simples e dupla conforme o tamanho do baú
- o baú real continua a guardar os itens
- os modelos são atualizados sempre que o FreeMinecraftModels termina um recarregamento, incluindo um iniciado fora do ResurrectionChest, e um modelo correspondente já presente no baú é reutilizado em vez de criar um duplicado
O modelo é escolhido uma única vez, no registo do baú, e guardado em playerData.yml como chestModel. Isto tem duas consequências:
- se o FreeMinecraftModels não estiver instalado no momento do registo, o baú fica registado sem modelo e continua a ser vanilla mesmo após instalar o FreeMinecraftModels
- alterações posteriores às permissões não mudam o modelo de um baú existente
Nos dois casos, o jogador tem de registar novamente o baú, destruindo-o e voltando a colocar a placa, para adotar o novo modelo.
Quando está ativo um modelo personalizado, os jogadores podem interagir diretamente com ele:
- clicar com o botão direito abre o inventário do baú real
- clicar com o botão esquerdo destrói o registo; só o proprietário pode fazê-lo. Outro jogador recebe uma mensagem vermelha e nada é destruído.
Se o FreeMinecraftModels não estiver instalado ou o modelo não puder ser criado, o baú real continua a funcionar normalmente.
Pacotes de conteúdo
O ResurrectionChest inclui dois pacotes de conteúdo com modelos de baús FreeMinecraftModels:
- Wooden Chest, gratuito, disponibiliza
resurrectionchest_free_single/resurrectionchest_free_double. É usado porresurrectionchest.model.free. - Angelic Chest, premium, disponibiliza
resurrectionchest_angelic_single/resurrectionchest_angelic_double. É usado porresurrectionchest.model.premium.
Cada pacote fica na pasta models do FreeMinecraftModels quando instalado e em models_disabled quando desinstalado. Alterar o seu estado através de /resurrectionchest setup move os ficheiros entre estas pastas e recarrega automaticamente o FreeMinecraftModels.
Limitações verificadas no código
O código atual disponibiliza algumas entradas em config.yml que não são referenciadas fora de DefaultConfig:
Particle effect 1Particle effect 2freeSingleDeathChestModelNamefreeDoubleDeathChestModelNameepremiumDoubleDeathChestModelName. O plugin usa internamente os prefixos fixosresurrectionchest_freeeresurrectionchest_angelic, acrescentando_singleou_doubleconforme o tamanho. As chaves de configuração "Double" não afetam atualmente os modelos dos baús.
Particle effect 3 é a definição de partículas utilizada pelo código atual. É resolvida uma vez no carregamento, com recurso a PORTAL e um aviso na consola se o nome for inválido. Depois, a partícula é criada a cada tick enquanto o chunk do baú estiver carregado. Definir Enable particle effects for death chests como false cancela completamente essa tarefa por tick, sendo a opção menos exigente em servidores com muitos baús registados. premiumSingleDeathChestModelName verifica se o ficheiro do modelo premium existe antes de atribuir o prefixo premium. A existência do ficheiro do modelo gratuito não é verificada separadamente.
Mais duas observações sobre os comandos:
/resurrectionchest initializeabre a configuração inicial e exigeresurrectionchest.initialize./resurrectionchest setupabre os controlos de conteúdo, atualizações e plugins recomendados./resurrectionchest clearnão se limita a um jogador. Elimina todos os baús registados no servidor de uma só vez.
O comando de limpeza respeita as verificações de proprietário configuradas e deixa intactos os blocos que não passam nelas. Se o mundo do baú estiver descarregado, elimina o registo sem remover os blocos nesse mundo.