Config.yml

You will learn step by step what every option of the regular config file means and how to configure them.

General Settings:

Please read About YAML before editing your files! It DOES NOT tolerate any errors! Validate it!

Config version:

The first option you will see in the regular config of the plugin is the config-version: <version>. This is the version of the config. Do not change this unless told to do so by support staff, if you do, you may break the plugin and have to reset or delete your shop files to default files generated by the plugin.

Do not change the config version unless told to do so by support staff. changing this may cause unexpected errors and may erase your shops!

config-version: 2.0.0.0
# WARNING: Do not change this value as this might end up in a plugin that does not work!!

Language option:

Here you can change the language file you are using. The default language file is English but if you want to use the German language file for example, set the value to language-file: lang-de.yml because the language file is called lang-de.yml. List of all language files and more info available on the Language page here.

#---------------------------------------Language--------------------------------------------------------
# Here you can change the language of the plugin.
language-file: lang-en.yml
# See this link for all available language files: https://app.gitbook.com/@gpplugins/s/economyshopgui/economyshopgui-configuration/regular-config.yml-configuration#language-option

Locale option:

Please check your language file to set the currency symbol. This setting only formats the commas(,)/periods(.).

The locale option currently only works with formatting the prices. But that doesn't say its unhelpful. The locale option takes a BCP-47 language tag as input. You can find valid BCP-47 tags here You can see the difference with or without a locale here.

#----------------------------------------Locale---------------------------------------------------------
# This is the locale of the plugin.
# Currently its only used to format the prices.
locale: en-US
# Note: This is not the locale at which messages will be translated, see the above option for that.
# The locale is set in BCP 47 language tag.
# See this website for some example BCP 47 language tag you can use: https://appmakers.dev/bcp-47-language-codes-list/

Currency format:

This option allows to customize the format of currency.

Example "#,##0.###" will show up to three digits after the ., while "#,##0.##" is the default format.

# Currency format
currency-format: "#,##0.##"

Update checking:

This option allows you to disable update checking on startup or reload of the plugin. Sometimes when there is a sever issue with spigot or with your internet connection, this can take a while and maybe you do not have the time to wait for the plugin to make a connection to the server so you can disable this option.

#-----------------------------------------------Updates-------------------------------------------------

# This option enables or disables the automatic checking of updates for the plugin on startup or reload of the plugin
update-checking: true

Debug mode:

When debug mode is set to true, error messages pertaining to invalid or miss-configured items will be printed to console on server startup (check your latest.log!) We recommend leaving it set to true to aid in troubleshooting. It prints nothing to console if there are no issues.

#---------------------------------------DebugMode-------------------------------------------------------
# Set this value to false to disable debug mode and do not send debug messages to the console.
debug: true
# NOTE: The console may get spammed when debug mode is enabled.

Storage: *Premium only

All storage types are currently only used to store the data of DynamicPricing and limited stock. The items are stored locally inside the configs.

SQLite:

SQLite databases are local databases, meaning they're stored inside the plugins folder like a regular plugin config, it doesn't require any configuration for it to work either.

# Select the storage type which should be used
# Valid options are 'MySQL' and 'SQLite'
storage-type: SQLite

MySQL:

MySQL allows multiple servers to connect to one database instance. So for example when a player is allowed to only purchase 4 of a specific item using limited stock, and they buy three of these items in the survival server, they will only be able to purchase 1 more of that item in any other server inside your network.

# Configure this to use MySQL
mysql:
  # The name of the database
  database: database
  # The host where this database is hosted
  host: localhost
  # The port of the database connection
  port: 3306
  # The username
  username: root
  # The password
  password: password
  # Configure the pool settings if needed, if you don't know what this is then just leave it to the default settings
  pool:
    maximum-lifetime: 1800000
    idle-timeout: 600000
    maximum-pool-size: 10
    minimum-idle: 10

ShopStands module:

ShopStands is a module within EconomyShopGUI which allows the creation of physical shops which link to one specific ShopItem from /shop, get rid of the ugly sign shops on your server! See more info here.

Due to the smart design, ShopStands have almost to none performance impact since they are not persistent(1.13+), unlike regular entities.

shop-stands: false
# ShopStands is a separate module of the plugin, so when disabled, 
# it will completely disable this feature and its listeners

(ShopStands are disabled by default)

Transactions:

Transaction log:

Using the transaction-log: true setting you may disable/enable the plugin logging transactions to a text file, this can be usefull for identifying price exploits or just which item is the most populair in your store.

#---------------------------------------------Transactions----------------------------------------------

# Whether transactions should be logged to a text file
transaction-log: true

Banned gamemodes:

Disallow certain gamemodes from using the shop, defaults to gamemode creative and spectator.

# Players will not be able to buy/sell items, nor use /sellall and /sellgui while inside any of the below gamemodes
# Possible values: ADVENTURE, CREATIVE, SPECTATOR and SURVIVAL
banned-gamemodes:
  - CREATIVE
  - SPECTATOR
# This behavior can be overridden with the 'EconomyShopGUI.bypassgamemode' permission for specific players

When a gamemode has been added to this list, it will still allow players to browse /shop but are not allowed to buy/sell items.

This behavior can be overridden with the 'EconomyShopGUI.bypassgamemode' permission for specific players.

Disabled Commands in Worlds:

It is possible to disable certain ESGUI commands in certain worlds, you will need this option for that. First you will need to enable the enable-disabled-worlds: true option for it to work. Once it is enabled you can list every world's name under the command that you want disabled there. In the default config generated with ESGUI there are already some examples that could be used if the option is enabled.

Commands disabled in worlds via the feature above will still be available in the server (just not in the specified world(s)), and will appear in your command-tab-complete-list. This DOES NOT disable the command server-wide! meaning that a command may still conflict with another plugin that has the same command. See Troubleshooting for more.

