Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/mojang/minecraft-creator-tools/llms.txt

Use this file to discover all available pages before exploring further.

The WorldLevelDat class provides access to the level.dat file, which stores world settings, game rules, spawn location, and experiments.

Constructor

const levelDat = new WorldLevelDat();

Loading and Saving

loadFromNbtBytes
(bytes: Uint8Array, context?: string) => void
Loads level.dat from NBT binary data.
const bytes = await file.getContent();
levelDat.loadFromNbtBytes(bytes, 'level.dat');
getBytes
() => Uint8Array | undefined
Serializes level.dat to NBT binary format.
const bytes = levelDat.getBytes();
persist
() => boolean
Saves current properties to the internal NBT structure.
levelDat.levelName = "My World";
levelDat.persist();
const bytes = levelDat.getBytes();

World Identification

levelName
string | undefined
World name displayed in-game.
levelDat.levelName = "Survival World";
randomSeed
string | undefined
World generation seed as a string.
levelDat.randomSeed = "3025905974105939481";

Spawn Location

spawnX
number | undefined
X coordinate of world spawn.
levelDat.spawnX = 0;
spawnY
number | undefined
Y coordinate of world spawn.
levelDat.spawnY = 100;
spawnZ
number | undefined
Z coordinate of world spawn.
levelDat.spawnZ = 0;

Game Settings

gameType
GameType | undefined
Game mode: survival (0), creative (1), or adventure (2).
import { GameType } from '@minecraft/creator-tools';

levelDat.gameType = GameType.creative;
difficulty
Difficulty | undefined
Game difficulty: peaceful (0), easy (1), normal (2), or hard (3).
import { Difficulty } from '@minecraft/creator-tools';

levelDat.difficulty = Difficulty.normal;
generator
Generator | undefined
World type: old (0), infinite (1), or flat (2).
import { Generator } from '@minecraft/creator-tools';

levelDat.generator = Generator.flat;
commandsEnabled
boolean | undefined
Whether commands/cheats are enabled.
levelDat.commandsEnabled = true;
levelDat.cheatsEnabled = true; // Alias
commandBlocksEnabled
boolean | undefined
Whether command blocks are enabled.
levelDat.commandBlocksEnabled = true;

Experiments

betaApisExperiment
boolean | undefined
Enable Beta APIs for scripting.
levelDat.betaApisExperiment = true;
deferredTechnicalPreviewExperiment
boolean | undefined
Enable Deferred Technical Preview.
levelDat.deferredTechnicalPreviewExperiment = true;
dataDrivenItemsExperiment
boolean | undefined
Enable Data Driven Items.
levelDat.dataDrivenItemsExperiment = true;
savedWithToggledExperiments
boolean | undefined
Whether experiments have been toggled.
experimentsEverUsed
boolean | undefined
Whether any experiments have been used.

Game Rules

doDaylightCycle
boolean | undefined
Whether daylight cycle advances.
levelDat.doDaylightCycle = false; // Freeze time
doWeatherCycle
boolean | undefined
Whether weather changes.
doMobSpawning
boolean | undefined
Whether mobs spawn naturally.
levelDat.doMobSpawning = false; // Disable mob spawning
doMobLoot
boolean | undefined
Whether mobs drop loot.
doTileDrops
boolean | undefined
Whether blocks drop items when broken.
doEntityDrops
boolean | undefined
Whether entities drop items.
doFireTick
boolean | undefined
Whether fire spreads.
mobGriefing
boolean | undefined
Whether mobs can destroy blocks.
keepInventory
boolean | undefined
Whether players keep inventory on death.
levelDat.keepInventory = true;
showCoordinates
boolean | undefined
Whether to show coordinates in UI.
levelDat.showCoordinates = true;
commandBlockOutput
boolean | undefined
Whether command blocks output to chat.
sendCommandFeedback
boolean | undefined
Whether commands send feedback.
randomTickSpeed
number | undefined
Random tick speed (default 1).
levelDat.randomTickSpeed = 3; // Faster crop growth

