Shop Configuration
Complete guide to configuring the EssentialsC shop system. Set up categories, items, pricing, and GUI customization.
On This Page
General Settings
These settings control the main behavior and appearance of the shop system. Located in plugins/EssentialsC/shop/config.yml.
Master toggle for the entire shop system. When set to false, all shop commands and functionality will be disabled.
shop:
enabled: true # Set to false to disable the shop completely
The title displayed at the top of the main shop menu GUI. Supports MiniMessage formatting for colors and styles. Use <b> for bold, <#RRGGBB> for hex colors.
shop:
main-menu-title: "<#F52727>Server Shop" # Red bold title
# Alternative examples:
# main-menu-title: "My Awesome Shop"
# main-menu-title: "⚡ SHOP ⚡"
The size of the main shop menu inventory in slots. Must be a multiple of 9 (9, 18, 27, 36, 45, or 54). This determines how many category icons can be displayed on the main menu.
shop:
main-menu-size: 54 # 6 rows of 9 slots
# Smaller shops can use:
# main-menu-size: 27 # 3 rows
The title format for category selection items in the main menu. Use <category> as a placeholder that will be replaced with the category's display name.
shop:
category-title: "<#F52727>" # Displays category name in red
The title displayed at the top of individual category shop GUIs. The <category> placeholder is replaced with the category's display name.
shop:
category-menu-title: "<#F52727>Shop - "
Whether to display a close button in shop GUIs. When enabled, players can click this button to close the shop inventory.
shop:
close-button-enabled: true # Set to false to remove close button
The number of shop items displayed per page in a category menu. The remaining slots are used for navigation buttons (next/previous page, back, close). Maximum recommended is 45 for a 54-slot inventory.
shop:
items-per-page: 28 # Leaves room for navigation buttons
When enabled, empty slots in shop GUIs will be filled with the material specified in fill-material. This creates a cleaner visual appearance.
shop:
fill-empty-slots: true # Fill empty slots with decorative glass
The Minecraft material used to fill empty slots when fill-empty-slots is enabled. Must be a valid Bukkit Material enum value. Common choices include BLACK_STAINED_GLASS_PANE, GRAY_STAINED_GLASS_PANE, or BARRIER.
shop:
fill-material: "BLACK_STAINED_GLASS_PANE"
# Other options:
# fill-material: "GRAY_STAINED_GLASS_PANE"
# fill-material: "LIGHT_BLUE_STAINED_GLASS_PANE"
Whether to log all shop transactions (buy/sell) to the console and log files. Useful for tracking economy activity and detecting abuse.
shop:
log-transactions: true # Logs all buys/sells to console
Currency Settings
Configure the currency names used throughout the shop system. The plugin automatically uses singular or plural forms based on the amount.
The singular form of your server's currency. Used when the price is exactly 1.0 (e.g., "1 Dollar").
shop:
currency:
singular: "Dollar" # "1 Dollar"
# Alternative examples:
# singular: "Coin"
# singular: "Gem"
# singular: "Credit"
The plural form of your server's currency. Used when the price is not 1.0 (e.g., "5 Dollars", "0.5 Dollars").
shop:
currency:
plural: "Dollars" # "5 Dollars", "100 Dollars"
# Alternative examples:
# plural: "Coins"
# plural: "Gems"
# plural: "Credits"
Category Configuration
Categories are defined in individual YAML files located in plugins/EssentialsC/shop/categories/. Each category represents a section of your shop (e.g., Blocks, Tools, Food).
The unique identifier for the category. This is automatically set based on the filename and cannot be changed. Used internally to reference the category in commands and permissions.
# File: blocks.yml
# The ID would be "blocks"
# Access permission: essentialsc.shop.category.blocks
The display name shown to players for this category. Supports MiniMessage formatting. This appears in the main menu and category GUI titles.
displayName: "<#00FF00>Building Blocks"
# or
displayName: "Tools & Weapons"
The Minecraft material displayed as the category icon in the main shop menu. Must be a valid Bukkit Material enum value.
icon: "STONE" # For a blocks category
icon: "DIAMOND_SWORD" # For a weapons category
icon: "GOLDEN_APPLE" # For a food category
icon: "PLAYER_HEAD" # Can use with textureUrl for custom icons
When icon is set to PLAYER_HEAD, this URL points to the skin texture to display. Use direct links to Minecraft skin textures or Base64 encoded textures.
icon: "PLAYER_HEAD"
textureUrl: "http://textures.minecraft.net/texture/..."
Additional lines of text displayed when hovering over the category icon. Supports MiniMessage formatting. Use this to describe what items are in the category.
lore:
- "Click to browse"
- "building materials"
- ""
- "Includes:"
- " • Stone variants"
- " • Wood types"
The inventory slot (0-indexed) where this category appears in the main shop menu. Must be within the bounds of main-menu-size. Slots 0-8 are typically reserved for navigation or decoration.
slot: 10 # Second row, second column (0-indexed)
# Slot layout for 54-slot inventory:
# Row 1: 0-8 Row 4: 27-35
# Row 2: 9-17 Row 5: 36-44
# Row 3: 18-26 Row 6: 45-53
The filename used to save this category. Automatically set to the category ID plus .yml extension. Generally should not be changed manually.
Whether this category is visible and accessible in the shop. Set to false to temporarily disable a category without deleting its configuration.
enabled: true # Set to false to hide this category
Optional permission required to view and access this category. If set, players without this permission will not see the category in the main menu. Leave empty or null to allow all players.
permission: "essentialsc.shop.vip" # Only VIPs can see this category
# or leave empty for no restriction:
permission: ""
Internal data structure storing items organized by page and slot. Items are automatically added to this structure when configured. You typically do not edit this manually; use the in-game commands or item configuration section instead.
Item Configuration
Shop items are defined within category files. Each item represents a product that players can buy or sell. Items support extensive customization including enchantments, NBT data, special types (spawners, enchanted books), and commands.
Unique identifier for this shop item. Must be unique within the category. Used internally and for admin commands to reference this specific item.
id: "diamond_sword_sharpness"
id: "oak_wood_stack"
id: "zombie_spawner"
The Minecraft material this shop item represents. Must be a valid Bukkit Material enum value. This determines the base item type.
material: "DIAMOND_SWORD"
material: "OAK_LOG"
material: "PLAYER_HEAD" # Use with textureUrl or skullOwner
The quantity of the item given when purchased or required when selling. This is the base unit for pricing. For example, if amount is 16 and buyPrice is 10, players pay 10 currency for 16 items.
amount: 1 # Sell individual items
amount: 16 # Sell by the stack (16 for most items, 64 for full stacks)
amount: 64 # Sell full stacks
Custom name displayed for this item in the shop GUI. Supports MiniMessage formatting. If not set, uses the default Minecraft item name.
displayName: "<#FF0000>Legendary Sword"
displayName: "Shiny Apple"
Description lines shown when hovering over the item. Supports MiniMessage formatting. These appear below the auto-generated price/stock information in the shop GUI.
lore:
- "A powerful weapon"
- "forged in the"
- "Depths of Hell"
- ""
- "Special Ability:"
- "• Fire Aspect"
The price players pay to purchase this item. Set to 0 or negative to make the item unbuyable (unless buyable is explicitly set). Price is for the quantity specified in amount.
buyPrice: 100.0 # Costs 100 currency
buyPrice: 0.0 # Free item
buyPrice: 9999.99 # Expensive rare item
The price players receive when selling this item. Set to 0 or negative to prevent selling. Price is for the quantity specified in amount.
sellPrice: 50.0 # Players get 50 currency
sellPrice: 0.0 # Cannot sell this item
Whether players can purchase this item. When false, the buy price will not be displayed and players cannot left-click to buy.
buyable: false # Sell-only item (players can only sell to shop)
buyable: true # Can be purchased
Whether players can sell this item to the shop. When false, the sell price will not be displayed and players cannot right-click to sell.
sellable: false # Buy-only item (shop sells but doesn't buy)
sellable: true # Can be sold to shop
The inventory slot (0-indexed) where this item appears in the category GUI. Must be within the page layout considering items-per-page. Avoid slots used for navigation buttons (typically last row).
slot: 10 # Position on the page
page: 1 # Which page this appears on
Which page of the category this item appears on. Categories support multiple pages of items. Page 1 is the first page.
page: 1 # First page
page: 2 # Second page (requires items-per-page to be exceeded)
Optional permission required to view and purchase this item. Players without this permission will not see the item in the shop.
permission: "essentialsc.shop.legendary"
permission: "vip.shop.access"
The available quantity of this item in the shop. Set to -1 for unlimited stock. When set to a positive number, each purchase decrements the stock. When stock reaches 0, the item cannot be purchased until restocked.
stock: -1 # Unlimited stock (default)
stock: 100 # Limited to 100 purchases
stock: 0 # Out of stock (unbuyable)
Maximum stack size for this item when shift-clicking to buy/sell stacks. Normally 64 for most items, but can be set lower for items like ender pearls (16), snowballs (16), etc.
maxStack: 64 # Standard stack size
maxStack: 16 # For ender pearls, snowballs, buckets
maxStack: 1 # For unstackable items
Commands executed when this item is purchased. Use {player} as a placeholder for the buyer's name. Commands are executed by the console. Useful for giving permissions, executing kit commands, or running custom scripts.
commands:
- "give {player} diamond 1"
- "lp user {player} permission set vip.true"
- "broadcast {player} bought a VIP rank!"
The category ID this item belongs to. Automatically set when the item is added to a category. Generally should not be changed manually.
Item Appearance Options
Adds an enchantment glint effect to the item without actually enchanting it. Uses a hidden Unbreaking I enchantment. Useful for highlighting special or featured items.
glow: true # Item will have enchantment shimmer
glow: false # Normal appearance
For PLAYER_HEAD items, specifies the direct URL to a Minecraft skin texture. The texture will be applied to the head item.
material: "PLAYER_HEAD"
textureUrl: "http://textures.minecraft.net/texture/..."
For PLAYER_HEAD items, sets the owner to a specific player's skin. The head will display that player's skin texture. Alternative to textureUrl for using actual player skins.
material: "PLAYER_HEAD"
skullOwner: "Notch" # Will display Notch's skin
Regular enchantments applied to the item when purchased. These are standard item enchantments (not stored in books). Use Bukkit enchantment names as keys.
enchantments:
SHARPNESS: 5
FIRE_ASPECT: 2
LOOTING: 3
Hide specific item attributes from the tooltip. Useful for hiding enchantments (when using glow), attributes, or other vanilla item information.
itemFlags:
- "HIDE_ENCHANTS"
- "HIDE_ATTRIBUTES"
- "HIDE_UNBREAKABLE"
Custom NBT data stored in the item's PersistentDataContainer. Useful for plugin integration or tracking items. Keys are stored under the EssentialsC namespace.
nbtData:
shop_item_id: "special_sword_001"
tier: "legendary"
Special Item Types
When set to true, this item becomes a monster spawner. The material will automatically be set to SPAWNER if not already. Use with spawnerType to specify the entity.
spawner: true
spawnerType: "ZOMBIE" # Creates a Zombie Spawner
The entity type for spawner items. Must be a valid Bukkit EntityType. Common values: ZOMBIE, SKELETON, SPIDER, CAVE_SPIDER, BLAZE, CREEPER, etc. Defaults to PIG if invalid.
spawner: true
spawnerType: "BLAZE" # Blaze spawner
spawnerType: "WITHER" # Wither spawner
spawnerType: "ENDERMAN" # Enderman spawner
When set to true, this item becomes an enchanted book. The material will automatically be set to ENCHANTED_BOOK. Use with storedEnchantments to define the enchantments stored in the book.
enchantedBook: true
storedEnchantments:
MENDING: 1
UNBREAKING: 3
Enchantments stored in an enchanted book. These are different from regular enchantments - they are stored in the book and can be applied to items via anvil. Only used when enchantedBook is true.
enchantedBook: true
storedEnchantments:
SHARPNESS: 5
LOOTING: 3
SWEEPING_EDGE: 3
Example Configuration
Here's a complete example of a category file with various item types.
# File: plugins/EssentialsC/shop/categories/tools.yml
displayName: "<#00AA00>Tools & Weapons"
icon: "DIAMOND_PICKAXE"
lore:
- "High quality tools"
- "for every job"
slot: 11
enabled: true
permission: ""
items:
diamond_pickaxe_efficiency:
id: "diamond_pickaxe_efficiency"
material: "DIAMOND_PICKAXE"
displayName: "<#00FFFF>Efficiency Pickaxe"
lore:
- "Pre-enchanted for"
- "maximum mining speed"
amount: 1
buyPrice: 500.0
sellPrice: 100.0
buyable: true
sellable: true
slot: 10
page: 1
stock: -1
maxStack: 1
enchantments:
EFFICIENCY: 5
UNBREAKING: 3
glow: true
itemFlags:
- "HIDE_ENCHANTS"
zombie_spawner:
id: "zombie_spawner"
material: "SPAWNER"
displayName: "<#FF0000>Zombie Spawner"
lore:
- "Create your own"
- "monster farm!"
amount: 1
buyPrice: 10000.0
sellPrice: 0.0
buyable: true
sellable: false
slot: 11
page: 1
stock: 5
spawner: true
spawnerType: "ZOMBIE"
mending_book:
id: "mending_book"
material: "ENCHANTED_BOOK"
displayName: "<#FFD700>Mending Book"
lore:
- "Rare enchantment"
- "for eternal gear"
amount: 1
buyPrice: 2500.0
sellPrice: 500.0
slot: 12
page: 1
enchantedBook: true
storedEnchantments:
MENDING: 1
glow: true