Inventoryitem Classified
Based on game build 714014 | Last updated: 2026-03-05
Overview
inventoryitem_classified is a lightweight, dedicated Classified entity that holds and synchronizes server-authoritative metadata for inventory items. It is not a component but a separate prefab (inventoryitem_classified) instantiated to represent the classification data of an inventory item. It handles serialization/deserialization of properties like spoilage (percentused, perish), charge state (recharge, rechargetime), and deployment/equipment constraints (deploymode, deployrestrictedtag, equiprestrictedtag). The classified entity is attached to a parent inventory item entity via _parent reference and exposes methods for syncing state across the client-server boundary using DST's replication primitives (net_hash, net_byte, etc.). It plays a crucial role in ensuring accurate display of item state (e.g., food spoilage percentage, tool charge level) on all clients.
Usage example
-- On the server, when creating a classified entity for an inventory item:
local classified = Prefab("inventoryitem_classified", fn)()
classified._parent = my_item_inst
classified:OnEntityReplicated()
-- Later, to update and sync spoilage:
classified:SerializePercentUsed(0.75) -- 75% used
classified:PushEvent("percentuseddirty")
-- Or to update recharge time:
classified:SerializeRechargeTime(300) -- 300 seconds
classified:PushEvent("rechargetimedirty")
Dependencies & tags
Components used: None identified.
Tags: Adds CLASSIFIED tag.
Properties
| Property | Type | Default Value | Description |
|---|---|---|---|
image | net_hash | 0 | Networked hash for the item's image/tile index. |
atlas | net_hash | 0 | Networked hash for the item's atlas name. |
cangoincontainer | net_bool | true | Whether the item can be placed in a container. |
canonlygoinpocket | net_bool | false | Restricts placement to pockets only. |
canonlygoinpocketorpocketcontainers | net_bool | false | Restricts placement to pockets or pocket containers. |
src_pos | table | { isvalid = false, x = 0, z = 0 } | Networked source placement coordinates (grid position). |
percentused | net_byte | 255 | Replicated percentage (0–100) of item usage; 255 means invalid/unset. |
perish | net_smallbyte | 63 | Replicated spoilage percentage (0–62); 63 means invalid/unset. |
recharge | net_byte | 255 | Replicated charge level (0–180); 255 means invalid/unset. |
rechargetime | net_float | -2 | Replicated recharge time in seconds; -2 invalid, -1 infinite, >= 0 actual time. |
_parent | Entity? | nil | Reference to the parent inventory item entity; set during OnEntityReplicated. |
Main functions
SerializePercentUsed(inst, percent)
- Description: Serializes the item’s usage percentage (
percent) into thepercentusednetwork variable. Handles special values:nil→255,<= 0→0, and clamped1–100. - Parameters:
percent(number?) - Usage percentage (0.0–1.0) ornil. - Returns: Nothing.
DeserializePercentUsed(inst)
- Description: Reads the server-valued
percentusedand pushespercentusedchangeevent to parent withpercent = value / 100. Skips if value is255. - Parameters: None.
- Returns: Nothing.
SerializePerish(inst, percent)
- Description: Serializes spoilage percentage (
percent) intoperishusing range0–62. Mapspercent * 62, clamped, and sets63for invalid/unset. - Parameters:
percent(number) - Spoilage percentage (0.0–1.0). - Returns: Nothing.
ForcePerishDirty(inst)
- Description: Forces a client-side refresh of the
perishvalue (used when spoilage crosses ~20%/~50% thresholds). - Parameters: None.
- Returns: Nothing.
DeserializePerish(inst)
- Description: Reads
perish, converts to percentage (value / 62), and pushesperishchangeevent ifperish ≠ 63. - Parameters: None.
- Returns: Nothing.
SerializeRecharge(inst, percent, overtime)
- Description: Serializes charge state (
percent) intorecharge. Mapspercent * 180, clamped0–179, or special values:nil→255,<= 0→0,>= 1→180. Usesset_localforovertimestates. - Parameters:
percent(number?) - Charge level (0.0–1.0);overtime(boolean) - Whether charging beyond full capacity. - Returns: Nothing.
DeserializeRecharge(inst)
- Description: Reads
recharge, triggersOnRechargeDirty(starts recharge tick if needed), and pushesrechargechangeevent withpercent = value / 180. - Parameters: None.
- Returns: Nothing.
SerializeRechargeTime(inst, t)
- Description: Serializes recharge time (
t) torechargetime. Mapst = nil→-2,t = math.huge→-1, elset. - Parameters:
t(number?) - Recharge time in seconds or special value. - Returns: Nothing.
DeserializeRechargeTime(inst)
- Description: Reads
rechargetime, triggersOnRechargeDirty, and pushesrechargetimechangeevent witht(converted-2/-1→nil/math.huge). - Parameters: None.
- Returns: Nothing.
OnEntityReplicated(inst)
- Description: Initializes
_parentfromentity:GetParent(), registersOnRemoveEntity, and attempts to attach this classified entity to the parent’s replica viaTryAttachClassifiedToReplicaComponent. If attachment fails, sets_parent.inventoryitem_classified = inst. - Parameters: None.
- Returns: Nothing.
- Error states: Prints warning to console if
_parentisnil.
OnImageDirty(inst)
- Description: Pushes
imagechangeevent to parent whenimagedirtyoccurs (e.g., item texture/icon updated). - Parameters: None.
- Returns: Nothing.
Events & listeners
- Listens to:
imagedirty→OnImageDirtypercentuseddirty→DeserializePercentUsedperishdirty→DeserializePerishrechargedirty→DeserializeRechargerechargetimedirty→DeserializeRechargeTimeinventoryitem_stacksizedirty→OnStackSizeDirty(withinst._parentas listener context)iswetdirty→OnIsWetDirty(withinst._parentas listener context)isacidsizzlingdirty→OnIsAcidSizzlingDirty(withinst._parentas listener context)
- Pushes:
percentusedchangewith{ percent = ... }perishchangewith{ percent = ... }rechargechangewith{ percent = ..., overtime = ...? }rechargetimechangewith{ t = ... }imagechangewetnesschangeacidsizzlingchange