Skip to content

Consumables

Consumables are items that are used up when activated, providing effects such as health restoration, stat buffs, or transformations. Hytale has two main consumable categories: Food and Potions.

Food Definitions: Assets/Server/Item/Items/Food/ Potion Definitions: Assets/Server/Item/Items/Potion/ Client Models: Assets/Common/Items/Consumables/

CategoryDescriptionExamples
Raw MeatUncooked animal productsBeef, Chicken, Pork, Wildmeat
FishAquatic food itemsFish Raw (5 quality tiers)
Cooked FoodPrepared dishesGrilled Fish, Cooked Wildmeat
Baked GoodsOven-prepared foodBread
Prepared MealsComplex recipesKebabs, Pies, Salads
SpecialHoliday itemsCandy Cane, Popcorn
CategoryDescriptionExamples
HealthRestore health instantlyHealth, Health Greater, Health Lesser
StaminaRestore stamina instantlyStamina, Stamina Greater, Stamina Lesser
ManaRestore mana instantlyMana, Mana Large, Mana Small
SignatureRestore signature energySignature Greater, Signature Lesser
RegenerationHeal over timeRegen Health, Regen Mana, Regen Stamina
MorphTransform into creaturesMorph Dog, Morph Frog, Morph Mouse, Morph Pigeon
UtilitySpecial effectsAntidote, Purify, Poison
EmptyCrafting containersEmpty, Empty Large, Empty Small
FieldTypeDescription
ParentstringTemplate to inherit from (Template_Food, Potion_Template)
TranslationPropertiesobjectLocalization configuration
ModelstringPath to .blockymodel file
TexturestringPath to texture file
IconstringPath to inventory icon
QualitystringQuality tier
Categoriesstring[]"Items.Foods" or "Items.Potions"
ConsumablebooleanMust be true for consumables
FieldTypeDefaultDescription
ConsumablebooleanfalseMarks item as consumed on use
MaxStackinteger25 (food), 10 (potion)Stack size limit
DropOnDeathbooleantrueWhether item drops when player dies
Scalenumber1.0Model display scale

Every consumable defines a BlockType that controls how the item looks and behaves when placed as a block in the world (dropped on surfaces, set on tables, etc.). The item’s BlockType creates an inline block definition — its block ID is automatically set to the item’s own ID.

FieldTypeDescription
MaterialstringBlock material type (typically "Empty" for consumables)
DrawTypestringHow the block is rendered ("Model" for all consumables)
HitboxTypestringCollision shape ("Food_Large", "Food_Medium", "Potion")
CustomModelstringPath to the .blockymodel used when placed
CustomModelTextureobject[]Texture entries with Texture path and Weight
CustomModelScalenumberScale of the model when rendered as a block
ParticleColorstringHex color for break/interact particles
RandomRotationstringRotation behavior when placed (e.g. "YawStep1")
GatheringobjectGathering configuration (typically { "Harvest": {}, "Soft": {} })
OpacitystringTransparency level ("Transparent", "Semitransparent")
SupportobjectPlacement support rules (e.g. requires a full face below)
LightobjectLight emitted by the block (potions glow with { "Color": "#522" })
BlockParticleSetIdstringParticle set for interactions ("Dust", "GlassMagic")
BlockSoundSetIdstringSound set for block interactions ("Glass")
FlagsobjectBlock flags like { "IsUsable": true }
FieldTypeDescription
EffectobjectApplied effect when consumed
Stat_CheckobjectCondition check before consumption
ConsumeSFXobjectSound while consuming
ConsumedSFXobjectSound after consumption
RemoveEffectobjectEffect removal on use

Food items inherit from Template_Food:

