⚠️ This is an early alpha
Zevvoryn is at an alpha stage and is very unstable. It’s a proof of concept: some systems work and are playable, but a lot is missing, some things half-work, and some are buggy. Treat it as an experiment, not a finished server.
Not there yet / not working properly: crafting and furnaces, redstone and mechanisms, enchanting and brewing, full mob AI and mob variety, plus a number of other blocks/mechanics. Full list is in
license/CHANGELOG_EN.md.Almost none of this has been tested on a live server under load — most of it was only checked statically (syntax / bracket balance), not by actually playing on a running world, so real behavior may differ. Back up your world.
Zevvoryn is a from-scratch implementation of the Minecraft: Java Edition 1.21.1 server (protocol 767), written in C++20. A vanilla client connects to it directly — no mods, no proxy.
The goal is a fast, lightweight server core with predictable resource usage, where the official Java server spends time spinning up the JVM and a lot of memory on the heap. This is a learning/research project, not a drop-in replacement for the official server.
/digdebug command).Full list: license/CHANGELOG_EN.md.
Legend: ✅ works · 🚧 partial / buggy · ❌ not yet
| Area | State |
|---|---|
| Protocol 1.21.1 (767): handshake, status, play | ✅ |
| Online/offline mode, encryption, packet compression | ✅ |
| Anvil format: read and write regions/chunks | ✅ |
| Inventory, items, game modes | ✅ |
| Eating food and food effects | ✅ |
| Nether, End, inter-dimension portals | ✅ |
| Block physics, fluids, tick-based updates | 🚧 |
| Mining: block hardness, tool speed, durability | 🚧 |
| Armor, equipment, combat vs players/mobs | 🚧 |
| Chat, system messages, tab list, skins | ✅ |
Whitelist (whitelist.txt), operators, bans |
✅ |
| RCON (Source RCON, works with any client) | ✅ |
| Discord bot + web control panel | ✅ |
| First-run setup wizard (RU/EN) | ✅ |
| Auto-save, safe save on window close | ✅ |
| Rotating logs (last 15), crash protection | ✅ |
| MiniEdit — fast bulk region block ops | ✅ |
| Mobs: spawning and a basic set | 🚧 |
| Vehicles: boats and minecarts | 🚧 |
| Mobs: full AI and variety | ❌ |
| Crafting and furnaces | ❌ |
| Redstone, mechanisms, rail transport | ❌ |
| Enchanting, brewing | ❌ |
Zevvoryn supports native C ABI plugins, an optional sandboxed Luau runtime, and an optional Java/JNI runtime. The runtime options are disabled by default and can be turned off at build time or in the server configuration. See the English plugin guide for setup, API, manifests, permissions, lifecycle, and security notes; the Russian guide is also available. This update publishes documentation only; it does not include the plugin runtime source code.
Security: native C++ and Java plugins execute trusted code inside the server process. Java permissions only restrict access through the Zevvoryn API; they do not sandbox Java code. Review plugin JARs and their full dependency trees for vulnerabilities such as Log4Shell. Luau is the sandboxed scripting option.
From the “x64 Native Tools Command Prompt for VS 2022”:
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build
Put the resulting zevvoryn.exe in its own folder — next to it the server will
create settings.properties, world/, logs/ and DiscrordBotRcon/.
Open PowerShell and download the installer from GitHub, inspect it, then run it:
$installer = "$env:TEMP\install_zevvoryn.ps1"
Invoke-WebRequest "https://raw.githubusercontent.com/Zevvoryn/Zevvoryn/main/install_windows.ps1" -OutFile $installer
notepad $installer
powershell -ExecutionPolicy Bypass -File $installer
It offers English or Russian and an installation folder; enter 0 at the
folder step to go back and change the language. It then downloads the
prebuilt Windows x64 release; no compiler or build tools are required. The output
folder contains run_server.bat. Rerun the installer to update. You can also run
it directly with irm https://raw.githubusercontent.com/Zevvoryn/Zevvoryn/main/install_windows.ps1 | iex; review the script first if you prefer not to execute a remote script directly.
The selected drive must have at least 1 GB free; 5 GB or more is recommended for
testing.
Download the installer and run it in a terminal (Bash and an internet connection are required):
curl -fL https://raw.githubusercontent.com/Zevvoryn/Zevvoryn/main/install_linux.sh -o install_linux.sh
bash install_linux.sh
The installer lets you choose English or Russian, an installation folder
(default: Desktop/zevvoryn/release), or open a folder picker; enter 0 to go
back and change the language. It downloads a prebuilt Linux x86_64 release and
does not compile source. A Linux release binary is not published yet, so the
installer will explain this and stop rather than leave you waiting on a build.
Once the asset is available, it will create run_server.sh; rerun the installer
to update. The installation drive needs at least 1 GB free; 5 GB or more is
recommended for testing.
On the first start (when there’s no settings.properties yet) a setup wizard
kicks in: language, port, game mode, difficulty, view distance, whitelist, RCON,
Discord bot and web panel. Plugin-enabled builds also offer separate switches
for C++, Luau, and Java/JVM plugins. Everything you pick is saved to
settings.properties, and a DiscrordBotRcon/.env is created for the panel.
On Linux, bash install_linux.sh installs the executable zevvoryn and creates
an executable run_server.sh launcher in the selected server folder. Start it
with ./run_server.sh; the setup wizard appears in the terminal. The installer
prints the exact folder and launch command when it finishes. The launcher starts
the server with the installation folder as its working directory, so
settings.properties, worlds, and logs stay there. If you run the binary
directly, an existing config beside it takes precedence; otherwise first-run
setup writes settings.properties in the current working directory. Avoid
launching from the source repository root if you do not want server files there.
See the
plugin owner and developer guide for package
layout, runtime switches, permissions, and security. The public download in
this documentation-only update does not add plugin runtime code; these plugin
instructions apply to builds that include the corresponding runtime.
After that the server starts normally:
zevvoryn.exe # default config
zevvoryn.exe my-settings.properties # custom config file
settings.properties)Plain key=value, like PocketMine/PMMP.
# ── Server ──
language=eng # rus | eng — language of logs and messages
motd=Zevvoryn Server
server-port=25565
max-players=80
view-distance=16
simulation-distance=8
# ── World ──
level-name=world
level-type=DEFAULT # DEFAULT | FLAT | VOID
level-seed=0 # 0 = random
# ── Gameplay ──
gamemode=creative
difficulty=2 # 0 peaceful … 3 hard
pvp=true
spawn-protection=16
# ── Access ──
online-mode=false
white-list=false # player names go in whitelist.txt
# ── RCON ──
enable-rcon=true
rcon.port=25575
rcon.password=change_me
rcon.max-clients=4
# ── Panel ──
auto-start-panel=true # launch the Discord bot / web panel with the server
Important: the RCON password is set only here. The server syncs
DiscrordBotRcon/.envon every start — don’t edit it by hand.
help help
list who is online
say <text> message from the console
gamemode <0-3> [name] change mode (or gm0..gm3)
give <name> <item> give an item
tp <name> <x> <y> <z> teleport
spawn / setworldspawn spawn point
time set <value> time of day
weather <clear|rain|thunder>
summon / mob / killall mobs
setblock <x> <y> <z> <block>
locate <structure>
nether / end / overworld dimension switch
whitelist <add|remove|on|off|list>
kick <name>
save save the world now
tps performance
reload soft config reload
stop graceful shutdown
The same commands are available over RCON, the Discord bot and the web panel.
Typed by players in chat:
/skin <name> wear a licensed player's skin
/skin reset go back to your own skin
/cape <id> put on a minecraft.net cape
/cape off take the cape off
/capes list the available capes
Skins and capes only work when
online-mode=false. Withonline-mode=truecapes are disabled on purpose — handing official minecraft.net capes to licensed accounts would violate the Minecraft EULA, so the server refuses to./skinlets an offline (cracked) player borrow the skin of any licensed nickname;/skin resetrestores their own. If you’re wearing a cape, the first/skin resetonly warns — run it again within 15 seconds to drop both the skin and the cape.
whitelist.txt next to the server, one name per line:
# Player whitelist
Notch
Steve
Enable it with white-list=true or the whitelist on command.
The bundled DiscrordBotRcon folder is a Node.js app that connects to the
server over RCON and offers two interfaces: Discord commands and a browser web
panel.
cd DiscrordBotRcon
npm install
With auto-start-panel=true the server launches it together with
zevvoryn.exe (and writes the current RCON port and password into .env).
| Variable | Purpose |
|---|---|
RCON_HOST, RCON_PORT, RCON_PASSWORD |
filled in automatically by the server |
WEB_ENABLED |
false — disable the web panel (enabled by default) |
WEB_HOST, WEB_PORT |
panel address, default 127.0.0.1:3000 |
WEB_PASSWORD |
panel login password |
DISCORD_TOKEN, CLIENT_ID, GUILD_ID |
needed only for the Discord bot |
ADMIN_ROLE_ID, COMMAND_CHANNEL_ID |
permission gating in Discord |
The panel shows server status, who’s online, the whitelist, and gives you a
console in the browser: http://127.0.0.1:3000
Register the Discord slash commands (once):
npm run deploy
The web panel is HTTP only (no real TLS/HTTPS) and uses a single shared Basic Auth password — fine for local/personal use, not meant to be exposed directly to the internet.
logs/log-DD.MM.YY.log (in the English locale — MM.DD.YY), the
last 15 are kept.stop command.stop.core/ config, logs, RCON, whitelist, commands, MiniEdit, server core
network/ TCP server, connections, compression
protocol/ 1.21.1 packet codecs and shared structures
entity/ players and mobs
world/ chunks, generation, biomes, Anvil format
registries/ block, item and biome registries
crypto/ protocol encryption
utils/ NBT and helpers
data/ Minecraft game data
thirdparty/ cubiomes (vanilla generation)
tools/ smoke and stress test bots in Python
DiscrordBotRcon/ Discord bot and web panel (Node.js)
Extra docs: PHYSICS.md — the physics model,
MINIEDIT.md — bulk region block operations.
The panel says “RCON: Disconnected”.
Check that settings.properties has enable-rcon=true and a non-empty
rcon.password (the remote console won’t start with an empty password). The
startup log should contain Remote console listening on 0.0.0.0:25575.
The panel won’t open.
Default port is 3000, address http://127.0.0.1:3000. Look for the crash
cause in DiscrordBotRcon/panel-crash.log.
Panel auto-start was skipped.
You need Node.js on PATH and npm install run in the DiscrordBotRcon folder.
The client doesn’t see the server on the LAN.
Open TCP port 25565 in the Windows firewall.
Distributed under the Zevvoryn Custom License v1.0 — see
license/LICENSE.txt. In short: you may use, study,
modify and fork it, but only with attribution preserved and source disclosed,
and no commercial distribution without written permission. Third-party
components and their licenses are listed in
license/THIRD-PARTY-NOTICES.txt
(notably cubiomes).
Minecraft is a trademark of Mojang Studios. This project is not affiliated with Mojang Studios or Microsoft and contains none of their code.