#---------------------------------------DisabledCommandsInWorlds----------------------------------------
# The setting below enables or disables the disabled commands inside certain worlds feature
# When this option is true, the commands that are added to the world inside the list below will be disabled
enable-disabled-worlds: false
# List of commands with disabled worlds
# Each command has its own list of worlds that will be disabled.
# If a command is not added or the list with worlds for the specified command is empty,
# the command will work in every world.
disabled-worlds-per-command:
    shop:
    - 'creative'
    balance:
    - 'world'
    givemoney:
    - 'world'
    - 'boss_fights'
    sellall:
    - 'randompvp'
    editshop:
    - 'boss-fights'
    - 'Survival-Spawn'
# NOTE: Commands disabled inside worlds with the feature above will still be registered inside the server,
# meaning that a command still can conflict with the same command from another plugin.

Providers:

Economy provider:

Allows you to change the default economy/currency provider which EconomyShopGUI uses.

  • VAULT = Vault is the default economy provider. Vault needs a economy plugin such as Essentials or CMI(Using Vault injector) to work.

  • COINS_ENGINE = CoinsEngine(Formally known as GamePoints) is a multi currency economy provider which support MySQL

  • PLAYER_POINTS = PlayerPoints is a advanced economy provider which supports MySQL but does not support decimal prices such as other economy providers.

  • GEMS_ECONOMY = GemsEconomy is a economy provider which supports multiple currencies and also supports MySQL databases if you need it.

  • VOTING_PLUGIN = Points used by VotingPlugin

  • ULTRA_ECONOMY = UltraEconomy is a modern multi currency economy provider which supports multiple currencies and a MySQL storage type.

  • TNE = TheNewEconomy is a multy currency economy provider which supports MySQL *Premium only feature

  • ECOBITS = EcoBits is a premium, modern multi currency economy provider which supports multiple currencies *Premium only feature

  • EXP = Raw experience points used to enchant items

  • LEVELS = Experience levels used within the base game *Premium only feature

  • ITEM:<item> = Specific item economy, see this page on how to create custom item currency's *Premium only feature

Using the format of GEMS_ECONOMY:<currency> or ULTRA_ECONOMY:<currency> you may specify the use of a different currency then the default.

The plugin allows you to specify multiple economy's at the same time via per section economy's or per item economy's.

#--------------------------------------------EconomyProvider--------------------------------------------

# The default economy provider used
# Available values are 'VAULT', 'PLAYER_POINTS', 'GEMS_ECONOMY', 'ULTRA_ECONOMY', 'LEVELS' and 'ITEM:material:<item>'
# Additionally when using GemsEconomy or UltraEconomy you may use a different currency using 'GEMS_ECONOMY:<currency>' or 'ULTRA_ECONOMY:<currency>'
# See this page on how to create custom item currency's: https://wiki.gpplugins.com/economyshopgui/basics/how-to#how-to-create-custom-item-economys
economy-provider: ULTRA_ECONOMY:vip

Currency formats:

A currency format exists of three parts, the currency singular/plural form which are shown as the buy/sell price lore for items and the currency's friendly name which is used to call the currency in language messages send to the player. Each individual 'part' so to call, can be configured differently from each other.

See this for an example of how the config looks like for custom currency formats for the Vault currency, the Gems currency from UltraEconomy and a custom item economy with a custom id of Bullets.

currency-formats:
  ultra-economy:Gems: # Gems currency from UltraEconomy
    singular: "Gem" # Displayed like: 'Buy Price: 1 Gem'
    plural: "Gems" # Displayed like: 'Buy Price: 5 Gems'
    friendly: "Gems" # Displayed like: 'You do not have enough Gems'
  vault: # Vault economy provider
    singular: "%currency-symbol%" # Displayed like: 'Buy Price: $1'
    plural: "%currency-symbol%" # Displayed like: 'Buy Price: $5'
    friendly: "money" # Displayed like: 'You do not have enough money'
  item:Bullets: # Custom item economy using ID 'Bullets'
    singular: "Bullet" # Displayed like: 'Buy Price: 1 Bullet'
    plural: "Bullets" # Displayed like: 'Buy Price: 5 Bullets'
    friendly: "Bullets" # Displayed like: 'You do not have enough Bullets'

Spawner provider:

This option allows you to set the spawner provider that ESGUI uses.

  • DISABLED = Disables the spawner provider entirely, the same as disabling the spawner break and place events seperatly.

  • DEFAULT = This is the default spawner provider inside the plugin configured below, when this option is used, you can mine or break spawners with the settings inside the config without any external spawner provider. This option also allows you to use MineableSpawners but you will need to disable the spawner break event inside ESGUI.

  • AUTO = Attempts to automatically detect a supported plugin. If no plugin from the list below is found, it defaults to DEFAULT mode.

  • SILKSPAWNERS = SilkSpawners is an external spawner provider that has more features to customize/configure the experience with spawners on your server.

  • WILDSTACKER = WildStacker is an external spawner provider/stacking plugin, WildStacker allows you to upgrade spawners and make them better.

  • ULTIMATESTACKER = UltimateStacker is an external spawner provider that can stack items, spawners and mobs.

  • ROSESTACKER = RoseStacker is an external spawner provider that can stack items, spawners and mobs.

  • MINEABLESPAWNERS = MineableSpawners is an external spawner provider that has more features to customize/configure the experience with spawners on your server.

  • SPAWNERMETA = SpawnerMeta is an external spawner provider with advanced features, it allows to stack and upgrade spawners.

  • EPICSPAWNERS = EpicSpawners is an external spawner provider that allows you to stack spawners and create custom spawners with tiers. *Premium only feature

  • UPGRADEABLE_SPAWNERS = UpgradeableSpawners is an external spawner provider that allows to upgrade spawners. *Premium only feature