Damage Settings

fallDamage
boolean | undefined
Whether fall damage is enabled.
fireDamage
boolean | undefined
Whether fire damage is enabled.
drowningDamage
boolean | undefined
Whether drowning damage is enabled.
freezeDamage
boolean | undefined
Whether freeze damage is enabled.

Player Abilities

mayFly
boolean | undefined
Whether player can fly.
flying
boolean | undefined
Whether player is currently flying.
instaBuild
boolean | undefined
Whether player has instant build.
invulnerable
boolean | undefined
Whether player is invulnerable.
flySpeed
number | undefined
Fly speed multiplier (default 0.5).
walkSpeed
number | undefined
Walk speed multiplier (default 0.1).

Multiplayer

multiplayerGame
boolean | undefined
Whether multiplayer is enabled.
multiplayerGameIntent
boolean | undefined
Intent for multiplayer.
lanBroadcast
boolean | undefined
Whether to broadcast on LAN.
pvp
boolean | undefined
Whether PvP is enabled.

Version Information

lastPlayed
bigint | undefined
Timestamp of last play session.
minimumCompatibleClientVersion
number[] | undefined
Minimum client version required [major, minor, patch, build, revision].
levelDat.minimumCompatibleClientVersion = [1, 20, 0, 0, 0];
lastOpenedWithVersion
number[] | undefined
Last version that opened this world.
storageVersion
number | undefined
LevelDB storage version (usually 10).

Flat World Settings

flatWorldLayers
IFlatWorldLayerSet | undefined
Layer configuration for flat worlds.
levelDat.flatWorldLayers = {
  biome_id: 1,
  block_layers: [
    { block_name: "minecraft:bedrock", count: 1 },
    { block_name: "minecraft:dirt", count: 2 },
    { block_name: "minecraft:grass", count: 1 }
  ],
  encoding_version: 6,
  structure_options: null,
  world_version: "version.post_1_18"
};

Methods

ensureDefaults
() => void
Sets default values for all undefined properties.
levelDat.ensureDefaults();
// All properties now have sensible defaults
applyFromWorldSettings
(settings: IWorldSettings) => void
Applies settings from an IWorldSettings object.
levelDat.applyFromWorldSettings({
  name: "New World",
  gameType: GameType.creative,
  difficulty: Difficulty.peaceful,
  betaApisExperiment: true
});

Example: Modifying World Settings

import { WorldLevelDat, GameType, Difficulty } from '@minecraft/creator-tools';

async function configureWorld(levelDatFile: IFile) {
  // Load existing level.dat
  await levelDatFile.loadContent();
  const bytes = levelDatFile.content as Uint8Array;
  
  const levelDat = new WorldLevelDat();
  levelDat.loadFromNbtBytes(bytes);
  
  // Modify settings
  levelDat.levelName = "Creative Build World";
  levelDat.gameType = GameType.creative;
  levelDat.difficulty = Difficulty.peaceful;
  levelDat.commandsEnabled = true;
  levelDat.betaApisExperiment = true;
  levelDat.showCoordinates = true;
  levelDat.doDaylightCycle = false;
  levelDat.doWeatherCycle = false;
  levelDat.doMobSpawning = false;
  
  // Save changes
  levelDat.persist();
  const newBytes = levelDat.getBytes();
  
  if (newBytes) {
    levelDatFile.setContent(newBytes);
    await levelDatFile.saveContent();
    console.log('World settings saved');
  }
}

Enums

enum GameType {
  survival = 0,
  creative = 1,
  adventure = 2
}

enum Generator {
  old = 0,
  infinite = 1,
  flat = 2
}

enum Difficulty {
  peaceful = 0,
  easy = 1,
  normal = 2,
  hard = 3
}

enum PlayerPermissionsLevel {
  visitor = 0,
  member = 1,
  operator = 2,
  custom = 3
}

Build docs developers (and LLMs) love