00-Argonath-Wiki

Module Reference

Comprehensive reference for all Argonath Systems modules.

Module Architecture

Argonath Systems is organized into layers, with each module having specific responsibilities and dependencies.

Layer 1: Platform

Foundation modules that provide core abstractions and SDK.

platform-core

Purpose: Core platform abstractions and interfaces

Package: com.hytale.argonath.platform.core

Key Components:

Dependencies: None (foundation module)

When to Use:

Example:

import com.hytale.argonath.platform.core.Platform;

Platform platform = Platform.getInstance();
platform.getLogger().info("Hello from platform!");

platform-sdk

Purpose: Development SDK and utilities for mod developers

Package: com.hytale.argonath.platform.sdk

Key Components:

Dependencies:

When to Use:

Example:

public class MyMod implements ModInitializer {
    @Override
    public void onInitialize() {
        // Mod initialization
    }
}

Layer 2: Adapters & Frameworks

adapter-hytale

Purpose: Hytale game integration adapter

Package: com.hytale.argonath.adapter.hytale

Key Components:

Dependencies:

When to Use:


adapter-mod-api

Purpose: Generic mod API adapter (for other platforms)

Package: com.hytale.argonath.adapter.modapi

Key Components:

Dependencies:

When to Use:


framework-core

Purpose: Core framework utilities and base classes

Package: com.hytale.argonath.framework.core

Key Components:

Dependencies:

When to Use:

Example:

public class QuestRegistry extends Registry<Quest> {
    // Inherits registration logic
}

framework-accessor

Purpose: Safe accessor patterns for game objects

Package: com.hytale.argonath.framework.accessor

Key Components:

Dependencies:

When to Use:

Example:

Accessor<Player> playerAccessor = Accessor.of(() -> getPlayer());
if (playerAccessor.isPresent()) {
    playerAccessor.get().sendMessage("Hello!");
}

Layer 3: Utility Frameworks

framework-config

Purpose: Configuration management system

Package: com.hytale.argonath.framework.config

Key Components:

Dependencies:

When to Use:

Example:

@ConfigClass("my-mod")
public class MyConfig {
    @ConfigProperty("feature.enabled")
    private boolean featureEnabled = true;
}

Config config = ConfigLoader.load(MyConfig.class);

framework-storage

Purpose: Data persistence and storage

Package: com.hytale.argonath.framework.storage

Key Components:

Dependencies:

When to Use:

Example:

PlayerStorage<QuestProgress> storage = 
    PlayerStorage.create("quests", QuestProgress.class);

storage.save(player, questProgress);
QuestProgress loaded = storage.load(player);

framework-text-styling

Purpose: Text formatting and styling

Package: com.hytale.argonath.framework.text

Key Components:

Dependencies:

When to Use:

Example:

Text.builder()
    .append("Warning: ", TextColor.RED, TextStyle.BOLD)
    .append("Low health!", TextColor.YELLOW)
    .build()
    .send(player);

Layer 4: Feature Frameworks

framework-condition

Purpose: Condition evaluation system

Package: com.hytale.argonath.framework.condition

Key Components:

Dependencies:

When to Use:

Example:

Condition condition = Condition.and(
    Condition.level(5),
    Condition.hasItem("gold_coin", 100),
    Condition.questCompleted("tutorial")
);

if (condition.test(player)) {
    // Allow action
}

framework-objective

Purpose: Objective tracking system

Package: com.hytale.argonath.framework.objective

Key Components:

Dependencies:

When to Use:

Example:

Objective killGoblins = Objective.builder()
    .type(ObjectiveType.KILL_ENTITY)
    .target("goblin")
    .count(10)
    .description("Kill 10 goblins")
    .build();

framework-npc

Purpose: NPC management and dialog system

Package: com.hytale.argonath.framework.npc

Key Components:

Dependencies:

When to Use:

Example:

