Custom Biome
Official compatibility
| Element | Reference |
|---|---|
TypeWriter | Required. Use the official TypeWriter release supported by the extension release. |
| Related extensions | Install the related extensions listed on this page before using entries that depend on them. |
Define unique environments, paint them into the world, or show them to a single player.
The Custom Biome Extension lets you define biomes of your own — colours, fog, sky, climate and visual attributes — and use them like vanilla ones. A biome is registered as soon as you save it, and a datapack is generated so it survives a restart and exists for world generation.
Entries
- Custom Biome Definition — define a biome.
- Custom Biome Preset — share colours and attributes between biomes.
- Actions — apply, paint a region, restore, per-player overlay, refresh.
- Events — enter and leave.
- Facts — player biome, is in custom biome, discovery, count.
- Audience — biome audience.
- Variables — current biome, biome property, custom biome list.
- Cinematic — biome transition.
- Objective — explore biome.
User guide
- Define a biome with
custom_biome_definition. - Paint it with
apply_biome_actionorpaint_biome_region_action. - React to players entering it with
enter_biome_event.
[!NOTE] Registration happens live. If your server does not allow it, the extension says so in the console and falls back to the generated datapack, which takes effect on the next restart. Run
/tw biome listto see which biomes are live and which are waiting.
World changes versus per-player views
Two different tools, and picking the right one matters:
| Changes the world | Who sees it | |
|---|---|---|
apply_biome_action, paint_biome_region_action | Yes, saved to disk | Everyone |
player_biome_overlay_action, biome_transition_cinematic | No | One player |
Per-player overlays are the right choice for story moments — a corrupted forest during a quest — because nothing is written and removing the overlay restores the real world instantly.
Commands
All commands live under /typewriter biome (/tw biome).
| Command | Description |
|---|---|
/tw biome list | List custom biomes and whether each one is live |
/tw biome info [player] | Show the biome a player is standing in |
/tw biome apply <biome> [radius] | Paint a biome around a player |
/tw biome refresh [radius] | Resend biome data to a player |
Permissions
| Permission | Description |
|---|---|
typewriter.biome | Access to biome commands |
typewriter.biome.list | List custom biomes |
typewriter.biome.info | View current biome info |
typewriter.biome.apply | Paint biomes via command |
typewriter.biome.refresh | Resend biome data |
Placeholders
| Placeholder | Description |
|---|---|
%typewriter_custombiome_current% | Current biome key |
%typewriter_custombiome_name% | Current biome display name |
%typewriter_custombiome_is_custom% | true when the biome is a custom one |
%typewriter_custombiome_temperature% | Temperature, custom biomes only |
%typewriter_custombiome_downfall% | Downfall, custom biomes only |
%typewriter_custombiome_base% | Base biome of the definition |
%typewriter_custombiome_count% | Number of registered custom biomes |
%typewriter_custombiome_list% | Their display names |
%typewriter_custombiome_discovered_count% | Biomes this player has visited |
%typewriter_custombiome_discovered_list% | Their keys |
Player placeholders follow what the player is actually shown, so a player under an overlay reports the overlay biome rather than the one stored in the world.
Requirements
PacketEvents is required for biome updates and per-player overlays. WorldEdit / FAWE is optional and only used when a region action reads a selection.
Troubleshooting
The extension is not visible
Check that the installed release matches the supported TypeWriter release and that the related extensions listed in the compatibility section are present.
An entry is missing
In the Typewriter Web panel, use the Search bar or the + button to find or create the entry with its exact identifier. Entry IDs and field names are case-sensitive; do not translate them.
The entry saves but nothing happens
Check that the entry is connected to the trigger, command, objective, event, or menu interaction required by its type. Test with optional permissions and criteria removed, then add them back one at a time.
An integration does not work
Verify the dependency and version shown in the extension card, then check the server log for the first error. Do not replace a missing dependency with a similarly named plugin unless the extension source explicitly supports it.