Pular para o conteúdo principal

Changelog

1.2​

  • Dungeon Mob Spawn: lootTable, spawnParticle, adaptação ao número de jogadores (perExtraPlayer, maxCount, playerCountSource), maxSimultaneous, waves e os gatilhos onWaveCleared e onCleared.
  • Nova entrada Dungeon Loot Table: uma tabela de saque compartilhada por baús e mobs.
  • Dungeon Loot Chest: lootTableRef e additionalLocations para colocar vários baús a partir de uma só entrada (ignorado em uma dungeon gerada).
  • Loot Chest Trigger: particleEffect, com eixos X, Y e Z separados e um centro. Os quatro campos triggerParticle são legados: só valem quando particleEffect não nomeia nenhuma partícula.
  • Novo evento On Dungeon Mobs Cleared.
  • Nova entrada Dungeon Restrictions, ligada por restrictions a uma Dungeon Instance ou a uma Dungeon Room: sem elytra, barco ou carrinho, pérola do Ender, fruta de chorus ou riptide, comandos bloqueados, mensagem de recusa e permissão de exceção.
  • Requer GUI (OmniGUI) 0.20. A nova Dungeon Leaderboard Source usa o contrato de fonte de ranking do GUI 0.20: com um GUI mais antigo, o ranking do Dungeon não carrega. Atualize o GUI primeiro.
  • Quebra de API para addons: DungeonArtifactData, DungeonStats e PlayerDungeonStats passaram para o pacote btcrenaud.dungeons.core, e DungeonArtifactEntry.getPlayerStats e DungeonArtifactEntry.update mudaram de assinatura. Um addon compilado contra o Dungeon 1.1.x precisa ser recompilado. Dungeons criadas no painel web não são afetadas.
  • Estatísticas: 22 estatísticas por jogador (dano causado e sofrido, abates de mobs, mortes, tempo jogado, salas e ondas limpas, recordes, conclusões solo e sem mortes...). Elas são contadas durante a run e pagas uma única vez por membro, por artifact, com um total entre vários artifacts. O dano é o que realmente tirou vida, limitado à vida do alvo.
  • Dungeon Instance: statsMobScope escolhe quais mobs contam nas estatísticas, MARKED_ONLY (padrão, os mobs criados pela run) ou ANY_MOB_IN_RUN_WORLD.
  • Novo fact Player Dungeon Statistic e os placeholders dungeon_stat_<key> (com _raw para o número puro), dungeon_total_<key> e dungeon_inst_<id>_<key>. Os snippets content.dungeon_stats.duration_format e content.dungeon_stats.missing_value definem como são escritos.
  • Nova entry Dungeon Leaderboard Source, para ligar ao campo source de um ranking do GUI (GUI 0.20): artifacts, scope (LIFETIME ou CURRENT_RUN), rankBy, values, durationFormat, decimals, missingValue e unknownName. Tokens de linha: {value_<key>}, {value_<key>_raw} e {score_raw}.
  • Dungeon Instance: reconnectGrace (2 minutos por padrão). Um membro que se desconecta mantém seu lugar durante esse prazo e, se voltar a tempo, retoma com sua sidebar, seus ocultamentos e seu modo de jogo. Depois disso, ele sai da run e volta ao ponto de entrada ao se reconectar. Veja Desconexões.
  • Dungeon Restrictions: gameMode (opcional, por exemplo ADVENTURE; o modo original do jogador é devolvido ao sair; CREATIVE e SPECTATOR desligam as estatísticas de combate), limitInteractions com allowedInteractions (CHEST, TRAPPED_CHEST e BARREL por padrão) e protectedEntities (molduras, suportes de armadura, pinturas), e messageRepeatDelay (2 segundos). limitInteractions também recusa colocar blocos, baldes, veículos, ovos de spawn, fogo, farinha de osso e usar ferramentas em blocos.
  • Dungeon Restrictions: o impulso do tridente e a fruta de chorus agora são recusados já no clique, e não apenas o efeito. Só a permissão de contorno isenta um jogador: um operador a tem, a menos que o nó esteja explicitamente em false.
  • Dungeon Category: os campos de slot unlockedLore e lockedLore agora são unlockLore e lockLore. Páginas salvas com os nomes antigos continuam sendo lidas; se os dois estiverem presentes, o novo vence.
  • MMOProfiles: depois que o jogador escolhe um perfil, o retorno ao ponto de entrada e o modo de jogo original são aplicados de novo.
  • Correções: runs_left não conta mais uma morte que tira o jogador da run (ela fica em deaths); waves_cleared conta apenas os grupos que definem waves; %typewriter_dungeon_stat_current_health% mostra a vida atual durante uma run; o gravador de estatísticas não para mais de salvar depois de um erro; uma run fechada em um reload porque nenhum de seus membros está online conta o tempo jogado dos membros ausentes.
  • Nada muda em uma dungeon existente enquanto ela não usar esses campos. Para um baú que aparece quando todos os mobs são derrotados, veja Entidades nas dungeons.

