Update Modes
Essential Loader supports three distinct update modes, configurable via theautoUpdate property:
- Full (true)
- Manual (with-prompt)
- Off (false)
Automatic updates enabledThis is the default mode for thin container mods (without pinned jars).
- Checks for updates on every game boot
- Automatically downloads and installs the latest version
- Ignores any pinned versions in the container mod
- Updates to the latest version on the configured branch
How Version Checking Works
The loader implements sophisticated version checking logic to ensure smooth updates:Initial Load
- Check for cached version: Look for already-downloaded jar in
.minecraft/essential/loader/stage1/$variant/ - Verify checksum: Ensure cached version hasn’t been corrupted
- Use pinned version: If no cached version exists, extract from container mod
- Download latest: If neither exists, fetch latest from configured branch
Full Auto-Update Mode
- Fetches metadata for the latest version on the configured branch
- Compares checksums (not just version numbers)
- Downloads if any difference is detected
- Skips check if relaunching (to avoid infinite loops)
Manual Update Mode (with-prompt)
The click-to-update flow involves multiple configuration properties:Set by the loader when a new update is available.Must not be modified by the mod. Instead, set
pendingUpdateResolution to respond.Example: 1.2.0.13Set by the mod (or fallback UI) to accept or reject the pending update.
true: Accept and download the updatefalse: Ignore this specific update versionnull/unset: Decision pending
Internal use only. Stores the last version the user accepted.Used to prevent downgrades when container mod version changes. See Pinning documentation for details.
Update Resolution Flow
Branch Selection
Control which release channel to follow using thebranch property:
The update branch to follow.Common values:
stable: Production releases (default)beta: Beta testing releasesstaging: Development/staging releases
Configuration Hierarchy
Branch selection follows this priority order:- User configuration file:
.minecraft/essential/mods/$pub_$mod/essential-loader.properties - System property:
-Dessential.stage2.branch=beta - Environment variable:
ESSENTIAL_STAGE2_BRANCH=beta - Container mod:
essential-loader.propertiesin the jar - Default:
stable
- Container Default
- User Override
- System Property
Programmatic Update Control
Mods can programmatically enable or disable updates by writing to the user configuration file:User Configuration Location
The configuration file path follows this pattern:$pub=publisherSlug$mod=modSlug
If
publisherSlug and modSlug are identical, the folder name is shortened to just $mod.Special case: Essential itself uses .minecraft/essential/essential-loader.properties for legacy reasons.Disabling Updates
To completely disable update checks:- User Configuration
- Programmatically
- System Property
Create or edit
.minecraft/essential/mods/$pub_$mod/essential-loader.properties:- No network requests are made (after initial download if needed)
- Cached version is used if available
- Pinned version is used if no cache exists
- Perfect for offline gameplay or controlled environments
Update Prompts
WhenautoUpdate=with-prompt, the loader manages update prompts:
Mod-Implemented Prompts
Your mod should:- Check for
pendingUpdateVersionin the config file - Display an in-game UI with update details
- Write
pendingUpdateResolution=trueorfalsebased on user choice
Fallback Prompt
If the mod doesn’t handle the prompt, the loader shows a standalone UI:- Displays update version and changelog summary
- Allows user to accept or decline
- Ensures updates are possible even with broken mod versions