Nascraft - The Items Exchange [1.21] icon

Nascraft - The Items Exchange [1.21] -----

An alternative economy with dynamic prices based on supply and demand!



Preview selft-hosted website: Click here
[​IMG]
[​IMG]
[​IMG]

[​IMG]

--------------------------------

AdvancedGUI layout (Previous charts):
[​IMG]
New charts:
[​IMG]
[​IMG]
[​IMG]
[​IMG]
[​IMG]
[​IMG]
[​IMG]
[​IMG]

  • Auto-regulated prices based on supply and demand (stock available).
  • Noise in prices (random fluctuations) to emulate real world markets (With a configurable intensity per item)
  • Set limits on how high and low prices can be.
  • Set resistances and/or supports on prices per item to keep them tending to stay inside your desired range.
  • Determine the elasticity of prices per item.
  • Buy/Sell wherever with commands in-game
  • Multiple commands to sell: /sell /sellall /sellhand
  • Native system of sellwands to automatically sell content of containers to the market.
  • Apply different taxes to the buy and sell actions per item.
  • MiniMessage support in chat messages. Click to learn more.
  • Per player trade logging.
  • Multy currency: You can use vault and many other economies (As long as they provide commands and a placeholder) at the same time and for each item individually!

Introduction: Another plugin for shops...
How is it different?
Nascraft's goal is to create an entertaining economy through a pseudo-free market of commodities, in which the players can interact and influence prices under a configurable set of rules.
Overview:
Economy on autopilot:
The invisible hand will make sure to balance the prices for you.
Meet your new friend: The invisible hand!
Your new ally will help you to effortlessly (and more or less accurately) manage your server's economy.
With this plugin, a (mostly) free market will allow players to participate in the price-setting process, fostering a more engagng economy.

Easily accesible: Users can interact in many ways with the market.
How can players interact with the market?
Included:
  • In-game inventory GUI (Coming soon)
  • Sell wands
  • Commands: /sell /sellall /sellhand
  • Discord Extension
Not included:
  • AdvancedGUI Screens: Use graphs in-game to represent the evolution of prices! This feature depends on a premium resource: AdvancedGUI
Pricing System: Every price comes from a simple formula.
The plugin computes the price of every item following the next formula:
p = ip * e^(-s*wp*0.0005)
Where p is the price of the item, ip the initial price, s the internal stock and wp the elasticity.
When stock decreases, the price increases exponentially, and when the stock increases the price decreases tending to 0 asymptotically

Plan your economy: You will have full control over the economy.
Set the limits: Create supports/resistances that will ensure that prices stay where you want.
Change the properties: Adjust metrics per item to ensure that each item will behave as expected.
Market noise: A more realistic approach.
Each time unit, all prices will fluctuate in a random amount to recreate the price movements of real-world assets.

Discord Integration: Players won't have to be in-game to operate!
Easily create a Discord bot to let users stay connected with the market, even if they are not connected to your server!
Main menu: Each minute the bot will update the message in a determined channel. Users can utilize this channel to access a range of diverse options presented through a series of buttons.

Every player possesses a virtual inventory for storing purchased items, accessible within the game to store items or obtain previously purchased items.
Discord balance is directly funded from each player's in-game money.
Additionally, in this tab players can check the current value of their inventory and see how their wealth is distributed among various assets as money, items (In Discord Inventory) and more!

You can also log all transactions in a Discord channel of your choice. For optimal security, select a private channel accessible only to staff. This ensures that you always stay informed about what is going on in the market.

[​IMG]

[​IMG]
[​IMG]
[​IMG]
Config:
Code (YAML):

# Nascraft config.yml - 1.7.2[/LEFT]

# Language file to use. Available: en_US es_ES it_IT de_DE pt_BR
language
: 'en_US'

database
:
  # Available types: SQLite
  type
: 'SQLite'

  # How many days should logs of trades last in the database?
  # With the option 60, all trades older than 60 days will be automatically removed.
  # Use -1 to disable (Keep all trades logged).
  days-until-history-removed
: 60

currencies
:
  # Currency to be used by default by all items.
  # It will also be the default price for things like discord inventory expansions etc.
  default-currency
: 'vault'

  suppliers
:

    # Vault has to be installed!
    vault
:
      format
: "<gradient:#f09947:#feed81>[AMOUNT]$</gradient>"
      not-enough
: "<gradient:#FB6363:#C4B3FD>✘ You don't have enough money to buy that!</gradient>"
      decimal-positions
: 3
      top-limit
: 9999999
      low-limit
: 0.005

    #################################################################
    #  TO ADD OTHER CURRENCIES PLACEHOLDEDRAPI HAS TO BE INSTALLED  #
    #################################################################

    # !!! Keep in mind that both commands and placeholder have to work even if the player
    # !!! is offline if you plan to use the discord extension!

    # Example of another kind of currency:
    player-points
:
      deposit-cmd
: 'playerpoints:p give [USER-NAME ] [AMOUNT ]'
      withdraw-cmd
: 'playerpoints:p take [USER-NAME ] [AMOUNT ]'
      balance-placeholder
