Skip to content

Repository files navigation

v4 • minecraft‑java‑core

License: CC‑BY‑NC 4.0stable version

minecraft‑java‑core is a NodeJS/TypeScript solution for launching both vanilla and modded Minecraft Java Edition without juggling JSON manifests, assets, libraries or Java runtimes yourself. Think of it as the core of an Electron/NW.js/CLI launcher.


Getting support

Need help or just want to chat? Join the community Discord!


Installing

npm i minecraft-java-core
# or
yarn add minecraft-java-core

Requirements: Node ≥ 18, TypeScript (only if you import .ts), 7‑Zip embedded binary.


Standard Example (ESM)

import{Launch,Microsoft}from'minecraft-java-core';// ⚠️ In production, perform auth **before** initialising the launcher// so you can handle refresh / error flows cleanly.constauth=awaitMicrosoft.auth({client_id: '00000000-0000-0000-0000-000000000000',type: 'terminal'// 'electron' | 'nwjs'});constlauncher=newLaunch();launcher.on('progress',p=>console.log(`[DL] ${p}%`)).on('data',line=>process.stdout.write(line)).on('close',()=>console.log('Game exited.'));awaitlauncher.launch({root: './minecraft',authenticator: auth,version: {number: '1.20.4',type: 'release'},loader: {type: 'fabric',version: '0.15.9'},memory: {min: '2G',max: '4G'}});

Documentation

Launch class

FunctionTypeDescription
launchPromiseLaunches Minecraft with the given LaunchOptions (see below).

LaunchOptions

ParameterTypeDescriptionRequired
pathStringWorking directory where game files are stored (usually .minecraft).✔︎
urlString | nullCustom version manifest base URL (only for mirror setups).
authenticatorObjectMicrosoft / Mojang / AZauth profile returned by the authenticator.✔︎
timeoutIntegerNetwork timeout in milliseconds for downloads.
versionString'latest_release', 'latest_snapshot', '1.21.1'.
instanceString | nullName of the instance if you manage multiple profiles.
detachedBooleanDetach the Java process from the launcher.
intelEnabledMacBooleanForce Rosetta when running on Apple Silicon.
downloadFileMultipleIntegerMax parallel downloads.
loader.enableBooleanWhether to install a mod‑loader (Forge/Fabric/…).
loader.typeString | nullforge, neoforge, fabric, legacyfabric, quilt.
loader.buildStringLoader build tag (e.g. latest, 0.15.9).
loader.pathStringDestination folder for loader files. Defaults to ./loader.
mcpString | nullPath to MCP configuration for legacy mods.
verifyBooleanVerify SHA‑1 of downloaded files.
ignoredArrayList of files to skip during verification.
JVM_ARGSArrayExtra JVM arguments.
GAME_ARGSArrayExtra Minecraft arguments.
java.pathString | nullAbsolute path to Java runtime.
java.versionString | nullForce a specific Java version (e.g. 17).
java.typeStringjre or jdk.
screen.widthNumber | nullWidth of game window.
screen.heightNumber | nullHeight of game window.
screen.fullscreenBooleanStart the game in fullscreen mode.
memory.minStringMinimum RAM (e.g. 1G).✔︎
memory.maxStringMaximum RAM (e.g. 2G).✔︎

Recommendation: Start with the minimal set (authenticator, path, version, memory) and gradually add overrides only when you need them.

Default configuration

Below is the complete defaultLaunchOptions object returned by minecraft‑java‑core when you don’t override any field. Use it as a quick reference for every available parameter and its default value.
(Parameters marked nullable can be left null/undefined and the library will figure out sane values.)

