Code Patterns

Copy-paste examples for common plugin tasks. Commands, events, ECS, GUI, and more.

← Back to Patterns
entity

Spawn Entity

Spawn custom entities in the world with model and components.

Example Code

java
public static void spawnEntity(World world, Vector3d position, String modelName) {
    Store<EntityStore> store = world.getEntityStore().getStore();

    world.execute(() -> {
        // Create entity holder (blueprint)
        Holder<EntityStore> holder = EntityStore.REGISTRY.newHolder();

        // Get model
        ModelAsset modelAsset = ModelAsset.getAssetMap().getAsset(modelName);
        Model model = Model.createScaledModel(modelAsset, 1.0f);

        // Add required components
        holder.addComponent(TransformComponent.getComponentType(),
            new TransformComponent(position, new Vector3f(0, 0, 0)));
        holder.addComponent(PersistentModel.getComponentType(),
            new PersistentModel(model.toReference()));
        holder.addComponent(ModelComponent.getComponentType(),
            new ModelComponent(model));
        holder.addComponent(BoundingBox.getComponentType(),
            new BoundingBox(model.getBoundingBox()));
        holder.addComponent(NetworkId.getComponentType(),
            new NetworkId(store.getExternalData().takeNextNetworkId()));
        holder.addComponent(Interactions.getComponentType(),
            new Interactions());

        // Ensure Hytale required components
        holder.ensureComponent(UUIDComponent.getComponentType());
        holder.ensureComponent(Interactable.getComponentType());

        // Spawn in world
        store.addEntity(holder, AddReason.SPAWN);
    });
}

Thread Safety

MUST run inside world.execute() block.

Common Mistakes

Missing required components. Not using world.execute(). Forgetting ensureComponent for UUID.