🎮 Hytale API Documentation
Complete guide for plugin and mod development - Unlock Hytale's full potential
What is this documentation?¶
This documentation provides a complete and detailed guide to Hytale's internal API, obtained through reverse engineering of the game code. It's designed to help developers create plugins and mods for Hytale.
Important
This documentation is based on decompiled code and may be subject to changes. The use of this API is not officially supported by Hypixel Studios.
What will you find here?¶
📚 Basic Concepts¶
Learn about Hytale's internal architecture, the plugin system, and fundamental components.
- Architecture: Server structure
- Plugin System: How plugins work
- Early Plugins: Transformation plugins
🔧 API Reference¶
Detailed documentation of all API classes, interfaces, and methods.
- Plugin API: Class transformation
- Meta System: Metadata system
- Interaction System: Game interactions
📖 Complete Guides¶
Step-by-step tutorials to create your own plugins and mods.
- Plugin Development: Create your first plugin
- Mod Development: Create complete mods
- Tutorials: Practical examples
💡 Code Examples¶
Ready-to-use code examples for your projects.
- Simple Plugin: Basic plugin
- Class Transformer: Bytecode
- Custom Interaction: Interactions
Getting Started¶
If you're new to Hytale plugin development, we recommend following these steps:
- Read the Introduction: Understand what's possible
- Check Requirements: Make sure you have everything you need
- Installation: Set up your development environment
- Tutorial: Hello World: Create your first plugin
Main Systems¶
Plugin System¶
Hytale's plugin system allows loading custom code that can modify game behavior through bytecode transformation.
public interface ClassTransformer {
default int priority() { return 0; }
@Nullable
byte[] transform(@Nonnull String className,
@Nonnull String classPath,
@Nonnull byte[] bytecode);
}
Meta System¶
Flexible system for storing and retrieving metadata associated with game objects.
// Register a MetaKey
MetaKey<String> CUSTOM_DATA = registry.registerMetaObject(data -> "default");
// Use the MetaKey
entity.putMetaObject(CUSTOM_DATA, "My custom value");
String value = entity.getMetaObject(CUSTOM_DATA);
Interaction System¶
Complex system for defining interactions with blocks, entities, and the world.
public abstract class Interaction implements Operation {
protected float runTime;
protected InteractionEffects effects;
protected abstract void tick0(boolean firstRun, float time,
InteractionType type,
InteractionContext context);
}
Additional Resources¶
- Glossary: Key terms and concepts
- FAQ: Frequently asked questions
- Troubleshooting: Common problem solutions
Contributing¶
This documentation is community-maintained. If you find errors or want to contribute:
- Report issues or bugs
- Suggest improvements
- Contribute with examples
Ready to get started? → Introduction