Skip to content

Creating Blocks

Blocks are the foundation of Hytale’s world. Learn how to create custom blocks with unique properties, behaviors, and appearances.

TypeDescriptionExamples
SolidStandard placeable blocksStone, wood, bricks
TransparentSee-through blocksGlass, leaves, fences
InteractiveBlocks with behaviorDoors, switches, containers
DecorativeNon-functional decorationFlowers, statues, lights
LiquidFlowing blocksWater, lava

If you haven’t created a block yet, start with the Quick Start tutorial.

  1. Open the Asset Editor
  2. Navigate to Blocks > Create New
  3. Set the block name and properties
  4. Assign a texture
  5. Save your pack

Create a file in Server/Block/:

{
"identifier": "mypack:colored_stone",
"displayName": "Colored Stone",
"category": "building",
"hardness": 1.5,
"resistance": 6.0,
"texture": "mypack:colored_stone",
"model": "cube",
"drops": ["mypack:colored_stone"],
"sounds": {
"break": "block.stone.break",
"place": "block.stone.place",
"step": "block.stone.step"
}
}
PropertyDescription
identifierUnique ID in format namespace:blockname
displayNameName shown to players
categoryCreative menu category
hardnessTime to break (higher = longer)
resistanceExplosion resistance
textureReference to texture file
modelBlock model (cube, cross, etc.)
dropsItems dropped when broken
soundsSound events for interactions
ValueBreak TimeExample
0.0InstantGrass
0.5FastDirt
1.5MediumStone
5.0SlowObsidian
-1UnbreakableBedrock
ValueResistanceExample
0.0NoneGlass
6.0NormalStone
1200HighObsidian

Specify which tools can mine the block:

{
"harvestTool": "pickaxe",
"harvestLevel": 1
}
LevelTool Tier
0Any tool
1Stone+
2Iron+
3Diamond+

Organize blocks into categories for the creative menu:

CategoryPurpose
buildingConstruction materials
decorationDecorative items
naturalNature blocks (dirt, stone)
functionalBlocks with uses
redstoneLogic/mechanical blocks
  • Size: 16x16 pixels (standard) or 32x32 (high detail)
  • Format: PNG with transparency support
  • Location: Common/BlockTextures/
  1. Tile seamlessly - Edges should connect when repeated
  2. Use consistent lighting - Light from top-left is standard
  3. Avoid too much noise - Keep patterns readable at small sizes
  4. Test in-game - Check how it looks placed next to itself

For blocks with different sides (like logs or crates):

{
"texture": {
"top": "mypack:crate_top",
"bottom": "mypack:crate_bottom",
"sides": "mypack:crate_side"
}
}

Or specify each face:

{
"texture": {
"top": "mypack:crate_top",
"bottom": "mypack:crate_bottom",
"north": "mypack:crate_side",
"south": "mypack:crate_side",
"east": "mypack:crate_side",
"west": "mypack:crate_side"
}
}

By default, blocks drop themselves. Customize drops:

{
"drops": [
{
"item": "mypack:gem",
"count": { "min": 1, "max": 3 }
}
]
}
{
"drops": []
}

Require a specific tool:

{
"drops": [
{
"item": "mypack:gem",
"condition": {
"tool": "pickaxe"
}
}
]
}

File structure:

MyBlockPack/
├── manifest.json
├── Common/
│ └── BlockTextures/
│ └── glowing_ore.png
└── Server/
└── Block/
└── glowing_ore.json

manifest.json:

{
"name": "MyBlockPack",
"version": "1.0.0",
"description": "Custom blocks"
}

glowing_ore.json:

{
"identifier": "mypack:glowing_ore",
"displayName": "Glowing Ore",
"category": "natural",
"hardness": 3.0,
"resistance": 3.0,
"texture": "mypack:glowing_ore",
"model": "cube",
"harvestTool": "pickaxe",
"harvestLevel": 2,
"drops": [
{
"item": "mypack:glow_crystal",
"count": { "min": 1, "max": 2 }
}
],
"light": 8
}