Understanding when to use pre-built bundles versus individual modules.
Argonath Systems offers two distribution strategies:
| Approach | Best For | Flexibility | Complexity |
|---|---|---|---|
| Bundles | End users, quick start | Low | Low |
| Modules | Developers, custom builds | High | Medium |
Pre-configured collections of modules packaged as single JAR files, ready to use.
bundle-quest)Purpose: Complete quest system with all dependencies
Includes:
Use When:
Example:
dependencies {
implementation 'com.hytale.argonath:bundle-quest:1.0.0'
}
bundle-core)Purpose: Minimal platform setup for custom systems
Includes:
Use When:
Example:
dependencies {
implementation 'com.hytale.argonath:bundle-core:1.0.0'
}
✅ Quick Setup - Single dependency, everything works ✅ Tested Together - Pre-validated compatibility ✅ Easy Updates - Update one version number ✅ Beginner Friendly - No dependency management ✅ Smaller Distribution - One JAR vs multiple
❌ Larger Size - Includes modules you may not need ❌ Less Control - Can’t exclude specific modules ❌ Version Lock - All modules same version ❌ Update Overhead - Can’t update individual parts
✅ Use Bundles If:
❌ Don’t Use Bundles If:
Separate, independent libraries that can be mixed and matched.
implementation 'com.hytale.argonath:platform-core:1.0.0'
implementation 'com.hytale.argonath:platform-sdk:1.0.0'
Always needed for any Argonath mod
implementation 'com.hytale.argonath:adapter-hytale:1.0.0' // Hytale game
implementation 'com.hytale.argonath:adapter-mod-api:1.0.0' // Mod API
Connects platform to game engine
implementation 'com.hytale.argonath:framework-core:1.0.0'
implementation 'com.hytale.argonath:framework-accessor:1.0.0'
implementation 'com.hytale.argonath:framework-config:1.0.0'
implementation 'com.hytale.argonath:framework-storage:1.0.0'
implementation 'com.hytale.argonath:framework-text-styling:1.0.0'
Foundational utilities used by other frameworks
// Quest System
implementation 'com.hytale.argonath:framework-quest:1.0.0'
implementation 'com.hytale.argonath:framework-npc:1.0.0'
implementation 'com.hytale.argonath:framework-objective:1.0.0'
implementation 'com.hytale.argonath:framework-condition:1.0.0'
// UI System
implementation 'com.hytale.argonath:framework-ui:1.0.0'
Add only what you need
✅ Granular Control - Choose exactly what you need ✅ Smaller Footprint - Only include necessary code ✅ Version Flexibility - Mix versions if needed ✅ Dependency Clarity - Explicit about what you use ✅ Better for Libraries - Don’t force dependencies on users
❌ Complex Setup - Must manage dependencies manually ❌ Version Conflicts - Easy to get incompatible versions ❌ More Configuration - Multiple dependency declarations ❌ Harder Debugging - More places for issues
✅ Use Modules If:
❌ Don’t Use Modules If:
Are you building a quest mod?
├─ YES → Use Quest Bundle
└─ NO
├─ Do you need UI framework only?
│ ├─ YES → Core Bundle + framework-ui module
│ └─ NO
│ └─ Building custom framework?
│ ├─ YES → Use individual modules
│ └─ NO → Use Core Bundle
Goal: Add quests to Hytale
Solution: Quest Bundle
dependencies {
implementation 'com.hytale.argonath:bundle-quest:1.0.0'
}
Why: Everything included, no thinking required.
Goal: Build economy mod, no quests
Solution: Core Bundle + Storage
dependencies {
implementation 'com.hytale.argonath:bundle-core:1.0.0'
// Storage already in core bundle
}
Why: Don’t need quest frameworks, just platform.
Goal: Advanced NPC conversations only
Solution: Individual Modules
dependencies {
// Platform
implementation 'com.hytale.argonath:platform-core:1.0.0'
implementation 'com.hytale.argonath:platform-sdk:1.0.0'
// Adapter
implementation 'com.hytale.argonath:adapter-hytale:1.0.0'
// Minimal frameworks
implementation 'com.hytale.argonath:framework-core:1.0.0'
implementation 'com.hytale.argonath:framework-npc:1.0.0'
}
Why: Only need NPC framework, not entire quest system.
Goal: Create reusable utilities for other mods
Solution: Individual Platform Modules Only
dependencies {
compileOnly 'com.hytale.argonath:platform-core:1.0.0'
compileOnly 'com.hytale.argonath:platform-sdk:1.0.0'
}
Why: compileOnly - don’t force dependencies on users.
Goal: Test an idea quickly
Solution: Quest Bundle (even if not using quests)
dependencies {
implementation 'com.hytale.argonath:bundle-quest:1.0.0'
}
Why: Get everything, figure out what you need later.
Goal: Published mod with specific requirements
Solution: Carefully Selected Modules
dependencies {
// Exactly what we need, nothing more
implementation 'com.hytale.argonath:platform-core:1.0.0'
implementation 'com.hytale.argonath:platform-sdk:1.0.0'
implementation 'com.hytale.argonath:adapter-hytale:1.0.0'
implementation 'com.hytale.argonath:framework-core:1.0.0'
implementation 'com.hytale.argonath:framework-config:1.0.0'
implementation 'com.hytale.argonath:framework-ui:1.0.0'
}
Why: Minimal size, clear dependencies, professional.
Generally NO - causes duplicate classes and conflicts.
Exception: Add modules NOT in your bundle
dependencies {
implementation 'com.hytale.argonath:bundle-core:1.0.0'
// Add UI framework not in core bundle
implementation 'com.hytale.argonath:framework-ui:1.0.0' // ✅ OK
}
Never Do:
dependencies {
implementation 'com.hytale.argonath:bundle-quest:1.0.0'
implementation 'com.hytale.argonath:framework-quest:1.0.0' // ❌ DUPLICATE
}
// Scan imports
import com.hytale.argonath.framework.quest.*; // Using quest
import com.hytale.argonath.framework.ui.*; // Using UI
dependencies {
// Replace this:
// implementation 'com.hytale.argonath:bundle-quest:1.0.0'
// With these:
implementation 'com.hytale.argonath:platform-core:1.0.0'
implementation 'com.hytale.argonath:platform-sdk:1.0.0'
implementation 'com.hytale.argonath:adapter-hytale:1.0.0'
implementation 'com.hytale.argonath:framework-core:1.0.0'
implementation 'com.hytale.argonath:framework-quest:1.0.0'
implementation 'com.hytale.argonath:framework-ui:1.0.0'
}
dependencies {
// Replace 10+ lines with:
implementation 'com.hytale.argonath:bundle-quest:1.0.0'
}
✅ DO:
❌ DON’T:
✅ DO:
❌ DON’T:
// All modules in bundle share version
implementation 'com.hytale.argonath:bundle-quest:1.0.0'
// Internally: platform-core:1.0.0, framework-quest:1.0.0, etc.
// Can use different versions (not recommended)
implementation 'com.hytale.argonath:platform-core:1.0.0'
implementation 'com.hytale.argonath:framework-quest:1.1.0' // Newer version
Recommendation: Keep all Argonath modules at same version.
| Approach | Typical Size | Load Time |
|---|---|---|
| Quest Bundle | ~5-8 MB | Fast |
| Core Bundle | ~2-3 MB | Faster |
| Minimal Modules | ~500 KB - 2 MB | Fastest |
No difference - unused classes not instantiated regardless of approach.
| Factor | Bundles | Modules |
|---|---|---|
| Ease of Use | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| Flexibility | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| Size | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Beginner Friendly | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| Library Development | ⭐ | ⭐⭐⭐⭐⭐ |
| Maintenance | ⭐⭐⭐⭐ | ⭐⭐⭐ |
compileOnlyStill confused? Ask in Discussions!