Emoji Items
Version History
| Build Version | Change Date | Change Type | Description |
|---|---|---|---|
| 676042 | 2025-06-21 | stable | Current version |
Overview
The emoji_items module contains the complete definition of all emoji items available in Don't Starve Together. This autogenerated module defines the EMOJI_ITEMS table, which contains metadata, rarity information, and UTF-8 character mappings for each emoji that players can use in chat and other communication systems.
Usage Example
-- Access emoji data
local heartEmoji = EMOJI_ITEMS.emoji_heart
print(heartEmoji.data.utf8_str) -- Prints the UTF-8 emoji character
-- Check emoji properties
if heartEmoji.rarity == "Common" then
-- Handle common emoji logic
end
-- Get emoji by input name
for emojiId, emojiData in pairs(EMOJI_ITEMS) do
if emojiData.input_name == "heart" then
-- Found heart emoji
break
end
end
EMOJI_ITEMS Table
Structure
Description: Global table containing all emoji item definitions. Each emoji is indexed by its unique identifier and contains comprehensive metadata.
Table Format:
EMOJI_ITEMS = {
[emoji_id] = {
rarity = string,
rarity_modifier = string,
input_name = string,
type = string,
skin_tags = table,
data = {
item_type = string,
requires_validation = boolean,
utf8_str = string,
},
release_group = number,
}
}
Emoji Item Properties
rarity
Type: string
Description: Rarity classification of the emoji item.
Values:
"Common": Standard emoji available to all players
Example:
local rarity = EMOJI_ITEMS.emoji_heart.rarity -- "Common"
rarity_modifier
Type: string
Description: Additional rarity modifier providing context about acquisition method.
Values:
"Woven": Emoji obtained through the Woven system
Example:
local modifier = EMOJI_ITEMS.emoji_heart.rarity_modifier -- "Woven"
input_name
Type: string
Description: The input name used by players to trigger this emoji in chat or command systems.
Example:
local inputName = EMOJI_ITEMS.emoji_heart.input_name -- "heart"
-- Players type :heart: to use this emoji
type
Type: string
Description: Item type classification.
Values:
"emoji": Identifies this as an emoji item
skin_tags
Type: table
Description: Array of tags categorizing the emoji's theme or release group.
Common Tags:
"EMOJI": Base emoji tag"LAVA": Lava Arena themed emojis"VICTORIAN": Victorian themed emojis"VARG": Varg themed emojis
Example:
local tags = EMOJI_ITEMS.emoji_heart.skin_tags -- { "LAVA", "EMOJI" }
-- Check if emoji has specific theme
local function hasTag(emoji, tag)
for _, emojiTag in ipairs(emoji.skin_tags) do
if emojiTag == tag then
return true
end
end
return false
end
if hasTag(EMOJI_ITEMS.emoji_heart, "LAVA") then
-- This is a lava-themed emoji
end
data
Type: table
Description: Core data structure containing emoji functionality information.
data.item_type
Type: string
Description: Unique identifier matching the emoji's table key, used for internal referencing.
Example:
local itemType = EMOJI_ITEMS.emoji_heart.data.item_type -- "emoji_heart"
data.requires_validation
Type: boolean
Description: Indicates whether this emoji requires validation before use (typically true for all emojis).
Example:
local needsValidation = EMOJI_ITEMS.emoji_heart.data.requires_validation -- true
data.utf8_str
Type: string
Description: The actual UTF-8 character string that represents this emoji when displayed.
Example:
local emojiChar = EMOJI_ITEMS.emoji_heart.data.utf8_str -- ""
-- This is the character that appears in chat
release_group
Type: number
Description: Numeric identifier for the content release group when this emoji was added.
Common Release Groups:
32: Lava Arena themed emojis40: Varg themed emojis43: Victorian themed emojis135: Newer themed emojis
Example:
local releaseGroup = EMOJI_ITEMS.emoji_heart.release_group -- 32
Available Emojis
Game Elements
| Emoji ID | Input Name | Theme | Description |
|---|---|---|---|
emoji_fire | fire | LAVA | Fire/flame emoji |
emoji_heart | heart | LAVA | Health/heart emoji |
emoji_hunger | hunger | LAVA | Hunger/stomach emoji |
emoji_sanity | sanity | LAVA | Sanity/brain emoji |
emoji_crockpot | crockpot | LAVA | Cooking pot emoji |
emoji_chest | chest | LAVA | Storage chest emoji |
Creatures & Characters
| Emoji ID | Input Name | Theme | Description |
|---|---|---|---|
emoji_abigail | abigail | VICTORIAN | Abigail ghost emoji |
emoji_beefalo | beefalo | LAVA | Beefalo creature emoji |
emoji_chester | chester | LAVA | Chester chest creature emoji |
emoji_pig | pig | LAVA | Pig creature emoji |
Tools & Items
| Emoji ID | Input Name | Theme | Description |
|---|---|---|---|
emoji_hammer | hammer | LAVA | Hammer tool emoji |
emoji_shovel | shovel | VICTORIAN | Shovel tool emoji |
emoji_torch | torch | VARG | Torch light emoji |
emoji_backpack | backpack | VICTORIAN | Backpack storage emoji |
Expressions & Actions
| Emoji ID | Input Name | Theme | Description |
|---|---|---|---|
emoji_thumbsup | thumbsup | VICTORIAN | Thumbs up gesture |
emoji_wave | wave | VICTORIAN | Waving gesture |
emoji_flex | flex | VARG | Flexing gesture |
emoji_battle | battle | VARG | Battle/combat emoji |
Utility Functions
Finding Emojis by Input Name
function FindEmojiByInputName(inputName)
for emojiId, emojiData in pairs(EMOJI_ITEMS) do
if emojiData.input_name == inputName then
return emojiId, emojiData
end
end
return nil
end
-- Usage
local emojiId, emojiData = FindEmojiByInputName("heart")
if emojiData then
print("Found emoji:", emojiData.data.utf8_str)
end
Filtering by Theme
function GetEmojisByTheme(theme)
local themeEmojis = {}
for emojiId, emojiData in pairs(EMOJI_ITEMS) do
for _, tag in ipairs(emojiData.skin_tags) do
if tag == theme then
themeEmojis[emojiId] = emojiData
break
end
end
end
return themeEmojis
end
-- Get all Victorian themed emojis
local victorianEmojis = GetEmojisByTheme("VICTORIAN")
Getting Release Group Emojis
function GetEmojisByReleaseGroup(releaseGroup)
local groupEmojis = {}
for emojiId, emojiData in pairs(EMOJI_ITEMS) do
if emojiData.release_group == releaseGroup then
groupEmojis[emojiId] = emojiData
end
end
return groupEmojis
end
-- Get all emojis from release group 43
local group43Emojis = GetEmojisByReleaseGroup(43)
Common Usage Patterns
Chat Integration
-- Convert input text to emoji characters
function ProcessEmojiInput(text)
local processedText = text
-- Replace :emoji_name: with actual emoji character
processedText = string.gsub(processedText, ":([%w_]+):", function(inputName)
for emojiId, emojiData in pairs(EMOJI_ITEMS) do
if emojiData.input_name == inputName then
return emojiData.data.utf8_str
end
end
return ":" .. inputName .. ":" -- Return original if not found
end)
return processedText
end
-- Usage
local chatMessage = "Great job! :thumbsup: :heart:"
local displayMessage = ProcessEmojiInput(chatMessage)
Emoji Validation
function ValidateEmojiAccess(player, emojiId)
local emojiData = EMOJI_ITEMS[emojiId]
if not emojiData then
return false, "Emoji not found"
end
if emojiData.data.requires_validation then
-- Check if player owns this emoji
return PlayerHasEmoji(player, emojiId), "Emoji not owned"
end
return true, "Emoji available"
end
Emoji Selection UI
function BuildEmojiSelectionPanel()
local emojisByTheme = {}
-- Group emojis by theme
for emojiId, emojiData in pairs(EMOJI_ITEMS) do
for _, tag in ipairs(emojiData.skin_tags) do
if tag ~= "EMOJI" then -- Skip generic emoji tag
if not emojisByTheme[tag] then
emojisByTheme[tag] = {}
end
table.insert(emojisByTheme[tag], {
id = emojiId,
data = emojiData
})
break
end
end
end
return emojisByTheme
end
Data Source Information
Autogeneration
This module is automatically generated by export_accountitems.lua and should not be manually edited. Any changes to emoji definitions should be made through the account item export system.
Generation Notes:
- All emoji data comes from the game's account item system
- UTF-8 strings are automatically assigned and mapped
- Release groups track content updates chronologically
Maintenance
When new emojis are added to the game:
- The export script automatically updates this file
- New emojis receive appropriate metadata
- UTF-8 character assignments are handled automatically
- No manual intervention required
Performance Considerations
Table Access
- Direct table access by emoji ID is O(1)
- Linear search by input name requires iteration
- Consider caching lookup tables for frequently accessed queries
Memory Usage
- Complete emoji table loaded at module import
- Relatively small memory footprint
- No dynamic loading required
Related Modules
- Emote Items: Related emote/gesture system
- Skin Assets: Visual customization system
- Account Items: Player inventory system
- Chat History: Chat system integration
- Localization: Text processing and display