Add TODO list for remaining implementation work
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
# Claude NPC Plugin - TODO
|
||||
|
||||
## Phase 1: Build System Setup
|
||||
|
||||
- [ ] **Obtain Hytale Server API JAR**
|
||||
- Contact Hypixel or check official modding documentation
|
||||
- Add as local Maven dependency or find Maven repository
|
||||
- Update `pom.xml` with correct artifact coordinates
|
||||
|
||||
- [ ] **Obtain Nitrado WebServer Plugin API**
|
||||
- Check if Nitrado publishes an API JAR for plugin development
|
||||
- May need to extract interfaces from the WebServer plugin JAR
|
||||
- Update `pom.xml` dependency
|
||||
|
||||
- [ ] **Create TeamCity Build Configuration**
|
||||
- Add build in `Gameserver` project
|
||||
- Maven build step: `mvn clean package`
|
||||
- Artifact: `target/SubNet_ClaudeNpc.jar`
|
||||
- Trigger: VCS changes to `Exiles/hytale-claude-npc`
|
||||
|
||||
## Phase 2: Hytale API Integration
|
||||
|
||||
These are placeholder implementations that need real Hytale API calls:
|
||||
|
||||
- [ ] **ClaudeNpcPlugin.java**
|
||||
- Implement proper plugin lifecycle (`onLoad`, `onEnable`, `onDisable`)
|
||||
- Register with WebServer plugin API for HTTP endpoints
|
||||
- Register chat event listener with Hytale event system
|
||||
|
||||
- [ ] **ClaudeNpc.java**
|
||||
- Implement NPC entity creation using Hytale NPC API
|
||||
- Implement pathfinding via Hytale's A* system
|
||||
- Implement particle effects for ethereal appearance
|
||||
- Implement chat broadcast to nearby players
|
||||
|
||||
- [ ] **ClaudeController.java**
|
||||
- Hook into Hytale tick system for behavior loop
|
||||
- Query actual player positions from server
|
||||
|
||||
- [ ] **WorldView.java**
|
||||
- Query nearby players from Hytale server API
|
||||
- Query nearby entities
|
||||
- Query terrain/block data
|
||||
- Query environment (time, weather, biome)
|
||||
|
||||
- [ ] **ClaudeApiHandler.java**
|
||||
- Register routes with WebServer plugin
|
||||
- Implement proper request/response handling per WebServer API
|
||||
|
||||
## Phase 3: Deployment
|
||||
|
||||
- [ ] **Build and Upload Plugin JAR**
|
||||
- Build with Maven
|
||||
- Upload to Gitea releases or artifact storage
|
||||
- Update `hytale_plugin_claude_url` in Ansible defaults
|
||||
|
||||
- [ ] **Create LiteLLM API Key**
|
||||
```bash
|
||||
curl -X POST 'http://llm01.corp.sub-net.at:4000/key/generate' \
|
||||
-H "Authorization: Bearer $(bao kv get -field=master_key secret/ansible/litellm)" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"key_alias": "hytale-claude-npc", "models": ["glm-flash"]}'
|
||||
```
|
||||
- Store in OpenBao: `bao kv put secret/ansible/hytale litellm_apikey="sk-..."`
|
||||
|
||||
- [ ] **Run Ansible Playbook**
|
||||
```bash
|
||||
ansible-playbook playbooks/setup_hytale.yml -l device_roles_hytale_server
|
||||
```
|
||||
|
||||
- [ ] **Verify Deployment**
|
||||
```bash
|
||||
# Check plugin loaded
|
||||
ssh hytale01 "grep -i claude /srv/hytale/logs/latest.log"
|
||||
|
||||
# Test API endpoint
|
||||
curl -u 'serviceaccount.claude:<password>' \
|
||||
http://hytale01.corp.sub-net.at:5523/SubNet/ClaudeNpc/status
|
||||
```
|
||||
|
||||
## Phase 4: Testing
|
||||
|
||||
- [ ] **Unit Tests**
|
||||
- Add JUnit tests for LiteLlmClient
|
||||
- Add tests for WorldView data structures
|
||||
- Add tests for ApiHandler request parsing
|
||||
|
||||
- [ ] **Integration Testing**
|
||||
- Test spawn/despawn cycle
|
||||
- Test movement and pathfinding
|
||||
- Test chat response generation
|
||||
- Test follow player behavior
|
||||
|
||||
- [ ] **In-Game Testing**
|
||||
- Join server and verify NPC appears
|
||||
- Test chat interactions
|
||||
- Test API control from Claude Code
|
||||
|
||||
## Phase 5: MCP Integration (Optional)
|
||||
|
||||
- [ ] **Create MCP Server**
|
||||
- Wrap HTTP endpoints as MCP tools
|
||||
- Tools: `hytale_spawn`, `hytale_move`, `hytale_chat`, `hytale_look`, `hytale_status`, `hytale_world`
|
||||
|
||||
- [ ] **Add to Claude Code MCP Config**
|
||||
```json
|
||||
{
|
||||
"hytale": {
|
||||
"command": "node",
|
||||
"args": ["path/to/hytale-mcp/index.js"],
|
||||
"env": {
|
||||
"HYTALE_API_URL": "http://hytale01:5523",
|
||||
"HYTALE_API_USER": "serviceaccount.claude",
|
||||
"HYTALE_API_PASS": "..."
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
### Hytale Plugin API Reference
|
||||
- Official docs: https://support.hytale.com/hc/en-us/articles/... (check for modding section)
|
||||
- Nitrado plugins: https://github.com/nitrado (WebServer, Query, PerformanceSaver)
|
||||
- ApexHosting plugins: https://github.com/apexhosting (PrometheusExporter)
|
||||
|
||||
### Key Unknowns
|
||||
1. Exact Hytale server plugin API structure
|
||||
2. How to register HTTP routes with WebServer plugin
|
||||
3. How to create/manage NPC entities
|
||||
4. How to access pathfinding system
|
||||
5. Event system for chat messages
|
||||
|
||||
### Credentials Location
|
||||
- LiteLLM: `secret/ansible/litellm` (master_key)
|
||||
- Hytale service accounts: `secret/ansible/hytale` (prometheus_*, claude_*)
|
||||
Reference in New Issue
Block a user