constdefaultOptions={url: null,// Optional custom manifest URLauthenticator: null,// Microsoft/Mojang/AZauth profiletimeout: 10000,// Network timeout in mspath: '.Minecraft',// Root directory (alias: root)version: 'latest_release',// Minecraft version (string or 'latest_…')instance: null,// Multi‑instance name (optional)detached: false,// Detach Java process from parentintelEnabledMac: false,// Rosetta toggle for Apple SilicondownloadFileMultiple: 5,// Parallel downloadsloader: {path: './loader',// Where to install loaderstype: null,// forge | neoforge | fabric | …build: 'latest',// Build number / tagenable: false,// Whether to install the loader},mcp: null,// Path to MCP config (legacy mods)verify: false,// SHA‑1 check after downloadignored: [],// Files to skip verificationJVM_ARGS: [],// Extra JVM argumentsGAME_ARGS: [],// Extra game argumentsjava: {path: null,// Custom JVM pathversion: null,// Explicit Java versiontype: 'jre',// jre | jdk},screen: {width: null,height: null,fullscreen: false,},memory: {min: '1G',max: '2G',},}asconst;

Note : Any field you provide when calling Launch.launch() will be merged on top of these defaults; you rarely need to specify more than authenticator, path, version and memory.


Events

Event NamePayloadDescription
dataStringRaw output from the Java process.
progressNumberGlobal download progress percentage.
speedNumberCurrent download speed (kB/s).
estimatedNumberEstimated time remaining (s).
extractStringName of the file currently being extracted.
patchStringLoader patch currently applied.
closevoidEmitted when the Java process exits.
errorErrorSomething went wrong.

Authentication (built‑in)

  • Microsoft — OAuth 2 Device Code flow via Xbox Live → XSTS → Minecraft.
  • Mojang(legacy) — classic Yggdrasil endpoint.
  • AZauth — community Yggdrasil‑compatible server.

The authenticator returns a profile object that you pass directly to Launch.launch().


Utilities

  • Downloader — resilient downloader with resume, integrity check & progress/speed events.
  • Status — simple TCP ping that returns MOTD, player count & latency.

File structure (simplified)

src/
Authenticator/ Microsoft, Mojang, AZauth flows
Minecraft/ Version JSON, assets, libraries, args builder
Minecraft-Loader/ Forge, NeoForge, Fabric, Quilt, … installers
StatusServer/ Server ping implementation
utils/ Downloader & helpers
Launch.ts Main entry point
assets/ LWJGL native indexes

Contributors

See the commit history for a full list. Special thanks to:

  • Luuxis — original author.
  • Community testers & issue reporters.

License

Released under Creative Commons Attribution‑NonCommercial 4.0 International.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - Almyria/minecraft-java-core · GitHub
Skip to content

Repository files navigation

v4 • minecraft‑java‑core

License: CC‑BY‑NC 4.0stable version

minecraft‑java‑core is a NodeJS/TypeScript solution for launching both vanilla and modded Minecraft Java Edition without juggling JSON manifests, assets, libraries or Java runtimes yourself. Think of it as the core of an Electron/NW.js/CLI launcher.


Getting support

Need help or just want to chat? Join the community Discord!


Installing

npm i minecraft-java-core
# or
yarn add minecraft-java-core

Requirements: Node ≥ 18, TypeScript (only if you import .ts), 7‑Zip embedded binary.


Standard Example (ESM)

import{Launch,Microsoft}from'minecraft-java-core';// ⚠️ In production, perform auth **before** initialising the launcher// so you can handle refresh / error flows cleanly.constauth=awaitMicrosoft.auth({client_id: '00000000-0000-0000-0000-000000000000',type: 'terminal'// 'electron' | 'nwjs'});constlauncher=newLaunch();launcher.on('progress',p=>console.log(`[DL] ${p}%`)).on('data',line=>process.stdout.write(line)).on('close',()=>console.log('Game exited.'));awaitlauncher.launch({root: './minecraft',authenticator: auth,version: {number: '1.20.4',type: 'release'},loader: {type: 'fabric',version: '0.15.9'},memory: {min: '2G',max: '4G'}});

Documentation

Launch class

FunctionTypeDescription
launchPromiseLaunches Minecraft with the given LaunchOptions (see below).

LaunchOptions

ParameterTypeDescriptionRequired
pathStringWorking directory where game files are stored (usually .minecraft).✔︎
urlString | nullCustom version manifest base URL (only for mirror setups).
authenticatorObjectMicrosoft / Mojang / AZauth profile returned by the authenticator.✔︎
timeoutIntegerNetwork timeout in milliseconds for downloads.
versionString'latest_release', 'latest_snapshot', '1.21.1'.
instanceString | nullName of the instance if you manage multiple profiles.
detachedBooleanDetach the Java process from the launcher.
intelEnabledMacBooleanForce Rosetta when running on Apple Silicon.
downloadFileMultipleIntegerMax parallel downloads.
loader.enableBooleanWhether to install a mod‑loader (Forge/Fabric/…).
loader.typeString | nullforge, neoforge, fabric, legacyfabric, quilt.
loader.buildStringLoader build tag (e.g. latest, 0.15.9).
loader.pathStringDestination folder for loader files. Defaults to ./loader.
mcpString | nullPath to MCP configuration for legacy mods.
verifyBooleanVerify SHA‑1 of downloaded files.
ignoredArrayList of files to skip during verification.
JVM_ARGSArrayExtra JVM arguments.
GAME_ARGSArrayExtra Minecraft arguments.
java.pathString | nullAbsolute path to Java runtime.
java.versionString | nullForce a specific Java version (e.g. 17).
java.typeStringjre or jdk.
screen.widthNumber | nullWidth of game window.
screen.heightNumber | nullHeight of game window.
screen.fullscreenBooleanStart the game in fullscreen mode.
memory.minStringMinimum RAM (e.g. 1G).✔︎
memory.maxStringMaximum RAM (e.g. 2G).✔︎

Recommendation: Start with the minimal set (authenticator, path, version, memory) and gradually add overrides only when you need them.

Default configuration

Below is the complete defaultLaunchOptions object returned by minecraft‑java‑core when you don’t override any field. Use it as a quick reference for every available parameter and its default value.
(Parameters marked nullable can be left null/undefined and the library will figure out sane values.)

constdefaultOptions={url: null,// Optional custom manifest URLauthenticator: null,// Microsoft/Mojang/AZauth profiletimeout: 10000,// Network timeout in mspath: '.Minecraft',// Root directory (alias: root)version: 'latest_release',// Minecraft version (string or 'latest_…')instance: null,// Multi‑instance name (optional)detached: false,// Detach Java process from parentintelEnabledMac: false,// Rosetta toggle for Apple SilicondownloadFileMultiple: 5,// Parallel downloadsloader: {path: './loader',// Where to install loaderstype: null,// forge | neoforge | fabric | …build: 'latest',// Build number / tagenable: false,// Whether to install the loader},mcp: null,// Path to MCP config (legacy mods)verify: false,// SHA‑1 check after downloadignored: [],// Files to skip verificationJVM_ARGS: [],// Extra JVM argumentsGAME_ARGS: [],// Extra game argumentsjava: {path: null,// Custom JVM pathversion: null,// Explicit Java versiontype: 'jre',// jre | jdk},screen: {width: null,height: null,fullscreen: false,},memory: {min: '1G',max: '2G',},}asconst;

Note : Any field you provide when calling Launch.launch() will be merged on top of these defaults; you rarely need to specify more than authenticator, path, version and memory.


Events

Event NamePayloadDescription
dataStringRaw output from the Java process.
progressNumberGlobal download progress percentage.
speedNumberCurrent download speed (kB/s).
estimatedNumberEstimated time remaining (s).
extractStringName of the file currently being extracted.
patchStringLoader patch currently applied.
closevoidEmitted when the Java process exits.
errorErrorSomething went wrong.

Authentication (built‑in)

  • Microsoft — OAuth 2 Device Code flow via Xbox Live → XSTS → Minecraft.
  • Mojang(legacy) — classic Yggdrasil endpoint.
  • AZauth — community Yggdrasil‑compatible server.

The authenticator returns a profile object that you pass directly to Launch.launch().


Utilities

  • Downloader — resilient downloader with resume, integrity check & progress/speed events.
  • Status — simple TCP ping that returns MOTD, player count & latency.

File structure (simplified)

src/
Authenticator/ Microsoft, Mojang, AZauth flows
Minecraft/ Version JSON, assets, libraries, args builder
Minecraft-Loader/ Forge, NeoForge, Fabric, Quilt, … installers
StatusServer/ Server ping implementation
utils/ Downloader & helpers
Launch.ts Main entry point
assets/ LWJGL native indexes

Contributors

See the commit history for a full list. Special thanks to:

  • Luuxis — original author.
  • Community testers & issue reporters.

License

Released under Creative Commons Attribution‑NonCommercial 4.0 International.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Almyria/minecraft-java-core · GitHub
Skip to content

Repository files navigation

v4 • minecraft‑java‑core

License: CC‑BY‑NC 4.0stable version

minecraft‑java‑core is a NodeJS/TypeScript solution for launching both vanilla and modded Minecraft Java Edition without juggling JSON manifests, assets, libraries or Java runtimes yourself. Think of it as the core of an Electron/NW.js/CLI launcher.


Getting support

Need help or just want to chat? Join the community Discord!


Installing

npm i minecraft-java-core
# or
yarn add minecraft-java-core

Requirements: Node ≥ 18, TypeScript (only if you import .ts), 7‑Zip embedded binary.


Standard Example (ESM)

import{Launch,Microsoft}from'minecraft-java-core';// ⚠️ In production, perform auth **before** initialising the launcher// so you can handle refresh / error flows cleanly.constauth=awaitMicrosoft.auth({client_id: '00000000-0000-0000-0000-000000000000',type: 'terminal'// 'electron' | 'nwjs'});constlauncher=newLaunch();launcher.on('progress',p=>console.log(`[DL] ${p}%`)).on('data',line=>process.stdout.write(line)).on('close',()=>console.log('Game exited.'));awaitlauncher.launch({root: './minecraft',authenticator: auth,version: {number: '1.20.4',type: 'release'},loader: {type: 'fabric',version: '0.15.9'},memory: {min: '2G',max: '4G'}});

Documentation

Launch class

FunctionTypeDescription
launchPromiseLaunches Minecraft with the given LaunchOptions (see below).

LaunchOptions

ParameterTypeDescriptionRequired
pathStringWorking directory where game files are stored (usually .minecraft).✔︎
urlString | nullCustom version manifest base URL (only for mirror setups).
authenticatorObjectMicrosoft / Mojang / AZauth profile returned by the authenticator.✔︎
timeoutIntegerNetwork timeout in milliseconds for downloads.
versionString'latest_release', 'latest_snapshot', '1.21.1'.
instanceString | nullName of the instance if you manage multiple profiles.
detachedBooleanDetach the Java process from the launcher.
intelEnabledMacBooleanForce Rosetta when running on Apple Silicon.
downloadFileMultipleIntegerMax parallel downloads.
loader.enableBooleanWhether to install a mod‑loader (Forge/Fabric/…).
loader.typeString | nullforge, neoforge, fabric, legacyfabric, quilt.
loader.buildStringLoader build tag (e.g. latest, 0.15.9).
loader.pathStringDestination folder for loader files. Defaults to ./loader.
mcpString | nullPath to MCP configuration for legacy mods.
verifyBooleanVerify SHA‑1 of downloaded files.
ignoredArrayList of files to skip during verification.
JVM_ARGSArrayExtra JVM arguments.
GAME_ARGSArrayExtra Minecraft arguments.
java.pathString | nullAbsolute path to Java runtime.
java.versionString | nullForce a specific Java version (e.g. 17).
java.typeStringjre or jdk.
screen.widthNumber | nullWidth of game window.
screen.heightNumber | nullHeight of game window.
screen.fullscreenBooleanStart the game in fullscreen mode.
memory.minStringMinimum RAM (e.g. 1G).✔︎
memory.maxStringMaximum RAM (e.g. 2G).✔︎

Recommendation: Start with the minimal set (authenticator, path, version, memory) and gradually add overrides only when you need them.

Default configuration

Below is the complete defaultLaunchOptions object returned by minecraft‑java‑core when you don’t override any field. Use it as a quick reference for every available parameter and its default value.
(Parameters marked nullable can be left null/undefined and the library will figure out sane values.)

constdefaultOptions={url: null,// Optional custom manifest URLauthenticator: null,// Microsoft/Mojang/AZauth profiletimeout: 10000,// Network timeout in mspath: '.Minecraft',// Root directory (alias: root)version: 'latest_release',// Minecraft version (string or 'latest_…')instance: null,// Multi‑instance name (optional)detached: false,// Detach Java process from parentintelEnabledMac: false,// Rosetta toggle for Apple SilicondownloadFileMultiple: 5,// Parallel downloadsloader: {path: './loader',// Where to install loaderstype: null,// forge | neoforge | fabric | …build: 'latest',// Build number / tagenable: false,// Whether to install the loader},mcp: null,// Path to MCP config (legacy mods)verify: false,// SHA‑1 check after downloadignored: [],// Files to skip verificationJVM_ARGS: [],// Extra JVM argumentsGAME_ARGS: [],// Extra game argumentsjava: {path: null,// Custom JVM pathversion: null,// Explicit Java versiontype: 'jre',// jre | jdk},screen: {width: null,height: null,fullscreen: false,},memory: {min: '1G',max: '2G',},}asconst;

Note : Any field you provide when calling Launch.launch() will be merged on top of these defaults; you rarely need to specify more than authenticator, path, version and memory.


Events

Event NamePayloadDescription
dataStringRaw output from the Java process.
progressNumberGlobal download progress percentage.
speedNumberCurrent download speed (kB/s).
estimatedNumberEstimated time remaining (s).
extractStringName of the file currently being extracted.
patchStringLoader patch currently applied.
closevoidEmitted when the Java process exits.
errorErrorSomething went wrong.

Authentication (built‑in)

  • Microsoft — OAuth 2 Device Code flow via Xbox Live → XSTS → Minecraft.
  • Mojang(legacy) — classic Yggdrasil endpoint.
  • AZauth — community Yggdrasil‑compatible server.

The authenticator returns a profile object that you pass directly to Launch.launch().


Utilities

  • Downloader — resilient downloader with resume, integrity check & progress/speed events.
  • Status — simple TCP ping that returns MOTD, player count & latency.

File structure (simplified)

src/
Authenticator/ Microsoft, Mojang, AZauth flows
Minecraft/ Version JSON, assets, libraries, args builder
Minecraft-Loader/ Forge, NeoForge, Fabric, Quilt, … installers
StatusServer/ Server ping implementation
utils/ Downloader & helpers
Launch.ts Main entry point
assets/ LWJGL native indexes

Contributors

See the commit history for a full list. Special thanks to:

  • Luuxis — original author.
  • Community testers & issue reporters.

License

Released under Creative Commons Attribution‑NonCommercial 4.0 International.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Almyria/minecraft-java-core · GitHub
Skip to content

Repository files navigation

v4 • minecraft‑java‑core

License: CC‑BY‑NC 4.0stable version

minecraft‑java‑core is a NodeJS/TypeScript solution for launching both vanilla and modded Minecraft Java Edition without juggling JSON manifests, assets, libraries or Java runtimes yourself. Think of it as the core of an Electron/NW.js/CLI launcher.


Getting support

Need help or just want to chat? Join the community Discord!


Installing

npm i minecraft-java-core
# or
yarn add minecraft-java-core

Requirements: Node ≥ 18, TypeScript (only if you import .ts), 7‑Zip embedded binary.


Standard Example (ESM)

import{Launch,Microsoft}from'minecraft-java-core';// ⚠️ In production, perform auth **before** initialising the launcher// so you can handle refresh / error flows cleanly.constauth=awaitMicrosoft.auth({client_id: '00000000-0000-0000-0000-000000000000',type: 'terminal'// 'electron' | 'nwjs'});constlauncher=newLaunch();launcher.on('progress',p=>console.log(`[DL] ${p}%`)).on('data',line=>process.stdout.write(line)).on('close',()=>console.log('Game exited.'));awaitlauncher.launch({root: './minecraft',authenticator: auth,version: {number: '1.20.4',type: 'release'},loader: {type: 'fabric',version: '0.15.9'},memory: {min: '2G',max: '4G'}});

Documentation

Launch class

FunctionTypeDescription
launchPromiseLaunches Minecraft with the given LaunchOptions (see below).

LaunchOptions

ParameterTypeDescriptionRequired
pathStringWorking directory where game files are stored (usually .minecraft).✔︎
urlString | nullCustom version manifest base URL (only for mirror setups).
authenticatorObjectMicrosoft / Mojang / AZauth profile returned by the authenticator.✔︎
timeoutIntegerNetwork timeout in milliseconds for downloads.
versionString'latest_release', 'latest_snapshot', '1.21.1'.
instanceString | nullName of the instance if you manage multiple profiles.
detachedBooleanDetach the Java process from the launcher.
intelEnabledMacBooleanForce Rosetta when running on Apple Silicon.
downloadFileMultipleIntegerMax parallel downloads.
loader.enableBooleanWhether to install a mod‑loader (Forge/Fabric/…).
loader.typeString | nullforge, neoforge, fabric, legacyfabric, quilt.
loader.buildStringLoader build tag (e.g. latest, 0.15.9).
loader.pathStringDestination folder for loader files. Defaults to ./loader.
mcpString | nullPath to MCP configuration for legacy mods.
verifyBooleanVerify SHA‑1 of downloaded files.
ignoredArrayList of files to skip during verification.
JVM_ARGSArrayExtra JVM arguments.
GAME_ARGSArrayExtra Minecraft arguments.
java.pathString | nullAbsolute path to Java runtime.
java.versionString | nullForce a specific Java version (e.g. 17).
java.typeStringjre or jdk.
screen.widthNumber | nullWidth of game window.
screen.heightNumber | nullHeight of game window.
screen.fullscreenBooleanStart the game in fullscreen mode.
memory.minStringMinimum RAM (e.g. 1G).✔︎
memory.maxStringMaximum RAM (e.g. 2G).✔︎

Recommendation: Start with the minimal set (authenticator, path, version, memory) and gradually add overrides only when you need them.

Default configuration

Below is the complete defaultLaunchOptions object returned by minecraft‑java‑core when you don’t override any field. Use it as a quick reference for every available parameter and its default value.
(Parameters marked nullable can be left null/undefined and the library will figure out sane values.)

constdefaultOptions={url: null,// Optional custom manifest URLauthenticator: null,// Microsoft/Mojang/AZauth profiletimeout: 10000,// Network timeout in mspath: '.Minecraft',// Root directory (alias: root)version: 'latest_release',// Minecraft version (string or 'latest_…')instance: null,// Multi‑instance name (optional)detached: false,// Detach Java process from parentintelEnabledMac: false,// Rosetta toggle for Apple SilicondownloadFileMultiple: 5,// Parallel downloadsloader: {path: './loader',// Where to install loaderstype: null,// forge | neoforge | fabric | …build: 'latest',// Build number / tagenable: false,// Whether to install the loader},mcp: null,// Path to MCP config (legacy mods)verify: false,// SHA‑1 check after downloadignored: [],// Files to skip verificationJVM_ARGS: [],// Extra JVM argumentsGAME_ARGS: [],// Extra game argumentsjava: {path: null,// Custom JVM pathversion: null,// Explicit Java versiontype: 'jre',// jre | jdk},screen: {width: null,height: null,fullscreen: false,},memory: {min: '1G',max: '2G',},}asconst;

Note : Any field you provide when calling Launch.launch() will be merged on top of these defaults; you rarely need to specify more than authenticator, path, version and memory.


Events

Event NamePayloadDescription
dataStringRaw output from the Java process.
progressNumberGlobal download progress percentage.
speedNumberCurrent download speed (kB/s).
estimatedNumberEstimated time remaining (s).
extractStringName of the file currently being extracted.
patchStringLoader patch currently applied.
closevoidEmitted when the Java process exits.
errorErrorSomething went wrong.

Authentication (built‑in)

  • Microsoft — OAuth 2 Device Code flow via Xbox Live → XSTS → Minecraft.
  • Mojang(legacy) — classic Yggdrasil endpoint.
  • AZauth — community Yggdrasil‑compatible server.

The authenticator returns a profile object that you pass directly to Launch.launch().


Utilities

  • Downloader — resilient downloader with resume, integrity check & progress/speed events.
  • Status — simple TCP ping that returns MOTD, player count & latency.

File structure (simplified)

src/
Authenticator/ Microsoft, Mojang, AZauth flows
Minecraft/ Version JSON, assets, libraries, args builder
Minecraft-Loader/ Forge, NeoForge, Fabric, Quilt, … installers
StatusServer/ Server ping implementation
utils/ Downloader & helpers
Launch.ts Main entry point
assets/ LWJGL native indexes

Contributors

See the commit history for a full list. Special thanks to:

  • Luuxis — original author.
  • Community testers & issue reporters.

License

Released under Creative Commons Attribution‑NonCommercial 4.0 International.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - Almyria/minecraft-java-core · GitHub
Skip to content

Repository files navigation

v4 • minecraft‑java‑core

License: CC‑BY‑NC 4.0stable version

minecraft‑java‑core is a NodeJS/TypeScript solution for launching both vanilla and modded Minecraft Java Edition without juggling JSON manifests, assets, libraries or Java runtimes yourself. Think of it as the core of an Electron/NW.js/CLI launcher.


Getting support

Need help or just want to chat? Join the community Discord!


Installing

npm i minecraft-java-core
# or
yarn add minecraft-java-core

Requirements: Node ≥ 18, TypeScript (only if you import .ts), 7‑Zip embedded binary.


Standard Example (ESM)

import{Launch,Microsoft}from'minecraft-java-core';// ⚠️ In production, perform auth **before** initialising the launcher// so you can handle refresh / error flows cleanly.constauth=awaitMicrosoft.auth({client_id: '00000000-0000-0000-0000-000000000000',type: 'terminal'// 'electron' | 'nwjs'});constlauncher=newLaunch();launcher.on('progress',p=>console.log(`[DL] ${p}%`)).on('data',line=>process.stdout.write(line)).on('close',()=>console.log('Game exited.'));awaitlauncher.launch({root: './minecraft',authenticator: auth,version: {number: '1.20.4',type: 'release'},loader: {type: 'fabric',version: '0.15.9'},memory: {min: '2G',max: '4G'}});

Documentation

Launch class

FunctionTypeDescription
launchPromiseLaunches Minecraft with the given LaunchOptions (see below).

LaunchOptions

ParameterTypeDescriptionRequired
pathStringWorking directory where game files are stored (usually .minecraft).✔︎
urlString | nullCustom version manifest base URL (only for mirror setups).
authenticatorObjectMicrosoft / Mojang / AZauth profile returned by the authenticator.✔︎
timeoutIntegerNetwork timeout in milliseconds for downloads.
versionString'latest_release', 'latest_snapshot', '1.21.1'.
instanceString | nullName of the instance if you manage multiple profiles.
detachedBooleanDetach the Java process from the launcher.
intelEnabledMacBooleanForce Rosetta when running on Apple Silicon.
downloadFileMultipleIntegerMax parallel downloads.
loader.enableBooleanWhether to install a mod‑loader (Forge/Fabric/…).
loader.typeString | nullforge, neoforge, fabric, legacyfabric, quilt.
loader.buildStringLoader build tag (e.g. latest, 0.15.9).
loader.pathStringDestination folder for loader files. Defaults to ./loader.
mcpString | nullPath to MCP configuration for legacy mods.
verifyBooleanVerify SHA‑1 of downloaded files.
ignoredArrayList of files to skip during verification.
JVM_ARGSArrayExtra JVM arguments.
GAME_ARGSArrayExtra Minecraft arguments.
java.pathString | nullAbsolute path to Java runtime.
java.versionString | nullForce a specific Java version (e.g. 17).
java.typeStringjre or jdk.
screen.widthNumber | nullWidth of game window.
screen.heightNumber | nullHeight of game window.
screen.fullscreenBooleanStart the game in fullscreen mode.
memory.minStringMinimum RAM (e.g. 1G).✔︎
memory.maxStringMaximum RAM (e.g. 2G).✔︎

Recommendation: Start with the minimal set (authenticator, path, version, memory) and gradually add overrides only when you need them.

Default configuration

Below is the complete defaultLaunchOptions object returned by minecraft‑java‑core when you don’t override any field. Use it as a quick reference for every available parameter and its default value.
(Parameters marked nullable can be left null/undefined and the library will figure out sane values.)

constdefaultOptions={url: null,// Optional custom manifest URLauthenticator: null,// Microsoft/Mojang/AZauth profiletimeout: 10000,// Network timeout in mspath: '.Minecraft',// Root directory (alias: root)version: 'latest_release',// Minecraft version (string or 'latest_…')instance: null,// Multi‑instance name (optional)detached: false,// Detach Java process from parentintelEnabledMac: false,// Rosetta toggle for Apple SilicondownloadFileMultiple: 5,// Parallel downloadsloader: {path: './loader',// Where to install loaderstype: null,// forge | neoforge | fabric | …build: 'latest',// Build number / tagenable: false,// Whether to install the loader},mcp: null,// Path to MCP config (legacy mods)verify: false,// SHA‑1 check after downloadignored: [],// Files to skip verificationJVM_ARGS: [],// Extra JVM argumentsGAME_ARGS: [],// Extra game argumentsjava: {path: null,// Custom JVM pathversion: null,// Explicit Java versiontype: 'jre',// jre | jdk},screen: {width: null,height: null,fullscreen: false,},memory: {min: '1G',max: '2G',},}asconst;

Note : Any field you provide when calling Launch.launch() will be merged on top of these defaults; you rarely need to specify more than authenticator, path, version and memory.


Events

Event NamePayloadDescription
dataStringRaw output from the Java process.
progressNumberGlobal download progress percentage.
speedNumberCurrent download speed (kB/s).
estimatedNumberEstimated time remaining (s).
extractStringName of the file currently being extracted.
patchStringLoader patch currently applied.
closevoidEmitted when the Java process exits.
errorErrorSomething went wrong.

Authentication (built‑in)

  • Microsoft — OAuth 2 Device Code flow via Xbox Live → XSTS → Minecraft.
  • Mojang(legacy) — classic Yggdrasil endpoint.
  • AZauth — community Yggdrasil‑compatible server.

The authenticator returns a profile object that you pass directly to Launch.launch().


Utilities

  • Downloader — resilient downloader with resume, integrity check & progress/speed events.
  • Status — simple TCP ping that returns MOTD, player count & latency.

File structure (simplified)

src/
Authenticator/ Microsoft, Mojang, AZauth flows
Minecraft/ Version JSON, assets, libraries, args builder
Minecraft-Loader/ Forge, NeoForge, Fabric, Quilt, … installers
StatusServer/ Server ping implementation
utils/ Downloader & helpers
Launch.ts Main entry point
assets/ LWJGL native indexes

Contributors

See the commit history for a full list. Special thanks to:

  • Luuxis — original author.
  • Community testers & issue reporters.

License

Released under Creative Commons Attribution‑NonCommercial 4.0 International.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Almyria/minecraft-java-core · GitHub
Skip to content

Repository files navigation

v4 • minecraft‑java‑core

License: CC‑BY‑NC 4.0stable version

minecraft‑java‑core is a NodeJS/TypeScript solution for launching both vanilla and modded Minecraft Java Edition without juggling JSON manifests, assets, libraries or Java runtimes yourself. Think of it as the core of an Electron/NW.js/CLI launcher.


Getting support

Need help or just want to chat? Join the community Discord!


Installing

npm i minecraft-java-core
# or
yarn add minecraft-java-core

Requirements: Node ≥ 18, TypeScript (only if you import .ts), 7‑Zip embedded binary.


Standard Example (ESM)

import{Launch,Microsoft}from'minecraft-java-core';// ⚠️ In production, perform auth **before** initialising the launcher// so you can handle refresh / error flows cleanly.constauth=awaitMicrosoft.auth({client_id: '00000000-0000-0000-0000-000000000000',type: 'terminal'// 'electron' | 'nwjs'});constlauncher=newLaunch();launcher.on('progress',p=>console.log(`[DL] ${p}%`)).on('data',line=>process.stdout.write(line)).on('close',()=>console.log('Game exited.'));awaitlauncher.launch({root: './minecraft',authenticator: auth,version: {number: '1.20.4',type: 'release'},loader: {type: 'fabric',version: '0.15.9'},memory: {min: '2G',max: '4G'}});

Documentation

Launch class

FunctionTypeDescription
launchPromiseLaunches Minecraft with the given LaunchOptions (see below).

LaunchOptions

ParameterTypeDescriptionRequired
pathStringWorking directory where game files are stored (usually .minecraft).✔︎
urlString | nullCustom version manifest base URL (only for mirror setups).
authenticatorObjectMicrosoft / Mojang / AZauth profile returned by the authenticator.✔︎
timeoutIntegerNetwork timeout in milliseconds for downloads.
versionString'latest_release', 'latest_snapshot', '1.21.1'.
instanceString | nullName of the instance if you manage multiple profiles.
detachedBooleanDetach the Java process from the launcher.
intelEnabledMacBooleanForce Rosetta when running on Apple Silicon.
downloadFileMultipleIntegerMax parallel downloads.
loader.enableBooleanWhether to install a mod‑loader (Forge/Fabric/…).
loader.typeString | nullforge, neoforge, fabric, legacyfabric, quilt.
loader.buildStringLoader build tag (e.g. latest, 0.15.9).
loader.pathStringDestination folder for loader files. Defaults to ./loader.
mcpString | nullPath to MCP configuration for legacy mods.
verifyBooleanVerify SHA‑1 of downloaded files.
ignoredArrayList of files to skip during verification.
JVM_ARGSArrayExtra JVM arguments.
GAME_ARGSArrayExtra Minecraft arguments.
java.pathString | nullAbsolute path to Java runtime.
java.versionString | nullForce a specific Java version (e.g. 17).
java.typeStringjre or jdk.
screen.widthNumber | nullWidth of game window.
screen.heightNumber | nullHeight of game window.
screen.fullscreenBooleanStart the game in fullscreen mode.
memory.minStringMinimum RAM (e.g. 1G).✔︎
memory.maxStringMaximum RAM (e.g. 2G).✔︎

Recommendation: Start with the minimal set (authenticator, path, version, memory) and gradually add overrides only when you need them.

Default configuration

Below is the complete defaultLaunchOptions object returned by minecraft‑java‑core when you don’t override any field. Use it as a quick reference for every available parameter and its default value.
(Parameters marked nullable can be left null/undefined and the library will figure out sane values.)

constdefaultOptions={url: null,// Optional custom manifest URLauthenticator: null,// Microsoft/Mojang/AZauth profiletimeout: 10000,// Network timeout in mspath: '.Minecraft',// Root directory (alias: root)version: 'latest_release',// Minecraft version (string or 'latest_…')instance: null,// Multi‑instance name (optional)detached: false,// Detach Java process from parentintelEnabledMac: false,// Rosetta toggle for Apple SilicondownloadFileMultiple: 5,// Parallel downloadsloader: {path: './loader',// Where to install loaderstype: null,// forge | neoforge | fabric | …build: 'latest',// Build number / tagenable: false,// Whether to install the loader},mcp: null,// Path to MCP config (legacy mods)verify: false,// SHA‑1 check after downloadignored: [],// Files to skip verificationJVM_ARGS: [],// Extra JVM argumentsGAME_ARGS: [],// Extra game argumentsjava: {path: null,// Custom JVM pathversion: null,// Explicit Java versiontype: 'jre',// jre | jdk},screen: {width: null,height: null,fullscreen: false,},memory: {min: '1G',max: '2G',},}asconst;

Note : Any field you provide when calling Launch.launch() will be merged on top of these defaults; you rarely need to specify more than authenticator, path, version and memory.


Events

Event NamePayloadDescription
dataStringRaw output from the Java process.
progressNumberGlobal download progress percentage.
speedNumberCurrent download speed (kB/s).
estimatedNumberEstimated time remaining (s).
extractStringName of the file currently being extracted.
patchStringLoader patch currently applied.
closevoidEmitted when the Java process exits.
errorErrorSomething went wrong.

Authentication (built‑in)

  • Microsoft — OAuth 2 Device Code flow via Xbox Live → XSTS → Minecraft.
  • Mojang(legacy) — classic Yggdrasil endpoint.
  • AZauth — community Yggdrasil‑compatible server.

The authenticator returns a profile object that you pass directly to Launch.launch().


Utilities

  • Downloader — resilient downloader with resume, integrity check & progress/speed events.
  • Status — simple TCP ping that returns MOTD, player count & latency.

File structure (simplified)

src/
Authenticator/ Microsoft, Mojang, AZauth flows
Minecraft/ Version JSON, assets, libraries, args builder
Minecraft-Loader/ Forge, NeoForge, Fabric, Quilt, … installers
StatusServer/ Server ping implementation
utils/ Downloader & helpers
Launch.ts Main entry point
assets/ LWJGL native indexes

Contributors

See the commit history for a full list. Special thanks to:

  • Luuxis — original author.
  • Community testers & issue reporters.

License

Released under Creative Commons Attribution‑NonCommercial 4.0 International.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Almyria/minecraft-java-core · GitHub
Skip to content

Repository files navigation

v4 • minecraft‑java‑core

License: CC‑BY‑NC 4.0stable version

minecraft‑java‑core is a NodeJS/TypeScript solution for launching both vanilla and modded Minecraft Java Edition without juggling JSON manifests, assets, libraries or Java runtimes yourself. Think of it as the core of an Electron/NW.js/CLI launcher.


Getting support

Need help or just want to chat? Join the community Discord!


Installing

npm i minecraft-java-core
# or
yarn add minecraft-java-core

Requirements: Node ≥ 18, TypeScript (only if you import .ts), 7‑Zip embedded binary.


Standard Example (ESM)

import{Launch,Microsoft}from'minecraft-java-core';// ⚠️ In production, perform auth **before** initialising the launcher// so you can handle refresh / error flows cleanly.constauth=awaitMicrosoft.auth({client_id: '00000000-0000-0000-0000-000000000000',type: 'terminal'// 'electron' | 'nwjs'});constlauncher=newLaunch();launcher.on('progress',p=>console.log(`[DL] ${p}%`)).on('data',line=>process.stdout.write(line)).on('close',()=>console.log('Game exited.'));awaitlauncher.launch({root: './minecraft',authenticator: auth,version: {number: '1.20.4',type: 'release'},loader: {type: 'fabric',version: '0.15.9'},memory: {min: '2G',max: '4G'}});

Documentation

Launch class

FunctionTypeDescription
launchPromiseLaunches Minecraft with the given LaunchOptions (see below).

LaunchOptions

ParameterTypeDescriptionRequired
pathStringWorking directory where game files are stored (usually .minecraft).✔︎
urlString | nullCustom version manifest base URL (only for mirror setups).
authenticatorObjectMicrosoft / Mojang / AZauth profile returned by the authenticator.✔︎
timeoutIntegerNetwork timeout in milliseconds for downloads.
versionString'latest_release', 'latest_snapshot', '1.21.1'.
instanceString | nullName of the instance if you manage multiple profiles.
detachedBooleanDetach the Java process from the launcher.
intelEnabledMacBooleanForce Rosetta when running on Apple Silicon.
downloadFileMultipleIntegerMax parallel downloads.
loader.enableBooleanWhether to install a mod‑loader (Forge/Fabric/…).
loader.typeString | nullforge, neoforge, fabric, legacyfabric, quilt.
loader.buildStringLoader build tag (e.g. latest, 0.15.9).
loader.pathStringDestination folder for loader files. Defaults to ./loader.
mcpString | nullPath to MCP configuration for legacy mods.
verifyBooleanVerify SHA‑1 of downloaded files.
ignoredArrayList of files to skip during verification.
JVM_ARGSArrayExtra JVM arguments.
GAME_ARGSArrayExtra Minecraft arguments.
java.pathString | nullAbsolute path to Java runtime.
java.versionString | nullForce a specific Java version (e.g. 17).
java.typeStringjre or jdk.
screen.widthNumber | nullWidth of game window.
screen.heightNumber | nullHeight of game window.
screen.fullscreenBooleanStart the game in fullscreen mode.
memory.minStringMinimum RAM (e.g. 1G).✔︎
memory.maxStringMaximum RAM (e.g. 2G).✔︎

Recommendation: Start with the minimal set (authenticator, path, version, memory) and gradually add overrides only when you need them.

Default configuration

Below is the complete defaultLaunchOptions object returned by minecraft‑java‑core when you don’t override any field. Use it as a quick reference for every available parameter and its default value.
(Parameters marked nullable can be left null/undefined and the library will figure out sane values.)

constdefaultOptions={url: null,// Optional custom manifest URLauthenticator: null,// Microsoft/Mojang/AZauth profiletimeout: 10000,// Network timeout in mspath: '.Minecraft',// Root directory (alias: root)version: 'latest_release',// Minecraft version (string or 'latest_…')instance: null,// Multi‑instance name (optional)detached: false,// Detach Java process from parentintelEnabledMac: false,// Rosetta toggle for Apple SilicondownloadFileMultiple: 5,// Parallel downloadsloader: {path: './loader',// Where to install loaderstype: null,// forge | neoforge | fabric | …build: 'latest',// Build number / tagenable: false,// Whether to install the loader},mcp: null,// Path to MCP config (legacy mods)verify: false,// SHA‑1 check after downloadignored: [],// Files to skip verificationJVM_ARGS: [],// Extra JVM argumentsGAME_ARGS: [],// Extra game argumentsjava: {path: null,// Custom JVM pathversion: null,// Explicit Java versiontype: 'jre',// jre | jdk},screen: {width: null,height: null,fullscreen: false,},memory: {min: '1G',max: '2G',},}asconst;

Note : Any field you provide when calling Launch.launch() will be merged on top of these defaults; you rarely need to specify more than authenticator, path, version and memory.


Events

Event NamePayloadDescription
dataStringRaw output from the Java process.
progressNumberGlobal download progress percentage.
speedNumberCurrent download speed (kB/s).
estimatedNumberEstimated time remaining (s).
extractStringName of the file currently being extracted.
patchStringLoader patch currently applied.
closevoidEmitted when the Java process exits.
errorErrorSomething went wrong.

Authentication (built‑in)

  • Microsoft — OAuth 2 Device Code flow via Xbox Live → XSTS → Minecraft.
  • Mojang(legacy) — classic Yggdrasil endpoint.
  • AZauth — community Yggdrasil‑compatible server.

The authenticator returns a profile object that you pass directly to Launch.launch().


Utilities

  • Downloader — resilient downloader with resume, integrity check & progress/speed events.
  • Status — simple TCP ping that returns MOTD, player count & latency.

File structure (simplified)

src/
Authenticator/ Microsoft, Mojang, AZauth flows
Minecraft/ Version JSON, assets, libraries, args builder
Minecraft-Loader/ Forge, NeoForge, Fabric, Quilt, … installers
StatusServer/ Server ping implementation
utils/ Downloader & helpers
Launch.ts Main entry point
assets/ LWJGL native indexes

Contributors

See the commit history for a full list. Special thanks to:

  • Luuxis — original author.
  • Community testers & issue reporters.

License

Released under Creative Commons Attribution‑NonCommercial 4.0 International.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - Almyria/minecraft-java-core · GitHub
Skip to content

Repository files navigation

v4 • minecraft‑java‑core

License: CC‑BY‑NC 4.0stable version

minecraft‑java‑core is a NodeJS/TypeScript solution for launching both vanilla and modded Minecraft Java Edition without juggling JSON manifests, assets, libraries or Java runtimes yourself. Think of it as the core of an Electron/NW.js/CLI launcher.


Getting support

Need help or just want to chat? Join the community Discord!


Installing

npm i minecraft-java-core
# or
yarn add minecraft-java-core

Requirements: Node ≥ 18, TypeScript (only if you import .ts), 7‑Zip embedded binary.


Standard Example (ESM)

import{Launch,Microsoft}from'minecraft-java-core';// ⚠️ In production, perform auth **before** initialising the launcher// so you can handle refresh / error flows cleanly.constauth=awaitMicrosoft.auth({client_id: '00000000-0000-0000-0000-000000000000',type: 'terminal'// 'electron' | 'nwjs'});constlauncher=newLaunch();launcher.on('progress',p=>console.log(`[DL] ${p}%`)).on('data',line=>process.stdout.write(line)).on('close',()=>console.log('Game exited.'));awaitlauncher.launch({root: './minecraft',authenticator: auth,version: {number: '1.20.4',type: 'release'},loader: {type: 'fabric',version: '0.15.9'},memory: {min: '2G',max: '4G'}});

Documentation

Launch class

FunctionTypeDescription
launchPromiseLaunches Minecraft with the given LaunchOptions (see below).

LaunchOptions

ParameterTypeDescriptionRequired
pathStringWorking directory where game files are stored (usually .minecraft).✔︎
urlString | nullCustom version manifest base URL (only for mirror setups).
authenticatorObjectMicrosoft / Mojang / AZauth profile returned by the authenticator.✔︎
timeoutIntegerNetwork timeout in milliseconds for downloads.
versionString'latest_release', 'latest_snapshot', '1.21.1'.
instanceString | nullName of the instance if you manage multiple profiles.
detachedBooleanDetach the Java process from the launcher.
intelEnabledMacBooleanForce Rosetta when running on Apple Silicon.
downloadFileMultipleIntegerMax parallel downloads.
loader.enableBooleanWhether to install a mod‑loader (Forge/Fabric/…).
loader.typeString | nullforge, neoforge, fabric, legacyfabric, quilt.
loader.buildStringLoader build tag (e.g. latest, 0.15.9).
loader.pathStringDestination folder for loader files. Defaults to ./loader.
mcpString | nullPath to MCP configuration for legacy mods.
verifyBooleanVerify SHA‑1 of downloaded files.
ignoredArrayList of files to skip during verification.
JVM_ARGSArrayExtra JVM arguments.
GAME_ARGSArrayExtra Minecraft arguments.
java.pathString | nullAbsolute path to Java runtime.
java.versionString | nullForce a specific Java version (e.g. 17).
java.typeStringjre or jdk.
screen.widthNumber | nullWidth of game window.
screen.heightNumber | nullHeight of game window.
screen.fullscreenBooleanStart the game in fullscreen mode.
memory.minStringMinimum RAM (e.g. 1G).✔︎
memory.maxStringMaximum RAM (e.g. 2G).✔︎

Recommendation: Start with the minimal set (authenticator, path, version, memory) and gradually add overrides only when you need them.

Default configuration

Below is the complete defaultLaunchOptions object returned by minecraft‑java‑core when you don’t override any field. Use it as a quick reference for every available parameter and its default value.
(Parameters marked nullable can be left null/undefined and the library will figure out sane values.)

constdefaultOptions={url: null,// Optional custom manifest URLauthenticator: null,// Microsoft/Mojang/AZauth profiletimeout: 10000,// Network timeout in mspath: '.Minecraft',// Root directory (alias: root)version: 'latest_release',// Minecraft version (string or 'latest_…')instance: null,// Multi‑instance name (optional)detached: false,// Detach Java process from parentintelEnabledMac: false,// Rosetta toggle for Apple SilicondownloadFileMultiple: 5,// Parallel downloadsloader: {path: './loader',// Where to install loaderstype: null,// forge | neoforge | fabric | …build: 'latest',// Build number / tagenable: false,// Whether to install the loader},mcp: null,// Path to MCP config (legacy mods)verify: false,// SHA‑1 check after downloadignored: [],// Files to skip verificationJVM_ARGS: [],// Extra JVM argumentsGAME_ARGS: [],// Extra game argumentsjava: {path: null,// Custom JVM pathversion: null,// Explicit Java versiontype: 'jre',// jre | jdk},screen: {width: null,height: null,fullscreen: false,},memory: {min: '1G',max: '2G',},}asconst;

Note : Any field you provide when calling Launch.launch() will be merged on top of these defaults; you rarely need to specify more than authenticator, path, version and memory.


Events

Event NamePayloadDescription
dataStringRaw output from the Java process.
progressNumberGlobal download progress percentage.
speedNumberCurrent download speed (kB/s).
estimatedNumberEstimated time remaining (s).
extractStringName of the file currently being extracted.
patchStringLoader patch currently applied.
closevoidEmitted when the Java process exits.
errorErrorSomething went wrong.

Authentication (built‑in)

  • Microsoft — OAuth 2 Device Code flow via Xbox Live → XSTS → Minecraft.
  • Mojang(legacy) — classic Yggdrasil endpoint.
  • AZauth — community Yggdrasil‑compatible server.

The authenticator returns a profile object that you pass directly to Launch.launch().


Utilities

  • Downloader — resilient downloader with resume, integrity check & progress/speed events.
  • Status — simple TCP ping that returns MOTD, player count & latency.

File structure (simplified)

src/
Authenticator/ Microsoft, Mojang, AZauth flows
Minecraft/ Version JSON, assets, libraries, args builder
Minecraft-Loader/ Forge, NeoForge, Fabric, Quilt, … installers
StatusServer/ Server ping implementation
utils/ Downloader & helpers
Launch.ts Main entry point
assets/ LWJGL native indexes

Contributors

See the commit history for a full list. Special thanks to:

  • Luuxis — original author.
  • Community testers & issue reporters.

License

Released under Creative Commons Attribution‑NonCommercial 4.0 International.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages