inventory

package
v0.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 30, 2021 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrSlotLocked = errors.New("slot is locked and cannot be edited")

ErrSlotLocked is returned by a call to SetItem if the slot passed is locked and cannot be edited.

View Source
var ErrSlotOutOfRange = errors.New("slot is out of range: must be in range 0 <= slot < inventory.Size()")

ErrSlotOutOfRange is returned by any methods on inventory when a slot is passed which is not within the range of valid values for the inventory.

Functions

This section is empty.

Types

type Armour

type Armour struct {
	// contains filtered or unexported fields
}

Armour represents an inventory for armour. It has 4 slots, one for a helmet, chestplate, leggings and boots respectively. NewArmour() must be used to create a valid armour inventory. Armour inventories, like normal Inventories, are safe for concurrent usage.

func NewArmour

func NewArmour(f func(slot int, item item.Stack)) *Armour

NewArmour returns an armour inventory that is ready to be used. The zero value of an inventory.Armour is not valid for usage. The function passed is called when a slot is changed. It may be nil to not call anything.

func (*Armour) All

func (a *Armour) All() []item.Stack

All returns all items (including) air of the armour inventory in the order of helmet, chestplate, leggings, boots.

func (*Armour) Boots

func (a *Armour) Boots() item.Stack

Boots returns the item stack set as boots in the inventory.

func (*Armour) Chestplate

func (a *Armour) Chestplate() item.Stack

Chestplate returns the item stack set as chestplate in the inventory.

func (*Armour) Clear

func (a *Armour) Clear()

Clear clears the armour inventory, removing all items currently present.

func (*Armour) Close

func (a *Armour) Close() error

Close closes the armour inventory, removing the slot change function.

func (*Armour) Helmet

func (a *Armour) Helmet() item.Stack

Helmet returns the item stack set as helmet in the inventory.

func (*Armour) Inv

func (a *Armour) Inv() *Inventory

Inv returns the underlying Inventory instance.

func (*Armour) Leggings

func (a *Armour) Leggings() item.Stack

Leggings returns the item stack set as leggings in the inventory.

func (*Armour) SetBoots

func (a *Armour) SetBoots(boots item.Stack)

SetBoots sets the item stack passed as the boots in the inventory.

func (*Armour) SetChestplate

func (a *Armour) SetChestplate(chestplate item.Stack)

SetChestplate sets the item stack passed as the chestplate in the inventory.

func (*Armour) SetHelmet

func (a *Armour) SetHelmet(helmet item.Stack)

SetHelmet sets the item stack passed as the helmet in the inventory.

func (*Armour) SetLeggings

func (a *Armour) SetLeggings(leggings item.Stack)

SetLeggings sets the item stack passed as the leggings in the inventory.

func (*Armour) String

func (a *Armour) String() string

String converts the armour to a readable string representation.

type Inventory

type Inventory struct {
	// contains filtered or unexported fields
}

Inventory represents an inventory containing items. These inventories may be carried by entities or may be held by blocks such as chests. The size of an inventory may be specified upon construction, but cannot be changed after. The zero value of an inventory is invalid. Use New() to obtain a new inventory. Inventory is safe for concurrent usage: Its values are protected by a mutex.

func New

func New(size int, f func(slot int, item item.Stack)) *Inventory

New creates a new inventory with the size passed. The inventory size cannot be changed after it has been constructed. A function may be passed which is called every time a slot is changed. The function may also be nil, if nothing needs to be done.

func (*Inventory) AddItem

func (inv *Inventory) AddItem(it item.Stack) (n int, err error)

AddItem attempts to add an item to the inventory. It does so in a couple of steps: It first iterates over the inventory to make sure no existing stacks of the same type exist. If these stacks do exist, the item added is first added on top of those stacks to make sure they are fully filled. If no existing stacks with leftover space are left, empty slots will be filled up with the remainder of the item added. If the item could not be fully added to the inventory, an error is returned along with the count that was added to the inventory.

func (*Inventory) All

func (inv *Inventory) All() []item.Stack

All returns the full content of the inventory, copying all items into a new slice.

func (*Inventory) Clear

func (inv *Inventory) Clear()

Clear clears the entire inventory. All items are removed, except for items in locked slots.

func (*Inventory) Close

func (inv *Inventory) Close() error

Close closes the inventory, freeing the function called for every slot change. It also clears any items that may currently be in the inventory. The returned error is always nil.

func (*Inventory) Contents

func (inv *Inventory) Contents() []item.Stack

Contents returns a list of all contents of the inventory. This method excludes air items, so the method only ever returns item stacks which actually represent an item.

func (*Inventory) Empty

func (inv *Inventory) Empty() bool

Empty checks if the inventory is fully empty: It iterates over the inventory and makes sure every stack in it is empty.

func (*Inventory) First added in v0.0.3

func (inv *Inventory) First(item item.Stack) (int, bool)

First returns the first slot with an item if found. Second return value describes whether the item was found.

func (*Inventory) FirstEmpty added in v0.0.3

func (inv *Inventory) FirstEmpty() (int, bool)

FirstEmpty returns the first empty slot if found. Second return value describes whether an empty slot was found.

func (*Inventory) Item

func (inv *Inventory) Item(slot int) (item.Stack, error)

Item attempts to obtain an item from a specific slot in the inventory. If an item was present in that slot, the item is returned and the error is nil. If no item was present in the slot, a Stack with air as its item and a count of 0 is returned. Stack.Empty() may be called to check if this is the case. Item only returns an error if the slot passed is out of range. (0 <= slot < inventory.Size())

func (*Inventory) LockSlot added in v0.0.3

func (inv *Inventory) LockSlot(slot int)

LockSlot locks a slot in the inventory at the offset passed, so that setting items to it will return an error.

func (*Inventory) RemoveItem

func (inv *Inventory) RemoveItem(it item.Stack) error

RemoveItem attempts to remove an item from the inventory. It will visit all slots in the inventory and empties them until it.Count() items have been removed from the inventory. If less than it.Count() items could be found in the inventory, an error is returned.

func (*Inventory) SetItem

func (inv *Inventory) SetItem(slot int, item item.Stack) error

SetItem sets a stack of items to a specific slot in the inventory. If an item is already present in the slot, that item will be overwritten. SetItem will return an error if the slot passed is out of range. (0 <= slot < inventory.Size())

func (*Inventory) Size

func (inv *Inventory) Size() int

Size returns the size of the inventory. It is always the same value as that passed in the call to New() and is always at least 1.

func (*Inventory) SlotLocked added in v0.0.3

func (inv *Inventory) SlotLocked(slot int) bool

SlotLocked checks if the slot passed is currently locked.

func (*Inventory) String

func (inv *Inventory) String() string

String implements the fmt.Stringer interface.

func (*Inventory) Swap added in v0.0.3

func (inv *Inventory) Swap(slotA, slotB int) error

Swap swaps the items between two slots. Returns an error if either slot A or B are invalid.

func (*Inventory) UnlockSlot added in v0.0.3

func (inv *Inventory) UnlockSlot(slot int)

UnlockSlot unlocks a slot after having called LockSlot, so that calling SetItem on the slot will work again.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL