Skip to content

Existing Registries

This page catalogs every registry available in Hytale’s server, split into plugin registries (accessible from PluginBase) and internal registries (used by the engine).

These registries are accessed through your plugin’s base class and share its lifecycle.

Registers commands that players and console can execute.

  • Package: com.hypixel.hytale.server.core.command.system.CommandRegistry
  • Accessor: getCommandRegistry()
MethodTypeDescription
registerCommand(AbstractCommand)RegistrationRegister a command with the server
import com.hypixel.hytale.server.core.command.system.CommandRegistry;
@Override
protected void setup() {
getCommandRegistry().registerCommand(new MyCommand());
}

Registers listeners for server events with priority and key filtering.

  • Package: com.hypixel.hytale.event.EventRegistry
  • Accessor: getEventRegistry()
MethodTypeDescription
register(Class, Consumer)RegistrationRegister with default priority
register(EventPriority, Class, Consumer)RegistrationRegister with specific priority
register(Class, Key, Consumer)RegistrationRegister for keyed event with specific key
registerGlobal(Class, Consumer)RegistrationReceive all keyed events
registerUnhandled(Class, Consumer)RegistrationFallback handler for unprocessed events
registerAsync(...)RegistrationAsync variants of all above methods
import com.hypixel.hytale.event.EventRegistry;
import com.hypixel.hytale.event.EventPriority;
import com.hypixel.hytale.server.core.event.PlayerConnectEvent;
import com.hypixel.hytale.server.core.event.PlayerChatEvent;
@Override
protected void setup() {
getEventRegistry().register(PlayerConnectEvent.class, this::onConnect);
getEventRegistry().register(EventPriority.LATE, PlayerChatEvent.class, this::onChat);
}

Event priorities are processed in order:

PriorityValueUse Case
FIRST-21844Modify event before others see it
EARLY-10922Early processing
NORMAL0Default priority
LATE10922React after modifications
LAST21844Final processing, monitoring

Registers ECS components, resources, and systems for entities.

  • Package: com.hypixel.hytale.component.ComponentRegistryProxy
  • Accessor: getEntityStoreRegistry()
MethodTypeDescription
registerComponent(Class, Supplier)ComponentTypeRegister a component type
registerComponent(Class, String, BuilderCodec)ComponentTypeRegister serializable component
registerResource(Class, Supplier)ResourceTypeRegister a resource type
registerResource(Class, String, BuilderCodec)ResourceTypeRegister serializable resource
registerSystem(ISystem)voidRegister an ECS system
registerSystemType(Class)SystemTypeRegister a system type
registerSystemGroup()SystemGroupCreate a system group
registerEntityEventType(Class)EntityEventTypeRegister an entity event type
registerWorldEventType(Class)WorldEventTypeRegister a world event type
registerSpatialResource(Supplier)ResourceTypeRegister spatial index resource
import com.hypixel.hytale.component.ComponentType;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
@Override
protected void setup() {
ComponentType<EntityStore, MyComponent> componentType =
getEntityStoreRegistry().registerComponent(MyComponent.class, MyComponent::new);
ComponentType<EntityStore, SavedComponent> savedType =
getEntityStoreRegistry().registerComponent(SavedComponent.class, "my_saved", SavedComponent.CODEC);
getEntityStoreRegistry().registerSystem(new MyTickingSystem());
}

Registers ECS components, resources, and systems for chunks. The API mirrors Entity Store Registry.

  • Package: com.hypixel.hytale.component.ComponentRegistryProxy
  • Accessor: getChunkStoreRegistry()
import com.hypixel.hytale.component.ComponentType;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
@Override
protected void setup() {
ComponentType<ChunkStore, ChunkData> chunkDataType =
getChunkStoreRegistry().registerComponent(ChunkData.class, ChunkData::new);
getChunkStoreRegistry().registerSystem(new ChunkProcessingSystem());
}

Registers custom block states for block types.

  • Package: com.hypixel.hytale.server.core.universe.world.meta.BlockStateRegistry
  • Accessor: getBlockStateRegistry()
MethodTypeDescription
register(...)RegistrationRegister a custom block state
@Override
protected void setup() {
getBlockStateRegistry().register(/* block state registration */);
}

Registers custom entity types.

  • Package: com.hypixel.hytale.server.core.modules.entity.EntityRegistry
  • Accessor: getEntityRegistry()
MethodTypeDescription
register(...)RegistrationRegister a custom entity type
@Override
protected void setup() {
getEntityRegistry().register(/* entity type registration */);
}

Registers scheduled and async tasks managed by the plugin lifecycle.

  • Package: com.hypixel.hytale.server.core.task.TaskRegistry
  • Accessor: getTaskRegistry()
MethodTypeDescription
registerTask(CompletableFuture)voidRegister an async task
registerTask(ScheduledFuture)voidRegister a scheduled task
import java.util.concurrent.CompletableFuture;
@Override
protected void setup() {
CompletableFuture<Void> asyncTask = CompletableFuture.runAsync(() -> {
// background work
});
getTaskRegistry().registerTask(asyncTask);
}

Registered tasks are automatically cancelled when the plugin shuts down.

Registers custom asset types and modifiers through the plugin system.

  • Package: com.hypixel.hytale.server.core.plugin.registry.AssetRegistry
  • Accessor: getAssetRegistry()
MethodTypeDescription
register(...)voidRegister an asset type or modifier
@Override
protected void setup() {
getAssetRegistry().register(/* asset registration */);
}

Registers client feature flags that affect client behavior.

  • Package: com.hypixel.hytale.server.core.registry.ClientFeatureRegistry
  • Accessor: getClientFeatureRegistry()
MethodTypeDescription
register(...)RegistrationRegister a client feature flag
@Override
protected void setup() {
getClientFeatureRegistry().register(/* client feature */);
}

Registers entries to codec maps for serialization. Three variants exist depending on the codec map type.

  • Package: com.hypixel.hytale.server.core.plugin.registry.CodecMapRegistry
  • Accessor: getCodecRegistry(codec)
MethodTypeDescription
getCodecRegistry(StringCodecMapCodec)CodecMapRegistryString-keyed registrations
getCodecRegistry(AssetCodecMapCodec)CodecMapRegistry.AssetsAsset-type registrations
getCodecRegistry(MapKeyMapCodec)MapKeyMapRegistryMap-key registrations

CodecMapRegistry supports priority-based registration via Priority:

import com.hypixel.hytale.server.core.plugin.registry.CodecMapRegistry;
import com.hypixel.hytale.codec.lookup.Priority;
@Override
protected void setup() {
getCodecRegistry(SomeType.CODEC_MAP)
.register("my_type", MyType.class, MyType.CODEC);
getCodecRegistry(SomeType.CODEC_MAP)
.register(Priority.HIGH, "my_override", MyOverride.class, MyOverride.CODEC);
}

On shutdown, codec registrations acquire the asset write lock before removing entries, ensuring thread safety with concurrent asset loading.


These registries are used by the engine and are not directly accessible from PluginBase.

The global static registry that tracks all AssetStore instances by asset class. Uses a ReadWriteLock for thread-safe access and dispatches RegisterAssetStoreEvent/RemoveAssetStoreEvent on changes.

  • Package: com.hypixel.hytale.assetstore.AssetRegistry
MethodTypeDescription
register(AssetStore)AssetStoreRegister an asset store (static)
unregister(AssetStore)voidUnregister an asset store (static)
getAssetStore(Class)AssetStoreGet store by asset class (static)
getStoreMap()MapGet all registered stores (static)
getOrCreateTagIndex(String)intGet or create a tag index (static)
getTagIndex(String)intGet tag index, returns TAG_NOT_FOUND if missing (static)
registerClientTag(String)booleanRegister a client-visible tag (static)
getClientTags()Object2IntMapGet all client tags (static)

Manages asset types available in the in-game asset editor. Provides a setup packet sent to editor clients.

  • Package: com.hypixel.hytale.builtin.asseteditor.AssetTypeRegistry
MethodTypeDescription
registerAssetType(AssetTypeHandler)voidRegister an asset type for the editor
unregisterAssetType(AssetTypeHandler)voidUnregister an asset type
getAssetTypeHandler(String)AssetTypeHandlerGet handler by ID
getAssetTypeHandlerForPath(Path)AssetTypeHandlerGet handler matching a file path

