
Manual-first Windows server guide
Minecraft Java Server Setup: 26.2, Java 25, Worlds and Mods
This current Minecraft Java server manual starts with Mojang’s 26.2 cross-platform JAR and the Java 25 runtime required since 26.1. It traces TCP reachability, the explicit EULA gate, current dimension/player-data paths, clean save/stop recovery, structured MSMP administration and the separate operational models for vanilla, Paper, Fabric and NeoForge.
Java Edition is defined by its versioned Java runtime, TCP 25565 player path and extensible but incompatible server families. Release 26.1 moved Overworld, Nether, End, player and map data into a new storage layout, while current 26.2 exposes Minecraft Server Management Protocol 3.0.0 before a world finishes loading—both are critical for import, readiness and rollback design.
Current stable release
Minecraft Java Edition 26.2
Mojang’s release page links the matching cross-platform server JAR.
Current runtime
Java 25 for Minecraft 26.1+
The standalone server needs its own compatible 64-bit Java command; the client launcher’s bundled runtime is not a server-runtime contract.
Player port
TCP 25565 by default
This is Java’s gameplay/status listener, not Bedrock’s UDP 19132 path.
Default world folder
world/ when level-name=world
Current 26.1+ dimensions and player files are nested differently than old DIM-1/DIM1/playerdata tutorials assume.
Clean maintenance sequence
save-all flush, then stop
Wait for the normal process exit, then copy the complete server directory to independent storage.
Current management API
MSMP 3.0.0 in Java 26.2
The JSON-RPC/WebSocket server is disabled by default and should remain loopback/private with authenticated, runtime-discovered methods.
Native cross-play
Java clients only
Bedrock/console clients need a separately maintained third-party translator such as Geyser; vanilla Java does not accept them.
Server extensions
Data packs, Paper plugins, Fabric mods and NeoForge mods are different systems
Choose one server family and exact compatible content set; moving a JAR between plugins/ and mods/ does not convert it.
Protect the server first: Run save-all flush, then stop and wait for the Java process to exit before copying the complete server directory. Keep a matched pre-update world, JAR, Java, loader, plugin/mod and configuration set; an older JAR alone is not a rollback.
Size the host before downloading
PC and capacity guidance
Mojang does not publish a current vanilla dedicated-server CPU, RAM, storage or players-per-GB minimum. Every heap/player/storage figure here is a conservative editorial starting point informed by current runtime/project documentation; measure TPS/MSPT, GC, CPU, disk and save time before making capacity claims.
| Profile | Players | Memory | Processor | Storage |
|---|---|---|---|---|
| Small current vanilla world Conservative starting point | 2–5 friends | 4 GB Java heap as a conservative starting point | Modern high-clock CPU with at least four useful threads | SSD with 10–20 GB free plus independent snapshot space |
| Active vanilla or modest Paper server Conservative starting point | 6–12 active players | 6–8 GB heap as a measured starting range | Fast modern CPU; profile MSPT under chunk generation and farms | SSD with 20–50 GB free and monitored world/backups |
| Fabric or NeoForge modpack Conservative starting point | Pack-defined group size | Follow the pack owner first; often 8–12 GB+ for large packs | Fast current CPU matched to pack workload | Fast SSD with full matched server-pack and rollback retention |
Runtime and EULA
Install Java 25 and the official 26.2 server
Current Java Edition needs a version-aware runtime, a server root with a stable working directory and an explicit owner EULA decision.
- 1
Verify the service runtime
Install a compatible 64-bit Java 25 for Minecraft 26.1+ and run java -version in the same account/path the service will use.
java -version - 2
Download the matching Mojang JAR
Create an empty versioned server root, download the 26.2 cross-platform JAR from the official release and record its source plus a locally computed hash.
Do not call the local hash Mojang-signed unless the publisher actually supplies and signs it.
- 3
Run the EULA gate
Start with a conservative heap and nogui. First run creates eula.txt and exits; continue only after the owner reads and explicitly accepts the linked EULA.
java -Xms4G -Xmx4G -jar server.jar nogui
Identity and networking
Create a private world and prove TCP reachability
Java uses TCP 25565 and online Java identities; keep those distinct from Bedrock UDP rules and insecure offline-mode shortcuts.
- 1
Configure private membership
Leave server-ip blank and online-mode true, enable the whitelist, add known Java profiles and use least-privilege operators.
- 2
Open one gameplay path
Allow the selected TCP server-port in the host firewall and, for public IPv4 joining, forward it to the server PC’s reserved LAN address.
Do not expose UDP Query, RCON or MSMP as a side effect of opening gameplay.
- 3
Test in layers
Join with a matching Java client locally/LAN, then from a real outside network. Diagnose a version rejection separately from a TCP timeout.
World integrity
Import or upgrade a world across the 26.1 layout boundary
A successful process start is not an import test: current Java storage moved dimensions, players, maps and other state.
- 1
Copy the full source while stopped
Find the folder with level.dat, retain it untouched and copy the entire world plus root access/config/content state into an isolated matching server profile.
- 2
Set exact level-name and upgrade a copy
Point level-name at the copied folder and let current Java migrate older storage; retain full logs and never run the upgrade against the only source.
- 3
Validate every state family
Check an existing player/inventory, Overworld, Nether, End, scoreboards/maps, data packs, save-all flush, stop, restart and outside join.
Rollback restores the matched pre-upgrade snapshot. Pointing an older JAR at the upgraded world is not a safe rollback.
Keep every layer consistent
Ports, firewall, and router setup
Open only the services your Minecraft Java Edition server actually uses. The game process, Windows Firewall rule, router forward, and player join address must all agree on the same port and protocol.
| Port | Protocol | Purpose | Exposure | Notes |
|---|---|---|---|---|
| 25565 (configurable) | TCP | Java gameplay, login and server-list status | Internet playersRequired for this use | Forward only the selected TCP gameplay port for public IPv4 joining and keep server-ip blank unless a deliberate local-interface bind is needed.[mc-java-download][mc-java-wiki-properties] |
| 25565 by convention when Query is enabled | UDP | Optional GameSpy-style status Query | Optional administrationOptional | Query is not required for players to join and is not an admin command channel.[mc-java-wiki-properties] |
| 25575 by convention when RCON is enabled | TCP | Legacy remote console | Optional administrationOptional | RCON is unencrypted in community protocol documentation. Keep disabled or inside a private management path; never forward it publicly.[mc-java-wiki-properties] |
| 0/dynamic by default when MSMP is enabled | TCP | Authenticated JSON-RPC management over WebSocket | LAN onlyOptional | Bind to localhost, discover the actual port/schema, protect the secret/PKCS12 keystore and create no player-facing firewall rule.[mc-java-msmp][mc-java-msmp-origins][mc-java-262] |
Never expose an administration or RCON port merely so players can join. Keep remote administration private whenever possible, use a strong unique credential, and confirm the game's own security model before forwarding it.
Know what must survive a reinstall
Files, worlds, and configuration
| File or folder | Purpose | Backup | Notes |
|---|---|---|---|
| server.properties | Gameplay, world, access, network and optional management settings | Critical | The property roster changes by release; preserve unknown/current keys and do not reintroduce properties moved to game rules.[mc-java-wiki-properties][mc-java-msmp][mc-java-262] |
| eula.txt | Records the owner’s Minecraft EULA acceptance | Recommended | The product must not set eula=true without an explicit owner action.[mc-java-download][mc-java-wiki-setup] |
| <level-name>/ | Complete world, all dimensions, players, data/resource packs and namespaced data | Critical | Copy the entire folder; old selective DIM-1/DIM1/region recipes are incomplete for 26.1+.[mc-java-261][mc-java-wiki-maintenance] |
| <level-name>/dimensions/minecraft/{overworld,the_nether,the_end}/ | Current 26.1+ default dimension storage | Critical | Nether and End moved from DIM-1 and DIM1 in 26.1.[mc-java-261] |
| <level-name>/players/{data,advancements,stats}/ | Current 26.1+ player-linked storage | Critical | These moved from old top-level playerdata/advancements/stats paths.[mc-java-261] |
| ops.json and whitelist.json | Operators and private membership profiles | Critical | Use op/deop and whitelist commands rather than live JSON edits.[mc-java-wiki-setup][mc-java-wiki-properties] |
| banned-players.json and banned-ips.json | Profile and IP bans | Critical | Prefer ban/pardon commands; IP bans can affect unrelated players on shared/dynamic addresses.[mc-java-wiki-maintenance] |
| logs/latest.log | Current startup, upgrade, world and extension diagnostics | Recommended | Capture before restart when diagnosing a one-time failure.[paper-plugins][mc-java-wiki-setup] |
| <level-name>/datapacks/ and resourcepacks/ | World data packs and current world resource-pack storage | Critical | Java 26.1 moved the world resource pack into resourcepacks/.[mc-java-261] |
| plugins/ or mods/ | Paper plugin payload or Fabric/NeoForge mod payload—not both by assumption | Recommended | Preserve exact versions, hashes, dependencies and configuration with the matching server family.[paper-plugins][fabric-mods][neoforge-server] |
| Setting or file | Location | What it controls | Restart? |
|---|---|---|---|
server-port25565 for the first instance | server.properties | Selects the TCP gameplay listener.[mc-java-download][mc-java-wiki-properties] | Yes |
server-ipLeave blank for an ordinary home server | server.properties | Optionally binds a local interface; it is not the router’s public-address field.[mc-java-wiki-properties] | Yes |
level-nameworld or the exact imported folder name | server.properties and <server root>/<level-name>/ | Selects the active world folder.[mc-java-wiki-properties][mc-java-261] | Yes |
online-modetrue | server.properties | Authenticates direct Internet players and preserves trusted online identities.[mc-java-wiki-properties] | Yes |
white-list / enforce-whitelistEnable and test with one approved and one unapproved profile | server.properties plus whitelist.json | Restricts private membership and defines enforcement behavior.[mc-java-wiki-properties] | No |
view-distance / simulation-distanceStart at the current generated defaults and measure before raising | server.properties | Controls sent and actively simulated chunk radius with material CPU/world-load impact.[mc-java-wiki-properties] | Yes |
management-server-enabled / host / port / secretenabled only with host=localhost, protected secret and explicit TLS plan | server.properties | Enables authenticated MSMP for structured local management.[mc-java-msmp][mc-java-msmp-origins][mc-java-262] | Yes |
enable-rcon / rcon.port / rcon.passwordfalse; prefer loopback MSMP or stdin | server.properties | Enables a legacy remote console only when a private integration still requires it.[mc-java-wiki-properties][mc-java-msmp] | Yes |
Avoid incompatible clients and unsafe shortcuts
Players, mods, and administration
Cross-play and editions
A vanilla Java server accepts Java Edition clients, not Bedrock mobile/console clients. Mojang states the editions use different native servers.
- Java clients are available on Windows, macOS and Linux and normally need a version accepted by the server.
- Geyser is a third-party packet translator with a separate UDP Bedrock listener, supported-version matrix and authentication design—not native cross-play.
- Geyser cannot make client-required Java mods function on Bedrock; its current supported versions change and must be checked on publication day.
- Floodgate and proxies alter identity/allow-list handling; never expose an offline-mode backend without the project’s complete forwarding/security design.
Mods and extensions
Choose and preserve one explicit server family: vanilla data packs, Paper plugins, Fabric mods or NeoForge mods each have different loaders, paths, dependencies and client requirements.
- Paper loads trusted plugin JARs from plugins/ and warns they have unrestricted host access; a Fabric/Forge mod is not a Paper plugin.
- Fabric content must match the game version and Fabric loader; many mods also require Fabric API and some require client installation.
- NeoForge creates mods/ after first start; use a modpack’s server pack when available and back up before loader/mod updates.
- Restart instead of using general live reload for plugin updates, and retain exact hashes/config with the world snapshot.
Administration
Use console/stdin and Java’s whitelist, operator, ban, save and stop commands; for current structured local automation prefer authenticated loopback MSMP over public RCON.
- MSMP is disabled by default, uses JSON-RPC over WebSocket and exposes rpc.discover so the product can use the exact runtime schema.
- TLS defaults on and needs a PKCS12 keystore when MSMP is enabled; protect its 40-character bearer secret and browser allowed-origins setting.
- In 26.2, MSMP starts before the world and status/heartbeat can report loading/upgrading while other methods remain unavailable.
- RCON is a legacy unencrypted protocol by community documentation; keep it disabled or private, and never forward TCP 25575 to the Internet.
Preserve a return path before maintenance
Updates, backups, and rollback
Update without gambling the world
Treat every Java update as a matched world/runtime/platform/content migration, especially across 26.1’s storage rewrite.
- 1
Save, stop and snapshot
Warn players, run save-all flush and stop, wait for normal exit, then copy the complete server root with exact Java, JAR, loader and extension inventory.
save-all flush stop - 2
Stage the target release
Read the release notes, acquire the official JAR and compatible Java/loader/content in a separate versioned root, then upgrade a copied world while retaining logs.
- 3
Validate or restore the matched set
Verify identity, all dimensions, packs/extensions, save/restart and joins. If rejected, stop and restore the full pre-update set; do not pair an older JAR with an already upgraded live world.
Back up and prove the restore path
A Java recovery point is the stopped complete server directory plus its exact Java and server-platform/content versions, proven by a separate restore.
- 1
Reach a clean disk boundary
Run save-all flush, then stop and wait for process exit rather than killing Java or copying active region files.
save-all flush stop - 2
Preserve complete current paths
Copy dimensions/, players/, namespaced data, maps, packs, root access/config files and matched plugin/mod/loader state—not only old region/DIM folders.
- 3
Restore into isolation
Use the matched JAR/Java/profile, join an existing player, visit every dimension and complete another save-stop-restart before accepting the backup.
Diagnose before reinstalling
Common Minecraft Java Edition server problems
Java works on LAN but TCP 25565 times out externally
What players see
A matching Java client joins locally, but a player on another network receives a timeout.
Likely cause
The TCP gameplay path is blocked or mapped to the wrong LAN address, or double NAT/CGNAT prevents inbound IPv4.
- 1.Leave server-ip blank and record the actual server-port/listening process.
- 2.Verify a narrow inbound TCP firewall rule and matching router forward to a reserved LAN address.
- 3.Test externally while the server is ready; do not enable RCON/Query or recreate the world.
Minecraft 26.2 will not start with a Java/JNI error
What players see
The process exits before readiness with UnsupportedClassVersionError, JNI text or no generated files.
Likely cause
The service is using an older/wrong-architecture Java, another PATH than the terminal, or the startup script names the wrong JAR.
- 1.Run java -version in the exact service context and confirm 64-bit Java 25 for 26.1+.
- 2.Check the absolute Java path, working directory and JAR filename, including hidden Windows extensions.
- 3.Preserve the console output; changing world files cannot repair a runtime launch failure.
A Java import is new or incomplete after the 26.1 upgrade
What players see
The wrong seed loads, or an imported world lacks players, Nether/End or other state.
Likely cause
The wrong wrapper/level-name was used or an old backup/import tool copied only pre-26.1 region, DIM and player paths.
- 1.Stop and preserve source, generated and failed-upgrade copies separately.
- 2.Verify level.dat at the selected root and current dimensions/, players/ and namespaced data paths.
- 3.Upgrade a complete copy with matching 26.2 Java/JAR and validate all state families.
A plugin/mod fails or Bedrock cannot join the Java server
What players see
An extension is rejected, a client reports missing content, or a Bedrock device cannot connect.
Likely cause
The package targets another server family/version, needs matching client/dependencies, or native Java was mistaken for Bedrock cross-play.
- 1.Snapshot the matched world/content set before removing anything that may persist data.
- 2.Identify vanilla, Paper, Fabric or NeoForge and verify exact version/dependencies from the project owner.
- 3.Treat Geyser/Floodgate as a separate current third-party deployment, not a port toggle.
Every focused Minecraft Java Edition troubleshooting guide
Evidence stays visible
Sources and verification
Technical behavior changes with server builds. These are the references reviewed for this guide. Official documentation wins if a later patch changes a path, port, command, or compatibility rule.
[mc-java-download] Mojang Studios / Minecraft
Official Java Edition server download ↗Reviewed 2026-08-30 · Official documentation
[mc-java-262] Mojang Studios / Minecraft
Minecraft Java Edition 26.2 release and server JAR ↗Reviewed 2026-08-30 · Official documentation
[mc-java-261] Mojang Studios / Minecraft
Java 25 requirement and 26.1 world-storage migration ↗Reviewed 2026-08-30 · Official documentation
[ms-openjdk] Microsoft Learn
Microsoft Build of OpenJDK downloads ↗Reviewed 2026-08-30 · Official documentation
[mc-java-msmp] Mojang Studios / Minecraft
Minecraft Server Management Protocol introduction ↗Reviewed 2026-08-30 · Official documentation
[mc-java-msmp-origins] Mojang Studios / Minecraft
MSMP browser origins and protocol 2.0.0 ↗Reviewed 2026-08-30 · Official documentation
[mc-editions] Mojang Studios / Minecraft
Java and Bedrock edition differences ↗Reviewed 2026-08-30 · Official documentation
[mc-server-play] Mojang Studios / Minecraft
How to play on a Minecraft server ↗Reviewed 2026-08-30 · Official documentation
[mc-java-wiki-setup] Minecraft Wiki community
Java Edition server setup tutorial ↗Reviewed 2026-08-30 · Community or project reference
[mc-java-wiki-properties] Minecraft Wiki community
Java server.properties reference ↗Reviewed 2026-08-30 · Community or project reference
[mc-java-wiki-maintenance] Minecraft Wiki community
Java server maintenance and backups ↗Reviewed 2026-08-30 · Community or project reference
[paper-getting] PaperMC
Paper 26.x getting started and Java 25 requirement ↗Reviewed 2026-08-30 · Community or project reference
[paper-plugins] PaperMC
Paper plugin installation and security ↗Reviewed 2026-08-30 · Community or project reference
[fabric-mods] Fabric project
Fabric mod version and loader requirements ↗Reviewed 2026-08-30 · Community or project reference
[neoforge-server] NeoForged
NeoForge server installation and updates ↗Reviewed 2026-08-30 · Community or project reference
[geyser-setup] GeyserMC
Geyser setup and Bedrock UDP listener ↗Reviewed 2026-08-30 · Community or project reference
[geyser-versions] GeyserMC
Geyser supported versions ↗Reviewed 2026-08-30 · Community or project reference
Keep learning
Related guides
Minecraft Java or Bedrock?
Compare Java's runtime and JAR, TCP listener, world layout and extension choices with native Bedrock hosting.
Open guide →
Carry Java TCP 25565 beyond the LAN
Match TCP 25565 across the Java process, Windows Firewall, router and outside-client test.
Open guide →
Trace an upstream TCP block
Prove whether an upstream NAT layer—not Minecraft—is blocking the public TCP path.
Open guide →
Host a Java server at home
Plan Java runtime, Windows firewall, TCP routing and independent external validation.
Open guide →
Minecraft Bedrock server guide
Follow the native BDS path for UDP networking, LevelDB worlds, device joining and Bedrock add-ons.
Open guide →
Fix Java 25 startup failures
Prove the service runtime and JAR path before changing world or network state.
Open guide →
Repair a Java world import
Handle the 26.1 dimension/player layout safely and preserve a true rollback copy.
Open guide →