Hytale uses a unified AssetRegistry system to manage game content. All content types (Blocks, Items, Sounds, Particles) are treated as “Assets” loaded from JSON files.
com.hypixel.hytale.assetstore.AssetRegistrycom.hypixel.hytale.server.core.asset.AssetRegistryLoaderAssetStore (e.g., AssetStore<String, BlockType>).AssetCodec for JSON serialization/deserialization.AssetPacketGenerator classes handle syncing registry data to clients.The following table lists the primary registries found in the server source.
| Asset Class | Path in Assets | Key Function | Dependencies |
|---|---|---|---|
| BlockType | Item/Block/Blocks |
getId |
Loads After: BlockBoundingBoxes, BlockSoundSet, SoundEvent, BlockParticleSet, etc. |
| Item | Item/Items |
getId |
Loads After: ItemCategory, ResourceType, BlockType, EntityEffect, SoundEvent, etc. |
| CraftingRecipe | Item/Recipes |
getId |
Loads After: Item, BlockType |
| Fluid | Item/Block/Fluids |
getId |
Loads After: FluidFX, BlockSoundSet, SoundEvent |
| Environment | Environments |
getId |
Loads After: Weather, FluidFX, ParticleSystem |
| Weather | Weathers |
getId |
Loads After: ParticleSystem |
| SoundEvent | Audio/SoundEvents |
getId |
Loads After: AudioCategory |
| ParticleSystem | Particles |
getId |
Loads After: ParticleSpawner |
| EntityEffect | Entity/Effects |
getId |
Loads After: ModelAsset, SoundEvent, DamageCause |
| DamageCause | Entity/Damage |
getId |
Loads Before: Item, Interaction |
| ModelAsset | Models |
getId |
Loads After: ParticleSystem, SoundEvent |
BlockType)com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockTypeBlockType.CODECBlockType.EMPTY, BlockType.UNKNOWN, BlockType.DEBUG_CUBEBlockTypePacketGenerator (Packet ID 40: UpdateBlockTypes)Item)com.hypixel.hytale.server.core.asset.type.item.config.ItemItem.CODECItem.UNKNOWNItemPacketGenerator (Packet ID 54: UpdateItems)EntityEffect? Or PrefabListAsset? Further investigation is needed for the Entity Type registry (EntityTypes equivalent).AssetRegistryLoader.init() initializes the AssetRegistry.AssetRegistry.register() calls register all AssetStore builders.AssetRegistryLoader.loadAssets() scans the Server directory in the asset pack.AssetCodec, and stores them in the AssetStore.