It's not hard to set BossShop up :)
First of all you should make sure that you have all needed plugins.
.. if you want to work with Money
.. if you want to work with Permissions
.. if you want to work with Points
.. if you want to work with Timed Commands
.. if you want to be able to open Shops with clicking a specific Item
Now you just need to edit the config files!
Useful website: http://yaml-online-parser.appspot.com/. It detects mistakes and allows to directly edit YAML files online.
The main settings look like this:
signs: enabled: true #If enabled you can open the shop via a sign MainShop: menu #Put in the name of your MAIN inventory/gui/shop
You will find a folder named "shops" in your plugin folder. Open this folder. There are different "Shops". Each file will create one GUI with unique Items and settings. All of this Files work the same way:
1. It contains Settings:
ShopName: BossShop #This is the name of the inventory signs: text: '[BossShop]' #This is the text which has to be at line 1 of a BossShop sign (You can put anything (for example a color) in front of this text) NeedPermissionToCreateSign: true #If disabled everybody is able to place/create BossShop signs
2. It contains many different ShopItems.
Every "Shop-Item" has the same structure:
<NameOfShopItem>: RewardType: <reward type> PriceType: <price type> Price: <price> Reward: <reward> MenuItem: <item data in a list> Message: <purchase message> InventoryLocation: <inventory location> ExtraPermission: <The permission you need to buy this "ShopItem> #You can leave this line empty
I'll explain everything step by step.
<Name of ShopItem>
First you need to define the name of the "ShopItem". Here you can put in everything you want. Use something which is easy to understand. This name is not displayed. It's just the virtual "name" or "id" of the "ShopItem".
- Let's pretend you want to sell a dirtblock. Then just name it dirt.
- Let's pretend you want to sell a heal-command executed by the console. Then just name your item "heal".
RewardType defines the kind of reward the players will get when they purchase this item. Existing RewardTypes:
- Item (a list of items)
- Command (a list of commands)
- TimeCommand (a list of <time>:<command>. The commands are executed after <time in seconds>)
- Permission (a list of permissions)
- Money (a number)
- Points (a number)
- Shop (Name of a shop. This opens the named shop)
- PlayerCommand (a list of commands which will be executed by the Player)
- BungeeCordServer (Name of a server. Will send the player to the named server)
- So, you want to sell dirt, right? That means you want to sell an Item. Put "item" in this line.
- You want the console to execute the command "heal". What kind of "thing" is this? Right.. a command! Put "command" in this line.
PriceType defines the kind of price the player has to pay to get this item. Existing PriceTypes:
- Money (A number)
- Points (A number)
- Exp (A number (meant is the Level))
- Item (A list of items)
- Free (Nothing. It's free!)
- What do you want the price of your dirt to be? What about 2 Exp Levels? That sounds good, doesn't it? Just write "exp" in this line.
- So you want to sell healing for money? Good idea! Write "money" in this line.
Price defines the price of your item. It can be a number/a list of items. That depends. If you chose money/points/exp as PriceType, then you need to put a number in here. Else you need a list of items.
- You chose Exp as PriceType and you want the price to be 2 Levels. Just fill in "2" here.
- You chose money as PriceType. 1000 Money is a good price. Fill in "1000".
Reward defines the "thing" you get when you purchase this item. It can be a number/a list of permissions/a list of commands/a list of items etc. That depends.
- You want that players get dirt when they purchase this item. Just put "ItemData" in here.
- You want that the console executes the heal command when somebody purchases this item. Just write "heal %name%" in this line.
This is the item which is visible in the GUI/Menu. You can define it's name/lore/durability/enchantments etc. Just put in "ItemData"
- The basic ItemData of the dirt example would look like this:
MenuItem: - 'type: DIRT' - amount:1
You can also add a lore or edit it's name if you want to:
MenuItem: - 'type: DIRT' - amount:1 - name:&1Dirt - 'lore:&e1 Dirt #&cPrice: 2 Levels'
2. Hmm how shall the "MenuItem" of Healing look like? What about a golden block? That would look like this:
MenuItem: - 'type: GOLD_BLOCK' - amount:1 - name:&1Healing - 'lore:&e1 Heals yourself #&cPrice: 1000 Money'
This is the message which is sent to the player after a successful purchase. If you don't want a message, just leave this empty.
Possible Message Tags:
- %player% - Name of the Player who buys the item
- %itemname% - Name of the ShopItem (v.1.5.5)
- %rewardtype% - The name of the RewardType
- %reward% - The reward of the ShopItem
- %pricetype% - The name of the PriceType
- %price% - The price of the ShopItem
- "&1You bought Dirt! &cYou have %left% Levels left!" would fit here. It tells the player that he bought dirt and displays the amount of Levels the player has left.
- The Heal-plugin already sends a message to the player... you should leave this empty!
InventoryLocation defines the location of your item in the "GUI"/Inventory. The first inventory slot is 1 and the last slot of the first row is 9.
- Dirt is important!!! This should be the first item in the shop! Write "1" in here.
- Not many players will buy healing... let's put it in slot "27" (The last slot of row 3)
Only players who have this permission are able to buy your item. Leave it empty if you don't want any additional permissions.
- Dirt is too good for normal players! Only donators should be able to buy it! Let's put for example "VIP.BuyDirt" in here. Now, if you want to allow donators to buy this, give them the "VIP.BuyDirt" permission.
- Everybody should be able to buy Healing! Leave this empty.
Optional feature. Click this Link to get more information about ServerPinging.
If you followed this steps you should have your own "ShopItem" now :)
Here you can find more informations about "ItemData".