Nemesis is a from-scratch Minecraft 1.19.3 (protocol 761) server core written in Kotlin, with no Mojang server code. It is a revived and heavily extended fork of the dormant Krypton project: the dead build was restored, modernized to JDK 21, and then grown — feature by feature — into a server that implements a broad slice of real vanilla gameplay.
Nemesis is a standalone server, not a plugin. You run it directly with
java -jar; you do not drop it into aplugins/folder. It speaks the vanilla 1.19.3 protocol, so an unmodified Minecraft 1.19.3 client can connect.
⚠️ Status: experimental (alpha). Nemesis is a hobby/research project. It is not hardened for production and does not yet match Paper/Spigot in completeness or performance. Expect rough edges.
Every feature below was implemented and then verified by an autonomous, protocol-level test bot — a deliberate methodology that keeps the project honest about what actually works on the wire (see CONTRIBUTING.md).
- Networking & session — handshake, status, offline login with packet compression, full PLAY state with registry sync, chunk streaming, keep-alive. Stable multiplayer sessions.
- Core gameplay — surface spawn, server-validated movement (anti-clip collision), block breaking with survival item-entity drops, block placing, chat, and complete inventory interactions (left/right click, shift quick-move, double-click collect, drag-distribute).
- Containers & automation — chests / barrels / double-chests (9·27·54 slots), dispensers & droppers, furnace smelting, hopper auto-transfer, and brewing stands — all ticking, with persistence across restarts.
- Crafting & progression — 3×3 crafting grid with shapeless recipes, XP & levels (persisted), eating to restore hunger.
- Mobs, AI & combat — spawn eggs, on-tick movement, combat & death drops (XP orbs + item entities), item pickup, A* pathfinding (hostile mobs chase, passive mobs wander), natural spawning by time of day, and player-vs-player combat with knockback, death screen and full respawn.
- Redstone — levers, buttons, pressure plates, wire propagation (signal strength 0–15), repeaters, comparators (container readout, compare/subtract modes), pistons (push/pull full columns), dispensers, lamps, doors and trapdoors — with cross-chunk signal propagation.
- World generation — full procedural terrain from a multi-octave noise heightmap (rolling hills, caves, ore veins, trees and lakes) across four biomes (plains / desert / forest / snow), plus procedural structures: houses, wells, villages (8-house rings with lamp posts, paths and farms), watchtowers, desert wells and ruins. The spawn world is itself generated — no external vanilla world is required.
- Fluids & farming — flowing water with distance-based levels and bucket pickup, crop growth on tick, and bone meal.
- Projectiles & combat items — a real ballistic-physics projectile engine driving splash potions, fishing (with a loot table), and primed TNT entities with explosions.
- Potions & effects — drinkable potions with per-NBT effect mapping, effect expiry, and splash delivery.
- Atmosphere — the day-night cycle, sleeping in beds (skip to dawn, sleeping pose, bed spawnpoint), and block sounds + particles (breaking, placing, doors, pistons, levers, buttons, note blocks).
- Persistence — world, player data (inventory / position / gamemode), chest contents and XP all survive a restart.
See the full, versioned breakdown in CHANGELOG.md and the forward plan in ROADMAP.md.
-
Install a Java 21 runtime (Eclipse Temurin recommended).
-
Download the latest
Nemesis-<version>.jarfrom the Releases page. -
Run it:
java -jar Nemesis-0.1.0.jar
-
Connect from a Minecraft 1.19.3 client to
localhost(the listen port is configurable inconfig.conf, default25565).
On first run the server creates its configuration and world data next to the jar. Configuration lives in config.conf.
Requires JDK 21. The Gradle wrapper handles everything else.
# from the project root
./gradlew :jar:shadowJarThe runnable, fat (shaded) server jar is produced at jar/build/libs/Krypton.jar (~43 MB). Run it exactly as above.
Note: the internal Gradle project name is still
krypton(preserved from upstream to avoid churning module coordinates). Release artifacts are published asNemesis-<version>.jar.
| Path | What it is |
|---|---|
api/ |
The public API (events, scheduling, world/entity model). |
server/ |
The server implementation — networking, packet handlers, world, entities, redstone, generation. |
jar/ |
The bootstrap module that assembles the runnable shaded jar. |
generators/, annotation-processor/, internal/ |
Build-time code generation and internal annotations. |
plugins/ |
First-party example plugins (bans, whitelist). |
STATUS.md |
The detailed engineering journal (development log). |
STYLE_GUIDE.md |
Code style conventions. |
Contributions are welcome — please read CONTRIBUTING.md first. In short: build on JDK 21, follow the style guide, verify behavioral changes with a test bot where practical, and keep the docs current in the same change (every feature lands together with its CHANGELOG entry).
Security issues: see SECURITY.md.
Nemesis is licensed under the GNU Affero General Public License v3.0 — see LICENSE.
It is a derivative work of Krypton (© 2021–2023 KryptonMC and contributors), which is licensed under the Apache License 2.0. That upstream license is preserved in LICENSE-APACHE, and the relationship and attribution are documented in NOTICE. The Apache 2.0 license is one-way compatible with the AGPL v3.0, so the combined work is distributed under the AGPL while retaining all upstream notices.
- KryptonMC / Krypton and its contributors — the foundation this project is built on.
- Minestom — significant parts of the API and backend (scheduling, events, networking) derive from Minestom, as in upstream Krypton.
- The Minecraft Coalition (wiki.vg) and the Minecraft Wiki — protocol and game-mechanics documentation that makes a project like this possible.