Class Storage

java.lang.Object
net.risingworld.api.objects.Storage

public final class Storage extends Object
Represents a storage. Storages could be chests in the world, but also vehicle storages, saddle bags etc. Storages are not necessarily bound to an object.
  • Method Summary

    Modifier and Type
    Method
    Description
    addClothingItem(short clothingID, int variant, int stack, int color, long infoID)
    Creates and adds a new clothing item to the storage.
    addClothingItemToSlot(short clothingID, int variant, int stack, int color, long infoID, int slot)
    Creates and adds a new clothing item to the storage.
    addConstructionItem(byte constructionID, int texture, int stack, int color)
    Creates and adds a new construction item to the storage (e.g a block, window frame etc).
    addConstructionItemToSlot(byte constructionID, int texture, int stack, int color, int slot)
    Creates and adds a new construction item to the storage (e.g a block, window frame etc).
    addItem(short itemID, int variant, int stack)
    Creates and adds a new item to the storage.
    addItemToSlot(short itemID, int variant, int stack, int slot)
    Creates and adds a new item to the storage.
    addObjectItem(short objectID, int variant, int stack)
    Creates and adds a new object item to the storage, i.e an item that represents an object (like furniture).
    addObjectItemToSlot(short objectID, int variant, int stack, int slot)
    Creates and adds a new object item to the storage, i.e an item that represents an object (like furniture).
    void
    Clears the storage, i.e removes all items from it.
    long
    Gets the creation date of the storage as a timestamp in seconds
    int
    Gets a hashcode of this storage.
    long
    Gets the global, unique ID of this storage.
    getItem(int slot)
    Gets the item from the specified slot.
    Gets an array containing all items that are currently in the storage.
    int
    Gets the database id of the player who last modified the storage (added or removed items from it).
    Gets the custom name of the storage.
    int
    Gets the amount of slots the storage has.
    boolean
    Gets whether or not this is a transient storage, i.e a non-persistent storage.
    void
    Merges all compatible item stacks in this storage.
    void
    removeItem(int slot)
    Removes an item from a particular slot in the storage.
    void
    removeItem(int slot, int amount)
    Removes an item (or more precisely, reduces the stack size of the item by the provided amount) from a particular slot in the storage.
    int
    removeItem(short itemID, int variation, int amount)
    Removes the next item with the given type id and variation from the storage (more precisely, the stack size of the item is reduced by the provided amount).
    void
    Sets a custom name for the storage.
    void
    setSlotCount(int slots)
    Overrides the amount of slots the storage has.
    void
    sort(boolean mergeStacks)
    Sorts all items in the storage.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • getID

      public long getID()
      Gets the global, unique ID of this storage.
      Returns:
      the unique storage ID.
    • getHashCode

      public int getHashCode()
      Gets a hashcode of this storage. If the content of the storage changes, the hashcode changes accordingly. Use this value to check if the content of the storage has changed.
      Returns:
      the hashcode of this storage.
    • isTransient

      public boolean isTransient()
      Gets whether or not this is a transient storage, i.e a non-persistent storage. If true, it's only valid during the session. If false, it's a persistent storage that will remain after a server/game restart.
      Returns:
      true if this is a transient (temporary) storage, false if it is a persistent storage.
    • getSlotCount

      public int getSlotCount()
      Gets the amount of slots the storage has.
      Returns:
      the total amount of slots.
    • setSlotCount

      public void setSlotCount(int slots)
      Overrides the amount of slots the storage has. Please note that this changes the max amount of slots permanently for this particular storage! Also keep in mind that reducing the amount of slots could make certain items inaccessible for existing storages (e.g if slot 100 already contains an item, but you reduce the slot count to 10, the item is no longer accessible and will be removed eventually).
      Parameters:
      slots - the new slot count. Must be greater than 0..
      Example: Increase chest size to 480 slots
      1Storage chest = World.getStorage(...);
      2chest.setSlotCount(480);
    • getItems

      public Item[] getItems()
      Gets an array containing all items that are currently in the storage. Note that the array may also contain null if there is no item in a particular slot.
      Returns:
      an array containing all items in the storage.
    • getItem

      public Item getItem(int slot)
      Gets the item from the specified slot. Returns null if there is no item in this slot.
      Parameters:
      slot - the slot.
      Returns:
      the item in the slot, or null if there is no item in the slot.
    • addItem

      public Item addItem(short itemID, int variant, int stack)
      Creates and adds a new item to the storage. The item will be added to the next suitable slot (this is either a slot containing an identical item it could be merged with, or a free slot).
      Parameters:
      itemID - the item type ID.
      variant - the variant/texture of the item (only relevant for certain items, like blocks etc). Typically the the variant for most items is 0.
      stack - the stack size, i.e the amount of items.
      Returns:
      the newly created item. If there was already a compatible item in the storage, that item will be returned instead. Returns null if the item could not be added to the storage.
    • addItemToSlot

      public Item addItemToSlot(short itemID, int variant, int stack, int slot)
      Creates and adds a new item to the storage. The item will be added to the provided slot if possible.
      Parameters:
      itemID - the item type ID.
      variant - the variant/texture of the item (only relevant for certain items, like blocks etc). Typically the the variant for most items is 0.
      stack - the stack size, i.e the amount of items.
      slot - the target slot where you want to insert the item.
      Returns:
      the newly created item. If there was already a compatible item in the target slot, that item will be returned instead. Returns null if the item could not be added to the storage.
      See Also:
    • addObjectItem

      public Item.ObjectItem addObjectItem(short objectID, int variant, int stack)
      Creates and adds a new object item to the storage, i.e an item that represents an object (like furniture). The item will be added to the next suitable slot (this is either a slot containing an identical item it could be merged with, or a free slot).
      Parameters:
      objectID - the object type ID.
      variant - the variant/texture of the object (only relevant for certain objects). Typically the the variant for most objects is 0.
      stack - the stack size, i.e the amount of items.
      Returns:
      the newly created object item. If there was already a compatible item in the storage, that item will be returned instead. Returns null if the item could not be added to the storage.
      Example: Add a furnace object to a chest
      1//Get storage. Id must be the global id of the storage
      2Storage chest = World.getStorage(id);
      3
      4//Get furnace object definition
      5Objects.ObjectDefinition def = Definitions.getObjectDefinition("furnace");
      6
      7//Add object item to chest
      8chest.addObjectItem(def.id, 0, 1);
    • addObjectItemToSlot

      public Item.ObjectItem addObjectItemToSlot(short objectID, int variant, int stack, int slot)
      Creates and adds a new object item to the storage, i.e an item that represents an object (like furniture). The item will be added to the provided slot if possible.
      Parameters:
      objectID - the object type ID.
      variant - the variant/texture of the object (only relevant for certain objects). Typically the the variant for most objects is 0.
      stack - the stack size, i.e the amount of items.
      slot - the target slot where you want to insert the object item.
      Returns:
      the newly created object item. If there was already a compatible item in the target slot, that item will be returned instead. Returns null if the item could not be added to the storage.
      See Also:
    • addConstructionItem

      public Item.ConstructionItem addConstructionItem(byte constructionID, int texture, int stack, int color)
      Creates and adds a new construction item to the storage (e.g a block, window frame etc). The item will be added to the next suitable slot (this is either a slot containing an identical item it could be merged with, or a free slot).
      Parameters:
      constructionID - the type ID of the construction element.
      texture - the texture of the construction element.
      stack - the stack size, i.e the amount of items.
      color - the optional RGBA color of the construction element (else 0).
      Returns:
      the newly created construction item. If there was already a compatible item in the storage, that item will be returned instead. Returns null if the item could not be added to the storage.
      Example: Add stack of blocks with texture ID 200 to a chest
      1//Get storage. Id must be the global id of the storage
      2Storage chest = World.getStorage(id);
      3
      4//Get block definition
      5Constructions.ConstructionDefinition def = Definitions.getConstructionDefinition("block");
      6
      7//Add 999x item (no color == 0)
      8chest.addConstructionItem(def.id, 200, 999, 0);
    • addConstructionItemToSlot

      public Item.ConstructionItem addConstructionItemToSlot(byte constructionID, int texture, int stack, int color, int slot)
      Creates and adds a new construction item to the storage (e.g a block, window frame etc). The item will be added to the provided slot if possible.
      Parameters:
      constructionID - the type ID of the construction element.
      texture - the texture of the construction element.
      stack - the stack size, i.e the amount of items.
      color - the optional RGBA color of the construction element (else 0).
      slot - the target slot where you want to insert the object item.
      Returns:
      the newly created object item. If there was already a compatible item in the target slot, that item will be returned instead. Returns null if the item could not be added to the storage.
      See Also:
    • addClothingItem

      public Item.ClothingItem addClothingItem(short clothingID, int variant, int stack, int color, long infoID)
      Creates and adds a new clothing item to the storage. The item will be added to the next suitable slot (this is either a slot containing an identical item it could be merged with, or a free slot).
      Parameters:
      clothingID - the clothing type ID.
      variant - the variant/texture of the cloth (only relevant for certain clothes). Typically the the variant for most clothes is 0.
      stack - the stack size, i.e the amount of items.
      color - optional RGBA color. Currently unused (set to 0).
      infoID - optional info ID. Currently unused (set to 0).
      Returns:
      the newly created clothing item. If there was already a compatible item in the storage, that item will be returned instead. Returns null if the item could not be added to the storage.
    • addClothingItemToSlot

      public Item.ClothingItem addClothingItemToSlot(short clothingID, int variant, int stack, int color, long infoID, int slot)
      Creates and adds a new clothing item to the storage. The item will be added to the provided slot if possible.
      Parameters:
      clothingID - the clothing type ID.
      variant - the variant/texture of the cloth (only relevant for certain clothes). Typically the the variant for most clothes is 0.
      stack - the stack size, i.e the amount of items.
      color - optional RGBA color. Currently unused (set to 0).
      infoID - optional info ID. Currently unused (set to 0).
      slot - the target slot where you want to insert the clothing item.
      Returns:
      the newly created clothing item. If there was already a compatible item in the target slot, that item will be returned instead. Returns null if the item could not be added to the storage.
      See Also:
    • removeItem

      public void removeItem(int slot)
      Removes an item from a particular slot in the storage. After calling this method, the particular slot does no longer contain an item and the item also gets disposed (so you can no longer use the item instance).
      Parameters:
      slot - the target slot you want to remove the item from.
    • removeItem

      public void removeItem(int slot, int amount)
      Removes an item (or more precisely, reduces the stack size of the item by the provided amount) from a particular slot in the storage.
      Parameters:
      slot - the target slot in the storage you want to remove the item from.
      amount - the amount you want to remove.
    • removeItem

      public int removeItem(short itemID, int variation, int amount)
      Removes the next item with the given type id and variation from the storage (more precisely, the stack size of the item is reduced by the provided amount). If the item stack size is smaller than amount, the rest will be removed from the next item. If amount is -1, all items with this id and variation will be removed.
      Parameters:
      itemID - the item type id.
      variation - the item variation (e.g block texture), usually 0.
      amount - the amount you want to remove. Set -1 to remove all items of this type.
      Returns:
      the rest, or 0 if all items were removed successfully.
      Example: Remove 40 gold ingots from chest
      1//Get item definition of gold ingots
      2Items.ItemDefinition itemDef = Definitions.getItemDefinition("goldingot");
      3
      4//Get the chest you want to remove the items from
      5Storage chest = World.getStorage(...);
      6
      7//Remove 40 ingots and check if all items were removed successfully
      8int rest = chest.removeItem(itemDef.id, 0, 40);
      9
      10//If rest > 0, there were not enough gold ingots in this chest
      11if (rest > 0){
      12 System.out.println("Not enough ingots in this chest, missing " + rest + " ingots!");
      13}
    • sort

      public void sort(boolean mergeStacks)
      Sorts all items in the storage. Optionally also merges stacks.
      Parameters:
      mergeStacks - true if you also want to merge all compatible item stacks, false if you only want to sort them.
    • mergeStacks

      public void mergeStacks()
      Merges all compatible item stacks in this storage.
      See Also:
    • clear

      public void clear()
      Clears the storage, i.e removes all items from it.
    • getCreationDate

      public long getCreationDate()
      Gets the creation date of the storage as a timestamp in seconds
      Returns:
      a timestamp (seconds) representing the original creation date of the storage.
    • getLastModifyPlayerDbID

      public int getLastModifyPlayerDbID()
      Gets the database id of the player who last modified the storage (added or removed items from it).
      Returns:
      the player database id.
    • getName

      public String getName()
      Gets the custom name of the storage. May be null
      Returns:
      the name of the storage (if set).
    • setName

      public void setName(String name)
      Sets a custom name for the storage. It will be displayed to the player when he opens the storage.
      Parameters:
      name - a new custom name for the storage.