#--------------------------------------------SpawnerProvider--------------------------------------------
# DISABLED = This will disable both spawner place and break event which disables the spawner provider
# DEFAULT = The default spawner provider inside ESGUI
# SILKSPAWNERS = An external spawner provider
# WILDSTACKER = An external spawner provider that can stack/upgrade spawners
# ULTIMATESTACKER = An external spawner provider that can stack spawners
# ROSESTACKER = An external spawner provider that can stack spawners
# MINEABLESPAWNERS = An external spawner provider
# SPAWNERMETA = An external spawner provider that can stack/upgrade spawners
# EPICSPAWNERS = An external spawner provider that can stack/upgrade spawners
# UPGRADEABLE_SPAWNERS = An external spawner provider that can stack spawners
spawner-provider: EPICSPAWNERS
# NOTE: When there is no spawner provider set, the default will be used

Player Transactions:

Log Player transactions:

This will log player transactions to console when a player has sold/bought a item. This is really handy if you want to keep track on what you're players are buying/selling, or if you accidentally made an exploit in the shop prices, you can more easily find what players are buying or selling a lot of.

#---------------------------------------PlayerTransactions----------------------------------------------
# When this option is set to true, every time a player sells/buys something from the server, it will output it in the console.
# This way the server owner or staff can see when a item is bought/sold many times or control/correct prices and exploits in the shop.
log-player-transactions: true
# Set to false to disable this.

Drop remaining items on ground:

When this option is disableddrop-remaining-items-on-ground: false the plugin will fill the player's inventory as much as it can (if applicable), and the remaining items will be cancelled. The player will only pay for, and receive the amount of items that fit inside the inventory.

When set to drop-remaining-items-on-ground: true, the plugin will drop all items that didn't fit in the player's inventory.

When this option is set to true, players with bad intentions can spam buy something and all the items now sitting on the ground will lag out and potentially crash your server. It is highly recommended to keep this set to false.

# Should we drop the remaining items on the ground when the players inventory is full?
drop-remaining-items-on-ground: false
# When this option is false, the plugin will only give the items that fit inside the inventory and the remaining items will be cancelled. The player will only pay for the amount of items that fit inside the inventory.
# Warning: When this option is true, players could lag out your server by buying an insane amount of items that fall on the ground!

Use item name:

This option sets wether to use the shop item displayname inside shop transaction messages or the material name

# When purchasing a item from shop, should the transaction message say which material was sold/bought from shop or should it be the item name?
use-item-name: true
# When this is false, purchasing/selling a item to shop will cause the message in chat use the material name of the item instead of the item name to let the player know what has been sold/bought

Bedrock

There are various options inside the plugin to make Bedrock support better.

For any of the below features to work, it is required to install Floodgate on the same server as EconomyShopGUI.

When using a proxy server, you will need to setup Floodgate on your backend server to correctly comminucate with your proxy.

Resize GUI

Since the limitations of Bedrock clients. Any GUI size different then a half/full sized inventory would make the bedrock client fill in the left over rows with barrier items. There for, enabling this feature will resize any GUI to a full sized inventory.

resize-gui-for-bedrock: true

Pre register skulls

Since the limitations of Bedrock clients not being able to render textured player heads, this feature uses Geyser to create a custom resource pack for any connected bedrock player which will make it possible for Bedrock players to view textured player heads.

The add-non-bedrock-items: true option needs to be enabled inside the config.yml of Geyser for this to work(Enabled by default)

Note that this feature requires Geyser to be installed directly on the same server as EconomyShopGUI

A full server restart is required for new textured skulls added to shop for being able to register within the resource pack.

pre-register-skulls: true

Bedrock player profile

Since the limitations of Bedrock clients not being able to render textured player heads, and the feature above not rendering the player profile of bedrock players in navigation bars, this feature adds a custom player profile when enabled.

Meaning when using a navigation bar item with skullowner: "%player_name%"(player profile), which creates a skull with the player's texture. While Java players will still be able to visually see this item with their skin texture applied, duo to bedrock limitations, bedrock players will see the custom player profile when this feature is enabled instead.

When disabled, bedrock players will see the same item as Java players but duo to limitations for Bedrock clients, they will see the regular steve head.

custom-bedrock-player-profile:
  enabled: true
  item:
    material: GOLD_INGOT
    name: "%player_displayname%"
    lore:
      - "%translations-money%: &c%player_balance%"

DiscordSRV Hook

The DiscordSRV hook allows you to send shop transactions directly to a discord channel without using the API of EconomyShopGUI.

# The DiscordSRV hook allows you to log transaction directly to a discord text channels in your guild when someone makes a transaction
enable-discordsrv-hook: true

The channel configured to log shop transaction to, also needs to exist as a logging channel inside the config.yml of DiscordSRV. See their documentation on how to add channels.

Available placeholders:

  • %translations-discord-srv-transaction% - The translated message inside the language file

  • %player_name% - The player triggering the transaction

  • %bought/sold% - Either 'bought' or 'sold'

  • %amount% - The amount of items used in this transaction

  • %items% - The item names used in this transaction

  • %price% - The total price for all items used in this transact

# Configure the message sent to a channel when a transaction is made
discordsrv-transactions:
  channel: shop-transactions
  raw: ""
  embed:
    color: "0x006FFF"
    title: ""
    description: ""
    author:
      title: "New shop transaction"
      imageURL: "%player_skull_texture%"
    fields:
      1:
        title: "Player"
        message: "```%player_name%```"
      2:
        title: "Mode"
        message: "```%bought/sold%```"
      3:
        title: "Amount"
        message: "```%amount%```"
      4:
        title: "Product(s)"
        message: "```%items%```"
      5:
        title: "Price"
        message: "```%price%```"
    footer:
      title: ""
      imageURL: ""

Dynamic Pricing: *Premium fearure

Dynamic pricing is like the name suggests a feature where the prices of items can drop or rise in value depending on demand and supply for the specific item.

Take for example emeralds in your shop: If demand is high, and players start buying emeralds, the price will increase as there will be less items inside the market. On the other hand, when players start selling emeralds, the price will drop again as more items will be inside the market.

This setting will enable dynamic pricing in the shop for every section/every item.

