Skip to main content

Configuration

Item Control uses a single config.json file for all settings. The configuration is hot-reloadable via /ksitem reload.

File Location

plugins/ItemControl/config.json

Module Toggles

Every module can be individually enabled or disabled. Disabled modules have zero overhead — no events are registered, no systems run.

{
"modules": {
"item-browser": { "enabled": true },
"admin-give": { "enabled": true },
"crafting-rules": { "enabled": true },
"death-rules": { "enabled": true },
"usage-rules": { "enabled": true },
"soulbound": { "enabled": false },
"cooldowns": { "enabled": false },
"item-watchlist": { "enabled": false },
"inventory-tools": { "enabled": false },
"drop-rules": { "enabled": false },
"temp-rules": { "enabled": false },
"item-overrides": { "enabled": false }
}
}

Modules can also be toggled at runtime via the Admin Hub UI or the /ksitem module enable|disable <id> command. When a rule is added via the Admin UI while the corresponding module is disabled, the module is automatically enabled.

Crafting Rules

{
"crafting-rules": {
"mode": "blacklist",
"blockedItems": ["Weapon_Legendary_Sword"],
"bypassPermission": "kyuubisoft.itemcontrol.craft.bypass",
"disabledRecipes": ["recipe_id_1", "recipe_id_2"]
}
}
FieldTypeDescription
mode"blacklist" or "whitelist"Whether blockedItems acts as a blacklist or whitelist
blockedItemsstring[]Item IDs to block (or allow in whitelist mode)
bypassPermissionstringPermission node that bypasses crafting restrictions
disabledRecipesstring[]Recipe IDs that are disabled (hidden from crafting UI)

Death Rules

{
"death-rules": {
"defaultMode": "selective",
"protectedItems": ["Quest_Reward_Amulet"],
"protectedCategories": ["tools"],
"preserveDurability": false,
"permissionRules": [
{ "permission": "vip.keepitems", "mode": "keep-all" },
{ "permission": "vip.basic", "lossPercentage": 25 }
]
}
}
FieldTypeDescription
defaultMode"vanilla", "keep-all", "selective"Default behavior on death
protectedItemsstring[]Item IDs that are never lost (selective mode)
protectedCategoriesstring[]Item categories that are never lost
preserveDurabilitybooleanIf true, items lose no durability on death
permissionRulesobject[]Permission-based overrides (checked in order)

Death Modes

  • vanilla — Default Hytale behavior, items drop normally
  • keep-all — All items are kept on death
  • selective — Only items/categories in the protected lists are kept; the rest drop normally

Permission Rules

Permission rules are evaluated in order. The first matching rule applies.

  • mode: "keep-all" — Player keeps all items
  • lossPercentage: 25 — Player loses 25% of non-protected items

Soulbound

{
"soulbound": {
"autoSoulboundItems": ["Quest_Reward_Sword"],
"allowAdminOverride": true
}
}
FieldTypeDescription
autoSoulboundItemsstring[]Items that automatically bind on pickup
allowAdminOverridebooleanWhether admins can unbind soulbound items

Cooldowns

{
"cooldowns": {
"itemCooldowns": {
"Food_Healing_Potion": 30
},
"categoryCooldowns": {
"consumable": 3
},
"sharedCooldownGroups": {
"potions": ["Food_Healing_Potion", "Food_Mana_Potion"]
}
}
}
FieldTypeDescription
itemCooldownsmap<string, int>Per-item cooldown in seconds
categoryCooldownsmap<string, int>Per-category cooldown in seconds
sharedCooldownGroupsmap<string, string[]>Named groups where all items share one timer

Item Watchlist

{
"item-watchlist": {
"watchedItems": ["Weapon_Legendary_Sword"],
"logToFile": true
}
}
FieldTypeDescription
watchedItemsstring[]Item IDs to monitor
logToFilebooleanWhether to log alerts to the SQLite database

Additional Data Files

Beyond config.json, Item Control uses several data files in the plugin directory:

FileDescription
item_overrides.jsonPersisted item stat overrides
custom_recipes.jsonCustom recipe definitions
drop-rules.jsonNPC and block drop rules
soulbound_data.jsonAuto-soulbound item list
itemcontrol.dbSQLite database (inventory backups, watchlist alerts)

All JSON files are auto-created with defaults on first startup. The SQLite database is shared across the Inventory Tools and Watchlist modules.

Localization

Localization files are stored in plugins/ItemControl/localization/. Each file is named by locale (e.g. en-US.json, de-DE.json). The plugin auto-detects the player's language and serves the correct translations.

To add a new language, create a new JSON file following the existing key structure. The localization version is tracked internally — when new keys are added by an update, files are automatically refreshed on next startup.