Description
NyoUpdates
NyoUpdates is the fastest mod manager for Hytale. It uses the nyoCF API, a dedicated Hytale mod database that synchronizes with CurseForge significantly faster than other APIs. Update checks that take ~50ms instead of 50+ seconds.
Performance
The nyoCF API is optimized specifically for Hytale mod management:
- Bulk endpoint checks ALL installed mods in a single HTTP request
- Response time typically under 100ms for 200+ mods
- Database synchronizes with CurseForge faster than CFWidget or others
- Automatic fallback to CFWidget if the primary API is unavailable
- No API key required
In-Game UI
Version 2.0 introduces a complete in-game interface for mod management:
- Open with
/upd ui - Browse installed mods with update status
- Search and install mods directly from CurseForge
- Select specific versions to install (not just latest)
- Enable/disable mods without leaving the game
- Ignore mods from update checks
- Configure plugin settings visually
The UI displays mod icons, version history, release types, and file sizes. Version changes are staged as pending updates and applied on restart.
How It Works
- When the server starts (or when you run
/updates check), NyoUpdates scans your mods folder - It sends a single bulk request to the nyoCF API with all mod information
- The API returns update status for all mods at once
- Available updates are downloaded to a
.updatesfolder - An
apply_updates.bat/shscript is created for manual application - Updates can also be applied automatically via EarlyPlugin on restart
Features
- Bulk API for fast update checks (~50ms for all mods)
- In-game UI for mod management, installation, and version selection
- No API key required
- Bundle support (extracts mods from zip files with mods/earlyplugins structure)
- Interactive update script with mod selection
- Backup system before updating
- Release type filtering (release, beta, alpha)
- Ignore list for specific mods
- Manual CurseForge mapping for edge cases
- Singleplayer and server support
- EarlyPlugin for automatic updates on restart
Hosting Service Compatibility
Many hosting services do NOT support the --accept-early-plugins argument required for automatic updates.
NyoUpdates works in MANUAL mode by default, which is compatible with ALL hosting services. Use manual mode and run apply_updates.bat/sh during server maintenance.
Quick Start
Singleplayer / Manual Mode
- Install NyoUpdates in your
mods/folder - Start the game - it will check for updates automatically
- Use
/updates uito manage mods visually, or/updates checkvia command - When updates are found, close the game
- Go to your mods/.updates folder and double-click
apply_updates.bat/sh - Select which mods to update and confirm
- Start the game again
Dedicated Servers (Auto Mode)
If you have full control over your server:
- Run
/updates enablein-game or console - Add
--accept-early-pluginsto your startup command - Restart the server
Updates will be applied automatically on each restart.
Example startup command:
java -jar HytaleServer.jar --assets Assets.zip --accept-early-plugins
Commands
| Command | Description |
|---|---|
/updates ui |
Open the in-game mod management interface |
/updates check |
Check for updates and download them |
/updates list |
List all installed mods with IDs |
/updates pending |
Show updates waiting to be applied |
/updates status |
Show detailed plugin status |
/updates setup |
Show setup guide |
/updates enable |
Enable automatic updates via EarlyPlugin |
/updates disable |
Disable automatic updates |
/updates ignore <id|name> |
Ignore a mod from update checks |
/updates unignore <id|name> |
Stop ignoring a mod |
/updates mapping add <id|name> <url> |
Map a mod to a CurseForge project |
/updates mapping remove <id|name> |
Remove a mapping |
/updates mapping list |
Show all CurseForge mappings |
/updates lang <locale|list> |
Change plugin language or list available |
/updates cache clear |
Clear the mod information cache |
/updates cache stats |
View cache statistics |
/updates reload |
Reload configuration |
/updates debug info |
Show system and environment information |
/updates debug check |
Run verbose check with detailed output |
/updates debug mods |
Show detailed information about each mod |
Command aliases: /updates, /upd, /nyo
The apply_updates.bat/sh Script
When updates are found, an interactive script is created in your mods folder:
Updates ready to install:
[X] 1. GoneFishing -> 0.1.2
[X] 2. Playtime -> 1.3.0
[X] 3. HyFixes -> 1.9.7
[X] 4. [EP] HyFixes (EarlyPlugin) -> 1.9.7
[ ] 5. SomeMod -> 2.0.0 (deselected)
[EP] = EarlyPlugin (installed to earlyplugins folder)
Commands:
[number] Toggle specific mod
[A] Apply all selected updates
[S] Select all | [D] Deselect all
[Q] Quit without applying
Enter command: _
Configuration
Config file location: mods/dotJunyo_nyoUpdates/config.json
{
"autoUpdateOnStartup": true,
"checkIntervalHours": 12,
"enableEarlyPlugin": false,
"maxConcurrentDownloads": 2,
"createBackups": true,
"backupRetentionDays": 7,
"gameVersionFilter": "",
"releaseTypesAllowed": ["release", "beta"],
"ignoredMods": [],
"debugMode": false,
"notifyOnAvailableUpdates": true,
"autoRestartAfterUpdate": false,
"modsFolderPath": "",
"connectionTimeoutSeconds": 30,
"readTimeoutSeconds": 60,
"maxRetries": 3,
"verifyChecksums": true,
"curseforgeMapping": {},
"language": "en-us",
"enableFallback": true,
"enableBulkApi": true,
"betaMessageShown": false
}
Configuration Options
| Option | Description | Default |
|---|---|---|
autoUpdateOnStartup |
Run update check when the server starts | true |
checkIntervalHours |
Hours between periodic update checks | 12 |
enableEarlyPlugin |
Enable automatic file replacement via EarlyPlugin on restart | false |
maxConcurrentDownloads |
Maximum number of parallel downloads | 2 |
createBackups |
Create backup copies of mods before updating | true |
backupRetentionDays |
Number of days to keep old backups before deletion | 7 |
gameVersionFilter |
Filter updates by Hytale game version (empty = all versions) | "" |
releaseTypesAllowed |
Which release types to consider for updates | ["release", "beta"] |
ignoredMods |
List of mod slugs or filenames to skip during update checks | [] |
debugMode |
Enable verbose debug logging | false |
notifyOnAvailableUpdates |
Log a message when updates are found | true |
autoRestartAfterUpdate |
Create a restart marker file after applying updates | false |
modsFolderPath |
Custom path to mods folder (empty = auto-detect) | "" |
connectionTimeoutSeconds |
HTTP connection timeout in seconds | 30 |
readTimeoutSeconds |
HTTP read timeout in seconds | 60 |
maxRetries |
Number of retry attempts for failed downloads | 3 |
verifyChecksums |
Verify file integrity after download using checksums | true |
curseforgeMapping |
Manual mapping of mod filenames to CurseForge slugs | {} |
language |
Language code for plugin messages (e.g., en-us, pt-br, de-de) | "en-us" |
enableFallback |
Enable fallback to CFWidget API if nyoCF fails | true |
enableBulkApi |
Use the nyoCF bulk API for fast update checks | true |
betaMessageShown |
Internal flag to track if beta welcome message was shown | false |
Translations
NyoUpdates supports multiple languages. Built-in translations:
- English (en-us) - Default
- Portuguese (pt-br) - Translation by dotJunyo
- German (de-de) - Translation by TomberWolf
- French (fr-fr) - Translation by Kraoc
- Italian (it-it) - Translation by Lasersonico83
- Polish (pl-pl) - Translation by Arcadiomo
If you find any issues with these translations, please reach out!
- Russian (ru-ru) - Translation by dotJunyo (with AI)
- Spanish (es-es) - Translation by dotJunyo (with AI)
Custom Translations
You can add your own translations:
- Create a file named
<locale>.json(e.g.,es-es.jsonfor Spanish) - Place it in
mods/dotJunyo_nyoUpdates/lang/ - Use
/updates lang listto verify it was detected - Use
/updates lang <locale>to activate it
Copy en-us.json as a template for your translation. The file must include the _meta section with language information.
https://tools.junyo.dev/en or https://tools.junyo.dev/pt
Permissions
NyoUpdates uses permission system. By default, all commands require the operator group. For granular control with permission plugins like LuckPerms, use the individual permission nodes below.
Permission Nodes
| Permission | Command | Description |
|---|---|---|
nyoupdates.base |
/updates |
Access the base command (required for all subcommands) |
nyoupdates.ui |
/updates ui |
Open the in-game mod management interface |
nyoupdates.check |
/updates check |
Manually check for mod updates |
nyoupdates.list |
/updates list |
List all installed mods with IDs |
nyoupdates.pending |
/updates pending |
View pending updates waiting to be applied |
nyoupdates.done |
/updates done |
Dismiss cached update notifications |
nyoupdates.info |
/updates info &lt;mod&gt; |
Show detailed information about a mod |
nyoupdates.status |
/updates status |
View detailed plugin status and configuration |
nyoupdates.setup |
/updates setup |
Display the setup guide for configuration |
nyoupdates.enable |
/updates enable |
Enable automatic updates via EarlyPlugin |
nyoupdates.disable |
/updates disable |
Disable automatic updates |
nyoupdates.ignore |
/updates ignore &lt;mod&gt; |
Add a mod to the ignore list |
nyoupdates.unignore |
/updates unignore &lt;mod&gt; |
Remove a mod from the ignore list |
nyoupdates.mapping |
/updates mapping |
Access mapping command collection |
nyoupdates.mapping.add |
/updates mapping add &lt;mod&gt; &lt;url&gt; |
Map a mod to a CurseForge project |
nyoupdates.mapping.remove |
/updates mapping remove &lt;mod&gt; |
Remove a CurseForge mapping |
nyoupdates.mapping.list |
/updates mapping list |
List all configured mappings |
nyoupdates.cache |
/updates cache |
Access cache management commands |
nyoupdates.cache.clear |
/updates cache clear |
Clear the mod information cache |
nyoupdates.cache.stats |
/updates cache stats |
View cache statistics |
nyoupdates.lang |
/updates lang &lt;locale&gt; |
Change the plugin language |
nyoupdates.reload |
/updates reload |
Reload the plugin configuration |
nyoupdates.debug |
/updates debug |
Access debug command collection |
nyoupdates.debug.info |
/updates debug info |
Show system and path information |
nyoupdates.debug.check |
/updates debug check |
Run update check with verbose output |
nyoupdates.debug.mods |
/updates debug mods |
Show detailed information about each mod |
Usage Examples
Grant all permissions to a player (LuckPerms):
/lp user <player> permission set nyoupdates.* true
Grant only UI and check permissions:
/lp user <player> permission set nyoupdates.base true
/lp user <player> permission set nyoupdates.ui true
/lp user <player> permission set nyoupdates.check true
Grant all permissions to a group:
/lp group moderator permission set nyoupdates.* true
Remove operator requirement (allow all players to use /updates ui):
/lp group default permission set nyoupdates.base true
/lp group default permission set nyoupdates.ui true
Recommended Permission Sets
For moderators (management):
- All player permissions, plus:
nyoupdates.check- Manually trigger update checksnyoupdates.ignore/nyoupdates.unignore- Manage ignored modsnyoupdates.mapping.*- Configure CurseForge mappings
For administrators (full control):
nyoupdates.*- All permissions (wildcard)
Bundle Support
NyoUpdates handles mods that come as bundle zip files containing both the mod and an EarlyPlugin.
Example bundle structure:
hyfixes-bundle-v1.9.7/
mods/
hyfixes-1.9.7.jar
earlyplugins/
hyfixes-early-1.9.7.jar
README.md
The plugin detects bundle structures, extracts the jar files to the correct locations, and tracks them for updates. EarlyPlugins from bundles are only installed if your server already has an earlyplugins/ folder with existing jars.
Manual CurseForge Mapping
If NyoUpdates cannot automatically identify a mod on CurseForge (due to naming differences), you can add a manual mapping.
Using the command:
/updates mapping add <id|name> <curseforge-slug>
Or edit config.json:
{
"curseforgeMapping": {
"hytale-votifier-1.0.0-SNAPSHOT.jar": "hytale-votifier",
"votifier-1.4.jar": "votifier"
}
}
The key is your mod's filename, the value is the CurseForge project slug from the URL.
Platform Support
- Windows (AppData and server paths)
- Linux (XDG paths, Flatpak, Snap)
- macOS (Application Support)
