Skip to content

Item System Overview

The Item System is the core framework for defining all holdable objects in Hytale, including weapons, tools, armor, consumables, and placeable blocks. Items are defined in JSON files and can include custom models, textures, interactions, and crafting recipes.

com.hypixel.hytale.server.core.asset.type.item.config.Item

  • DirectoryAssets/
    • DirectoryServer/
      • DirectoryItem/
        • DirectoryItems/ # Item definitions organized by category
          • DirectoryArmor/ # Armor pieces (helmets, chestplates, etc.)
          • DirectoryBench/ # Crafting stations
          • DirectoryConsumables/ # Food and potions (implied)
          • DirectoryTool/ # Pickaxes, shovels, hoes
          • DirectoryWeapon/ # Combat weapons (23 categories)
            • DirectorySword/
            • DirectoryShortbow/
            • DirectoryAxe/
        • DirectoryInteractions/ # Behavior definitions (1,316 files)
        • DirectoryRootInteractions/ # Top-level interaction trees
        • DirectoryCategories/ # Category metadata
        • DirectoryQualities/ # Quality tier definitions
    • DirectoryCommon/
      • DirectoryItems/ # Client-side models and textures
        • DirectoryWeapons/
          • DirectorySword/
          • DirectoryBow/
      • DirectoryIcons/
        • DirectoryItemsGenerated/ # Auto-generated item icons

Hytale organizes items into data-driven categories (defined in Assets/Server/Item/Items/Categories/):

Weapons

23 weapon types including swords, bows, staves, and more. Combat-focused items with attack interactions.

Tools

Mining and utility tools: pickaxes, shovels, hoes, shears. Used for resource gathering.

Armor

Protective equipment: helmets, chestplates, leggings, boots. Provides defense stats.

Consumables

Food, potions, and other items that are consumed on use. Provides buffs or restores stats.

CategoryDescriptionExample
ArmorProtective equipmentHelmets, chestplates
BenchCrafting stationsWeapon_Bench, Forge
BoneBone materialsBone fragments
ContainerStorage itemsChests, bags
DecoDecorative itemsFurniture, ornaments
FishCaught fishVarious fish types
FoodEdible itemsCooked meat, vegetables
FurniturePlaceable furnitureChairs, tables
GliderFlying equipmentGliders
IngredientCrafting materialsBars, leather, fabric
OreRaw mineralsIron ore, copper ore
PlantHarvestable plantsCrops, flowers
PotionConsumable buffsHealth potions
ToolUtility toolsPickaxe, shovel
WeaponCombat itemsSwords, bows, staves
FieldTypeDescription
No required fields-Items can inherit everything from Parent
FieldTypeDefaultDescription
Parentstring-Template to inherit from
TranslationPropertiesobject-Localization keys
Modelstring-Path to .blockymodel file
Texturestring"Items/Unknown.png"Path to texture file
Iconstring-Path to icon image
Qualitystring-Quality tier (Common, Uncommon, etc.)
ItemLevelinteger0Level requirement
MaxStackinteger100 or 1Maximum stack size
Categoriesstring[]-Item categories for library menu
Tagsobject-Type and family classification
FieldTypeDefaultDescription
PlayerAnimationsIdstring"Default"Animation set for player
DroppedItemAnimationstring-Animation when item is dropped
Scalenumber1.0Model scale factor
Particlesarray-Particle effects on item
Trailsarray-Trail effects
Lightobject-Emitted light color/intensity
Reticlestring-Crosshair type when held
FieldTypeDefaultDescription
MaxDurabilitynumber0Maximum durability (0 = unbreakable)
DurabilityLossOnHitnumber0Durability lost per hit
FuelQualitynumber1.0Fuel efficiency multiplier for processing benches (e.g. sticks = 4, tree sap = 6)
FieldTypeDescription
InteractionsobjectMaps interaction types (Primary, Secondary, Ability1) to root interactions
InteractionVarsobjectVariables for damage, effects, and behaviors
InteractionConfigobjectAdditional interaction configuration
FieldTypeDescription
WeaponobjectWeapon-specific configuration
ToolobjectTool-specific configuration
ArmorobjectArmor stats and slots
GliderobjectGlider configuration
UtilityobjectUtility item settings
ConsumablebooleanWhether item is consumed on use
Statemap<string, Item>Defines named item variants that inherit from this item (e.g. a bucket with Filled_Water and Filled_Milk states)