Template_Food.json
{
"TranslationProperties": {
"Name": "server.items.Template_Food.name"
},
"Quality": "Template",
"Icon": "Icons/ItemsGenerated/Plant_Crop_Corn.png",
"Categories": ["Items.Foods"],
"BlockType": {
"Material": "Empty",
"DrawType": "Model",
"HitboxType": "Food_Large",
"CustomModel": "Resources/Ingredients/Corn.blockymodel",
"CustomModelTexture": [{
"Texture": "Resources/Ingredients/Corn_Texture.png",
"Weight": 1
}],
"ParticleColor": "#cabc3f",
"RandomRotation": "YawStep1",
"Gathering": { "Harvest": {}, "Soft": {} }
},
"ItemLevel": 10,
"ResourceTypes": [{ "Id": "Foods" }],
"Utility": { "Compatible": true },
"PlayerAnimationsId": "Item",
"Scale": 1.2,
"Interactions": {
"Secondary": "Root_Secondary_Consume_Food_T1"
},
"InteractionVars": {
"Effect": {
"Interactions": [{
"Type": "ApplyEffect",
"EffectId": "Food_Health_Regen_Small"
}]
},
"ConsumeSFX": {
"Interactions": [{
"Parent": "Consume_SFX",
"Effects": { "LocalSoundEventId": "SFX_Consume_Bread_Local" }
}]
},
"ConsumedSFX": {
"Interactions": [{
"Parent": "Consumed_SFX",
"Effects": { "LocalSoundEventId": "SFX_Consume_Bread_Local" }
}]
}
},
"InteractionConfig": {
"Priorities": { "Secondary": 1 }
},
"Consumable": true,
"Tags": { "Type": ["Food"] },
"MaxStack": 25
}

Potions inherit from Potion_Template:

