Skip to content

Block Type Assets

Block types define the visual appearance, physical properties, and behavior of blocks in Hytale. Unlike items, block definitions are embedded within item JSON files using the BlockType object.

com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType

Block definitions are found in item files throughout the Assets/Server/Item/Items/ directory:

  • DirectoryAssets/Server/Item/Items/
    • DirectoryRock/
      • DirectoryStone/
        • Rock_Stone.json
        • Rock_Stone_Brick.json
        • Rock_Stone_Cobble.json
    • DirectorySoil/
      • DirectoryDirt/
      • DirectoryGrass/
      • DirectoryClay_Plaster/
    • DirectoryWood/
      • DirectoryOak/
      • DirectoryBirch/
      • DirectoryCedar/
    • DirectoryOre/
      • DirectoryIron/
      • DirectoryCopper/
      • DirectoryGold/
    • DirectoryFurniture/
      • DirectoryCrude/
      • DirectoryVillage/
    • DirectoryPlant/
      • DirectoryGrass/
      • DirectoryFlowers/

Block type lists for scatter generation are defined in:

  • Assets/Server/BlockTypeList/ - Contains block list files like Ores.json, Soils.json, Rock.json

The BlockType object is embedded within item definitions:

FieldTypeDescription
MaterialstringPhysical material type (Solid, Empty)
DrawTypestringRendering method (Empty, GizmoCube, Cube, Model, CubeWithModel)
FieldTypeDefaultDescription
Texturesarray-Texture definitions with face assignments
CustomModelstring-Path to .blockymodel file for non-cube blocks
CustomModelTexturearray-Texture variants for custom models
CustomModelScalefloat1.0Scale factor for custom models
CustomModelAnimationstring-Default animation for the model
OpacitystringSolidLight blocking (Solid, Transparent, SemiTransparent)
Lightobject-Emitted light color and intensity
Tintarray-Color tint values (hex strings)
ParticleColorstring-Hex color for break particles
FieldTypeDefaultDescription
Groupstring-Material group for tool effectiveness (Stone, Dirt, Wood)
HitboxTypestringFullCollision shape type
InteractionHitboxTypestring-Separate hitbox for interactions
Flagsobject{}Boolean flags for behavior
DamageToEntitiesint0Contact damage (e.g., cacti, magma)
FieldTypeDefaultDescription
VariantRotationstring-Rotation variant type (None, Wall, UpDown, Pipe, DoublePipe, NESW, UpDownNESW, All)
RandomRotationstring-Random rotation on placement (YawStep90)
PlacementSettingsobject-Placement rules and rotation mode
FlipTypestring-Flip behavior for mirrored variants
FieldTypeDescription
SupportobjectRequired support per face (e.g., Down: [{}])
SupportingobjectSupport provided to neighbors per face
SupportDropTypestringBehavior when support lost (BREAK, DESTROY)
FieldTypeDescription
BlockSoundSetIdstringSound set for step/break/place sounds
BlockParticleSetIdstringParticle set for break effects
AmbientSoundEventIdstringLooping ambient sound
InteractionSoundEventIdstringSound on interaction
FieldTypeDescription
Gathering.Breaking.GatherTypestringTool type for efficient breaking (Rocks, Woods, Soils)
Gathering.Breaking.ItemIdstringAlternative item dropped when broken
Gathering.Breaking.DropListobjectComplex drop table configuration
FieldTypeDescription
StateobjectState machine for interactive blocks
State.DefinitionsobjectNamed state definitions with properties
State.IdstringState type identifier (e.g., container)
State.CapacityintContainer capacity for storage blocks
ConnectedBlockRuleSetobjectRules for connecting to neighbors
ValueDescriptionUse Case
EmptyInvisible, no renderingAir, triggers
GizmoCubeGizmo cube renderingDebug/editor gizmos
CubeStandard 6-faced cubeStone, dirt, most blocks
ModelCustom 3D model onlyFurniture, decorations
CubeWithModelCube base with model overlayOres (rock + ore chunks)

A simple stone block with texture variants:

