Too Much Stock - Dynamic pricing API

This is a discussion topic for the Ore project, Too Much Stock. View the full project on Ore for downloads and more information.


Too Much Stock

This plugin aims to provide an API for dynamic pricing based on trade volume and
popularity of items.
In order to keep the Server economy within limits the following factors are put
in place:

  • Trade volume per player & item, per shop & item, globally per item in
    • Limit of total sold items (disperseAmount)
    • Limit of total items purchased (purchaseAmount)
    • Limit of total income through trade per currency (incomeLimit)
    • Limit of total spedings through trande per currency (spendingLimit)
  • Price modifications per player & item, per shop & item, globally per item with
    • Price multiplier for any sold item (dispersionDevaluation)
    • Price decay rate per item sold by a player
    • Price growth rate per item bought by a plaer
    • Discrapency returns over time with half life in minutes
    • Reset periods to prevent permanent damage to prices

Every aspect can be tuned and disabled through a config file. Most
configurations can be done per item through item type / meta or nbt filters.

Keep in mind that this plugin primarily tracks price increase, this means
you can still make shops that sell items for more or less money (e.g. black markets)
but the prices still scale with demand and supply!

Additional features:

  • Create Item aliases through a command, for use in per item configurations
  • Visually display global price history and player specific price history per item

Commands & Permissions

  • /toomuchstock reload [--hard] (Permission: toomuchstock.command.reload)
    Reload the config. If --hard is specified, will also reset cooldowns.
  • /toomuchstock define <filter> <name> (Permission: toomuchstock.command.define)
    Hold an item to add it to the config under the specified name for per item configuration
  • /toomuchstock history [item] (Permission: toomuchstock.command.stonks)
    Hold an item or type the item name in the command to get a visual history of the item
    price (as multiplier to a base price) over the last 30 minutes.

Example config

An example configuration with comments can be found here.

External connections

none

I’m always open for suggestions:

Join my Discord

A new version has been released for Too Much Stock, it is available for download here.


TransactionPreview is now more verbose with getLimitAccount(), getLimitItemTransactions(), getLimitCurrencyTransactions()

I was about to develop something like this myself - thanks for saving me the trouble. Nice work.

no problems :smiley:

feel free to send me issues and PRs on GitHub, i didn’t get around to actually use it myself yet

A new version has been released for Too Much Stock, it is available for download here.


Tested the API through my VillagerShops plugin. Everything seems to work so far.

  • Moved config structure around a bit
  • Fixed a lot of bugs in maths, API and elsewhere