Skip to content

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.

Reviewed 2026-08-30Cross-platform Java server JAR for Windows, Linux and macOS with a compatible 64-bit Java 25 runtime for Minecraft 26.1+

Current stable release

Minecraft Java Edition 26.2

Mojang’s release page links the matching cross-platform server JAR.

Official documentation[mc-java-262][mc-java-download]

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.

Community or project reference[mc-java-download][mc-java-wiki-properties]

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.

Community or project reference[mc-java-261][mc-java-wiki-properties]

Clean maintenance sequence

save-all flush, then stop

Wait for the normal process exit, then copy the complete server directory to independent storage.

Community or project reference[mc-java-wiki-maintenance]

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.

Community or project reference[mc-editions][geyser-setup]

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.

Community or project reference[paper-plugins][fabric-mods][neoforge-server]

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.

Minecraft Java Edition resource profiles
ProfilePlayersMemoryProcessorStorage
Small current vanilla world
Conservative starting point
2–5 friends4 GB Java heap as a conservative starting pointModern high-clock CPU with at least four useful threadsSSD with 10–20 GB free plus independent snapshot space
Active vanilla or modest Paper server
Conservative starting point
6–12 active players6–8 GB heap as a measured starting rangeFast modern CPU; profile MSPT under chunk generation and farmsSSD with 20–50 GB free and monitored world/backups
Fabric or NeoForge modpack
Conservative starting point
Pack-defined group sizeFollow the pack owner first; often 8–12 GB+ for large packsFast current CPU matched to pack workloadFast SSD with full matched server-pack and rollback retention
Mojang publishes no current dedicated-server RAM minimum or players-per-gigabyte formula; 4 GB is editorial, not official. [mc-java-261][paper-getting][mc-java-wiki-maintenance]
Leave memory outside -Xmx for the OS, JVM overhead, file cache and any local client. [mc-java-261][paper-getting][mc-java-wiki-maintenance]
Plugins, view/simulation distance, entities and exploration can dominate before heap capacity does. [paper-getting][paper-plugins][mc-java-wiki-maintenance]
Paper’s short example uses 4 GB; this larger range is editorial and must be validated on the selected plugin set. [paper-getting][paper-plugins][mc-java-wiki-maintenance]
Many mods require exact loader/game versions, dependencies and matching client content. [fabric-mods][neoforge-server]
Use a published server pack when available and load-test its actual world; do not generalize one pack’s requirements. [fabric-mods][neoforge-server]

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. 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. 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. 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. 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. 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. 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. 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. 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. 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.

Minecraft Java Edition dedicated server ports
PortProtocolPurposeExposureNotes
25565 (configurable)TCPJava gameplay, login and server-list statusInternet playersRequired for this useForward 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 enabledUDPOptional GameSpy-style status QueryOptional administrationOptionalQuery is not required for players to join and is not an admin command channel.[mc-java-wiki-properties]
25575 by convention when RCON is enabledTCPLegacy remote consoleOptional administrationOptionalRCON 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 enabledTCPAuthenticated JSON-RPC management over WebSocketLAN onlyOptionalBind 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