Rock_Stone.json
{
"TranslationProperties": {
"Name": "server.items.Rock_Stone.name"
},
"ItemLevel": 10,
"MaxStack": 100,
"Icon": "Icons/ItemsGenerated/Rock_Stone.png",
"Categories": ["Blocks.Rocks"],
"PlayerAnimationsId": "Block",
"Set": "Rock_Stone",
"BlockType": {
"Material": "Solid",
"DrawType": "Cube",
"Group": "Stone",
"Flags": {},
"Gathering": {
"Breaking": {
"GatherType": "Rocks",
"ItemId": "Rock_Stone_Cobble"
}
},
"BlockParticleSetId": "Stone",
"Textures": [
{
"All": "BlockTextures/Rock_Stone.png",
"Weight": 2
},
{
"All": "BlockTextures/Rock_Stone_2.png",
"Weight": 1
},
{
"All": "BlockTextures/Rock_Stone_3.png",
"Weight": 1
}
],
"ParticleColor": "#737055",
"BlockSoundSetId": "Stone",
"Aliases": ["stone", "stone00"],
"BlockBreakingDecalId": "Breaking_Decals_Rock"
},
"ResourceTypes": [
{ "Id": "Rock" },
{ "Id": "Rock_Stone" }
],
"Tags": {
"Type": ["Rock"]
},
"ItemSoundSetId": "ISS_Blocks_Stone"
}

Ores use CubeWithModel to render ore chunks on top of a base rock texture:

Ore_Iron_Stone.json
{
"TranslationProperties": {
"Name": "server.items.Ore_Iron_Stone.name"
},
"Icon": "Icons/ItemsGenerated/Ore_Iron_Stone.png",
"Categories": ["Blocks.Ores"],
"BlockType": {
"Material": "Solid",
"DrawType": "CubeWithModel",
"CustomModel": "Resources/Ores/Ore_Large.blockymodel",
"CustomModelTexture": [
{
"Texture": "Resources/Ores/Ore_Textures/Iron.png",
"Weight": 1
}
],
"Group": "Stone",
"Flags": {},
"RandomRotation": "YawStep90",
"Gathering": {
"Breaking": {
"GatherType": "Rocks",
"DropList": {
"Container": {
"Type": "Multiple",
"Containers": [
{ "Type": "Single", "Item": { "ItemId": "Ore_Iron" } },
{ "Type": "Single", "Item": { "ItemId": "Rock_Stone_Cobble" } }
]
}
}
}
},
"BlockParticleSetId": "Stone",
"Textures": [
{ "Weight": 1, "All": "BlockTextures/Rock_Stone.png" }
],
"ParticleColor": "#88886a",
"BlockSoundSetId": "Ore"
},
"MaxStack": 25,
"ItemSoundSetId": "ISS_Blocks_Stone"
}

Stairs use connected block rules and multiple state definitions:

Rock_Stone_Brick_Stairs.json
{
"TranslationProperties": {
"Name": "server.items.Rock_Stone_Brick_Stairs.name"
},
"BlockType": {
"Material": "Solid",
"DrawType": "Model",
"Opacity": "Transparent",
"CustomModel": "Blocks/Structures/Stairs/Stairs.blockymodel",
"CustomModelTexture": [
{
"Texture": "Blocks/Structures/Stairs/Stairs_Textures/Stone_Brick.png",
"Weight": 1
}
],
"Group": "Stone",
"HitboxType": "Stairs",
"VariantRotation": "UpDownNESW",
"BlockParticleSetId": "Stone",
"Supporting": {
"Down": [{}],
"North": [{}]
},
"ParticleColor": "#737055",
"BlockSoundSetId": "Stone",
"State": {
"Definitions": {
"Corner_Right": {
"CustomModel": "Blocks/Structures/Stairs/Stairs_Corner_Right.blockymodel",
"HitboxType": "Stairs_Corner_Right",
"FlipType": "Orthogonal",
"Supporting": { "Down": [{}] }
},
"Inverted_Corner_Right": {
"CustomModel": "Blocks/Structures/Stairs/Stairs_Inverted_Corner_Right.blockymodel",
"HitboxType": "Stairs_Inverted_Corner_Right",
"FlipType": "Orthogonal",
"Supporting": { "Down": [{}], "North": [{}], "East": [{}] }
},
"Corner_Left": {
"CustomModel": "Blocks/Structures/Stairs/Stairs_Corner_Left.blockymodel",
"HitboxType": "Stairs_Corner_Left",
"FlipType": "Orthogonal"
},
"Inverted_Corner_Left": {
"CustomModel": "Blocks/Structures/Stairs/Stairs_Inverted_Corner_Left.blockymodel",
"HitboxType": "Stairs_Inverted_Corner_Left"
}
}
},
"PlacementSettings": {
"RotationMode": "StairFacingPlayer"
},
"ConnectedBlockRuleSet": {
"Type": "Stair",
"Corner_Left": { "State": "Corner_Left" },
"Corner_Right": { "State": "Corner_Right" },
"Inverted_Corner_Left": { "State": "Inverted_Corner_Left" },
"Inverted_Corner_Right": { "State": "Inverted_Corner_Right" },
"Straight": { "State": "default" }
}
},
"ItemSoundSetId": "ISS_Blocks_Stone"
}