Items have quality tiers that affect their visual presentation and stats:

QualityColorDescription
Template-Base template (not for players)
CommonWhiteBasic items
UncommonGreenSlightly better items
RareBlueValuable items
EpicPurpleHigh-tier items
LegendaryOrangeBest-in-class items

Items use a parent-child inheritance system via the Parent field:

Weapon_Sword_Iron.json
{
"Parent": "Template_Weapon_Sword",
"TranslationProperties": {
"Name": "server.items.Weapon_Sword_Iron.name"
},
"Model": "Items/Weapons/Sword/Iron.blockymodel",
"Texture": "Items/Weapons/Sword/Iron_Texture.png",
"Quality": "Uncommon",
"ItemLevel": 20,
"MaxDurability": 120
}

The child item inherits all properties from the template and only needs to override specific values.

Templates are located alongside regular items with the naming convention Template_*.json:

TemplateLocationPurpose
Template_Weapon_SwordWeapon/Sword/Base sword with attack patterns
Template_Weapon_ShortbowWeapon/Shortbow/Base bow with charge mechanics
Template_Weapon_MaceWeapon/Mace/Base mace with stun effects
Template_Weapon_DaggersWeapon/Daggers/Base daggers with quick attacks
Template_Weapon_ShieldWeapon/Shield/Base shield with blocking
Template_Weapon_CrossbowWeapon/Crossbow/Base crossbow mechanics
Template_Weapon_BattleaxeWeapon/Battleaxe/Base battleaxe with heavy attacks
MyPlugin_Simple_Item.json
{
"TranslationProperties": {
"Name": "server.items.MyPlugin_Simple_Item.name"
},
"Model": "Items/Misc/Simple_Item.blockymodel",
"Texture": "Items/Misc/Simple_Texture.png",
"Icon": "Icons/ItemsGenerated/MyPlugin_Simple_Item.png",
"Quality": "Common",
"MaxStack": 64,
"Categories": ["Items.Misc"]
}
ItemExample.java
import com.hypixel.hytale.server.core.asset.type.item.config.Item;
import com.hypixel.hytale.assetstore.map.DefaultAssetMap;
public class ItemExample {
public void accessItems() {
// Get the item asset map
DefaultAssetMap<String, Item> itemMap = Item.getAssetMap();
// Get a specific item by ID
Item ironSword = itemMap.get("Weapon_Sword_Iron");
// Check if item exists
boolean exists = itemMap.containsKey("MyPlugin_Custom_Item");
// Get all item IDs
Set<String> allItems = itemMap.keySet();
// Get item properties
if (ironSword != null) {
String model = ironSword.getModel();
double durability = ironSword.getMaxDurability();
int maxStack = ironSword.getMaxStack();
String[] categories = ironSword.getCategories();
}
}
}

Control how items appear in the inventory UI:

IconProperties example
{
"IconProperties": {
"Scale": 0.35,
"Translation": [-22, -22],
"Rotation": [45, 90, 0]
}
}
PropertyTypeDescription
ScalenumberIcon size multiplier
Translation[x, y]Pixel offset in UI
Rotation[x, y, z]Euler rotation angles

Items can change appearance based on entity stats:

Appearance conditions for durability
{
"ItemAppearanceConditions": {
"Health": [
{
"Condition": [0, 20],
"Model": "Items/Weapons/Axe/Iron.blockymodel",
"Texture": "Items/Weapons/Axe/Iron_Texture.png",
"Particles": [{ "SystemId": "Torch_Fire" }]
},
{
"Condition": [21, 40],
"Texture": "Items/Weapons/Axe/Iron_Rusty_Texture.png",
"Particles": [{ "SystemId": "Torch_Fire" }]
}
]
}
}

This allows visual degradation as items lose durability, or special effects when signature abilities are charged.

  1. Use plugin prefix: Always prefix custom item IDs with your plugin name (e.g., MyPlugin_Sword)
  2. Inherit from templates: Use the Parent field to reduce duplication
  3. Provide icons: Always include an Icon path for inventory display
  4. Set appropriate MaxStack: Weapons/tools should be 1, materials can be 100
  5. Use quality tiers: Match quality to item power for consistent progression
  6. Test durability: Verify MaxDurability and DurabilityLossOnHit values feel balanced