Potion_Template.json
{
"TranslationProperties": {
"Name": "server.items.Potion_Health.name"
},
"Quality": "Template",
"PlayerAnimationsId": {
"Parent": "Item",
"Animations": {
"Consume": {
"FirstPerson": "Characters/Animations/Items/Main_Handed/Item/Attacks/Drink/Drink_FPS.blockyanim",
"ThirdPerson": "Characters/Animations/Items/Main_Handed/Item/Attacks/Drink/Drink.blockyanim",
"Speed": 1,
"Looping": true
}
}
},
"Categories": ["Items.Potions"],
"Icon": "Icons/ItemsGenerated/Potion_Health.png",
"Interactions": {
"Secondary": {
"RequireNewClick": false,
"Interactions": [{
"Type": "Condition",
"RequiredGameMode": "Adventure",
"Crouching": false,
"Next": {
"Type": "Replace",
"DefaultValue": { "Interactions": ["Stat_Check"] },
"Var": "Stat_Check"
},
"Failed": "Block_Secondary"
}]
}
},
"InteractionVars": {
"RemoveEffect": {
"Interactions": [{ "Type": "Simple" }]
},
"Effect": {
"Interactions": [{
"Type": "ApplyEffect",
"EffectId": {
"StatModifiers": { "Health": 10 },
"StatusEffectIcon": "UI/StatusEffects/Health_Potion.png",
"OverlapBehavior": "Extend"
}
}]
},
"Stat_Check": {
"Interactions": [{
"Parent": "Stat_Check",
"Costs": { "Health": 100 },
"ValueType": "Percent",
"LessThan": true
}]
}
},
"Utility": { "Compatible": false },
"BlockType": {
"BlockParticleSetId": "GlassMagic",
"BlockSoundSetId": "Glass",
"CustomModel": "Items/Consumables/Potions/Potion.blockymodel",
"CustomModelTexture": [{
"Texture": "Items/Consumables/Potions/Potion_Textures/Pink.png",
"Weight": 1
}],
"CustomModelScale": 0.5,
"DrawType": "Model",
"Flags": { "IsUsable": true },
"Gathering": { "Harvest": {}, "Soft": {} },
"HitboxType": "Potion",
"Material": "Empty",
"RandomRotation": "YawStep1",
"Opacity": "Transparent",
"Support": { "Down": [{ "FaceType": "Full" }] },
"ParticleColor": "#ff3730",
"Light": { "Color": "#522" }
},
"Consumable": true,
"Tags": { "Type": ["Potion"] },
"Scale": 2,
"MaxStack": 10
}
Food_Fish_Raw.json
{
"TranslationProperties": {
"Name": "server.items.Food_Fish_Raw.name",
"Description": "server.items.Food_Fish_Raw.description"
},
"Parent": "Template_Food",
"Quality": "Common",
"Icon": "Icons/ItemsGenerated/Food_Fish_Raw.png",
"BlockType": {
"Material": "Empty",
"DrawType": "Model",
"CustomModel": "Resources/Ingredients/Fish_Piece.blockymodel",
"CustomModelTexture": [{
"Texture": "Resources/Ingredients/Fish_Piece_Raw_Texture.png",
"Weight": 1
}],
"ParticleColor": "#d97676"
},
"InteractionVars": {
"Effect": {
"Interactions": [{
"Type": "ApplyEffect",
"EffectId": "Food_Instant_Heal_T1"
}]
}
},
"Scale": 1,
"MaxStack": 25,
"Recipe": {
"TimeSeconds": 1,
"Input": [{ "ResourceTypeId": "Fish" }],
"BenchRequirement": [{
"Type": "Crafting",
"Id": "Cookingbench",
"Categories": ["Ingredients"]
}]
},
"DropOnDeath": true,
"ItemLevel": 1
}
Potion_Health.json
{
"TranslationProperties": {
"Name": "server.items.Potion_Health.name"
},
"PlayerAnimationsId": {
"Parent": "Item",
"Animations": {
"Consume": {
"FirstPerson": "Characters/Animations/Items/Main_Handed/Item/Attacks/Drink/Drink_FPS.blockyanim",
"ThirdPerson": "Characters/Animations/Items/Main_Handed/Item/Attacks/Drink/Drink.blockyanim",
"Speed": 1,
"Looping": true
}
}
},
"Categories": ["Items.Potions"],
"Icon": "Icons/ItemsGenerated/Potion_Health.png",
"Interactions": {
"Secondary": {
"RequireNewClick": false,
"Interactions": [{
"Type": "Condition",
"RequiredGameMode": "Adventure",
"Crouching": false,
"Next": {
"Type": "Replace",
"DefaultValue": { "Interactions": ["Stat_Check"] },
"Var": "Stat_Check"
},
"Failed": "Block_Secondary"
}]
}
},
"InteractionVars": {
"RemoveEffect": {
"Interactions": [{ "Type": "Simple" }]
},
"Effect": {
"Interactions": [{
"Type": "ApplyEffect",
"EffectId": {
"StatModifiers": { "Health": 40 },
"ValueType": "Percent",
"StatusEffectIcon": "UI/StatusEffects/Health_Potion.png",
"OverlapBehavior": "Extend"
}
}]
},
"Stat_Check": {
"Interactions": [{
"Parent": "Stat_Check",
"Costs": { "Health": 100 },
"ValueType": "Percent",
"LessThan": true
}]
},
"ConsumeSFX": {
"Interactions": [{
"Parent": "Consume_SFX",
"Effects": { "LocalSoundEventId": "SFX_Health_Potion_Low_Drink" }
}]
},
"ConsumedSFX": {
"Interactions": [{
"Parent": "Consumed_SFX",
"Effects": { "LocalSoundEventId": "SFX_Potion_Drink_Success" }
}]
}
},
"Utility": { "Compatible": false },
"BlockType": {
"BlockParticleSetId": "Dust",
"CustomModel": "Items/Consumables/Potions/Potion.blockymodel",
"CustomModelTexture": [{
"Texture": "Items/Consumables/Potions/Potion_Textures/Red.png",
"Weight": 1
}],
"CustomModelScale": 0.5,
"DrawType": "Model",
"Flags": { "IsUsable": true },
"Gathering": { "Harvest": {}, "Soft": {} },
"HitboxType": "Potion",
"Material": "Empty",
"RandomRotation": "YawStep1",
"Opacity": "Transparent",
"Support": { "Down": [{ "FaceType": "Full" }] },
"ParticleColor": "#ff3730",
"Light": { "Color": "#522" }
},
"Consumable": true,
"Tags": { "Type": ["Potion"] },
"Scale": 2,
"MaxStack": 10,
"ItemLevel": 1,
"DropOnDeath": true
}