Doors define open/close states with animations:

Furniture_Crude_Door.json
{
"TranslationProperties": {
"Name": "server.items.Furniture_Crude_Door.name"
},
"PlayerAnimationsId": "Block",
"Categories": ["Furniture.Doors"],
"Set": "Furniture_Crude",
"Icon": "Icons/ItemsGenerated/Furniture_Crude_Door.png",
"BlockType": {
"BlockParticleSetId": "Wood",
"CustomModel": "Blocks/Decorative_Sets/Crude/Door.blockymodel",
"CustomModelTexture": [
{
"Texture": "Blocks/Decorative_Sets/Crude/Door_Texture.png",
"Weight": 1
}
],
"DrawType": "Model",
"Flags": {},
"Gathering": {
"Breaking": { "GatherType": "Woods" }
},
"HitboxType": "Door",
"Material": "Solid",
"Opacity": "Transparent",
"ParticleColor": "#63412c",
"ConnectedBlockRuleSet": {
"Type": "CustomTemplate",
"TemplateShapeAssetId": "DoorConnectedBlockTemplate",
"TemplateShapeBlockPatterns": {
"Default": "Furniture_Crude_Door"
}
},
"State": {
"Definitions": {
"CloseDoorIn": {
"InteractionSoundEventId": "SFX_Door_Crude_Close",
"CustomModelAnimation": "Blocks/Animations/Door/Door_Close_In.blockyanim"
},
"CloseDoorOut": {
"InteractionSoundEventId": "SFX_Door_Crude_Close",
"CustomModelAnimation": "Blocks/Animations/Door/Door_Close_Out.blockyanim"
},
"DoorBlocked": {},
"OpenDoorIn": {
"HitboxType": "Door_Open_In",
"InteractionHitboxType": "Door_Open_In_Interaction",
"InteractionSoundEventId": "SFX_Door_Crude_Open",
"CustomModelAnimation": "Blocks/Animations/Door/Door_Open_In.blockyanim"
},
"OpenDoorOut": {
"HitboxType": "Door_Open_Out",
"InteractionHitboxType": "Door_Open_Out_Interaction",
"InteractionSoundEventId": "SFX_Door_Crude_Open",
"CustomModelAnimation": "Blocks/Animations/Door/Door_Open_Out.blockyanim"
}
}
},
"VariantRotation": "NESW",
"BlockSoundSetId": "Wood",
"IsDoor": true,
"Interactions": {
"Use": "Door"
}
},
"ItemSoundSetId": "ISS_Blocks_Wood"
}

Chests define storage capacity and opening animations:

