Skip to content
MethodDescription
getAddress()Gets the package's address
getItemDetail(slot)Gets detailed information about an item in the package
getOrderData()Gets the orderData object associated with the package
isEditable()Checks if the package is editable
list()Lists all items in the package
setAddress(address)Sets the package's address

Mutability

Package Objects are snapshots of the package in the moment.

You can get your packageObject by either using .getItemDetail on a package (it'll expose a package field, which is this object), or by using a packager/re-packager's getPackage.

If by any means the package has its data changed, be it by an addon or by another computer using the setAddress function, the snapshot will not be notified, and it'll be outdated.

When a package is held within a packager/re-packager, if you call it using getPackage, it's isEditable function should return true until it leaves the (re)packager. In this state you change it's address with setAddress on the fly.


getAddress()

Gets the package's address.

If the package isEditable, then it'll also update the snapshot's address, in case it has changed.

Returns

  • string With the address currently in use.

getItemDetail(slot)

Get detailed information about an item in the package.

The returned information contains the same information as each item in list, as well as additional details like the display name (displayName), and item durability (damage, maxDamage, durability).

Some items include more information (such as enchantments) - it is recommended to print it out using textutils.serialize or in the Lua REPL, to explore what is available.

Parameters

  • slot: number The slot to get information about.

Throws

  • If the slot is not between 1 and 9.

Returns

  • table Information about the item in this slot, or nil if it is empty, like:
lua
{
  name = "minecraft:apple",
  itemGroups = {},
  tags = {},
  count = 1,
  maxCount = 64,
  displayName = "Apple",
}

getOrderData()

Gets the orderData object of the package if it's an encoded package.

Returns

  • orderData of the package, or nil if none is present, like:
lua
{
    getCrafts(), -- function: 52d1c058
    getIndex(), -- function: 1f03a979
    getItemDetail(), -- function: 4782ee89
    getLinkIndex(), -- function: 3dfc0241
    getOrderID(), -- function: 625c4b8e
    isFinal(), -- function: 4953530c
    isFinalLink(), -- function: 19750a09
    list(), -- function: 4446fd6c
}

isEditable()

Tells you if the package is sitting inside a packager/repackager you called this object from, if you called it via getPackage.

otherwise returns false.

Returns

  • boolean that's true if the package is editable, false otherwise.

list()

List all items inside the package. This returns a table, with an entry for each slot.

Each item in the inventory is represented by a table containing some basic information. More information can be fetched with getItemDetail. The table contains the item name, the count and a (potentially nil) hash of the item's nbt. This NBT data doesn't contain anything useful, but allows you to distinguish identical items.

The returned table is never sparse, so you can iterate over it with ipairs just fine.

Returns

  • table with basic item information like:
lua
{
  {
    name = "minecraft:apple",
    count = 1,
  },
  {
    name = "minecraft:stick",
    count = 1,
  },
  {
    nbt = "ce5c752cf2df5cf4ffb17d7b7bfacad7",
    count = 1,
    name = "minecraft:enchanted_book",
  },
}

setAddress(address)

Sets the package's address to the given value if it isEditable (so, inside the packager/repackager it was called from using specifically getPackage)

This also updates the package object's getAddress to the return the new address.

Parameters

  • address: string Will change the package's address to address.

Throws