Consumables apply effects through the ApplyEffect interaction type.

Instant heal effect
{
"Type": "ApplyEffect",
"EffectId": {
"StatModifiers": { "Health": 40 },
"ValueType": "Percent",
"StatusEffectIcon": "UI/StatusEffects/Health_Potion.png",
"OverlapBehavior": "Extend"
}
}
Health regeneration over time
{
"Type": "ApplyEffect",
"EffectId": {
"StatModifiers": { "Health": 5 },
"Duration": 2,
"DamageCalculatorCooldown": 4,
"Debuff": true,
"StatusEffectIcon": "UI/StatusEffects/Health_Potion.png",
"OverlapBehavior": "Extend"
}
}
PropertyTypeDescription
StatModifiersobjectStats to modify (Health, Mana, Stamina)
DurationnumberEffect duration in seconds
DamageCalculatorCooldownnumberCooldown between effect ticks
ValueTypestring"Percent" or absolute
StatusEffectIconstringIcon shown in status bar
OverlapBehaviorstringHow multiple effects interact ("Extend", etc.)
DebuffbooleanWhether effect is negative

Effects can reference predefined effect IDs:

Effect IDDescription
Food_Instant_Heal_T1Small instant heal
Food_Instant_Heal_T2Medium instant heal
Food_Instant_Heal_BreadBread-specific healing
Food_Health_Regen_SmallSmall health regeneration
Potion_Morph_DogTransform into dog
Potion_Morph_FrogTransform into frog

Food uses tiered consume interactions:

InteractionTierTypical Use
Root_Secondary_Consume_Food_T1BasicRaw foods, simple items
Root_Secondary_Consume_Food_T2StandardCooked foods, prepared meals
Root_Secondary_Consume_Potion_MorphSpecialMorph potions

Potions can check stats before consumption:

Stat check preventing overhealing
{
"Stat_Check": {
"Interactions": [{
"Parent": "Stat_Check",
"Costs": { "Health": 100 },
"ValueType": "Percent",
"LessThan": true
}]
}
}

This prevents consuming health potions when already at full health.

PropertyTypeDescription
CostsobjectStat threshold to check
ValueTypestring"Percent" for percentage check
LessThanbooleantrue = use only when below threshold

Consumables use specific crafting stations:

StationCategoriesProduces
CookingbenchBaked, Prepared, IngredientsFood items
AlchemybenchAlchemy_Potions_*Potions
FarmingbenchFarmingBasic ingredients

Potions use color-coded textures in Items/Consumables/Potions/Potion_Textures/:

