Skip to main content

Overview

Every Minecraft Creator Tools project stores configuration in an IProjectData interface. This metadata file controls project behavior, versioning, deployment, and editor preferences.

Configuration File

Project settings are stored in a JSON file managed by the Carto system, typically outside your project folder in a preferences directory. You can access and modify these settings programmatically through the Project class.

Core Properties

name
string
required
Internal project identifier (unique, lowercase, no spaces)
title
string
required
Human-readable project title displayed in the UI
shortName
string
Abbreviated project name for compact displays
description
string
required
Project description explaining its purpose
creator
string
Author or organization name
defaultNamespace
string
Default namespace for project identifiers (e.g., “mycompany”)

Project Focus

The focus property determines project type and available features:
focus
ProjectFocus
required
Project focus type:
  • general (0) - Standard add-on project
  • gameTests (1) - Game test focused project
  • world (2) - World template project
  • focusedCodeSnippet (3) - Code snippet/example
  • editorExtension (4) - Editor extension project

Script Configuration

preferredScriptLanguage
ProjectScriptLanguage
Preferred scripting language:
  • javaScript (0) - JavaScript
  • typeScript (1) - TypeScript
scriptVersion
ProjectScriptVersion
Script API version:
  • latestStable (0) - Latest stable release
  • stable10 (1) - Minecraft 1.0 stable
  • latestBeta (999) - Latest beta/preview
scriptEntryPoint
string
Main script file path (e.g., “scripts/main.js”)

Versioning

versionMajor
number
Major version number (increments for breaking changes)
versionMinor
number
Minor version number (increments for new features)
versionPatch
number
Patch version number (increments for bug fixes)

Deployment Settings

autoDeploymentMode
number
Automatic deployment mode:
  • 0 - Off (manual deployment only)
  • 1 - On save (deploy when project saves)
  • 2 - On change (deploy when files change)
track
MinecraftTrack
Target Minecraft version:
  • main - Stable/Release version
  • preview - Beta/Preview version

World Settings

usesCustomWorldSettings
boolean
Whether project uses custom world settings
worldSettings
IWorldSettings
Runtime world configuration (spawn point, game rules, etc.)
editorWorldSettings
IWorldSettings
Editor-specific world settings for testing

Editor Preferences

editPreference
ProjectEditPreference
Default editing mode:
  • default (0) - Standard editing
  • summarized (1) - Simplified view
  • editors (2) - Advanced editors
  • raw (3) - Raw JSON editing
showHiddenItems
boolean
Display hidden/system files in project tree
showFunctions
boolean
Display function files in project tree
showAssets
boolean
Display asset files (images, audio) in project tree
showTypes
boolean
Display TypeScript type definition files

GitHub Integration

gitHubOwner
string
GitHub repository owner (username or organization)
gitHubRepoName
string
GitHub repository name
gitHubBranch
string
Git branch name (e.g., “main”, “develop”)
gitHubFolder
string
Subfolder within repository containing the project

Example Configuration

{
  "name": "my-addon",
  "title": "My Amazing Add-on",
  "description": "A custom behavior and resource pack",
  "creator": "YourName",
  "defaultNamespace": "mycompany",
  "focus": 0,
  "editPreference": 0,
  "preferredScriptLanguage": 1,
  "scriptVersion": 0,
  "versionMajor": 1,
  "versionMinor": 0,
  "versionPatch": 0,
  "track": "main",
  "autoDeploymentMode": 1,
  "showHiddenItems": false,
  "showFunctions": true,
  "showAssets": true,
  "storageBasePath": "/projects/my-addon",
  "dataType": 0,
  "variants": {}
}

Programmatic Access

Access project settings through the Project class:
import { Project } from '@minecraft/creator-tools';

// Load project
const project = await Project.loadFromFolder(storage, folder);

// Read settings
console.log(project.title);
console.log(project.versionMajor, project.versionMinor, project.versionPatch);

// Modify settings
project.title = "Updated Title";
project.versionPatch++;

// Save changes
await project.save();

Best Practices

Use semantic versioning (major.minor.patch) to track breaking changes, new features, and bug fixes.
The defaultNamespace should be unique to avoid identifier conflicts with other add-ons.
Changing focus after project creation may cause validation errors if project structure doesn’t match the new focus type.

Build docs developers (and LLMs) love