Update script to write to vendor/hytale-server
This commit is contained in:
190
docs/README.md
Normal file
190
docs/README.md
Normal file
@@ -0,0 +1,190 @@
|
||||
# Hytale Server Modding Documentation
|
||||
|
||||
Welcome to the Hytale Server modding documentation. This guide provides comprehensive information for creating mods and extensions for the Hytale Server.
|
||||
|
||||
## LLM Reference
|
||||
|
||||
**[LLM-Optimized API Reference](00-llm-reference.md)** - Complete API reference with exact class names, method signatures, and JSON structures. Use this for quick lookups.
|
||||
|
||||
## Documentation Index
|
||||
|
||||
### Getting Started
|
||||
|
||||
1. **[Getting Started](01-getting-started.md)** - Introduction and first mod tutorial
|
||||
|
||||
### Core Systems
|
||||
|
||||
2. **[Plugin Development](02-plugin-development.md)** - Creating and structuring plugins
|
||||
3. **[Event System](03-event-system.md)** - Handling game events
|
||||
4. **[Command System](04-command-system.md)** - Creating custom commands
|
||||
5. **[Entity System (ECS)](05-entity-system.md)** - Working with entities and components
|
||||
6. **[World Management](06-world-management.md)** - Managing worlds and chunks
|
||||
|
||||
### Communication & Data
|
||||
|
||||
7. **[Networking](07-networking.md)** - Network protocol and packet handling
|
||||
8. **[Asset System](08-asset-system.md)** - Managing game assets
|
||||
9. **[Configuration](10-configuration.md)** - Plugin and server configuration
|
||||
10. **[Codec/Serialization](11-codec-serialization.md)** - Data serialization framework
|
||||
|
||||
### Game Systems
|
||||
|
||||
11. **[NPC/AI System](09-npc-ai-system.md)** - Creating and controlling NPCs
|
||||
12. **[Built-in Modules](12-builtin-modules.md)** - Using server modules
|
||||
|
||||
### UI & Presentation
|
||||
|
||||
15. **[UI System](15-ui-system.md)** - Pages, windows, HUD, and UI commands
|
||||
|
||||
### Reference
|
||||
|
||||
13. **[Utilities](13-utilities.md)** - Common utility classes and APIs
|
||||
14. **[Early Plugin System](14-early-plugin-system.md)** - Advanced bytecode transformation
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Creating Your First Mod
|
||||
|
||||
1. Create a `manifest.json`:
|
||||
```json
|
||||
{
|
||||
"Group": "com.example",
|
||||
"Name": "MyMod",
|
||||
"Version": "1.0.0",
|
||||
"Main": "com.example.MyMod"
|
||||
}
|
||||
```
|
||||
|
||||
2. Create your main class:
|
||||
```java
|
||||
public class MyMod extends JavaPlugin {
|
||||
public MyMod(JavaPluginInit init) {
|
||||
super(init);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setup() {
|
||||
getLogger().info("MyMod loaded!");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
3. Build and place in `mods/` directory
|
||||
|
||||
## Key Concepts
|
||||
|
||||
### Plugin Lifecycle
|
||||
|
||||
```
|
||||
NONE -> SETUP -> START -> ENABLED -> SHUTDOWN -> DISABLED
|
||||
```
|
||||
|
||||
- **SETUP**: Register commands, events, entities
|
||||
- **START**: Initialize plugin logic
|
||||
- **SHUTDOWN**: Clean up resources
|
||||
|
||||
### Available Registries
|
||||
|
||||
| Registry | Purpose |
|
||||
|----------|---------|
|
||||
| `CommandRegistry` | Custom commands |
|
||||
| `EventRegistry` | Event listeners |
|
||||
| `EntityRegistry` | Custom entities |
|
||||
| `AssetRegistry` | Custom assets |
|
||||
| `TaskRegistry` | Scheduled tasks |
|
||||
|
||||
### Event Priority
|
||||
|
||||
| Priority | Value | Use Case |
|
||||
|----------|-------|----------|
|
||||
| FIRST | -21844 | Monitoring/logging |
|
||||
| EARLY | -10922 | Pre-processing |
|
||||
| NORMAL | 0 | Standard handling |
|
||||
| LATE | 10922 | Post-processing |
|
||||
| LAST | 21844 | Final processing |
|
||||
|
||||
## Package Structure
|
||||
|
||||
```
|
||||
com.hypixel.hytale/
|
||||
├── server/core/ # Core server functionality
|
||||
├── event/ # Event system
|
||||
├── component/ # Entity Component System
|
||||
├── codec/ # Serialization
|
||||
├── protocol/ # Networking
|
||||
├── common/ # Utilities
|
||||
├── math/ # Math utilities
|
||||
└── builtin/ # Built-in modules
|
||||
```
|
||||
|
||||
## API Highlights
|
||||
|
||||
### Events
|
||||
```java
|
||||
getEventRegistry().register(PlayerConnectEvent.class, event -> {
|
||||
Player player = event.getPlayer();
|
||||
player.sendMessage("Welcome!");
|
||||
});
|
||||
```
|
||||
|
||||
### Commands
|
||||
```java
|
||||
public class MyCommand extends AbstractCommand {
|
||||
public MyCommand() {
|
||||
super("mycommand", "Description");
|
||||
withRequiredArg("player", "Target player");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(CommandContext ctx, Arguments args) {
|
||||
String player = args.getString("player");
|
||||
ctx.sendMessage("Hello, " + player);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Entities
|
||||
```java
|
||||
public class CustomEntity extends Entity {
|
||||
public CustomEntity(World world) {
|
||||
super(world);
|
||||
}
|
||||
}
|
||||
|
||||
// Register
|
||||
getEntityRegistry().register("custom", CustomEntity.class, CustomEntity::new);
|
||||
```
|
||||
|
||||
### Configuration
|
||||
```java
|
||||
public static final Codec<MyConfig> CODEC = BuilderCodec.of(MyConfig::new)
|
||||
.with("enabled", Codec.BOOLEAN, c -> c.enabled, true)
|
||||
.with("maxCount", Codec.INTEGER, c -> c.maxCount, 100)
|
||||
.build();
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Register in setup()** - All registrations should happen during setup
|
||||
2. **Use events** - Prefer events over polling
|
||||
3. **Respect lifecycle** - Don't access other plugins during setup
|
||||
4. **Handle errors** - Log and handle exceptions gracefully
|
||||
5. **Clean up** - Release resources in shutdown()
|
||||
6. **Use codecs** - Serialize data with the codec system
|
||||
7. **Namespace assets** - Use your mod ID as namespace
|
||||
8. **Document** - Document your mod's features and configuration
|
||||
|
||||
## Support
|
||||
|
||||
For questions and support:
|
||||
- Check the [Hytale modding forums](#)
|
||||
- Join the [Discord community](#)
|
||||
- Report issues on [GitHub](#)
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributions to this documentation are welcome. Please submit pull requests with improvements or corrections.
|
||||
|
||||
---
|
||||
|
||||
*This documentation is for Hytale Server modding. For official Hytale information, visit [hytale.com](https://hytale.com).*
|
||||
Reference in New Issue
Block a user