NPC elder = NPCBuilder.create("village_elder")
    .name("Elder Marcus")
    .model("elder")
    .addDialog(
        DialogNode.builder()
            .text("Welcome, traveler!")
            .option("Hello!", "greeting")
            .build()
    )
    .build();

framework-quest

Purpose: Complete quest system

Package: com.hytale.argonath.framework.quest

Key Components:

Dependencies:

When to Use:

Example:

Quest quest = QuestBuilder.create("my_quest")
    .name("Epic Adventure")
    .description("A grand quest!")
    .addObjective(killGoblins)
    .addReward(reward -> reward.gold(100))
    .build();

framework-ui

Purpose: UI framework and components

Package: com.hytale.argonath.framework.ui

Key Components:

Dependencies:

When to Use:

Example:

Window questWindow = Window.builder()
    .title("Active Quests")
    .size(400, 300)
    .addChild(Label.of("My Quest"))
    .addChild(Button.of("Close", this::close))
    .build();

Layer 5 & 6: Mods

mod-quest-tracker

Purpose: Visual quest tracking mod

Package: com.hytale.argonath.mod.questtracker

Key Components:

Dependencies:

When to Use:


Dependency Graph

┌─────────────────┐
│  platform-core  │ (Foundation)
└────────┬────────┘
         │
┌────────▼────────┐
│  platform-sdk   │
└────────┬────────┘
         │
    ┌────┴────────────────────────┐
    │                             │
┌───▼──────────┐        ┌─────────▼──────────┐
│adapter-hytale│        │ framework-core      │
└──────────────┘        └─────────┬───────────┘
                                  │
                    ┌─────────────┼─────────────┐
                    │             │             │
            ┌───────▼─────┐  ┌────▼────┐  ┌────▼────────┐
            │framework-   │  │framework│  │framework-   │
            │accessor     │  │-config  │  │text-styling │
            └─────────────┘  └────┬────┘  └─────────────┘
                                  │
                        ┌─────────▼──────────┐
                        │framework-storage   │
                        └────────────────────┘
                                  │
                    ┌─────────────┼─────────────┐
                    │             │             │
            ┌───────▼────────┐ ┌─▼────────┐ ┌──▼───────────┐
            │framework-      │ │framework-│ │framework-npc │
            │condition       │ │objective │ └──────────────┘
            └────────────────┘ └──────────┘
                    │             │
                    └──────┬──────┘
                           │
                   ┌───────▼──────────┐
                   │framework-quest   │
                   └──────────────────┘
                           │
                   ┌───────▼──────────┐
                   │mod-quest-tracker │
                   └──────────────────┘

Module Selection Guide

For Quest Mods

Required:
- platform-core + platform-sdk
- adapter-hytale
- framework-core
- framework-quest (includes all quest dependencies)

Optional:
- framework-ui (for custom UIs)
- mod-quest-tracker (visual tracking)

For UI Mods

Required:
- platform-core + platform-sdk
- adapter-hytale
- framework-core
- framework-ui

Optional:
- framework-text-styling (rich text)

For Data Mods

Required:
- platform-core + platform-sdk
- adapter-hytale
- framework-core
- framework-storage

Optional:
- framework-config (configuration)

For Library Development

Minimal:
- platform-core (compileOnly)
- platform-sdk (compileOnly)

Add as needed:
- framework-core (common utilities)

Version Compatibility

All modules within the same major version are compatible:

Version Compatible Notes
1.0.x ✅ All 1.0.x Patch updates
1.x.0 ✅ All 1.x Minor features
2.x ❌ With 1.x Breaking changes

Module Status

Module Status Stability
platform-core ✅ Stable Production
platform-sdk ✅ Stable Production
adapter-hytale ✅ Stable Production
framework-core ✅ Stable Production
framework-quest ✅ Stable Production
framework-ui 🚧 Beta Testing
All others ✅ Stable Production

Next: Core Concepts Architecture Overview