osb/doc/lua/openstarbound.md
2024-07-09 22:14:50 -05:00

10 KiB

Unsorted

These are functions that aren't in any specific table.


Maybe<LuaFunction>, Maybe<String> loadstring(String source, [String name, [LuaValue env]])

Compiles the provided source and returns it as a callable function. If there are any syntax errors, returns nil and the error as a string instead.

  • name is used for error messages, the default is the name of the script that called loadstring.
  • env is used as the environment of the returned function, the default is _ENV.

Root

The root table now contains extra asset bindings and bindings to return the tile variant that is used for material and matmods at any position.


String[] root.assetsByExtension(String extension)

Returns an array containing all assets with the specified file extension.

By the way, here's a list of every file extension the game does Special Things™ for when loading assets.

File Extensions
  • Items: item, liqitem, matitem, miningtool, flashlight, wiretool, beamaxe, tillingtool, painttool, harvestingtool, head, chest, legs, back, currency, consumable, blueprint, inspectiontool, instrument, thrownitem, unlock, activeitem, augment
  • Materials: material, matmod
  • Liquids: liquid
  • NPCs: npctype
  • Tenants: tenant
  • Objects: object
  • Vehicles: vehicle
  • Monsters: monstertype, monsterpart, monsterskill, monstercolors
  • Plants: modularstem, modularfoliage, grass, bush
  • Projectiles: projectile
  • Particles: particle
  • Name Gen: namesource
  • AI Missions: aimission
  • Quests: questtemplate
  • Radio Messages: radiomessages
  • Spawn Types: spawntypes
  • Species: species
  • Stagehand: stagehand
  • Behaviors: nodes, behavior
  • Biomes: biome, weather
  • Terrain: terrain
  • Treasure: treasurepools, treasurechests
  • Codex Entries: codex
  • Collections: collection
  • Statistics: event, achievement
  • Status Effects: statuseffect
  • Functions: functions, 2functions, configfunctions
  • Tech: tech
  • Damage: damage
  • Dances: dance
  • Effect Sources: effectsource
  • Command Macros: macros
  • Recipes: recipe

String root.assetData(String path)

Returns the raw data of an asset.

String, Maybe<LuaTable> root.assetOrigin(String path, [bool getPatches])

Returns the asset source path of an asset, or nil if the asset doesn't exist. If you specify getPatches as true then also returns the patches for the asset as an array, each element containing the source path and patch path in indexes 1 and 2 respectively.

LuaTable root.assetSourcePaths([bool withMetadata])

Without metadata: Returns an array with all the asset source paths. With metadata: Returns a table, key/value being source path/metadata.

? root.assetImage(String image)

TODO

JsonArray root.assetPatches(String asset)

Returns a list of asset sources which patch the specified asset and the paths to those patches.


Json root.getConfiguration(String key)

Gets a configuration value in /storage/starbound.config.

Json root.getConfigurationPath(String path)

Gets a configuration value in /storage/starbound.config by path.

Both getters will error if you try to get title, as that can contain the player's saved server login.

Json root.setConfiguration(String key, Json value)

Sets a configuration value in /storage/starbound.config.

Json root.setConfigurationPath(String path, Json value)

Sets a configuration value in /storage/starbound.config by path.

Both setters will error if you try to set safeScripts, as that can break Starbound's sandbox.


JsonArray root.allRecipes()

Returns all recipes.


Player

The player table now contains bindings which contains functions to save/load, access and modify the player's identity, mode, aim, emote and more.


Json player.save()

Serializes the player to Json the same way Starbound does for disk storage and returns it.

void player.load(Json save)

Reloads the player from a Json save. This will reset active ScriptPanes and scripts running on the player.


String player.name()

Returns the player's name.

void player.setName(String name)

Sets the player's name.


String player.description()

Returns the player's description.

void player.setDescription(String description)

Sets the player's description. The new description will not be networked buntil the player warps or respawns.


void player.setSpecies(String species)

Sets the player's species. Must be a valid species.


void player.setGender(String gender)

Sets the player's gender.


String player.imagePath()

If the player has a custom humanoid image path set, returns it. otherwise, returns nil.