ColorTexturePotion Type
RedRed.pngHealth
BlueBlue.pngMana
GreenGreen.pngStamina
PinkPink.pngRegeneration, Signature
WhiteWhite.pngMorph, Purify
PurplePurple.pngPoison
ConsumableExample.java
import com.hypixel.hytale.server.core.asset.type.item.config.Item;
public class ConsumableExample {
public void accessConsumables() {
// Get food item
Item bread = Item.getAssetMap().get("Food_Bread");
// Get potion
Item healthPotion = Item.getAssetMap().get("Potion_Health");
if (bread != null) {
// Check if consumable
boolean isConsumable = bread.isConsumable();
int maxStack = bread.getMaxStack();
// Get categories
String[] categories = bread.getCategories();
// Should contain "Items.Foods"
}
if (healthPotion != null) {
// Potions have "Items.Potions" category
boolean isPotion = Arrays.asList(healthPotion.getCategories())
.contains("Items.Potions");
}
}
}
MyPlugin_Food_Custom.json
{
"Parent": "Template_Food",
"TranslationProperties": {
"Name": "server.items.MyPlugin_Food_Custom.name",
"Description": "server.items.MyPlugin_Food_Custom.description"
},
"Quality": "Rare",
"Icon": "Icons/ItemsGenerated/MyPlugin_Food_Custom.png",
"Interactions": {
"Secondary": "Root_Secondary_Consume_Food_T2"
},
"BlockType": {
"Material": "Empty",
"DrawType": "Model",
"CustomModel": "MyPlugin/Food/Custom_Food.blockymodel",
"CustomModelTexture": [{
"Texture": "MyPlugin/Food/Custom_Food_Texture.png",
"Weight": 1
}],
"ParticleColor": "#ffcc00"
},
"InteractionVars": {
"Effect": {
"Interactions": [{
"Type": "ApplyEffect",
"EffectId": {
"StatModifiers": { "Health": 25 },
"ValueType": "Percent",
"StatusEffectIcon": "UI/StatusEffects/Health_Potion.png",
"OverlapBehavior": "Extend"
}
}]
}
},
"Recipe": {
"TimeSeconds": 3,
"Input": [
{ "ItemId": "Ingredient_Custom", "Quantity": 2 },
{ "ResourceTypeId": "Fuel", "Quantity": 1 }
],
"BenchRequirement": [{
"Type": "Crafting",
"Id": "Cookingbench",
"Categories": ["Prepared"]
}]
},
"Scale": 1.2,
"ItemLevel": 15,
"MaxStack": 20,
"DropOnDeath": true
}
MyPlugin_Potion_Custom.json
{
"Parent": "Potion_Template",
"TranslationProperties": {
"Name": "server.items.MyPlugin_Potion_Custom.name"
},
"Icon": "Icons/ItemsGenerated/MyPlugin_Potion_Custom.png",
"InteractionVars": {
"RemoveEffect": {
"Interactions": [{ "Type": "Simple" }]
},
"Effect": {
"Interactions": [{
"Type": "ApplyEffect",
"EffectId": {
"StatModifiers": {
"Health": 20,
"Stamina": 30
},
"Duration": 5,
"StatusEffectIcon": "UI/StatusEffects/MyPlugin_Custom_Buff.png",
"OverlapBehavior": "Extend"
}
}]
},
"Stat_Check": {
"Interactions": [{
"Parent": "Stat_Check",
"Costs": { "Health": 100 },
"ValueType": "Percent",
"LessThan": true
}]
}
},
"Recipe": {
"TimeSeconds": 2,
"Input": [
{ "ItemId": "Potion_Empty", "Quantity": 1 },
{ "ItemId": "MyPlugin_Ingredient", "Quantity": 3 }
],
"BenchRequirement": [{
"Id": "Alchemybench",
"Type": "Crafting",
"Categories": ["Alchemy_Potions_Misc"]
}]
},
"BlockType": {
"CustomModel": "Items/Consumables/Potions/Potion.blockymodel",
"CustomModelTexture": [{
"Texture": "MyPlugin/Potions/Custom_Texture.png",
"Weight": 1
}],
"ParticleColor": "#00ffaa",
"Light": { "Color": "#0a5" }
},
"MaxStack": 10,
"ItemLevel": 25,
"DropOnDeath": true
}
  1. Use templates: Inherit from Template_Food or Potion_Template
  2. Set appropriate MaxStack: Food typically 25, potions typically 10
  3. Include stat checks: Prevent wasteful consumption at full stats
  4. Provide consume sounds: Use ConsumeSFX and ConsumedSFX for feedback
  5. Balance healing values: Follow tier progression (T1 < T2 < etc.)
  6. Set DropOnDeath: Most consumables should drop on death
  7. Use color-coded textures: Follow established potion color conventions
  8. Prefix IDs: Use plugin name prefix for all custom consumables