Recarregar e atualizar mudanças
Nem toda mudança precisa reiniciar o servidor, mas nem toda mudança pode ser aplicada ao vivo. Esta página explica o que o /dmzreload faz, como os valores de configuração chegam aos clientes, quando ainda é preciso reiniciar ou recarregar os recursos, e o que acontece com seus arquivos quando o próprio DragonMineZ é atualizado.
O comando /dmzreload
O /dmzreload [target] é definido em ReloadCommand.java. Ele exige o nó de permissão dragonminez.dmz.reload, dragonminez.admin ou o nível de operador 2 (veja Permissões). O console sempre pode executá-lo.
/dmzreload -> reloads everything (same as "all")
/dmzreload all -> config + story + wishes
/dmzreload config -> config files, raids, storage, NPC rules and placements
/dmzreload story -> quests, sagas, side quests and NPC dialogues
/dmzreload wishes -> dragon wishes only
| Alvo | O que recarrega |
|---|---|
config |
Todos os arquivos de config/dragonminez (geral, combate, treinamento, habilidades, técnicas, entidades, raças, formas, formas acumuláveis, incursões, torneios), os tipos de incursão, o backend de armazenamento de jogadores (StorageManager.reload()), as regras de índole de NPCs e o posicionamento de NPCs (gerando de novo os NPCs configurados). Depois, todos os arquivos de configuração são reenviados a cada jogador online, e os limites de habilidades e a progressão deles são ressincronizados.
|
story |
QuestRegistry.loadAll(server), que relê as sagas, missões e missões secundárias do save do mundo (executando a atualização automática de missões descrita abaixo), e DialogueRegistry.loadAll(server) para os diálogos de NPCs. Depois, o registro de missões é reenviado a cada jogador online.
|
wishes |
WishManager.loadWishes(server); depois, os desejos são reenviados a cada jogador online.
|
all |
Tudo o que está acima, nessa ordem. |
Depois de um recarregamento, os jogadores conectados são ressincronizados automaticamente; eles não precisam sair e entrar de novo. O console também mostra o relatório de carregamento de JSON (arquivos que falharam ao carregar e arquivos atualizados automaticamente).
Tela de configuração no jogo
A entrada DragonMineZ da tela Mods do Forge tem uma tela de configuração que lista todos os arquivos de config/dragonminez e permite editá-los no jogo; enquanto você está em um mundo, ela também tem um botão de recarregar que executa /dmzreload. Ela edita os arquivos da sua própria pasta do jogo, então é pensada para o modo um jogador e anfitriões de LAN. Em um servidor dedicado, edite os arquivos do servidor.
Alterar um valor ao vivo com /dmzconfig
/dmzconfig <file> <key> <value> ou /dmzconfig <file> <section> <key> <value> (permissão: dragonminez.admin ou nível de operador 2) altera um único valor, salva o arquivo e o reenvia a cada jogador online. Exemplos:
/dmzconfig general-server gameplay tpGainMultiplier 2.0
/dmzconfig general-server worldGen generateDragonBalls false
Ele só edita valores simples (números, true/false, texto) direto no arquivo ou a um nível de seção; listas e objetos mais profundos precisam ser editados no arquivo. Ele grava o arquivo como está, sem a atualização de versão descrita abaixo.
Como a configuração chega aos clientes
- Quando um jogador entra, o servidor envia a ele todos os arquivos de
config/dragonminez, exceto os só do clientegeneral-user.jsonehud_layout.json, um pacote comprimido por arquivo. Enquanto estiver conectado, o cliente usa os valores do servidor para tudo o que esses arquivos controlam (estatísticas, formas, habilidades, valores de combate mostrados nos menus etc.). /dmzreload confige/dmzconfigenviam os arquivos de novo para todos que estão online.- O servidor envia os arquivos do jeito que estão no disco. Se você editar um arquivo e não recarregar, o servidor continua rodando com os valores antigos enquanto os jogadores que entrarem depois recebem seu arquivo editado. Sempre execute
/dmzreload configdepois de editar. - Ao se desconectar, o cliente descarta a cópia do servidor e volta a usar seus próprios arquivos locais.
O que o /dmzreload cobre
config/dragonminez/general-server.json,combat.json,training.json,skills.json,techniques.json,entities.jsonconfig/dragonminez/races/<race>/character.json,stats.jsoneforms/*.json, econfig/dragonminez/forms/*.json(formas acumuláveis)config/dragonminez/raids/*.jsoneconfig/dragonminez/tournaments/*.json<world save>/dragonminez/{sagas,quests,sidequests}e<world save>/dragonminez/dialogues(comstoryouall)<world save>/dragonminez/wishes/*.json(comwishesouall); veja Desejos personalizados<world save>/dragonminez/npcs/{placements.json,alignment_rules.json}(comconfigouall); veja Posicionamento e índole de NPCs
O que o /dmzreload não cobre
general-user.jsonehud_layout.json: são arquivos do cliente. Os jogadores os alteram pela tela de Configuração no jogo e pelo editor da HUD; edições à mão exigem reiniciar o jogo.- Recursos de resource packs (modelos, texturas, animações em
assets/dragonminez/...). Eles exigem um recarregamento de recursos no cliente (F3 + T), já que são carregados no cliente, não pela configuração do servidor. - Listeners de recarregamento de datapacks:
spacepod/*.json(veja Destinos da Cápsula Espacial),weapon_attributes/*.json(veja Atributos de armas) erhythm_charts/*.json. Eles seguem as regras dos datapacks vanilla: use o/reloadvanilla ou reinicie o servidor. - Pacotes de addons externos de Esferas do Dragão em
<game dir>/dragonballs/. Eles são relidos pelo/reloadvanilla (conjuntos de esferas, radares, dragões e os desejos do pacote). Execute/dmzreload wishesdepois para que os arquivos de desejos de cada mundo sejam mesclados de novo por cima dos desejos recarregados do pacote. - Troca de backend de armazenamento (
NBT↔JSON↔DATABASE):/dmzreload configsalva os jogadores online e reinicia o backend de armazenamento com os novos ajustes, mas trocar de backend com jogadores online não é algo para fazer de qualquer jeito; prefira fazer isso com o servidor vazio. - Código Java novo ou jars de addons: sempre exigem reiniciar.
Atualizar o DragonMineZ
Quando você instala uma versão nova do DMZ, seus arquivos são atualizados automaticamente na próxima inicialização.
Arquivos de configuração
Cada arquivo de configuração carrega um configVersion (por exemplo "2.2.0"). Quando ele é mais antigo que a versão do mod, o DMZ move o arquivo antigo para config/dragonminez/oldBackup/<same path>, grava os novos padrões e mescla seus valores de volta: valores que você nunca mexeu adotam o novo padrão, valores que você alterou são mantidos e chaves novas são adicionadas. Os detalhes estão em Como usar JSON.
Missões, sagas e missões secundárias
Com autoUpdateQuests ativado em Configuração do servidor (o padrão), os arquivos padrão de missões, sagas e missões secundárias que o DMZ gerou no seu mundo são atualizados da mesma forma quando o servidor inicia (e com /dmzreload story):
- Cada arquivo gerado carrega um
"defaultsVersion". Arquivos que já estão na versão atual são ignorados. - Um campo que você nunca editou adota o novo padrão, então as correções de balanceamento chegam ao seu mundo.
- Um campo que você editou mantém o seu valor. Se a nova versão também mudou esse campo, isso é registrado como conflito, e o seu valor continua vencendo.
- Chaves que você adicionou são mantidas. Listas (objetivos, recompensas) só são mescladas entrada por entrada quando a estrutura ainda corresponde; caso contrário, sua lista inteira é mantida e informada como conflito.
- Antes de um arquivo ser alterado, uma cópia vai para
<world>/dragonminez/oldBackup/<same path>. Um resumo do que mudou é gravado em<world>/dragonminez/quest_update_report.txte aparece no relatório de carregamento de JSON. - Arquivos de missões que você mesmo criou nunca são alterados.
Com autoUpdateQuests definido como false, os arquivos padrão só são gravados quando estão faltando.
/dmzrestoreupdate. Ele apaga tudo em <world>/dragonminez/wishes, sagas e quests e depois executa /dmzreload all para regenerá-los (as missões secundárias não são alteradas). Antes, ele pede confirmação: clique no botão ou execute /dmzrestoreupdate confirm em até 15 segundos.
Fluxo de trabalho prático
- Edite seu arquivo ou arquivos JSON.
- Valide a sintaxe do JSON (veja Como usar JSON).
- Execute o
/dmzreload <target>mais específico que cubra sua mudança:configpara edições de balanceamento, raças, formas e incursões,storypara edições de missões, sagas e diálogos,wishespara edições de desejos. - Confira o log do servidor (ou o relatório de carregamento de JSON no chat). Uma mensagem
malformed JSONsignifica que o DMZ não conseguiu ler seu arquivo: ele está usando os padrões desse arquivo e seu arquivo ficou intacto. Corrija e recarregue de novo. - Para mudanças em resource packs ou datapacks, faça em vez disso um recarregamento de recursos no cliente ou um
/reloadvanilla.
Na dúvida, o /dmzreload all pode ser executado com segurança a qualquer momento: ele só refaz todos os caminhos de recarregamento e ressincroniza todo mundo.