void player.setImagePath(String imagePath)

Sets the player's image path. Specify nil to remove the image path.


Personality player.personality()

Returns the player's personality as a table containing a string idle, string armIdle, Vec2F headOffset and Vec2F armOffset.

void player.setPersonality(Personality personality)

Sets the player's personality. The personality must be a table containing at least one value as returned by player.personality().


String player.bodyDirectives()

Returns the player's body directives.

void player.setBodyDirectives(String bodyDirectives)

Sets the player's body directives.


String player.emoteDirectives()

Returns the player's emote directives.

void player.setEmoteDirectives(String emoteDirectives)

Sets the player's emote directives.


String player.hair()

Returns the player's hair group.

void player.setHair(String hairGroup)

Sets the player's hair group.


String player.hairType()

Returns the player's hair type.

void player.setHairType(String hairType)

Sets the player's hair type.


String player.hairDirectives()

Returns the player's hair directives.

void player.setHairDirectives(String hairDirectives)

Sets the player's hair directives.


String player.facialHairGroup()

Returns the player's facial hair group.

void player.setFacialHairGroup(String facialHairGroup)

Sets the player's facial hair group.


String player.facialHair()

Returns the player's facial hair.

void player.setFacialHair(String facialHair)

Sets the player's facial hair.


String player.facialHairDirectives()

Returns the player's facial hair directives.

void player.setFacialHairDirectives(String facialHairDirectives)

Sets the player's facial hair directives.


String player.facialMask()

Returns the player's facial mask group.

void player.setFacialMask(String facialMask)

Sets the player's facial mask.


String player.facialMaskType()

Returns the player's facial mask type.

void player.setFacialMaskType(String facialMaskType)

Sets the player's facial mask type.


String player.facialMaskDirectives()

Returns the player's facial mask directives.

void player.setFacialMaskDirectives(String facialMaskDirectives)

Sets the player's facial mask directives.


PlayerMode player.mode()

Returns the player's mode.

void player.setMode(String mode)

Sets the player's mode. mode must be either "casual", "survival" or "hardcore".


Vec2F player.aimPosition()

Returns the player's aim position.


void player.emote(String emote, [float cooldown])

Makes the player do an emote with the default cooldown unless a cooldown is specified.

String, float player.currentEmote()

Returns the player's current emote and the seconds left in it.


unsigned player.actionBarGroup()

Returns the player's active action bar.

void player.setActionBarGroup(unsigned barId)

Sets the player's active action bar.

Variant<unsigned, EssentialItem> player.selectedActionBarSlot()

Returns the player's selected action bar slot.

void player.setSelectedActionBarSlot(Variant<unsigned, EssentialItem> slot)

Sets the player's selected action bar slot.

void player.setDamageTeam(DamageTeam team)

Sets the player's damage team. This must be called every frame to override the current damage team that the server has given the player (normally controlled by /pvp)


void player.say(String line)

Makes the player say a string.


Json player.humanoidIdentity()

Returns the specific humanoid identity of the player, containing information such as hair style and idle pose.

void player.humanoidIdentity(Json humanoidIdentity)

Sets the specific humanoid identity of the player.


ItemDescriptor player.item(ItemSlot itemSlot)

Returns the contents of the specified itemSlot.

void player.setItem(ItemSlot itemSlot, ItemDescriptor item)

Puts the specified item into the specified itemSlot. Item slots in item bags are structured like so: {String bagName, int slot}


int player.itemBagSize(String itemBagName)

Returns the size of an item bag.

bool player.itemAllowedInBag(String itemBagName, ItemDescriptor item)

Returns whether the specified item can enter the specified item bag.


Returns the contents of the specified action bar link slot's specified hand.

bool player.setActionBarSlotLink(String itemBagName, ItemDescriptor item)

Returns whether the specified item can enter the specified item bag.


Float player.interactRadius()

Returns the player's interact radius.

void player.setInteractRadius(Float interactRadius)

Sets the player's interact radius. This does not persist upon returning to the main menu.


JsonArray player.availableRecipes()

Returns all the recipes the player can craft with their currently held items and currencies.