: ' %playerpoints_points%'
      not-enough
: "<gradient:#FB6363:#C4B3FD>✘ You don't have enough points to buy that!</gradient>"
      format
: "<gradient:#ba24ff:#e8d1ff>[AMOUNT]p</gradient>"
      decimal-positions
: 0
      top-limit
: 9999
      low-limit
: 10

    # Add your own supplier! Create as many as you want.

price-options
:
  # With noise enabled, prices will vary over time in a pseudo-random manner.
  noise
:
    enabled
: true
    # Change the default intensity of the noise with this factor.
    default-intensity
: 1
    # Global multiplier
    intensity-multiplier
: 1
    # Time in seconds to apply noise. By default, 60 seconds, so each 60 seconds prices will change randomly.
    time
: 60
  # The default elasticity applies to all items unless otherwise explicitly stated at items.yml.
  default-elasticity
: 1
  # Global multiplier - Take into account that this variable will change the shape of all
  # price curves, changing the price instantly for all current items.
  elasticity-multiplier
: 1

market-control
:
  # Although taxation gets applied for buying and selling actions separately, the total tax paid is the same regardless of how it is split
  # The spread is determined by the deviation in both actions. In the default case, it is 6% for selling and 4% for buying, resulting in a total spread of 10%.

  # To avoid strengthening the underground economy, try to keep the taxation as low as possible.
  # Heavy taxation can encourage players to trade with each other directly, bypassing intermediaries,
  # and reducing the amount of money collected from taxes and making the market less efficient.
  #
  # This value will be applied by default if no other tax is explicitly stated on the item at items.yml
  taxation
:
    sell
: 0.06 # 6% taxation when players sell items.
    buy
: 0.04 # 4% taxation when players buy items.

    # Choose whether to take into account the taxes in price fluctuations.
    # Example: If an item has a tax when buying of a 100%, when you buy an item with this option
    # activated, the item goes in price as if you bought 1 + 1 * 100% = 2 items.
    take-into-account-taxes
: false

  # Do players need the permission "nascraft.market" to operate directly with commands?
  market-permission
: true

commands
:
  nascraft
:
    enabled
: true
    alias
: 'nas'
  market
:
    enabled
: true
    alias
: 'shop'
  link
:
    enabled
: true
    alias
: 'nlink'
  discord
:
    enabled
: true
    alias
: 'dis'
  alerts
:
    enabled
: true
    alias
: 'nalerts'
  setalerts
:
    enabled
: true
    alias
: 'nsetalert'
  givesellwand
:
    enabled
: true
    alias
: 'givesw'
  sellall
:
    enabled
: true
    alias
: 'nsellall'
  sellhand
:
    enabled
: true
    alias
: 'nsellhand'
  sell-menu
:
    enabled
: true
    alias
: 'sell'
    size
: 45
    help
:
      enabled
: true
      slot
: 4
      texture
: 'bc8ea1f51f253ff5142ca11ae45193a4ad8c3ab5e9c6eec8ba7a4fcb7bac40'
    filler
:
      material
: 'black_stained_glass_pane'
    sell-button
:
      slot
: 40
      material
: 'yellow_stained_glass_pane'
    close-button
:
      enabled
: true
      slot
: 8
      material
: 'red_stained_glass_pane'

# FEATURE IN BETA AS OF ${project.version}
# Use with caution.
discord-bot
:
  enabled
: false
  token
: 'TOKEN-ID'
  # Role requiered to execute admin commands through discord.
  # Current commands: /stop, /resume, /seeinv [ID], /seebal [ID]
  admin-role-id
: 'ADMIN-ROLE-ID'
  # You can select a channel to send information of each transaction when executed.
  # You will most likely want to make the channel private, but it's optional.
  log-trades
:
    enabled
: false
    channel
: 'LOGS-TEXTHANNEL-ID'
  # Menu to let users sell/buy items
  main-menu
:
    enabled
: false
    # Available methods: NATIVE, DISCORDSRV (DISCORDSRV IS NOT WORKING CURRENTLY)
    link-method
: 'NATIVE'
    # This channel should be only used by the bot. Every message in it will be removed.
    channel
: 'MAINMENU-TEXTCHANNEL-ID'
    # Default size of discord's virtual inventories.
    default-inventory
: 5
    # Formula to calculate the price of then next slot. slot_price_factor * #slot + slot_price_base = price
    # For example, to buy the slot nº6 the price will be (1000 * 6) + 10000 = 16000$
    slot-price-factor
: 1000
    slot-price-base
: 10000
    in-game-gui
:
      fillers
:
        material
: 'black_stained_glass_pane'
      locked
:
        material
: 'gray_stained_glass_pane'
      info
:
        slot
: 4
        texture
: 'b722098ae79c7abf002fe9684c773ea71db8919bb2ef2053ea0c0684c5a1ce4f'
    # Discord taxes:
    taxation
:
      override
: true
      # By default, we apply a reduced tax to persuade users to operate through discord.
      buy
: 0.04
      sell
: 0.05
    options