Furniture_Crude_Chest_Small.json
{
"TranslationProperties": {
"Name": "server.items.Furniture_Crude_Chest_Small.name"
},
"Categories": ["Furniture.Containers"],
"Set": "Furniture_Crude",
"BlockType": {
"BlockParticleSetId": "Wood",
"BlockSoundSetId": "Wood",
"CustomModel": "Blocks/Decorative_Sets/Crude/Chest_Small.blockymodel",
"CustomModelTexture": [
{
"Texture": "Blocks/Decorative_Sets/Crude/Chest_Small_Texture.png",
"Weight": 1
}
],
"DrawType": "Model",
"Flags": {
"IsUsable": true
},
"Gathering": {
"Breaking": { "GatherType": "Woods" }
},
"Material": "Solid",
"Opacity": "Transparent",
"ParticleColor": "#63412c",
"ConnectedBlockRuleSet": {
"Type": "CustomTemplate",
"TemplateShapeAssetId": "ChestConnectedBlockTemplate",
"TemplateShapeBlockPatterns": {
"Default": "Furniture_Crude_Chest_Small",
"Double": "Furniture_Crude_Chest_Large"
}
},
"State": {
"Id": "container",
"Capacity": 18,
"Definitions": {
"CloseWindow": {
"InteractionSoundEventId": "SFX_Chest_Wooden_Close",
"CustomModelAnimation": "Blocks/Animations/Chest/Chest_Close.blockyanim"
},
"OpenWindow": {
"InteractionSoundEventId": "SFX_Chest_Wooden_Open",
"CustomModelAnimation": "Blocks/Animations/Chest/Chest_Open.blockyanim"
}
}
},
"Supporting": {
"Up": [{ "FaceType": "Full" }]
},
"Support": {
"Down": [{ "FaceType": "Full" }]
},
"VariantRotation": "NESW",
"Interactions": {
"Primary": "Break_Container",
"Use": "Open_Container"
}
},
"ItemSoundSetId": "ISS_Blocks_Wood"
}

Plants often use parent templates and tint colors:

Plant_Grass_Rocky.json
{
"TranslationProperties": {
"Name": "server.items.Plant_Grass_Rocky.name"
},
"Icon": "Icons/ItemsGenerated/Plant_Grass_Rocky.png",
"Parent": "Plant_Grass_Lush",
"BlockType": {
"CustomModel": "Blocks/Foliage/Plants/Cross_17px.blockymodel",
"CustomModelTexture": [
{
"Texture": "Blocks/Foliage/Plants/Cross_17px_Textures/Rocky_GS.png",
"Weight": 1
}
],
"HitboxType": "Plant_Medium",
"Tint": ["#dcb86d"]
}
}

Blocks are organized into several main categories:

CategoryLocationExamples
RockRock/Stone, Basalt, Marble, Sandstone
SoilSoil/Dirt, Grass, Clay, Sand
OreOre/Iron, Copper, Gold, Mithril, Adamantite
WoodWood/Oak, Birch, Cedar (logs, planks, leaves)
PlantPlant/Grass, Flowers, Vines, Crops
CategoryLocationExamples
FurnitureFurniture/Doors, Chests, Tables, Chairs
StructuralWithin Rock/WoodStairs, Slabs, Walls, Pillars
GroupTool TypeExamples
StonePickaxeStone, Brick, Ore
DirtShovelDirt, Grass, Sand, Gravel
WoodHatchetLogs, Planks, Furniture
OrganicAnyPlants, Leaves
"Textures": [
{
"Up": "BlockTextures/Stone_Top.png",
"Down": "BlockTextures/Stone_Bottom.png",
"North": "BlockTextures/Stone_Side.png",
"South": "BlockTextures/Stone_Side.png",
"East": "BlockTextures/Stone_Side.png",
"West": "BlockTextures/Stone_Side.png",
"Weight": 1
}
]
"Textures": [
{
"All": "BlockTextures/Stone.png",
"Weight": 1
}
]

Multiple texture entries with different weights create visual variety:

"Textures": [
{ "All": "BlockTextures/Stone.png", "Weight": 2 },
{ "All": "BlockTextures/Stone_2.png", "Weight": 1 },
{ "All": "BlockTextures/Stone_3.png", "Weight": 1 }
]
ValueDescription
NoneNo variant rotation
WallWall-mounted rotation
UpDownUp/down rotation (2 orientations)
PipePipe-style rotation (3 orientations)
DoublePipeDouble pipe rotation (6 orientations)
NESWCardinal direction rotation (4 orientations)
UpDownNESWUp/down + cardinal rotation (8 orientations)
AllAll rotation variants (64 orientations)
FlagTypeDescription
IsUsableboolBlock can be interacted with
IsStackableboolBlocks can stack vertically