Creating Custom Items
S1API provides a comprehensive item system for Schedule One, including standard storable items, additives, equippables, icons, and third-person avatar prefabs.
Overview
The Items system allows you to:
- Create standard
StorableItemDefinitioninstances with the Creator API or Builder API - Register runtime additives with custom effects
- Attach equippable behavior and viewmodels to items
- Add icons from embedded resources or AssetBundles
- Register custom
AvatarEquippableprefabs for third-person presentation
Note: All items in Schedule One are storable items (
StorableItemDefinition). The baseItemDefinitionclass is not used directly for custom items.
Documentation Structure
The Items system is documented across multiple focused pages:
Core Concepts
- Item Registration & Basics - Registration timing, Creator API, Builder API, categories, and common setup tips
- Runtime Additives - Creating additive definitions and allowing them on grow containers
- Item Icons - Loading item icons from embedded resources and AssetBundles
Equippables
- Equippable Items - Basic equippables, viewmodels, use callbacks, and custom equippable behaviors
- Avatar Equippable Prefabs - Creating and registering third-person avatar prefabs from AssetBundles
- Creating Custom Clothing Items - Clothing-specific item setup
API Reference
- Builder API Reference - Builder methods, advanced notes, and item-specific best practices
- S1API.Items - Detailed API documentation
Quick Start
Items should usually be registered after the Main scene loads so the game's registry is initialized correctly:
using MelonLoader;
using S1API.Items;
public class MyMod : MelonMod
{
private bool _itemsInitialized = false;
public override void OnSceneWasLoaded(int buildIndex, string sceneName)
{
if (sceneName == "Main" && !_itemsInitialized)
{
InitializeItems();
_itemsInitialized = true;
}
}
private void InitializeItems()
{
var myTool = ItemCreator.CreateItem(
id: "my_custom_tool",
name: "Custom Tool",
description: "A special tool for crafting",
category: ItemCategory.Tools,
stackLimit: 5,
basePurchasePrice: 25f,
resellMultiplier: 0.3f
);
MelonLogger.Msg($"Created item: {myTool.Name}");
}
}
What To Read First
- Start here: Item Registration & Basics
- Then: Equippable Items if the item can be held or used
- As needed: Runtime Additives, Item Icons, Avatar Equippable Prefabs
Related Systems
- Stations - Chemistry station recipe registration and other item-adjacent systems
- Products & Properties - Product definitions and property systems
- Save System - Persisting item-related state
Next Steps
- Register a simple item: Item Registration & Basics
- Make it holdable or usable: Equippable Items
- Add presentation polish: Item Icons or Avatar Equippable Prefabs