Items

Data values

Script items (items defined with QLD Minecraft using the Denizen script system) can contain individual data values supported by QLD Minecraft using the lore element. This feature allows you to use a single script item as a item type, however each item of this type has a slight difference or variation.

An example of this in use is plot deeds. All plot deeds are of script item qldminecraft_plotdeed_item, however each item of this type in the game contains a unique identifier, one for each plot within the game.

For QLD Minecraft to understand if a script item items should be treated uniquely or as a group, the lore needs to contain a identifier in a recognised format.

This identifier is hidden in the items lore, on the first line after the last : character. To further disguise this identifier from the player, most items built into QLD Minecraft change the text colour of the : and identifier characters to black.

A script item with its item identifier on display in yellow

Pricing

Item pricing is stored within QLD Minecraft and can be manually set by developers. Both material and script items can have a price value.

Script items that contain an identifier within its lore, are treated as individual/unique items and can contain different pricing.

Items that have no value

Not all items in QLD Minecraft have a value, or a price set. These items should not be bought or sold by vendors or NPCs, however trading such items between players should not be prevented.

Getting an items price

In game, you can use the command /price (<item>|iteminhand) to display an items price. Script items that contain an identifier can be represented by the script_item_name:identifier

Command

Action

/price carrot

displays the price of a carrot

/price iteminhand

displays the price of the item in the players hand

/price qldminecraft_plotdeed_item:512

displays the price of the plot deed for property id 512

You can use the procedure qldminecraftp.price.get with a item as its context. This will result in either the items price as an integer or -1 if the item does not have a value.

# Get the value of the item in the players hand
- define value:<proc[qldminecraftp.price.get].context[<player.item_in_hand>]>

Setting an items price

In game, you can use the command /price (<item>|iteminhand) [price] to set an items price. Script items that contain an identifier can be represented by the script_item_name:identifier

Command

Action

/price carrot 1

sets the price of a carrot to 1 copper coin

/price iteminhand 10000

sets the price of the item in the players hand to 1 gold coin

/price qldminecraft_plotdeed_item:512 12345

sets the price of the plot deed for property id 512 to 1 gold coin, 23 silver coins and 45 copper coins

/price wooden_sword -1

sets the price of a wooden sword to no value

You can use the task qldminecraft.price.set with an item and a integer value as its definition.

# Sets the value of the item in the players hand to 1 gold, 50 silver
- run qldminecraft.price.set def:<player.item_in_hand>|15000

Utilities

Delete item when found

At some point, you may need to delete items that have been previously created because they are no longer required or are now invalid eg. A plot deed item to a plot that no longer exists. This can be easily done by using the task qldminecraft.item.remove with a definition of the item.

Whenever an item that matches comes into contact, it will be removed from gameplay.

Players may see the item itself during gameplay within the world. Items are marked for removal are done in the following events:

  • Player logs in

  • Player opens an inventory

  • Player picks up an item

# Mark a plot deed for deletion within the game
- define plotdeed:<proc[qldminecraftp.plot.createdeed].context[12345]>
- run qldminecraft.item.remove def:<[plotdeed]>

Removing marked items from an inventory

Items that are marked for removal can be removed from an inventory item manually using the task qldminecraft.item.remove_marked passing an inventory item as a definition.

This task should not need to be called by modules as it is called on the following events:

  • Player logs in

  • Player opens an inventory

  • Player picks up an item

# Delete all marked items from the players inventory
- run qldminecraft.item.remove_marked def:<player.inventory>