Let Minecraft 1.21.11 players join your Hytale server! See the README below for details.
README
On GitHubHyCraft
HyCraft is a Hytale server plugin that acts as a protocol bridge, allowing Minecraft Java Edition (1.21.11) clients to connect directly to Hytale servers.
It functions by spinning up a parallel TCP server within the Hytale server process. It intercepts incoming Minecraft packets, translates them on-the-fly into Hytale's internal protocol, and forwards them to the game engine. This allows Minecraft players to join Hytale worlds without any client-side modifications.
⚠️ Early Development Status
This project is currently in an Early Development stage. Features are incomplete, bugs are expected, and the API is subject to change.
Test Server:
mytale.online(on default MC port 25565, and default Hytale port 5520)
Features
- Protocol Translation: Real-time translation between Minecraft 1.21.11 (Protocol 774) and Hytale.
- Authentication: Full Mojang authentication support (Online Mode) via
sessionserver.mojang.com. - World Rendering:
- Dynamic chunk conversion (Hytale chunks $\to$ Minecraft chunks).
- Block palette mapping.
- Biome translation.
- Entity Synchronization:
- Entity spawning, movement, and rotation.
- Metadata synchronization (names, health, equipment).
- Animation translation (swinging, damage, death).
- Interactions:
- Block breaking and placing logic.
- PVP and PvE combat system (calculating damage, knockback, and cooldowns).
- Complex interaction handling (chaining, charging interactions).
- Inventory:
- Hotbar and inventory synchronization.
- Item mapping (Hytale items $\to$ Minecraft equivalents).
...and more to come!
Installation
Prerequisites
- A Hytale Server instance.
- Java 25.
Setup
- Download or build the latest
HyCraft-1.0-SNAPSHOT.jarrelease. - Navigate to your Hytale server directory.
- Place the jar file into the
mods/folder. - Start the Hytale server.
- HyCraft will start a Minecraft listener on port
25565(configurable).
HyCraft Mixins (Optional)
HyCraft Mixins is an optional module that uses Hyxin to apply Mixin patches to Hytale's server internals. This enables deeper integration that isn't possible through the normal plugin API alone, such as intercepting interaction chains and profile lookups.
How it works
Hytale loads early plugins before the server fully starts, allowing Hyxin to transform server classes at load time. HyCraft Mixins hooks into this process to modify specific server behaviors like interaction handling and player profile resolution.
Due to a classloader limitation in Hytale's TransformingClassLoader, mixin-injected code cannot directly reference classes from the plugin environment. Because of this, HyCraft Mixins communicates with the core plugin through a System.getProperties() bridge using MethodHandle to call hooks at runtime. This is the same approach used by other Hytale mixin plugins like OrbisGuard.
Requirements
- Hyxin jar in the
earlyplugins/folder. - HyCraft core plugin in the
mods/folder (required dependency).
Setup
- Download or build the
Hyxin.jarand place it in your server'searlyplugins/folder. - Download or build the
HyCraft-Mixins.jarand place it in your server'searlyplugins/folder. - Make sure the core
HyCraftplugin is installed inmods/as usual. - Start the server. You should see
HyCraft mixins loaded!in the console.
Classloader Limitation
Hytale's TransformingClassLoader only delegates to the platform classloader (JDK classes) and does not fall back to the app classloader where early plugin classes live. This means mixin-injected code cannot use CallbackInfo.cancel(), CallbackInfoReturnable.setReturnValue(), or reference any early plugin classes directly. All cross-classloader communication must go through JVM-global mechanisms like System.getProperties(). This is a known Hytale platform limitation, not a Hyxin or Mixin bug.
LuckPerms Support
HyCraft prefixes Minecraft player usernames with the configured player_prefix (default "."), which results in usernames like .PlayerName. LuckPerms considers these invalid by default, preventing commands like /lp user .PlayerName from working.
To fix this, open your Luckperms/config.yml and set:
allow-invalid-usernames: true
This allows LuckPerms to recognize and manage prefixed player names correctly.
Configuration
On the first run, a configuration file will be generated at mods/HyCraft/main.json.
| Option | Description | Default |
|---|---|---|
port | The TCP port the Minecraft server will listen on. | 25565 |
player_prefix | A string prepended to the username of players connecting via Minecraft. | "." |
item_notification | Format for action bar messages when receiving items. | ... |
log_debug | Enables verbose debug logging to diagnose problems. | false |
server_icon | The MC server icon file path, relative to the HyCraft directory (must be 64x64 PNG). | icon.png |
Building from Source
This project requires Java 25 to build.
- Clone the repository:
git clone https://github.com/EdwardBelt/HyCraft.git cd HyCraft - Build with Gradle:
# Linux/macOS ./gradlew shadowJar
# Windows gradlew.bat shadowJar ```
- The compiled artifact will be located in
core/build/libs/.
Contributing
All contributions are welcome and highly appreciated. Feel free to open issues, suggest features, or submit pull requests.
License
Distributed under the MIT License. See LICENSE for more information.
Contact
- Discord:
@edwardbelt - Community: HyCraft Discord
From the project's repository, fetched . Images load from GitHub.
Releases
Feed-
Release notes
What's Changed
- docs: update community discord link in readme by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/31
- build: update hytale version, migrate to JOML, and bump version to 1.1.4 by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/32
Full Changelog: github.com/EdwardBelt/HyCraft/compare/v1.1.3...v1.1.4
-
Release notes
What's Changed
- Fix/hytale server upgrade by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/30
Full Changelog: github.com/EdwardBelt/HyCraft/compare/v1.1.2...v1.1.3
-
Release notes
What's Changed
- Feat/add hex colors by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/24
- fix: correct error log level by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/25
- docs: add configuration instructions for LuckPerms compatibility by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/26
- refactor: centralize manifest version expansion in build configuration by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/27
- fix: ensure dimension names are returned in lowercase (Minecraft naming rule) by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/28
Full Changelog: github.com/EdwardBelt/HyCraft/compare/v1.1.1...v1.1.2
-
v1.1.1 11
Release notes
What's Changed
- Refactor/migrate to mixins by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/23
Full Changelog: github.com/EdwardBelt/HyCraft/compare/v1.1.0...v1.1.1
-
Release notes
What's Changed
- [Feature] Add Minecraft server favicon support by @IconPippi in github.com/EdwardBelt/HyCraft/pull/18
- [Feature] Add chests support by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/19
- [Feature] Get offline players support by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/20
Full Changelog: github.com/EdwardBelt/HyCraft/compare/v1.0.2...v1.1.0
-
Release notes
What's Changed
- Feat/on join message by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/17
Full Changelog: github.com/EdwardBelt/HyCraft/compare/v1.0.1...v1.0.2
-
Release notes
What's Changed
- fix: return valid skin signature by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/12
- Cleanup/remove unused logs by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/13
- Feat/add new nbt tags by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/14
- Feat/add gui library by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/15
Full Changelog: github.com/EdwardBelt/HyCraft/compare/v1.0.0...v1.0.1
-
Release notes
What's Changed
- Changed build system from Maven to Gradle by @IconPippi in github.com/EdwardBelt/HyCraft/pull/1
- feat: add api module by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/2
- feat: add config system by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/3
- docs: update readme by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/4
- Feat/add config support by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/5
- Fix/block break invalid ref by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/6
- Added logging system by @IconPippi in github.com/EdwardBelt/HyCraft/pull/7
- Refactor/logger improvements by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/8
- feat: make player's prefix configurable by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/9
- Update README.md by @IconPippi in github.com/EdwardBelt/HyCraft/pull/10
- Refactor/protocol 774 migration by @EdwardBelt in github.com/EdwardBelt/HyCraft/pull/11
New Contributors
- @IconPippi made their first contribution in github.com/EdwardBelt/HyCraft/pull/1
- @EdwardBelt made their first contribution in github.com/EdwardBelt/HyCraft/pull/2
Full Changelog: github.com/EdwardBelt/HyCraft/commits/v1.0.0
Works for me
Did it work on your PC? A quick report tells other players which versions are safe to try.
Discussion
No posts yet. Ask a question, share your setup or post a clip.
Sign in to post