Minecraft Java Edition server files
File or folderPurposeBackupNotes
server.propertiesGameplay, world, access, network and optional management settingsCriticalThe 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.txtRecords the owner’s Minecraft EULA acceptanceRecommendedThe 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 dataCriticalCopy 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 storageCriticalNether 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 storageCriticalThese moved from old top-level playerdata/advancements/stats paths.[mc-java-261]
ops.json and whitelist.jsonOperators and private membership profilesCriticalUse op/deop and whitelist commands rather than live JSON edits.[mc-java-wiki-setup][mc-java-wiki-properties]
banned-players.json and banned-ips.jsonProfile and IP bansCriticalPrefer ban/pardon commands; IP bans can affect unrelated players on shared/dynamic addresses.[mc-java-wiki-maintenance]
logs/latest.logCurrent startup, upgrade, world and extension diagnosticsRecommendedCapture 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 storageCriticalJava 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 assumptionRecommendedPreserve exact versions, hashes, dependencies and configuration with the matching server family.[paper-plugins][fabric-mods][neoforge-server]
Minecraft Java Edition configuration reference
Setting or fileLocationWhat it controlsRestart?
server-port25565 for the first instanceserver.propertiesSelects the TCP gameplay listener.[mc-java-download][mc-java-wiki-properties]Yes
server-ipLeave blank for an ordinary home serverserver.propertiesOptionally 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 nameserver.properties and <server root>/<level-name>/Selects the active world folder.[mc-java-wiki-properties][mc-java-261]Yes
online-modetrueserver.propertiesAuthenticates 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 profileserver.properties plus whitelist.jsonRestricts private membership and defines enforcement behavior.[mc-java-wiki-properties]No
view-distance / simulation-distanceStart at the current generated defaults and measure before raisingserver.propertiesControls 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 planserver.propertiesEnables 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 stdinserver.propertiesEnables 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. 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. 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. 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. 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. 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. 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. 1.Leave server-ip blank and record the actual server-port/listening process.
  2. 2.Verify a narrow inbound TCP firewall rule and matching router forward to a reserved LAN address.
  3. 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. 1.Run java -version in the exact service context and confirm 64-bit Java 25 for 26.1+.
  2. 2.Check the absolute Java path, working directory and JAR filename, including hidden Windows extensions.
  3. 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. 1.Stop and preserve source, generated and failed-upgrade copies separately.
  2. 2.Verify level.dat at the selected root and current dimensions/, players/ and namespaced data paths.
  3. 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. 1.Snapshot the matched world/content set before removing anything that may persist data.
  2. 2.Identify vanilla, Paper, Fabric or NeoForge and verify exact version/dependencies from the project owner.
  3. 3.Treat Geyser/Floodgate as a separate current third-party deployment, not a port toggle.

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.

  1. [mc-java-download] Mojang Studios / Minecraft

    Official Java Edition server download

    Reviewed 2026-08-30 · Official documentation

  2. [mc-java-262] Mojang Studios / Minecraft

    Minecraft Java Edition 26.2 release and server JAR

    Reviewed 2026-08-30 · Official documentation

  3. [mc-java-261] Mojang Studios / Minecraft

    Java 25 requirement and 26.1 world-storage migration

    Reviewed 2026-08-30 · Official documentation

  4. [ms-openjdk] Microsoft Learn

    Microsoft Build of OpenJDK downloads

    Reviewed 2026-08-30 · Official documentation

  5. [mc-java-msmp] Mojang Studios / Minecraft

    Minecraft Server Management Protocol introduction

    Reviewed 2026-08-30 · Official documentation

  6. [mc-java-msmp-origins] Mojang Studios / Minecraft

    MSMP browser origins and protocol 2.0.0

    Reviewed 2026-08-30 · Official documentation

  7. [mc-editions] Mojang Studios / Minecraft

    Java and Bedrock edition differences

    Reviewed 2026-08-30 · Official documentation

  8. [mc-server-play] Mojang Studios / Minecraft

    How to play on a Minecraft server

    Reviewed 2026-08-30 · Official documentation

  9. [mc-java-wiki-setup] Minecraft Wiki community

    Java Edition server setup tutorial

    Reviewed 2026-08-30 · Community or project reference

  10. [mc-java-wiki-properties] Minecraft Wiki community

    Java server.properties reference

    Reviewed 2026-08-30 · Community or project reference

  11. [mc-java-wiki-maintenance] Minecraft Wiki community

    Java server maintenance and backups

    Reviewed 2026-08-30 · Community or project reference

  12. [paper-getting] PaperMC

    Paper 26.x getting started and Java 25 requirement

    Reviewed 2026-08-30 · Community or project reference

  13. [paper-plugins] PaperMC

    Paper plugin installation and security

    Reviewed 2026-08-30 · Community or project reference

  14. [fabric-mods] Fabric project

    Fabric mod version and loader requirements

    Reviewed 2026-08-30 · Community or project reference

  15. [neoforge-server] NeoForged

    NeoForge server installation and updates

    Reviewed 2026-08-30 · Community or project reference

  16. [geyser-setup] GeyserMC

    Geyser setup and Bedrock UDP listener

    Reviewed 2026-08-30 · Community or project reference

  17. [geyser-versions] GeyserMC

    Geyser supported versions

    Reviewed 2026-08-30 · Community or project reference

Keep learning

Related guides

Gone Wrong Servers

Want to host your own Minecraft Java Edition server?

Download Gone Wrong Servers for guided setup, safer updates, backups and recovery on your Windows PC.