Custom Biome
Visão geral
O Custom Biome permite criar biomas próprios pelo painel web do TypeWriter: cores de grama, folhagem, água, céu e neblina, configurações de nuvens e sol, temperatura e precipitação. Um novo bioma parte de um bioma vanilla base, então spawns de mobs, features e outras propriedades são herdados, e você só sobrescreve o que quiser mudar.
Um bioma pode ser usado de duas maneiras. Você pode pintá-lo no mundo, por um raio em blocos, uma seleção do WorldEdit ou uma região capturada, e restaurar os biomas antigos depois a partir de um snapshot. Ou pode mostrá-lo apenas a um jogador ou a uma audience, com um overlay por jogador: o mundo não é alterado e ninguém mais vê a mudança. É assim que uma floresta corrompida pode aparecer só durante uma quest.
Recursos
- Definições de bioma — cores (grama, folhagem, folhagem seca, água, céu, neblina, neblina da água, nuvens, luz do céu, nascer/pôr do sol), distâncias de neblina e nuvens, configurações de sol, lua e estrelas, temperatura e precipitação.
- Presets — compartilhe uma paleta entre vários biomas e sobrescreva apenas o que for diferente.
- Registro em tempo real — os biomas são injetados no registro do servidor quando possível e gravados em um datapack gerado para sobreviverem às reinicializações.
- Pintura do mundo — aplique um bioma ao redor de um jogador ou sobre uma região, com um snapshot opcional para desfazer.
- Overlays por jogador — mostre um bioma a um jogador ou a uma audience, por meio de uma action, uma audience ou uma cinematic.
- Eventos de entrada e saída — dispare entries quando um jogador entra ou sai de um bioma.
- Descoberta — registre quais biomas cada jogador visitou e use isso em facts e quests.
- Facts, variáveis e placeholders — leia o bioma atual, suas propriedades e a contagem de descobertas.
- Comandos de operador — liste biomas, inspecione o bioma sob um jogador, pinte, atualize e capture uma região.
- Pronto para Folia — as gravações são agendadas na região que contém cada chunk.
Instalação
- Instale o PacketEvents. Os overlays e as atualizações de chunks são enviados com ele; sem ele, os overlays ficam desativados.
- Instale a extensão Quest do TypeWriter na aba Extensions do painel web (o objective a utiliza).
- Opcional: instale o WorldEdit ou o FastAsyncWorldEdit para pintar a seleção feita dentro do jogo.
- Opcional: instale o PlaceholderAPI para usar os placeholders abaixo.
- Coloque o JAR do Custom Biome em
plugins/Typewriter/extensions/e reinicie o servidor.
As definições de bioma são gravadas em um datapack chamado typewriter_custom_biomes na pasta datapacks do mundo.
Os atributos visuais (distâncias de neblina, altura das nuvens, configurações de sol, lua e estrelas) são marcados no código-fonte como válidos para o Minecraft 1.21.11 e posteriores. Em versões mais antigas, apenas as cores e o clima se aplicam.
Primeiros passos
Crie uma floresta roxa e mostre-a aos jogadores em uma etapa de quest:
- No painel web do TypeWriter, abra uma página de manifest e adicione uma entry Custom Biome Definition.
- Defina
biomeId(minúsculas, com sublinhados, por exemplocorrupted_forest) e mantenhanamespacecomotypewriter. DefinabaseBiomecomominecraft:forest. - Preencha em hexadecimal as cores que quiser mudar, por exemplo
grassColor#6a3d9aefoliageColor#4b2a73. Os campos vazios herdam do bioma base. - Publique e execute
/tw biome listno jogo para verificar se o bioma está ativo. Se aparecer como aguardando reinicialização, reinicie o servidor. - Em uma página de manifest, adicione uma Biome Overlay Audience, escolha a definição em
biomee coloque-a sob uma audience que corresponda à etapa da sua quest. O jogador vê o bioma enquanto estiver na audience, e o bioma real volta quando ele sai (restoreOnExit). - Para limitá-lo a uma zona, defina
cornerAecornerB, ou fique no jogo com uma seleção do WorldEdit e execute/tw biome region <entry>para preencher os cantos.
Para alterar o próprio mundo, use Apply Biome ou Paint Biome Region em uma sequência de actions. Dê um snapshotId à pintura se quiser que Restore Biome a desfaça.
Crie um Custom Biome Preset para uma família de biomas que compartilham o mesmo céu e neblina, e selecione-o em preset de cada definição. Os valores definidos na definição prevalecem sobre o preset, e o preset prevalece sobre o bioma base.
Como funciona
Pintar grava o bioma nos dados do mundo, então afeta todos os jogadores e sobrevive a uma reinicialização. Um overlay é enviado apenas ao cliente do jogador: nada é salvo, e removê-lo devolve o bioma real. Quando vários overlays cobrem o mesmo chunk, é exibido o aplicado por último, e removê-lo revela o anterior.
Facts, variáveis e placeholders leem por padrão o bioma que o jogador vê (PLAYER_VIEW, overlays incluídos). Defina source como REAL_WORLD em facts e variáveis para ler o que o mundo realmente contém.
Configuração
Os dados de execução ficam em plugins/Typewriter/custombiome/:
| Pasta | Conteúdo |
|---|---|
discovery/ | Um arquivo JSON por jogador (<uuid>.json) listando os biomas que ele visitou. |
snapshots/ | Biomas registrados pelo Paint Biome Region quando snapshotId é definido. |
Comandos
O comando raiz é /tw biome, que exige typewriter.biome. Cada subcomando exige também sua própria permissão.
| Comando | Descrição |
|---|---|
/tw biome | Mostra a lista de comandos. |
/tw biome list | Lista os biomas personalizados e indica se cada um está ativo, aguardando reinicialização ou não registrado. |
/tw biome info [player] | Mostra o bioma em que um jogador está: nome, ID, se é personalizado, temperatura, precipitação e bioma base. |
/tw biome apply <biome> [radius] | Pinta um bioma ao redor de você ou de um jogador alvo, dentro de um raio em blocos. |
/tw biome refresh [radius] | Reenvia os dados de bioma (raio de 1 a 16 chunks) dos chunks que esta extensão pintou perto do jogador. |
/tw biome region <entry> | Copia sua seleção do WorldEdit para cornerA e cornerB de uma entry de região; depois publique a página. |
Textos editáveis
Tudo o que os comandos /tw biome imprimem no jogo é um snippet do TypeWriter, então você pode reescrevê-lo, traduzi-lo ou mudar as cores sem recompilar nada. Abra plugins/Typewriter/snippets.yml, encontre a chave em content.custombiome, altere o valor e execute /tw reload. A extensão registra todos os seus snippets com o texto padrão ao iniciar, então eles aparecem no arquivo após a primeira inicialização.
Os textos são MiniMessage. Um {name} em um texto é substituído pelo valor indicado na tabela; um placeholder que você omite simplesmente não é exibido, e um que não existe permanece como escrito. Os placeholders do PlaceholderAPI (%...%) também são lidos quando o comando é executado por um jogador. Apenas o prefixo de resposta do Typewriter nas respostas curtas (Typewriter ») vem do engine e não faz parte desses snippets, e o log do console do servidor continua em inglês.
Snippet (em content.custombiome.) | Padrão | Placeholders |
|---|---|---|
command.list.empty | <yellow>No custom biomes registered.</yellow> | nenhum |
command.list.header | <gradient:#00d4ff:#0099ff><b>Custom Biomes ({count})</b></gradient>, com uma linha em branco antes | {count} |
command.list.strategy | <dark_gray>Strategy: {strategy}</dark_gray>, com uma linha em branco depois | {strategy} |
command.list.strategy_live | live registry injection (reflection) | nenhum |
command.list.strategy_unsupported | unsupported ({reason}) | {reason} (técnico, em inglês) |
command.list.icon_live, icon_waiting, icon_missing | • em verde, ⚠ em amarelo, ✖ em vermelho | nenhum |
command.list.status_live, status_waiting, status_missing | textos ao passar o cursor: Live in the registry, Written to the datapack — needs a restart, Not registered | nenhum |
command.list.entry | uma linha por bioma, com texto ao passar o cursor e clique para copiar | {icon}, {status}, {name}, {key}, {temperature}, {downfall} |
command.list.temperature, command.list.downfall | T:{value} e D:{value} em cinza | {value} |
command.info.header | Biome Info for {player} | {player} |
command.info.name, id, temperature, downfall, base_biome | Name:, ID:, Temperature:, Downfall:, Base Biome:, seguido do valor | {value} |
command.info.custom_yes, custom_no | Custom: Yes e Custom: No | nenhum |
command.help.title | Custom Biome Commands | nenhum |
command.help.list, info, apply, refresh, region | uma linha de ajuda por comando | nenhum |
command.region.no_selection | No WorldEdit selection (or WorldEdit is not installed). | nenhum |
command.region.page_not_found | Could not find the page holding '{entry}'. | {entry} |
command.region.write_failed | Could not write the region: {failures} | {failures} (técnico, em inglês) |
command.region.done | Region of {entry} set to {min} → {max} in {world}. | {entry}, {min}, {max} (como x, y, z), {world} |
command.region.publish_hint | Publish the page for it to take effect. | nenhum |
command.refresh.none | No painted chunks near {player} to refresh. | {player} |
command.refresh.done | Resent biome data for {chunks} painted chunk(s) to {player}. | {chunks}, {player} |
command.apply.unknown | Unknown biome: {biome} | {biome} |
command.apply.unknown_hint | Use /tw biome list to see available custom biomes. | nenhum |
command.apply.nothing | Nothing to paint at that location. | nenhum |
command.apply.done | Painting {biome} over {cells} cell(s) across {chunks} chunk(s). | {biome}, {cells}, {chunks} |
placeholder.unknown | unknown | nenhum |
Os três snippets de texto ao passar o cursor de /tw biome list ficam dentro de um argumento MiniMessage entre aspas simples, então não podem conter uma aspa simples.
placeholder.unknown é o que %typewriter_temperature%, %typewriter_downfall% e a variável Biome Property retornam para um bioma que não é personalizado. Os true e false retornados por %typewriter_is_custom% continuam fixos, porque as condições os comparam.
Permissões
| Permissão | Concede |
|---|---|
typewriter.biome | Acesso à árvore de comandos /tw biome. |
typewriter.biome.list | /tw biome list |
typewriter.biome.info | /tw biome info |
typewriter.biome.apply | /tw biome apply |
typewriter.biome.refresh | /tw biome refresh |
typewriter.biome.region | /tw biome region |
Placeholders
Placeholders do PlaceholderAPI, fornecidos pela expansão typewriter. Os placeholders de jogador leem o bioma que é mostrado ao jogador.
| Placeholder | Retorna |
|---|---|
%typewriter_current% ou %typewriter_id% | Chave do bioma sob o jogador, por exemplo minecraft:plains. |
%typewriter_name% | Nome legível do bioma. |
%typewriter_key% | Apenas a parte da chave. |
%typewriter_namespace% | Apenas a parte do namespace. |
%typewriter_is_custom% | true ou false. |
%typewriter_temperature% | Temperatura de um bioma personalizado, unknown caso contrário. |
%typewriter_downfall% | Precipitação de um bioma personalizado, unknown caso contrário. |
%typewriter_base% | Bioma base de um bioma personalizado, ou a própria chave do bioma. |
%typewriter_count% | Número de biomas personalizados registrados. |
%typewriter_list% | Nomes de exibição dos biomas personalizados, separados por vírgulas. |
%typewriter_discovered_count% | Número de biomas que o jogador visitou. |
%typewriter_discovered_list% | Chaves dos biomas que o jogador visitou. |
A extensão responde aos nomes simples acima (%typewriter_current%, %typewriter_count% e assim por diante). O comentário em seu código-fonte menciona um prefixo custombiome_, mas o código só reconhece os nomes simples.
Entries
20 entradas, geradas a partir do código-fonte da extensão.
Ações5
- Apply Biome ActionApply a biome to a location with optional radius
- Paint Biome Region ActionPaint a biome over a region, with an optional snapshot to undo it later
- Player Biome Overlay ActionShow a biome to a single player without changing the world
- Refresh Biome Chunks ActionRefresh biome data for chunks around the player
- Restore Biome ActionRestore biomes previously recorded by a paint snapshot
Eventos2
- Enter Biome EventTriggered when a player enters a biome
- Leave Biome EventTriggered when a player leaves a biome
Objetivos1
- Explore Biome ObjectiveObjective completed by discovering one or more biomes
Fatos4
- Biome Discovery FactHow many biomes the player has discovered, or whether specific ones were found
- Custom Biome Count FactReturns the number of registered custom biomes
- Is in Custom Biome FactReturns 1 if player is in a custom biome, 0 otherwise
- Player Biome FactExpose the player's current biome as a fact value
Audiências2
- Biome Overlay AudienceShow a biome to the audience without changing the world
- Biome Region AudienceKeep the players standing inside a region defined by two captured corners
Cinemáticas1
- Biome Transition CinematicChange the biome a player sees during a cinematic
Variáveis3
- Biome Property VariableReturns a property of the player's current biome
- Current Biome VariableReturns the player's current biome name
- Custom Biome List VariableReturns a list of registered custom biomes
Manifestos2
- Custom Biome DefinitionDefine a custom biome with colors and climate settings
- Custom Biome PresetA reusable set of colors and visual attributes shared by several biomes
Solução de problemas
/tw biome list mostra um sinal de aviso e "needs a restart". O servidor não conseguiu adicionar o bioma ao seu registro em tempo real, então ele só existe no datapack gerado. Reinicie o servidor. O motivo é gravado uma única vez no console.
Meu bioma não é encontrado por uma action ou um evento. Os identificadores de bioma têm o formato namespace:id, por exemplo typewriter:corrupted_forest. Consulte /tw biome list para ver a chave exata. Um identificador desconhecido é registrado como aviso (unknown biome '…') e a action não faz nada.
Um jogador nunca vê o overlay. Os overlays precisam do PacketEvents: caso contrário, o console mostra PacketEvents unavailable: per-player biome overlays are disabled. Verifique também se o jogador está na audience, se um bioma está configurado (uma definição personalizada ou vanillaBiome) e, no caso de uma região, se os dois cantos estão em um mundo carregado.
O Paint Biome Region não faz nada. Com region definido como WORLDEDIT_SELECTION, o jogador que dispara precisa ter uma seleção do WorldEdit e o WorldEdit precisa estar instalado; o console registra has no WorldEdit selection. Caso contrário, use RADIUS_AROUND_PLAYER.
O Restore Biome diz que o snapshot não existe. Os snapshots só são registrados quando a action de pintura tem um snapshotId, e a restauração deve usar o mesmo nome. Se consume estiver ativado, o snapshot é excluído após uma restauração.