Skip to main content

Emoji Items

Version History

Build VersionChange DateChange TypeDescription
6760422025-06-21stableCurrent 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 emojis
  • 40: Varg themed emojis
  • 43: Victorian themed emojis
  • 135: Newer themed emojis

Example:

local releaseGroup = EMOJI_ITEMS.emoji_heart.release_group -- 32

Available Emojis

Game Elements

Emoji IDInput NameThemeDescription
emoji_firefireLAVAFire/flame emoji
emoji_heartheartLAVAHealth/heart emoji
emoji_hungerhungerLAVAHunger/stomach emoji
emoji_sanitysanityLAVASanity/brain emoji
emoji_crockpotcrockpotLAVACooking pot emoji
emoji_chestchestLAVAStorage chest emoji

Creatures & Characters

Emoji IDInput NameThemeDescription
emoji_abigailabigailVICTORIANAbigail ghost emoji
emoji_beefalobeefaloLAVABeefalo creature emoji
emoji_chesterchesterLAVAChester chest creature emoji
emoji_pigpigLAVAPig creature emoji

Tools & Items

Emoji IDInput NameThemeDescription
emoji_hammerhammerLAVAHammer tool emoji
emoji_shovelshovelVICTORIANShovel tool emoji
emoji_torchtorchVARGTorch light emoji
emoji_backpackbackpackVICTORIANBackpack storage emoji

Expressions & Actions

Emoji IDInput NameThemeDescription
emoji_thumbsupthumbsupVICTORIANThumbs up gesture
emoji_wavewaveVICTORIANWaving gesture
emoji_flexflexVARGFlexing gesture
emoji_battlebattleVARGBattle/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:

  1. The export script automatically updates this file
  2. New emojis receive appropriate metadata
  3. UTF-8 character assignments are handled automatically
  4. 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