dynamic-pricing:
  enabled: false

Save period:

The save period acts as a fallback which saves the cache to database every set period to prevent data loss caused by server crashes.

Note though, this is only available when the database type is SQLite, since when using MySQL, the data is directly saved to database instead of writing to cashe!

  save-period: 1h

Price scaling:

A percent for the minimum/maximum sell price for all items depending on demand and supply. For example with a 20% sell scaling and the $250 sell price of the emerald from above, the minimum sell price for this item would be $200 when demand is high and the maximum would be $300 when more items are sold to shop.

  sellPriceScaling: 20

A percent for the minimum/maximum buy price for all items depending on demand and supply. For example with a 30% buy scale and the $750 buy price of the emerald from above, the minimum buy price for this item would be $525 when the item gets sold alot and maximum would be $975 when demand is high for this item.

  buyPriceScaling: 30

Stock settings:

When items are bought/sold from shop, the plugin tracks this data, which is called stock. Ofcourse this stock can't be seen or won't limit purcahses, so we call it virtual stock.

The maximum (virtual) stock a item can have. When a item has more (virtual) stock, the price will increase/decrease more when items are bought/sold. On the other hand, when items have less (virtual) stock, their prices will increase/decrease slower when bought/sold.

  max-stock: 250

Default is 250 which means that the item needs to be sold/bought 125 times before the minimum price(defaultPrice - priceScaling) or maximum price(defaultPrice + priceScaling) is reached. Expensive items(items with overall high prices) in shop will reach their minimum/maximum prices quicker compared to cheaper items. This behavior makes sure dynamic pricing is random per item depending on their overall price in the shop.

Tip: It is possible to change the maxStock setting per section or per item to have different effects

The minimum amount of (virtual) stock a item can have

  min-stock: 10

Price restoration:

When price restoration is enabled, items using a dynamic price, will restore to their original prices overtime whenever the price went up/down.

  price-restoration:
    # When enabled, shop items with a dynamic price, will automatically restore prices back to their original price(prices configured in config) in a configurable time frame
    enabled: true
    # The time frame the plugin will check for dynamic price restoration
    frequency: 5m
    # The percent at which the price will raise/drop towards the original price every configured frequency(default 5 minutes)
    percent: 1.0
    # Whether the plugin should log in console when an item's dynamic price has fully restored to its original price
    logging: false

Inventory's:

Allows to change the size of the main menu in rows, one row exists of 9 slots. Thus setting the value to 3 for example, creates a GUI of 27 slots to put shop category's in and 1 row that is reserved for the navigation bar.

# Possible values: 2 | 3 | 4 | 5 | 6
# Note that the navigation bar also is 1 row(unless disabled)
main-menu:
  gui-rows: 3

The fill item will fill any blank space inside the main menu, unless disabled.

# The fill item for inside the main menu which will fill empty spots
main-menu:
  fill-item:
    enable: true
    material: "RED_WOOL"
    name: " "
    lore:
    - '&aIgnore this'

Item Settings:

Bought items lore:

Configured lore for shop items can optionally be set to never be on bought items. If this is set to false, when a player buys the item, it will no longer have any of its configured lore.

#---------------------------------------ItemSettings----------------------------------------------------
# Enable/disable the lore on items given to players when a item is bought from shop
bought-items-lore: true

Allow Unsafe enchants:

Warning: Non-Vanilla Enchantment levels will be lost if the item is used in an anvil!

Allows or disallows enchantments(on items and enchanted books) greater then the maximum level in default Minecraft. true will allow levels greater than vanilla, false will revert any over-max level enchant to it's normal maximum value (ex: Unbreaking 10 will give Unbreaking 3).

# Allows enchants greater than the max level in vanilla Minecraft
allow-unsafe-enchants: true

Allow Illigal stacking:

The allow-illegal-stacks option prevents item stacks from having a bigger stack size then the default. An example would be a ender pearl which from default can only be stacked to 16 but setting this option to true allows the ender pearl to stack up to 64.

# This option will toggle whether non-stackable/over-stacked items are allowed inside the shop
# When having troubles with illegal-stack plugins and this plugin, disable this option to limit item stacking to their natural stack size to prevent future issues
allow-illegal-stacks: true

When having troubles with illegal-stack plugins and this plugin, disable this option to limit item stacking to their natural stack size to prevent future issues

Allow renamed items:

The allow-renamed-items option allows/disallows the selling of items that are renamed.

When this is false, the items that are sold to the shop need to have the same name as the shop items displayed in shop.

# Allows items with a different name to be sold to the shop
allow-renamed-items: true

Allow lore items:

The allow-lore-items option controls whether or not the sold items to the shop need to have matching lore.

When this is set to false, the items that are being sold to shop need to have matching lore with the shop item.

# Allows items with different lore to be sold to the shop
allow-lore-items: true

Lore arrangement:

The lore arrangement option allows to arrange shop item lore completely. Display lore is seperated into 6 different(9 for premium) parts so to call, each part can be arranged from each other in a different order.

Default order of lore:

  1. Special lore

    • Contains seasonal pricing lore

    • Contains lore for item requirements like levels, item permssions.

  2. Buy prices

    • Contains lore for buy prices

  3. Item requirements *Premium feature

    1. Lore for item requirements

  4. Sell prices

    • Contains lore for sell prices

  5. Decoration lore

    • Contains additional buy/sell lore which is added to shop items with buy/sell prices

  6. Item lore

    • Contains the item lore itself/the lore configured for this shop item

  7. Item stock *Premium feature

    • Contains lore for limited item stock

  8. Sell limit *Premium feature

    • Contains lore for limited sell items

  9. Admin lore

    • Contains item index lore

    • Contains item editor lore

lore-arrangement:
- 'special-lore'
- 'buy-prices'
- 'sell-prices'
- 'decoration-lore'
- 'item-lore'
- 'item-stock'
- 'sell-limit'
- 'admin-lore'