1.1.1​

  • Paper 26.x: uma partida em WORLD_PER_RUN podia falhar com The server did not create world 'dungeon_classic_...'. A cópia do modelo mantinha o ID de mundo do modelo (data/paper/metadata.dat), então o servidor a recusava como duplicata. Agora a cópia recebe seu próprio ID.

1.1​

  • Versão pública da reformulação descrita abaixo. Correção desde a 1.0: WORLD_PER_RUN agora copia um mundo modelo salvo no formato do Paper 26.x (dimensions/minecraft/<name>).

1.0​

Esta é uma reformulação da extensão, construída em torno de um modelo de run. Veja a nota de migração antes de atualizar um servidor que usava a 0.10.

Runs e mundos​

  • Uma run agora tem sua própria máquina de estados, seu registro e seu journal. Iniciar uma run é tudo ou nada: se uma etapa falha, nada é mantido e o custo de entrada é devolvido.
  • Três modos de isolamento, definidos por dungeon com isolation: SLIME_CLONE, WORLD_PER_RUN, SHARED_WORLD_SLOTS, e AUTO (padrão). Um modo que não pode rodar recusa a run. Veja Runs e isolamento de mundo.
  • Os mundos guardados no estilo do Paper 26.x (dimensions/minecraft/<name>) são encontrados para SHARED_WORLD_SLOTS e copiados para WORLD_PER_RUN; um problema na preparação do mundo é registrado em uma única linha em vez de um stack trace completo.
  • Um typewriter reload ou um Publish adota de novo as runs em andamento. Uma reinicialização do servidor as encerra de forma limpa.
  • cooldownSeconds é um limite de tempo de verdade: 0 ou vazio significa sem limite.
  • Mundos de runs órfãos são limpos na inicialização, com salvaguardas (nome, arquivo marcador, nunca um mundo carregado).
  • As estatísticas são gravadas: tentativas, conclusões e melhor tempo, por dungeon e por jogador.
  • damageMultiplier e os criteria da dungeon são aplicados.

Dungeons geradas​

Salas, eventos e facts​

  • Os menus são atualizados ao vivo (autoRefreshTicks) e quando qualquer lobby muda.
  • O scoreboard de espera funciona. Os marcadores DUNGEON_LOBBY_SLOT posicionam os lobbies. Os criteria dos slots são avaliados para cada jogador.
  • Um menu de party pode nomear a sua dungeon (dungeonInstance); um menu com esse campo vazio atende todas as dungeons que nenhum outro menu nomeia.
  • As parties do MMOCore, do Parties e da extensão de party do Typewriter são somente leitura.

Baús​

  • Um sorteio por jogador e por baú, visibility (AUTO, PER_PLAYER, SHARED), onDisappear, lootSelection e weightedPicks, animação do baú, orientação a partir do yaw, blocos do CraftEngine e do Nexo, baús restaurados após um reload.

Entidades nas dungeons​

Textos do jogador e novos campos​

  • Os textos dos menus, lobbies, barra lateral da partida, baús de loot e recusas de início são snippets (content.dungeon_menu., content.dungeon_lobby., content.dungeon_run.sidebar., content.dungeon_chest., content.dungeon_launch.). Os padrões não mudaram. As respostas dos comandos /typewriter dungeon ... também são snippets (content.dungeon_command.).
  • Novo campo lobbyIdleKickSeconds na Dungeon Instance (padrão 120).
  • Novos campos em Loot Chest Trigger: triggerSoundVolume, triggerSoundPitch, triggerParticleCount, triggerParticleSpread, triggerParticleSpeed. broadcastMessage aceita códigos de cor.

Comandos​

  • Removido o subcomando start, que nunca funcionou. Os comandos estão documentados no índice.

Limites conhecidos​

  • Somente Paper. O Folia não é compatível.
  • As dungeons geradas usam apenas WORLD_PER_RUN.
  • Uma cinematic do MythicMobsNPC em uma dungeon não foi testada.

0.10​

A build independente. Os triggers de sala, os dois facts "in dungeon", a NPC instance e as estatísticas estavam declarados, mas não ativos.