:
      # Time in seconds between each update of the message.
      update-time
: 60
      # Button to access to the discord wiki.
      wiki
:
        enabled
: true
      # Both in-game commands and discord command/button.
      alerts
:
        enabled
: true
        # Time in days for alerts to expire.
        expiration
: 10
      # Graphs of individual items (1 day, 1 month, 1 year, all)
      detailed-graphs
:
        enabled
: true
      # Access with the button to the personal log of trades.
      personal-log
:
        enabled
: true
      # Quick selection bar with the items of the main menu
      selection-bar
:
        enabled
: true
      # Button to generate a graph with the evolution of the CPI inside advanced options
      cpi
:
        enabled
: true
      cpi-comparison
:
        enabled
: true
      flows
:
        enabled
: true

sell-wands
:
  enabled
: true
  wands
:
    # ID - Just the identifier.
    basic
:
      material
: 'stick'
      # Recommended site to follow the format: https://webui.advntr.dev/
      display-name
: '<b><gradient: #19e312:#a3e300>BASIC WAND</gradient></b>'
      lore
:
       - '<b><gradient: #00eeff:#2e69ff>⏵ RIGHT CLICK</gradient></b> <color:#517d58>to estimate value.</color>'
        - '<b><gradient: #ff383b:#ff2403>⏵ LEFT CLICK</gradient></b> <color:#517d58>a container to</color>'
        - '<color: #517d58>sell all its content to the market!</color>'
        - ' '
        - '<color: #517d58>Uses left:</color> <b><color:#a3e300>[USES]</color></b>'
      # Maximum uses of the wand. Alternatively you can place a limit on
      # the quantity of the sells. See "MILLONAIRE WAND".
      # If you don't set any of these, the wand can be used without limits. (See "PERMANENT WAND").
      uses
: 10
      # Permission to use this specific wand. If not defined, no permission will be required.
      permission
: 'nascraft.wand.basic'

    permanent
:
      material
: 'blaze_rod'
      enchanted
: true
      display-name
: '<b><gradient: #e74cf5:#f51d41>PERMANENT WAND</gradient></b>'
      lore
:
       - '<b><gradient: #00eeff:#2e69ff>⏵ RIGHT CLICK</gradient></b> <color:#8077ba>to estimate value.</color>'
        - '<b><gradient: #ff383b:#ff2403>⏵ LEFT CLICK</gradient></b> <color:#8077ba>a container to</color>'
        - '<color: #8077ba>sell all its content to the market</color>'
        - '<color: #8077ba>for <b><color:#ff2403>50%</color></b> of its value.</color>'
        - '<i><color: #343d66>⌛ 5 minutes of cooldown between uses.</color></i>'
        - ' '
        - '<b><gradient: #f51d41:#e74cf5>UNLIMITED USES</gradient><b>'
      multiplier
: 0.5
      # Limit the currencies with which this wand works.
      currencies
:
       - 'vault'
      # Set a minimum cooldown between uses in seconds.
      cooldown
: 300 # 300/60 = 5 min of cooldown.
      permission
: 'nascraft.wand.advanced'

    millionaire
:
      material
: 'blaze_rod'
      enchanted
: true
      display-name
: '<b><gradient: #F57E00:#EFF551>MILLIONARIE WAND</gradient></b>'
      lore
:
       - '<b><gradient: #ff383b:#ff2403>⏵ LEFT CLICK</gradient></b> <color:#85784D>to estimate value.</color>'
        - '<b><gradient: #00eeff:#2e69ff>⏵ RIGHT CLICK</gradient></b> <color:#85784D>a container to</color>'
        - '<color: #85784d>sell all its content to the market</color>'
        - '<color: #85784d>for <color:#EFF551>150%</color> its value.</color>'
        - ' '
        - '<color: #85784d>Left to sell:</color> <b>[PROFIT-LEFT]</b>'
      currencies
:
       - 'vault'
      # With this wand you can sell a maximum of 1.000.000$ (Including the multiplier) worth of items.
      max-profit
: 1000000
      multiplier
: 1.5
      permission
: 'nascraft.wand.millonaire'
      # Change which click will be used to each action. Use 'none' to disable.
      # By default: sell: left estimate: right
      sell
: 'right'
      estimate
: 'left'

# Verify whether the AdvancedGUI's layout is present, and if it is not, place it in the layout folder of AdvancedGUI.
auto-resources-injection
: true

# Cooldown between button uses of the AdvancedGUI layout, in seconds.
layout-cooldown
: 1
[LEFT ]
[​IMG]
HOW TO GET SUPPORT:
  • Nascraft Discord (Preferred)
  • Resource discussion
  • DM me through discord: baunser
  • In case it COULD be related to AdvancedGUI: Channel #others in Leoko's discord (Leoko.dev)
Before trying to receive support, please consult the wiki.
Resource Information
Author:
----------
Total Downloads: 2,851
First Release: Feb 23, 2023
Last Update: May 26, 2025
Category: ---------------
All-Time Rating:
29 ratings
Find more info at bounser.gitbook.io...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings