SpygChestShop is a Minecraft plugin that allows players to create, manage, and interact with chest-based shops. It supports buying and selling items, player shop management, and integrates with Vault for economy support.
- Create and manage chest shops
- Add/remove players to shops
- Set buy/sell prices
- Shop GUIs for easy management
- Multi-language support (EN, HU, PL)
- Permissions for fine-grained control
- Hologram and inventory integration
- Download the plugin JAR and place it in your server's
pluginsfolder. - Ensure you have Vault and a compatible economy plugin installed.
- Start or reload your server. The plugin will generate default configuration and locale files.
/spygchestshop list [page]— List your shops (permission:spygchestshop.use)/spygchestshop create <shop-name>— Create a new shop (permission:spygchestshop.use)/spygchestshop remove <shop-name>— Remove a shop (permission:spygchestshop.use)/spygchestshop rename <old-name> <new-name>— Rename a shop (permission:spygchestshop.use)/spygchestshop add <shop-name> <player>— Add a player to your shop (permission:spygchestshop.use)/spygchestshop removeplayer <shop-name> <player>— Remove a player from your shop (permission:spygchestshop.use)/spygchestshop reload— Reload configuration (permission:spygchestshop.admin.reload)/spygchestshop admin list <target> [page]— List a target player's shops (permission:spygchestshop.admin.list)/spygchestshop admin customer [target]— Open your own shops as a customer (permission:spygchestshop.admin.customermode)
spygchestshop.use— Use basic shop commandsspygchestshop.admin.*— All admin permissionsspygchestshop.max.<group>— Set max shop count for permission groupspygchestshop.list— List shops
Edit config.yml to customize:
- Locale/language
- Shop creation price
- Minimum item durability
- Price formats
- Enable/disable decimals
- Shop name length
- Disabled worlds
- Max shops/players
- Hologram settings
Edit guis.yml to customize GUI titles, slots, and item appearances.
You can add custom model data ("model-data") to items in your GUIs for resource pack support and custom textures. This is useful for making GUI items appear unique or custom-skinned.
How to add model-data:
Add a model-data field to the relevant item section in your guis.yml (or equivalent GUI config). For example:
inventory:
title: '&cShopInventory'
slot: 18
item: item_stack as bytearray
model-data: # You can define custom model as follows, it can be a list of integers/strings. You don't need to use both types, just one is enough.
floats: [123, 456] # Add an integer (or float) identifier
strings: ['custom_chest', 'custom_chest_2'] # Add a string identifier
lore:
- '&7Click to open the shop inventory' inventory:
title: '&cShopInventory'
slot: 18
item: item_stack as bytearray
model-data:
strings: ['custom_chest'] # Add a string identifier
lore:
- '&7Click to open the shop inventory'- The
model-datafield can contain eitherfloats(integers) orstrings, or both. - Not all items need this field, only add it where you want a custom model.
- If you don't see the custom model in-game, make sure your resource pack is loaded and the item type supports custom model data.
Locale files are in src/main/resources/locale/ (e.g., en_US.yml, hu_HU.yml, pl_PL.yml).
Set your preferred language in config.yml with the locale option.
- Open a shop to manage items, prices, and players via an interactive GUI.
- Use left/right click to set buy/sell prices.
- View shop info, inventory, and added players.
ChestShop— Main plugin classShop— Represents a shopShopFile— Handles shop data storageShopGui,DashboardGui,PlayersGui— GUI classesConfig,GuiConfig,MessageConfig— Configuration management
ShopCreateEvent— Fired when a shop is createdShopRemoveEvent— Fired when a shop is removed
- Add new commands using LiteCommands annotations
- Extend GUIs by editing
GuiConfigor implementing new GUI classes - Listen to shop events for custom logic
- Requires Vault for economy
- Uses Spyg lib for YAML/config management
This plugin is licensed under the Apache License 2.0.
For more details, see the source code or contact the authors (@ikoli, @Ris).