Repository navigation
ControlCore 0.9.0
Pre-release
Pre-release
First public release (beta). Requires Hytale server 0.7.2 (>=0.7.2 <0.8.0); the API for other mods is
version 1.5.0 (ControlCoreApi.VERSION).
Changed
- Rebuilt on the OFA-Tech Hytale mod template:
com.azuredoom.hytale-tools1.0.51 instead of
ScaffoldIt, Gradle 9.8.1, Java 25, Hytale server 0.7.2 (>=0.7.2 <0.8.0). - Plugin id is now
OFATech:ControlCore(wasnet.ofatech:ControlCore); entry point
net.ofatech.controlcore.Main. - Code reorganised into
api/domain/application/infrastructure. Hytale is only used in
infrastructure/platforms/hytale, HyUI only ininfrastructure/platforms/hyui. - HyUI is no longer bundled: it is an optional dependency installed next to ControlCore.
/open-admin-confignow requires the<base permission>.adminnode.
Added
- Empty-hand keys (server setting
controlcore:empty-hand-keys, on by default): right click, abilities 1, 2
and 4 and dodge now reach the server with an empty hand (or a plain block or item), so they can be bound;
they still do nothing unless bound. New game actionsability_4anddodge. Turning it off restores the
game's own empty-hand interactions at once. - Restart reminder: Server Configs lists the keys changed since the server started that only apply after a
restart (a key changed back drops off), and admins get the same note in chat when they join. - Translations (API 1.5.0): the panel, command replies, errors and command help are shown in each
player's game language: English, Brazilian Portuguese and Spanish. Missing texts fall back to English. Mods translate their own setting and key texts with
Text.key(key, fallback)and their ownServer/Languages/<language>/<file>.langfiles. - Permissions per setting (API 1.4.0): mods set who may see and who may change a setting
(.viewPermission,.editPermission,.permission) or a whole category (setCategoryPermission);
admins override them per setting, category or mod with/cc-perm(saved inSettingPermissions.json)
and list them with/cc-permsand check one setting with/cc-perm-check <id>. Players who may only see a setting get it read-only; hidden ones are
left out of the panel and commands. Applies to the server config too (mod:server). /open-admin-config,/cc-settings,/cc-get,/cc-setand/cc-resetno longer need a command
permission: they show and change only what the player may (admins still see everything).- Search in every control panel list (Server Configs, Mod Settings, Player Prefs, both Keymaps views):
words match the name, id, mod id, category, value, default or description (all must match;ctrl+f
findsCTRL + F). Prefixesname:,id:,mod:,cat:,key:/value:,default:,desc:,
is:changed/is:default, and-to exclude. A dropdown left of each search box (default All) limits words to
one field or shows only changed or default values; a second dropdown picks how text is compared (Contains,
Equals, Starts with, Ends with, or their "Doesn't …" opposites; Equals/Starts/Ends compare the whole text).
The search is kept while the panel is open. - Key actions (API 1.3.0,
ControlCoreApi.keymaps()): mods registerKeyAction.of(modId, action)
with a display name, a command and/oronPresscode and default keys (KeyandGameAction
combinations). ControlCore detects them while players play (Q, E, R, F, O, 1-9, mouse buttons, Alt tap,
with Ctrl/Alt/Shift/Space held), cancels the key's game action, and runs the command as the player on a
virtual thread. Players rebind in the Keymaps tab (now also in/prefs) or with/cc-keys,
/cc-bind,/cc-bind-reset; admins use/cc-bind-serverand/cc-bind-server-reset. Keys Hytale
does not report are kept and marked not available. ControlCore registerscontrolcore:open-preferences
(CTRL + F). - Key actions can run as the server console (
.runAsServer()) and be limited to a permission
(.permission(node)); server-run actions without one need<base>.keys.server. Players only see and
trigger actions they may use. - Admins create their own key binds without a mod:
/cc-keybind-add,/cc-keybind-add-server,
/cc-keybind-remove,/cc-keybind-listand a form in the admin panel's Keymaps tab with Edit and Remove
on each bind (saved inCustomKeyBinds.json). Adding a name again replaces it; quotes around the
command are dropped. - The admin panel's Keymaps tab switches between Server defaults (the keys everyone gets; Default goes back
to the mod's) and My keys (only yours; Default goes back to the server's). Open panels follow changes. /cc-input-probeand/cc-key-probe input(debug tools,<base>.debug; operators have it): show what the
client reports for each key.- Server Configs tab lists every key of the server's
config.json, read from Hytale's config
definition: live keys (name, MOTD, max players, max view radius, connection timeouts, require join
permission) apply at once, restart keys (world defaults, rate limit, backup, update, world map) apply
after a restart, everything else is read-only. Save and Default (the value of a fresh server);
changes are saved toconfig.jsonstraight away and published asServerConfigChanged. - API 1.2.0:
SettingSnapshot.access()(SettingAccess: editable, applies after restart, read-only). /prefs: any player opens the panel on their own preferences (no admin tabs); works even when the
admin panel is disabled. API 1.2.0:ControlPanelRequest.PLAYER_PREFERENCES,
SettingsEditor.onAnyChange.- Open control panels update when a setting is changed elsewhere (another admin,
/cc-set, another mod)
and say "Changed elsewhere: …". - Control panel Mod Settings tab (every registered server setting) and a real Player Prefs tab
(your own preferences): text fields with Save, check boxes and dropdowns that save immediately, and a
Default button per row. - Settings
controlcore:welcome-message(join message,{player}placeholder),
controlcore:show-welcome-messageandcontrolcore:panel-start-tab(per player). ControlPanelView.opennow receivesControlPanelContent(server config, settings, start tab).- Shared settings registry (
ControlCoreApi.settings(), API 1.1.0): mods register typed settings
(bool,integer,decimal,text,choice) with server or player scope; values are validated,
stored inSettingValues.json/players.jsonand reported throughSettingChanged. - Commands
/cc-settings,/cc-get,/cc-set,/cc-reset(<base>.settings) and/cc-prefs,
/cc-pref,/cc-pref-reset(players, their own preferences). controlcore:control-panel-enabledsetting:ControlPanelEnabledinSettings.jsonis now its
default, and/cc-setchanges it without a restart.- Built-in control panel with native Hytale UI (
Pages/ControlCore/ControlPanel.ui) showing the current
server config; used whenever HyUI is missing or incompatible (HyUI 0.9.8 crashes worlds on 0.7). ControlCoreApi/ControlPanelApifor other mods;Result/Errorfor expected failures.Settings.jsonwithControlPanelEnabled.- ArchUnit architecture tests, runtime and feature tests with fakes, Spotless, build workflow.
Removed
- The template's example join message (
ExampleEvent), avaje-inject, the reflectiveModComponentScanner,
unused*Extensionshelpers and the unusedconfig/TemplatePlugin/config.json.