The core ECS registry managing components, resources, systems, system types, and system groups. Each ComponentRegistry instance backs a store type (e.g., EntityStore.REGISTRY, ChunkStore.REGISTRY).

  • Package: com.hypixel.hytale.component.ComponentRegistry
MethodTypeDescription
registerComponent(Class, Supplier)ComponentTypeRegister a component type
registerComponent(Class, String, BuilderCodec)ComponentTypeRegister serializable component
unregisterComponent(ComponentType)voidUnregister a component (also removes dependent systems)
registerResource(Class, Supplier)ResourceTypeRegister a resource type
unregisterResource(ResourceType)voidUnregister a resource
registerSystem(ISystem)voidRegister an ECS system
unregisterSystem(Class)voidUnregister a system by class
registerSystemType(Class)SystemTypeRegister a system type category
registerSystemGroup()SystemGroupCreate a system group
registerEntityEventType(Class)EntityEventTypeRegister entity event type
registerWorldEventType(Class)WorldEventTypeRegister world event type
registerSpatialResource(Supplier)ResourceTypeRegister spatial index resource
addStore(ECS_TYPE, IResourceStorage)StoreCreate a new store instance
removeStore(Store)voidRemove and shut down a store
newHolder()HolderCreate an empty entity holder
shutdown()voidShut down all stores in reverse order

When a component is unregistered, any system whose query depends on that component is also automatically unregistered.

Manages metadata entries attached to game objects. Supports both persistent (serialized) and transient meta objects.

  • Package: com.hypixel.hytale.server.core.meta.MetaRegistry
MethodTypeDescription
registerMetaObject(Function, boolean, String, Codec)MetaKeyRegister a meta object with optional persistence
newMetaObject(MetaKey, K)TCreate a new meta object instance
getMetaKeyForCodecKey(String)PersistentMetaKeyLook up a persistent meta key by codec key

Tracks common (shared) assets across all loaded packs. Uses last-write-wins for name collisions and maintains hash-based deduplication.

  • Package: com.hypixel.hytale.server.core.asset.common.CommonAssetRegistry
MethodTypeDescription
addCommonAsset(String, CommonAsset)AddCommonAssetResultAdd/replace an asset (static)
removeCommonAssetByName(String, String)BooleanObjectPairRemove by pack and name (static)
getByName(String)CommonAssetGet the active asset by name (static)
getByHash(String)CommonAssetGet an asset by content hash (static)
hasCommonAsset(String)booleanCheck if an asset exists (static)
getAllAssets()CollectionGet all registered assets (static)
getDuplicateAssetCount()intCount of detected duplicates (static)
clearAllAssets()voidClear all assets (static)

Manages crafting recipes organized by bench ID and category. Used by the crafting system to look up available recipes.

  • Package: com.hypixel.hytale.builtin.crafting.BenchRecipeRegistry
MethodTypeDescription
addRecipe(BenchRequirement, CraftingRecipe)voidAdd a recipe to the bench
removeRecipe(String)voidRemove a recipe by ID
getAllRecipes()CraftingRecipe[]Get all recipes for this bench
getRecipesForCategory(String)Set<String>Get recipe IDs for a category
recompute()voidRebuild material and item-to-recipe indexes
isValidCraftingMaterial(ItemStack)booleanCheck if an item is used by any recipe

Loads and manages character customization cosmetics from asset pack JSON files. Read-only after initialization.

  • Package: com.hypixel.hytale.server.core.cosmetics.CosmeticRegistry
MethodTypeDescription
getEmotes()Map<String, Emote>All registered emotes
getEyeColors()Map<String, PlayerSkinTintColor>Eye color options
getGradientSets()Map<String, PlayerSkinGradientSet>Skin gradient sets
getBodyCharacteristics()Map<String, PlayerSkinPart>Body type options
getByType(CosmeticType)Map<String, ?>Get cosmetics by type enum

Managed cosmetic types include: haircuts, eyes, eyebrows, ears, faces, mouths, facial hair, pants, overpants, undertops, overtops, shoes, gloves, capes, head/face/ear accessories, underwear, and skin features.