Releases: Gh0s777tt/Nemesis
Release list
v0.8.0 — daylight detector, bone-meal crops, hostile mob damage
Gameplay depth: a redstone toggle, broader bone-meal farming, and hostile mobs that actually fight back. Each change was bot-verified at the protocol level. Built on the Kotlin 2.4.0 + KSP2 toolchain.
Added
- Daylight detector toggle — right-clicking a daylight detector flips its
invertedblockstate (day-sensing ↔ night-sensing), completing the redstone right-click family (lever, button, note block, repeater, comparator). - Bone meal on the remaining crops — bone meal now matures beetroot & sweet berry bush (age 0..3) and cocoa (0..2), not just the wheat-family; adds the
beetroot_seeds → beetrootsplacement override so beetroot can be planted. - Hostile mobs deal contact damage — monsters now bite the player in melee reach (~1.5 blocks) for 3 damage plus knockback on a ~1s cooldown, instead of chasing harmlessly. Death at 0 HP reuses the existing death/respawn flow.
Run: java -jar Nemesis-0.8.0.jar (listens on the configured port; JDK 21+).
Full notes: see CHANGELOG.md.
v0.7.0
Toolchain modernization to Kotlin 2.4.0 and KSP2. The shaded server jar builds on the new toolchain, boots,
and was bot-verified against a live server (mcbot_waterlog.py: login → spawn → place → waterlog all succeeded).
Changed
- Kotlin
2.2.21→2.4.0and KSP2.2.21-2.0.5→2.3.9. KSP has moved to KSP2, which versions
independently of the Kotlin release (the old<kotlin>-<ksp>scheme is gone), so the catalog now tracks a
standalone KSP version. This supersedes Dependabot PR #12 (which bumped only Kotlin and would have broken KSP
resolution on its own). BookMeta.pagesno longer carries@get:JvmName("pages"); its JVM getter is nowgetPages(). Kotlin callers
(meta.pages) are unaffected. This removes a JVM-signature collision with thepages()methodWrittenBookMeta
declares to satisfy Adventure'sBook, which Kotlin 2.4 now rejects as an accidental override.
Fixed
- Kotlin 2.4 source compatibility in the internal
downcastApiTypehelper: removed thereified I : Aupper bound.
Kotlin 2.4 inferredIto the intersectionI & Aat call sites and refused to reify it.Iis now pinned by
each caller's declared return type, keeping the runtimethis is Icheck precise.
v0.6.0
More interactions (pumpkin carving, waterlogging, pig saddling), each implemented and bot-verified against a live server.
Added
- Pumpkin carving — right-clicking an uncarved pumpkin with shears turns it into a carved pumpkin and drops pumpkin
seeds. Verified (mcbot_pumpkin.py): a placed pumpkin becomes a carved pumpkin on shear use and drops a seed item. - Waterlogging — a water bucket on a waterloggable block (slab, stairs, fence, …) fills it with water (
WATERLOGGED)
and empties the bucket. Verified (mcbot_waterlog.py): an oak slab changes state on water-bucket use and the held item
becomes an empty bucket. Placement now also forces waterloggable blocks to place dry. - Saddle a pig — right-clicking a pig with a saddle makes it rideable (saddle metadata). Verified
(mcbot_saddle.py): after the interact the pig's metadata sets the saddle flag.
v0.5.0
Block interactions (jukebox, lectern, bell), each implemented and bot-verified against a live server.
Added
- Jukebox — right-clicking an empty jukebox with a music disc loads it (
HAS_RECORD) and plays the disc. Verified
(mcbot_jukebox.py): a placed jukebox changes state on disc insertion and emits the play-recording world event. - Lectern — right-clicking an empty lectern with a writable or written book places the book on it (
HAS_BOOK).
Verified (mcbot_lectern.py): a placed lectern changes state when a writable book is placed on it. - Bell — right-clicking a bell rings it (plays the bell sound to nearby players). Verified (
mcbot_bell.py): the
bot receives a bell Sound Effect at the bell's position after the interaction.
v0.4.0
More block and tool interactions, each implemented and bot-verified against a live server.
Added
- Flower pot — right-clicking an empty flower pot with a pottable plant (flower, sapling, fern, …) fills it with
that plant. Verified (mcbot_flowerpot.py): a placed flower pot becomes a potted poppy (block state8389 → 16386). - Cake — right-clicking a cake takes a bite (the
BITESstate climbs 0→6) and the final bite eats it away.
Verified (mcbot_cake.py): seven right-clicks step the cake through its bite states (3321 → 3327) then remove it. - Repeater delay — right-clicking a repeater cycles its delay (1→2→3→4→1 ticks). Verified
(mcbot_repeaterdelay.py): four right-clicks step the repeater through four distinct delay states and wrap back.
v0.3.0
Tool and farming interactions, each implemented and bot-verified against a live server.
Added
- Bone meal on grass — right-clicking a grass block with bone meal scatters short grass (and the occasional flower)
on the air above nearby grass blocks. Verified (mcbot_bonemealgrass.py): bone-mealing a placed grass block grows a
plant block in the air directly above it. - Tilling — right-clicking grass or dirt with a hoe turns it into farmland. Verified (
mcbot_till.py): a placed
grass block becomes farmland (block state9009 → 7854) on hoe use. - Dirt path — right-clicking grass or dirt with a shovel turns it into a dirt path. Verified (
mcbot_path.py): a
placed grass block becomes a dirt path (block state9009 → 7279) on shovel use. - Stripping logs — right-clicking a log, wood, stem or hyphae with an axe converts it to its stripped variant
(keeping the axis); works for every wood type. Verified (mcbot_strip.py): a placed oak log becomes a stripped oak
log (block state14199 → 21733) on axe use.
v0.2.0
Gameplay additions, each implemented and bot-verified against a live server.
Added
- Composter — right-clicking a composter with a compostable item raises its fill level (0 → 8) and plays the fill
effect; right-clicking a full composter yields bone meal and empties it back to level 0. Verified
(mcbot_composter.py): the block state climbs exactly one level per compost and resets on harvest, with the held item
becoming bone meal. - Shearing a sheep — right-clicking a sheep with shears marks it sheared (entity metadata) and drops 1–3 wool of its
colour. Verified (mcbot_shear.py): after the interact the sheep's flags metadata sets the sheared bit (0x10) and a
wool item entity spawns. - Dyeing a sheep — right-clicking a sheep with any dye recolours its wool to that dye's colour. Verified
(mcbot_dye.py): dyeing a white sheep with red dye sets its flags-metadata colour bits to RED (14). - Cauldron fill/empty — right-clicking an empty cauldron with a water bucket fills it (→ water cauldron + empty
bucket); right-clicking a water cauldron with an empty bucket empties it (→ empty cauldron + water bucket). Verified
(mcbot_cauldron.py): the cauldron's block state round-trips empty → full → empty, with the matching bucket swaps.
Nemesis v0.1.0
Nemesis v0.1.0 — the first public release of a from-scratch Minecraft 1.19.3 (protocol 761) server core in Kotlin, revived and extended from Krypton.
⚠️ Experimental / alpha — a hobby & research project, not hardened for production. Runs in offline mode (no authentication). See SECURITY.md.
📦 Quick start
- Install Java 21 (e.g. Temurin 21).
- Download
Nemesis-0.1.0.jarfrom the Assets below. - Run it:
java -jar Nemesis-0.1.0.jar - Connect a Minecraft 1.19.3 client to
localhost(the listen port is configurable inconfig.conf).
This is a standalone server, not a plugin — run it directly; do not place it in a
plugins/folder.
✨ Highlights
- Stable networking / session, core gameplay, and full inventory interactions
- Containers (chests / furnace / hopper / brewing), crafting, and XP
- Mobs with A* pathfinding AI, natural spawning, and PvP
- Redstone — wire / repeater / comparator / pistons, with cross-chunk propagation
- Full procedural world generation — terrain, caves, ores, trees, lakes, four biomes, villages & structures
- Fluids, crops, fishing, TNT, enchanting, potions & status effects
- Day-night cycle, sleeping, and block sounds & particles
- World / player / chest / XP persistence across restarts
See the full CHANGELOG for the complete list.
🛠 Build from source
Requires JDK 21:
./gradlew :jar:shadowJar # -> jar/build/libs/Krypton.jar
📜 License
AGPL-3.0. Derived from Krypton (Apache-2.0, © KryptonMC and contributors) — see NOTICE.