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();
Saves current properties to the internal NBT structure.levelDat.levelName = "My World";
levelDat.persist();
const bytes = levelDat.getBytes();
World Identification
World name displayed in-game.levelDat.levelName = "Survival World";
World generation seed as a string.levelDat.randomSeed = "3025905974105939481";
Spawn Location
X coordinate of world spawn.
Y coordinate of world spawn.
Z coordinate of world spawn.
Game Settings
Game mode: survival (0), creative (1), or adventure (2).import { GameType } from '@minecraft/creator-tools';
levelDat.gameType = GameType.creative;
Game difficulty: peaceful (0), easy (1), normal (2), or hard (3).import { Difficulty } from '@minecraft/creator-tools';
levelDat.difficulty = Difficulty.normal;
World type: old (0), infinite (1), or flat (2).import { Generator } from '@minecraft/creator-tools';
levelDat.generator = Generator.flat;
Whether commands/cheats are enabled.levelDat.commandsEnabled = true;
levelDat.cheatsEnabled = true; // Alias
Whether command blocks are enabled.levelDat.commandBlocksEnabled = true;
Experiments
Enable Beta APIs for scripting.levelDat.betaApisExperiment = true;
deferredTechnicalPreviewExperiment
Enable Deferred Technical Preview.levelDat.deferredTechnicalPreviewExperiment = true;
dataDrivenItemsExperiment
Enable Data Driven Items.levelDat.dataDrivenItemsExperiment = true;
savedWithToggledExperiments
Whether experiments have been toggled.
Whether any experiments have been used.
Game Rules
Whether daylight cycle advances.levelDat.doDaylightCycle = false; // Freeze time
Whether mobs spawn naturally.levelDat.doMobSpawning = false; // Disable mob spawning
Whether blocks drop items when broken.
Whether entities drop items.
Whether mobs can destroy blocks.
Whether players keep inventory on death.levelDat.keepInventory = true;
Whether to show coordinates in UI.levelDat.showCoordinates = true;
Whether command blocks output to chat.
Whether commands send feedback.
Random tick speed (default 1).levelDat.randomTickSpeed = 3; // Faster crop growth
Damage Settings
Whether fall damage is enabled.
Whether fire damage is enabled.
Whether drowning damage is enabled.
Whether freeze damage is enabled.
Player Abilities
Whether player is currently flying.
Whether player has instant build.
Whether player is invulnerable.
Fly speed multiplier (default 0.5).
Walk speed multiplier (default 0.1).
Multiplayer
Whether multiplayer is enabled.
Whether to broadcast on LAN.
Timestamp of last play session.
minimumCompatibleClientVersion
Minimum client version required [major, minor, patch, build, revision].levelDat.minimumCompatibleClientVersion = [1, 20, 0, 0, 0];
Last version that opened this world.
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
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
}