Sold Items Ignore NBT Tags:

A list of tags that will be ignored when selling items to the shop/server. Certain items gets extra tags applied to them when placed or used and then cannot be sold to the server. this list will ignore those nbt tags

  • Any other NBT tag on the item attempting to be sold will block that item from being sold if those additional tags are not exactly replacted by an item defined in the shops.yml

    • ex: if you have a diamond_pickaxe in the shop with efficiency:3, and the player adds silk_touch to it. And there is no diamond_pickaxe with efficency:3 AND silk_touch defined in the shop(s), it cannot be sold to the server

  • RepairCost is the tag Mojang uses in an anvil to track repair/enchant cost.

  • [Empty Shulker boxes get additional tags assigned to them when placed/used, will update this with those later]

# The NBT Tags listed below will be ignored when a item gets sold to the shop
# For example:
# When a tool/armor is damaged it cannot be sold to the server by default, if you add the 'Damage' tag to the list below. A damaged item can be sold to the shop
sold-items-ignored-NBTtags:
- 'RepairCost'
- ''
# The 'RepairCost' tag is added by default since all items that get repaired by anvil/mending will get it, if we don't add it to the ignored list, a item repaired will not be able to be sold to the server

Max Pages:

Specify the maximum number of pages a shop should calculate up too: (Note: there is a hardcoded max of 100 pages. anything over this is a ridiculous number of items to try to load.

# Set the limit for maximum pages inside a shop section, default is 50 but you can expand it to 100 if needed
max-page-size: 50
# Note: 50 pages is already a limit of 2250 items(50 * 45) inside one shop section which will most likely never be used

Seasonal pricing

Seasonal pricing adds support for RealisticSeasons making it possible to add/remove a certain price modifier per season from the item or whole section.

# In combination with the plugin RealisticSeasons, you are able to add price modifiers for items per season
enable-seasonal-pricing: false

Modifiers

Modifiers are a percent of the price which is added/removed during a specific season. It is possible to add modifiers for a specific shop item only or a complete section with the underlying shop items.

Note that modifiers are always calculated from the original price, meaning that if the next season the same item/shop has a modifier, it will be calculated of the original price.

season-price-modifiers:
  Spring:
    # Increased amount of flowers in Spring
    Dyes: "-50%"
    # Increased amount of mobs spawn in Spring
    Food: "-25%"
    # No ice will spawn in Spring
    Blocks:6: "+50%"
    # Increased amount of Sheeps spawn in Spring
    Spawners:26: "-25%"
    # Increased amount of Cows spawn in Spring
    Spawners:10: "-25%"
    # Increased amount of Rabbits spawn in Spring
    Spawners:25: "-25%"
    # Increased amount of Chickens spawn in Spring
    Spawners:8: "-25%"
    # Players will require Leather armor to warm up
    Farming:15: "+30"
  Summer:
    # Most crops/plants will grow twice as fast in Summer
    Farming: "+35%"
  Fall:
    # Increased amount of Mooshrooms spawn
    Spawners:20: "-50%"
    # Increased amount of frogs spawn
    Spawners:13: "-50%"
    # Increased amount of Spiders spawn
    Spawners:31: "-40%"
    # Increased amount of Cave Spiders spawn
    Spawners:7: "-25%"
    # Increased amount of Red Mushrooms spawn
    Farming:24: "-75%"
    # Increased amount of Brown Mushrooms spawn
    Farming:7: "-75%"
    # Increased amount of foxes spawn
    Mobs:18: "+25%"
  Winter:
    # Increased amount of Ice will spawn
    Blocks:6: "+50%"
    # Increased amount of Wolves will spawn
    Spawners:35: "-50%"
    # Most crops/plants won't grow in Winter
    Farming: "-20%"
    # Players will require Leather armor to warm up
    Farming:15: "+45"

Seasonal lore

Seasonal lore appears on shop items, letting the player know there is a special price for the item because of the current season. Each season has its own icon and will be displayed differently.

seasonal-lore:
  enabled: true
  Summer:
    icon: '&e&l☀'
  Spring:
    icon: '&6&l🌱'
  Fall:
    icon: '&c&l🍂'
  Winter:
    icon: '&b&l❄'

Discounts

Discounts are a list of multiple shop sections with each a different set of discounts, each shop section can hold different groups with each a percentage of the amount of the discount.

Players with the permission node EconomyShopGUI.discounts.<group> inside your permissions system will then get the specified discount for the whole shop section.

# Enable or disable discounts inside the shop
enable-discounts: false

You will need to enable the discounts with the option above to use this feature!

# Here you can set all discounts active inside the shop
# Every entry is a shop section that holds the permission nodes with their discounts
discounts:
  # Section blocks
  Blocks:
    # Players with the permission node EconomyShopGUI.discounts.vip inside your permissions system will get 20% discount on every item inside this section.
    vip: 20
    # Players with the permission node EconomyShopGUI.discounts.gold inside your permissions system will get 2.5% discount on every item inside this section.
    gold: 2.5
  Farming:
    vip: 15
  Redstone:
    diamond: 30
  all: # Players with the permission 'EconomyShopGUI.discounts.lucky' will get a 1% discount on every item inside the shop
    lucky: 1
# If a player has for example access to 2 permission discounts inside the same shop section, the group with the highest discount will be active

You can use the 'all' placeholder to give all sections the same discounts without specifieng them seperately.

Sell multipliers

Sell multipliers are a list of multiple shop sections with each a different set of multipliers, each shop section can hold different groups with each a percentage of the amount of the multiplier.

Players with the permission node EconomyShopGUI.sell-multipliers.<group> inside your permissions system will then get the specified multiplier for the whole shop section.

# Enable or disable sell multipliers
enable-sell-multipliers: true

You will need to enable the discounts with the option above to use this feature!

# Configure this option to use sell multipliers
# Every entry is a shop section that holds the permission nodes with its multipliers
sell-multipliers:
  all:
    # Players with the permission 'EconomyShopGUI.sell-multipliers.vip' will get an 20% multiplier on any item
    vip: 20
    # Players with the permission 'EconomyShopGUI.sell-multipliers.gold' will get an 2.5% multiplier on any item
    gold: 2.5
    # Players with the permission 'EconomyShopGUI.sell-multipliers.coal' will get an 1% multiplier on any item
    coal: 1
  Spawners:
    # Players with the permission 'EconomyShopGUI.sell-multipliers.gold' will get an extra 10% multiplier in this section
    gold: 12.5
# If a player has for example access to 2 sell multipliers inside the same shop section, the multiplier with the highest value will be active

You can use the 'all' placeholder to give all sections the same multipliers without specifieng them seperately.

Command Settings:

Commands:

Set a command to false to disable the command in ESGUI. For example if you the shop command to false, players will not be able to use /shop in your server. (this includes all it's sub commands: ie: /shop <section>) If set to true, the command will work.

Note: the /sell command is NOT part of ESGUI. It is part of Essentials (integration TBD)

#-----------------------------------------------Commands------------------------------------------------
# These are the commands included in EconomyShopGUI
# Set an command to true to enable it, and set an command to false to disable it.
commands:
    sellall: true
    shop: true
    sreload: true
    editshop: true
    sellgui: true

Command aliases:

These settings allow you to change the command name or add aliases for an command. For example this can be used to make the /shop command work when a player uses /market.

Do not use a slash('/') before the alias because it will end up in a command with double slashes(//shop)

# Set different aliases for the main shop command, defaults to /shop if empty
shop-commands:
  - "shop"
# - "market"

# Set different aliases for the sellall command, defaults to /sellall if empty
sellall-commands:
  - "sellall"

# Set different aliases for the sellgui command, defaults to /sellgui if empty
sellgui-commands:
  - "sellgui"

Global GUI Settings:

Option items:

These settings can be changed to customize the items in the transaction screens, as many items as you like are allowed in the GUI.

  • menu-size: - Sets the menu size in rows

Available item options:

  • material: - Specifies the item type

  • slot: - Specifies the slot of the item inside the GUI

  • stack-size: - Specifies the stack size of the item

    • Also specifies the buy/sell quantity when using action 'INSTA_BUY'/'INSTA_SELL'

  • name: - Specifies the item name

  • lore: - Specifies the item lore

  • skull-owner: Specifies a skull owner

  • type: - The item type, mostly internal use

    • Available item types: SELECTED_ITEM, ACTION, CONFIRM

  • skullowner: - Specifies the owner of the player head

  • skull-texture: - Specifies a custom skull texture *Premium feature

  • NBTData: - Specifies raw NBTData for the item *Premium feature

  • commands: - The commands executed when the player clicks the item *Premium feature

    • You may use the %player% placeholder

    • The action of the item needs to be set to COMMAND for this to work

  • action: - Action upon clicking items

    • Available actions: REMOVE32, REMOVE16, REMOVE1, ADD1, ADD16, ADD32, CONFIRM_TRANSACTION, SELL_ALL, OPEN_BUYSTACKS, CLOSE, COMMAND, INSTA_BUY, INSTA_SELL

Item actions:

  • INSTA_BUY/INSTA_SELL

    • Instantly completes the transaction of the set amount using option stack-size

  • REMOVE32, REMOVE16, REMOVE1, ADD1, ADD16, ADD32

    • Adds/removes the amount to the current selected amount of items

  • CONFIRM_TRANSACTION

    • Completes the current transaction with the selected amount

  • SELL_ALL

    • Sells all of the selected item in the player's inventory

  • OPEN_BUYSTACKS

    • Opens the buy stacks screen

  • CLOSE

    • Closes the GUI and discards the transaction

  • COMMAND *Premium feature

    • Executes the list of commands specified using the commands option

# These settings can be changed to customize the option items inside the buy/sell screen

# The following placeholders can be used to get the displayname of the item from your language file
# %translations-min-thirty-two%
# %translations-min-sixteen%
# %translations-min-one%
# %translations-plus-one%
# %translations-plus-sixteen%
# %translations-plus-thirty-two%
# %translations-buy%
# %translations-buy-stacks%
# %translations-sell-all%
# %translations-sell%
# Buy screen
buy-screen:
    menu-size: 6
    items:
    items:
      Fill1:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 0
      Fill2:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 1
      Fill3:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 2
      Fill4:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 9
      Fill5:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 18
      Fill6:
        material: ORANGE_STAINED_GLASS_PANE
        name: ' '
        slot: 10
      Fill7:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 8
      Fill8:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 7
      Fill9:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 26
      Fill10:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 17
      Fill11:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 6
      Fill12:
        material: ORANGE_STAINED_GLASS_PANE
        name: ' '
        slot: 16
      1:
        material: magenta_stained_glass_pane
        name: '%translations-min-thirty-two%'
        stack-size: 32
        action: REMOVE32
        slot: 29
      2:
        material: magenta_stained_glass_pane
        name: '%translations-min-sixteen%'
        stack-size: 16
        action: REMOVE16
        slot: 20
      3:
        material: magenta_stained_glass_pane
        name: '%translations-min-one%'
        action: REMOVE1
        slot: 21
      4:
        material: light_blue_stained_glass_pane
        name: '%translations-plus-one%'
        action: ADD1
        slot: 23
      5:
        material: light_blue_stained_glass_pane
        name: '%translations-plus-sixteen%'
        stack-size: 16
        action: ADD16
        slot: 24
      6:
        material: light_blue_stained_glass_pane
        name: '%translations-plus-thirty-two%'
        stack-size: 32
        action: ADD32
        slot: 33
      7:
        material: STRUCTURE_VOID
        name: '%translations-buy%'
        lore:
        - '&3%price%'
        action: CONFIRM_TRANSACTION
        slot: 39
        type: CONFIRM
      8:
        slot: 31
        type: SELECTED_ITEM
      9:
        material: ender_pearl
        name: '%translations-buy-stacks%'
        slot: 13
        action: OPEN_BUY_STACKS
      10:
        material: BARRIER
        name: '&cAbort'
        slot: 41
        action: BACK
      Fill13:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 52
      Fill14:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 51
      Fill16:
        material: ORANGE_STAINED_GLASS_PANE
        name: ' '
        slot: 43
      Fill17:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 53
      Fill18:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 44
      Fill19:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 26
      Fill20:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 17
      Fill21:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 35
      Fill22:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 45
      Fill23:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 46
      Fill24:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 47
      Fill25:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 36
      Fill26:
        material: GRAY_STAINED_GLASS_PANE
        name: ' '
        slot: 27
      Fill27:
        material: ORANGE_STAINED_GLASS_PANE
        name: ' '
        slot: 37

# Sell screen
sell-screen:
    menu-size: 5
    items:
      1:
        material: magenta_stained_glass_pane
        name: '%translations-min-thirty-two%'
        stack-size: 32
        action: REMOVE32
        slot: 19
      2:
        material: magenta_stained_glass_pane
        name: '%translations-min-sixteen%'
        stack-size: 16
        action: REMOVE16
        slot: 20
      3:
        material: magenta_stained_glass_pane
        name: '%translations-min-one%'
        action: REMOVE1
        slot: 21
      4:
        material: light_blue_stained_glass_pane
        name: '%translations-plus-one%'
        action: ADD1
        slot: 23
      5:
        material: light_blue_stained_glass_pane
        name: '%translations-plus-sixteen%'
        stack-size: 16
        action: ADD16
        slot: 24
      6:
        material: light_blue_stained_glass_pane
        name: '%translations-plus-thirty-two%'
        stack-size: 32
        action: ADD32
        slot: 25
      7:
        material: paper
        name: '%translations-sell%'
        lore:
        - '&3%price%'
        action: CONFIRM_TRANSACTION
        slot: 13
        type: CONFIRM
      8:
        slot: 22
        type: SELECTED_ITEM
      9:
        material: emerald
        name: '%translations-sell-all%'
        slot: 31
        action: SELL_ALL

# Buy stacks screen
buy-stacks-screen:
    menu-size: 5
    items:
      1:
        material: magenta_stained_glass_pane
        name: '%translations-min-thirty-two%'
        stack-size: 32
        action: REMOVE32
        slot: 19
      2:
        material: magenta_stained_glass_pane
        name: '%translations-min-sixteen%'
        stack-size: 16
        action: REMOVE16
        slot: 20
      3:
        material: magenta_stained_glass_pane
        name: '%translations-min-one%'
        action: REMOVE1
        slot: 21
      4:
        material: light_blue_stained_glass_pane
        name: '%translations-plus-one%'
        action: ADD1
        slot: 23
      5:
        material: light_blue_stained_glass_pane
        name: '%translations-plus-sixteen%'
        stack-size: 16
        action: ADD16
        slot: 24
      6:
        material: light_blue_stained_glass_pane
        name: '%translations-plus-thirty-two%'
        stack-size: 32
        action: ADD32
        slot: 25
      7:
        material: paper
        name: '%translations-buy%'
        lore:
        - '&3%price%'
        action: CONFIRM_TRANSACTION
        slot: 13
        type: CONFIRM
      8:
        slot: 22
        type: SELECTED_ITEM

These settings allow you to change the navigation bars(bottom row) of the shop.

There are 4 sorts of navigation bars you can modify differently from each other. One being the navigation bar used in the main menu, one being the navigation bar used in every shop category, one being the navigation bar used in the transaction screens and the last one that is used in the /sellGUI screen.

Available item options:

  • material: - Specifies the item type

  • name: - Specifies the item name

  • lore: - Specifies the item lore

  • skullowner: - Specifies a skull owner

  • skull-texture: - Specifies a custom skull texture *Premium feature

  • NBTData: - Specifies raw NBTData for the item *Premium feature

  • commands: - The commands executed when the player clicks the item *Premium feature

    • The action of the item needs to be set to COMMAND for this to work

    • You may use the %player% placeholder

  • action: - Action upon clicking items

    • Available actions: TOGGLE_MODE, PAGE_BACK, PAGE_NEXT, BACK, COMMAND, CHANGE_SEARCH_MODE(*Premium)

# Valid placeholders:
# %player_name% = the player name
# %player_balance% = the player's balance
# %player_level% = the player's ingame experience level
# %translations-money% = the translated message of 'money'
# %translations-level% = the translated message of 'level'
# %translations-previous-page% = the translated message of 'previous-page'
# %translations-current-page% = the translated message of 'current-page'
# %translations-next-page% = the translated message of 'next-page'
# %translations-back% = the translated message of 'back'
# %translations-cancel% = the translated message of 'cancel'

# The navigation bar that appears in the main menu
main-menu-nav-bar:
    1:
      material: gray_stained_glass_pane
      name: ' '
      lore: 
      - ''
    2:
      material: gray_stained_glass_pane
      name: ' '
    3:
      material: gray_stained_glass_pane
      name: ' '
    4:
      material: gray_stained_glass_pane
      name: ' '
    5:
      material: gray_stained_glass_pane
      name: ' '
    6:
      material: gray_stained_glass_pane
      name: ' '
    7:
      material: gray_stained_glass_pane
      name: ' '
    8:
      material: gray_stained_glass_pane
      name: ' '
    9:
      material: structure_void
      name: '%translations-cancel%'
      action: BACK

# The navigation bar that appears in every shop category
shops-nav-bar:
    1:
      material: player_head
      skullowner: '%player_name%'
      name: '%player_name%'
    2:
      material: air
    3:
      material: air
    4:
      material: red_stained_glass_pane
      name: '%translations-previous-page%'
      action: PAGE_BACK
    5:
      material: paper
      name: '%translations-current-page%'
    6:
      material: blue_stained_glass_pane
      name: '%translations-next-page%'
      action: PAGE_NEXT
    7:
      material: air
    8:
      material: air
    9:
      material: structure_void
      name: '%translations-back%'
      action: BACK

# The navigation bar that appears in the buy/sell screens and the buy stacks screen
transaction-screen-nav-bar:
    1:
      material: player_head
      skullowner: '%player_name%'
      name: '%player_name%'
    2:
      material: air
    3:
      material: air
    4:
      material: air
    5:
      material: air
    6:
      material: air
    7:
      material: air
    8:
      material: air
    9:
      material: barrier
      name: '%translations-back%'
      action: BACK
      
# The navigation bar that appears in the /sellGUI screen
sellgui-nav-bar:
  1:
    material: "GRAY_STAINED_GLASS_PANE"
    name: " "
  2:
    material: "GRAY_STAINED_GLASS_PANE"
    name: " "
  3:
    material: "GRAY_STAINED_GLASS_PANE"
    name: " "
  4:
    material: "GRAY_STAINED_GLASS_PANE"
    name: " "
  5:
    material: NETHER_STAR
    name: "&a&lSellGUI"
    lore:
      - "&6Drop items in to sell"
      - "&6upon closing, everything will be sold."
      - "&eItems that couldn't be sold"
      - "&ewill be given back to you."
  6:
    material: "GRAY_STAINED_GLASS_PANE"
    name: " "
  7:
    material: "GRAY_STAINED_GLASS_PANE"
    name: " "
  8:
    material: "GRAY_STAINED_GLASS_PANE"
    name: " "
  9:
    material: "GRAY_STAINED_GLASS_PANE"
    name: " "

Disable back button:

Some server owners may want to setup their shop so player(s) must click on a NPC/shop stand to open a specific shop section, but not go back to the main shop menu. If so, it is possible to disable the back button in some cases.

#------------------------------------DisableBackButton--------------------------------------------------
# Disables the ability to go back to the previous shop menu
disable-back:
  # When enabled, the back button will be disabled on direct shop command(/shop <section>)
  direct-shop-command: false
  # When enabled, the back button will be disabled on direct shop command executed from console(/shop <section> <player>)
  # Useful for NPC shops which are opened using /shop <section> <player> to prevent the player returning to the main menu
  direct-shop-command-console: false
  # When enabled, the back button won't be usable for any subsections located inside any shops with a disabled back button
  sub-sections: false

Global Messages:

Player Join Message:

Do you want ESGUI to send a special join message when players join the server? Set this to true to enable this feature, false to disable. This join message can be configured with the joinmessage: setting. You can use minecraft color codes with in this message.

Note: This sentence must always begin and end with a double-quote character.

#---------------------------------------JoinMessage-----------------------------------------------------
# Here you can enable or disable the JoinMessage
enable-joinmessage: false

Level event:

If enabled you can set the amount of money a player will get when he reaches levels 5, 10, and 15 by changing the amount behind the option: leveleventmoney5/10/15: And you can set the money for reaching level 20, 25 and 30 respectively: leveleventmoney20/25/30: The message sent to the player is the levelevent-message:, you may change this message to whatever you like. Color codes are supported.

#-----------------------------------------------LevelEvent----------------------------------------------
# Here you can enable or disable the LevelEvent
enable-levelevent: false
# Here you can set the amount of money a player gets when he is level 5, 10, 15
leveleventmoney5/10/15: 10
# Here you can set the amount of money a player gets when he is level 20, 25, 30
leveleventmoney20/25/30: 50

Spawner Settings:

The settings below are only affective when you've set the spawner provider to DEFAULT.

Spawner events:

Break event:

When enable-spawnerbreak: true is enabled, you can mine spawner-blocks with a pickaxe and the spawner with the entity will be returned to the player breaking it. Set to false to disable this within ESGUI. (advanced compatibility and troubleshooting)

Place event:

If enable-spawnerplace: is set to false, then you will not be able to place spawners and assign the correct mob to them with ESGUI.

# If you set this to 'false' you can only place spawners that are bought, you won't be able to get them back with an (Silk Touch) pickaxe.
enable-spawnerbreak: true

# When this option is set to false, you will no longer be able to place spawners bought from the shop with the EconomyShopGUI spawner system.
enable-spawnerplace: true

Spawner settings:

Spawner EXP:

player-placed-spawners-drop-exp: false is disabled by default to prevent EXP duping from constantly re-placing the block. vanilla Minecraft gives some EXP when it is broken.

# This option will disable/enable the XP dropped when a spawner is broken.
player-placed-spawners-drop-exp: false

Change spawner type:

This option defaults to false

This option allows you to disable players changing the spawner using spawn eggs.

# This option disallows players to right-click a spawner with a spawn egg to change its spawned type when disabled
allow-spawner-type-change: false

Spawner Break Tools:

These settings allow you to change which tools are allowed to break a spawner and drop it. This allows you to set a unlimited amount of allowed tools

The enchantments option allows you to give the tool multiple enchantments, the tool must have ATLEAST the enchantments set. Meaning that when the pickaxe, stick, ... has more/higher enchantments then set, the spawner will still be dropped.

Note: These are the internal ESGUI spawner-break/place settings and do not apply if 3rd party plugin compatibility is enabled/working ie: SlikSpawners, UltimateStacker, ...)

# Set the items that are allowed to break a spawner
# If a spawner gets broken with another item then listed here, the spawner will not be given to the player
spawner-break-tools:

  1:
    material: DIAMOND_PICKAXE
    enchantments:
    - "SILK_TOUCH"
  2:
    material: IRON_PICKAXE
    enchantments:
    - "SILK_TOUCH"
    - "EFFICIENCY:2" # This means that the pickaxe needs ATLEAST efficiency 2 for a spawner to be mined
  3:
    material: NETHERITE_PICKAXE
    enchantments:
      - "SILK_TOUCH"

Last updated