Skip to content

Support automatic updates from CurseForge in addition to GitHub #17

@derrickmehaffy

Description

@derrickmehaffy

Feature Description

Extend the /f admin update command to support downloading updates directly from CurseForge, in addition to the existing GitHub releases support. CurseForge should be the default source since it's the primary distribution platform for Hytale mods.

Proposed Solution

Update source priority (configurable):

  1. CurseForge (default)
  2. GitHub Releases (fallback/alternative)

Command options:

/f admin update                    # Uses default source (CurseForge)
/f admin update --source=curseforge
/f admin update --source=github
/f admin check                     # Check for updates without downloading

Configuration:

updates:
  enabled: true
  source: curseforge          # curseforge, github, or auto
  check_on_startup: true      # Notify admins of available updates
  curseforge:
    project_id: "hyperfactions"   # CurseForge project slug
    api_key: ""                   # Optional: for authenticated requests
  github:
    repo: "HyperSystemsDev/HyperFactions"

CurseForge API integration:

  • Use CurseForge API to check latest version
  • Compare semantic versions
  • Download JAR directly from CurseForge CDN
  • Verify file hash/checksum if available

Features:

  • Version comparison (semantic versioning aware)
  • Release channel support (stable, beta, alpha)
  • Changelog display before update
  • Automatic backup of current version before update

Alternatives Considered

  1. CurseForge only - Simpler but loses GitHub as backup source
  2. Manual URL config - Let admins specify any download URL
  3. Modrinth support - Add as third source option

Additional Context

  • CurseForge API documentation: https://docs.curseforge.com/
  • May require API key for higher rate limits
  • Should handle CurseForge being unavailable (fallback to GitHub)
  • Consider rate limiting to avoid API abuse
  • Permission: hyperfactions.admin.update (existing)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions