Temporary Dimension
Visão geral
O Temporary Dimension envia um jogador para uma cópia nova de um mundo template. A cópia é criada a partir de um template do Advanced SlimeWorld quando o jogador entra, existe apenas na memória e é descarregada assim que o jogador sai, então toda visita começa a partir do template. Ela foi feita para dungeons, tutoriais, salas privadas e cenários de cinemática que não devem ser compartilhados nem mantidos.
Você descreve uma dimensão uma vez com uma entry Temporary Dimension Definition: os mundos template (um é escolhido aleatoriamente), a área onde os jogadores aparecem, a permissão para entrar, os comandos bloqueados e o que disparar na entrada e na saída. Os jogadores entram por um comando, por uma ação do TypeWriter ou por um comando de admin e voltam exatamente ao lugar de onde saíram.
Ela roda no build BTC do TypeWriter e no BTC Core (Paper/Folia) e também suporta servidores AdvancedSlimePaper. A criação, a busca de spawn e o teletransporte são assíncronos e compatíveis com Folia.
Recursos
- Mundos instanciados — cada entrada cria um novo mundo chamado
tempdim_<uuid>a partir de um template e o exclui quando fica vazio. - Vários templates — liste mais de um mundo template e um é escolhido aleatoriamente.
- Spawn aleatório seguro — pontos aleatórios em uma caixa, depois uma busca ao redor do centro dela, aceitando apenas ar acima de um bloco sólido e não perigoso.
- Whitelist de blocos de spawn — restrinja o spawn a tipos de bloco escolhidos.
- Blacklist de comandos — bloqueie comandos (e suas formas
plugin:) enquanto o jogador está dentro. - Retorno à origem — o jogador volta à localização, rotação e mundo de onde saiu.
- Triggers de entrada e saída — execute quaisquer entries do TypeWriter e envie mensagens MiniMessage na entrada e na saída.
- Permissão por dimensão — uma permissão por dimensão, verificada pelo comando e, opcionalmente, pela ação.
- Facts e placeholders — saiba se um jogador está em uma dimensão, em qual, e quem mais está nela.
Instalação
- Execute o servidor no BTC Core ou no AdvancedSlimePaper; a extensão procura um ou outro em tempo de execução.
- Coloque o JAR do Temporary Dimension em
plugins/Typewriter/extensions/e reinicie o servidor. - Prepare seus mundos template como mundos Slime:
- No BTC Core, coloque-os onde o loader Slime
filelê os mundos (slime_worldsna pasta do servidor por padrão). - No AdvancedSlimePaper, o template deve ser um mundo Slime carregado com o nome exato do template; ele é copiado a partir da memória.
- No BTC Core, coloque-os onde o loader Slime
- Dê aos jogadores a permissão que você definirá na dimensão.
Primeiros passos
Crie uma dungeon em que os jogadores possam entrar com /typewriter tempdim dungeon1.
- Construa sua dungeon como um mundo Slime chamado
dungeon1_templatee coloque-o onde o seu servidor espera templates (veja acima). - No painel web do TypeWriter, abra uma page static e adicione uma entry Temporary Dimension Definition.
- Defina
commandNamecomodungeon1,permissioncomodimension.dungeon1e adicionedungeon1_templateatemplateWorlds. - Defina
spawnZonecom dois cantos opostos (x1,y1,z1ex2,y2,z2) ao redor da entrada. Use coordenadas de bloco do mundo template. - Opcionalmente, preencha
blacklistedCommands(por exemplohome,spawn,tpa) e ligue triggers emonEntereonExit. - Publique, dê a permissão a um jogador de teste e execute
/typewriter tempdim dungeon1.
Para entrar a partir de uma quest ou de um NPC, use Enter Temporary Dimension e, para sair, Leave Temporary Dimension.
O comando da dimensão é um subcomando de /typewriter tempdim; a extensão não registra um comando de nível superior. Um comando curto como /dungeon1 pode ser exposto com uma entry custom_command do TypeWriter na sua page, o que mantém o registro de comandos seguro em recarregamentos.
Como funciona
Um jogador só pode estar em uma dimensão temporária por vez. Se a criação falhar (nenhum template, template não encontrado, nenhum spawn seguro em 10 segundos, falha de teletransporte), o jogador permanece onde está, recebe uma mensagem de erro e o mundo semiconstruído é removido. Se o jogador se desconectar, ele é removido da instância sem teletransporte e o mundo é fechado quando fica vazio. Toda instância é fechada quando o TypeWriter recarrega ou para.
Comandos
Todos os comandos ficam sob /typewriter.
| Comando | Descrição |
|---|---|
/typewriter tempdim <commandName> | Entra na dimensão cujo commandName corresponde. Exige a permission da dimensão (vazia significa aberta a todos). |
/typewriter tempdim enter <dimension> | Entra em qualquer dimensão escolhida na lista de entries, ignorando sua permissão. Exige typewriter.temporarydimension.admin. |
/typewriter tempdim leave | Sai da sua dimensão atual e volta à sua origem. Nenhuma permissão necessária. |
/typewriter tempdim list | Lista as instâncias ativas com sua contagem de jogadores e nome de mundo. Exige typewriter.temporarydimension.admin. |
commandName aceita apenas letras, dígitos, _, - e :, e não pode ser enter, leave nem list. Os comandos são construídos quando as entries carregam, então publique depois de alterá-lo.
Permissões
| Permissão | Concede |
|---|---|
typewriter.temporarydimension.admin | /typewriter tempdim enter e /typewriter tempdim list. |
o campo permission de uma definição | /typewriter tempdim <commandName> e, se checkPermission estiver ativado, a ação de entrada. |
Placeholders
Expansão tempdim do MiniPlaceholders, utilizável como tags MiniMessage. Eles retornam um valor vazio ou 0/false quando o jogador não está em uma dimensão.
| Placeholder | Retorna |
|---|---|
<tempdim_in_dimension> | true ou false. |
<tempdim_in_dimension_bool> | 1 ou 0, para comparações numéricas. |
<tempdim_current> | Nome da entry da dimensão atual. |
<tempdim_current_id> | Entry id da dimensão atual. |
<tempdim_current_world> | Nome do mundo da instância (tempdim_...). |
<tempdim_players> | Número de jogadores na instância. |
<tempdim_players_list> | Nomes dos jogadores na instância, separados por vírgulas. |
Nas mensagens de uma definição, <dimension> é substituído pelo nome da entry, e <command> na mensagem de comando bloqueado pelo comando bloqueado.
Entries
5 entradas, geradas a partir do código-fonte da extensão.
Ações2
- Enter Temporary Dimension ActionEnter a temporary dimension
- Leave Temporary Dimension ActionLeave current temporary dimension
Fatos2
- In Specific Dimension FactCheck if player is in a specific dimension
- In Temporary Dimension FactCheck if player is in a temporary dimension
Manifestos1
- Temporary DimensionTemporary Dimension Definition
Solução de problemas
Unable to prepare the temporary dimension. O template não pôde ser clonado. Verifique o nome do template em templateWorlds em relação ao nome do mundo Slime, se o mundo está em slime_worlds (BTC Core) ou carregado (AdvancedSlimePaper) e leia o aviso no log para saber a causa. Em servidores que não são nem BTC Core nem AdvancedSlimePaper, o log diz unsupported server platform for SlimeWorld.
Nada acontece e o log diz no template configured. templateWorlds está vazio ou contém apenas nomes em branco.
No safe spawn was found in the temporary dimension. Nenhum dos pontos testados tinha dois blocos livres de ar acima de um bloco sólido que não seja lava, fogo, cacto ou magma. Aumente a spawnZone, garanta que ela cubra o chão sólido do template (Y incluído) e verifique se spawnBlockWhitelist contém o bloco do piso.
You are already in a temporary dimension. Um jogador só pode estar em uma instância. Use primeiro o comando ou a ação de sair.
Um comando ainda funciona dentro da dimensão. Escreva o nome do comando sem a barra em blacklistedCommands. A comparação é feita com a primeira palavra, sem diferenciar maiúsculas de minúsculas, e também bloqueia as formas name:command, mas não aliases registrados com outro nome.
O comando da dimensão não existe após a edição. Os comandos de dimensão são gerados a partir das entries: publique a page e verifique se commandName usa apenas caracteres permitidos e não conflita com outra dimensão.