Fetching contributors…
Cannot retrieve contributors at this time
216 lines (167 sloc) 10.1 KB
package com.Acrobot.ChestShop.Configuration;
import com.Acrobot.Breeze.Configuration.Annotations.ConfigurationComment;
import com.Acrobot.Breeze.Configuration.Annotations.Parser;
import com.Acrobot.Breeze.Configuration.Annotations.PrecededBySpace;
import com.Acrobot.Breeze.Configuration.Configuration;
import com.Acrobot.Breeze.Configuration.ValueParser;
import com.Acrobot.ChestShop.ChestShop;
import org.bukkit.Material;
import java.util.Arrays;
import java.util.Collection;
import java.util.EnumSet;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
* @author Acrobot
public class Properties {
static {
Configuration.registerParser("StringSet", new ValueParser(){
public Object parseToJava(Object object) {
if (object instanceof Collection) {
return new LinkedHashSet<>((Collection<String>) object);
return object;
Configuration.registerParser("MaterialSet", new ValueParser(){
public Object parseToJava(Object object) {
if (object instanceof Collection) {
EnumSet<Material> set = EnumSet.noneOf(Material.class);
for (Object o : (Collection) object) {
if (o instanceof Material) {
set.add((Material) o);
} else if (o instanceof String) {
try {
set.add(Material.getMaterial(((String) o).toUpperCase()));
} catch (IllegalArgumentException e) {
ChestShop.getBukkitLogger().log(Level.WARNING, o + " is not a valid Material name in the config!");
return set;
return object;
@ConfigurationComment("Do you want to turn off the automatic updates of ChestShop?")
public static boolean TURN_OFF_UPDATES = false;
@ConfigurationComment("How large should the internal caches be?")
public static int CACHE_SIZE = 1000;
@ConfigurationComment("What containers are allowed to hold a shop? (Only blocks with inventories work!)")
public static Set<Material> SHOP_CONTAINERS = EnumSet.of(
@ConfigurationComment("(In 1/1000th of a second) How often can a player use the shop sign?")
public static int SHOP_INTERACTION_INTERVAL = 250;
@ConfigurationComment("Do you want to allow using shops to people in creative mode?")
public static boolean IGNORE_CREATIVE_MODE = true;
@ConfigurationComment("If true, people will buy with left-click and sell with right-click.")
public static boolean REVERSE_BUTTONS = false;
@ConfigurationComment("If true, people will be able to buy/sell in 64 stacks while holding the crouch button.")
public static boolean SHIFT_SELLS_IN_STACKS = false;
@ConfigurationComment("What can you do by clicking shift with SHIFT_SELLS_IN_STACKS turned on? (ALL/BUY/SELL)")
public static String SHIFT_ALLOWS = "ALL";
@ConfigurationComment("Can shop's chest be opened by owner with right-clicking a shop's sign?")
public static boolean ALLOW_SIGN_CHEST_OPEN = true;
@ConfigurationComment("If true, when you left-click your own shop sign you won't open chest's inventory, but instead you will start destroying the sign.")
public static boolean ALLOW_LEFT_CLICK_DESTROYING = true;
@ConfigurationComment("If true, if the shop is empty, the sign is destroyed and put into the chest, so the shop isn't usable anymore.")
public static boolean REMOVE_EMPTY_SHOPS = false;
@ConfigurationComment("If true, if the REMOVE_EMPTY_SHOPS option is turned on, the chest is also destroyed.")
public static boolean REMOVE_EMPTY_CHESTS = false;
@ConfigurationComment("A list of worlds in which to remove empty shops with the previous config. Case sensitive. An empty list means all worlds.")
public static Set<String> REMOVE_EMPTY_WORLDS = new LinkedHashSet<>(Arrays.asList("world1", "world2"));
@ConfigurationComment("First line of your Admin Shop's sign should look like this:")
public static String ADMIN_SHOP_NAME = "Admin Shop";
@ConfigurationComment("The economy account which Admin Shops should use and to which all taxes will go")
public static String SERVER_ECONOMY_ACCOUNT = "";
@ConfigurationComment("Percent of the price that should go to the server's account. (100 = 100 percent)")
public static int TAX_AMOUNT = 0;
@ConfigurationComment("Percent of the price that should go to the server's account when buying from an Admin Shop.")
public static int SERVER_TAX_AMOUNT = 0;
@ConfigurationComment("Amount of money player must pay to create a shop")
public static double SHOP_CREATION_PRICE = 0;
@ConfigurationComment("How much money do you get back when destroying a sign?")
public static double SHOP_REFUND_PRICE = 0;
@ConfigurationComment("How many decimal places are allowed at a maximum for prices?")
public static int PRICE_PRECISION = 2;
@ConfigurationComment("Should we block shops that sell things for more than they buy? (This prevents newbies from creating shops that would be exploited)")
@ConfigurationComment("Do you want to allow other players to build a shop on a block where there's one already?")
public static boolean ALLOW_MULTIPLE_SHOPS_AT_ONE_BLOCK = false;
@ConfigurationComment("Can shops be used even when the buyer/seller doesn't have enough items, space or money? (The price will be scaled adequately to the item amount)")
public static boolean ALLOW_PARTIAL_TRANSACTIONS = true;
@ConfigurationComment("Can '?' be put in place of item name in order for the sign to be auto-filled?")
public static boolean ALLOW_AUTO_ITEM_FILL = true;
@ConfigurationComment("Do you want to show \"Out of stock\" messages?")
public static boolean SHOW_MESSAGE_OUT_OF_STOCK = true;
@ConfigurationComment("Do you want to show \"Full shop\" messages?")
public static boolean SHOW_MESSAGE_FULL_SHOP = true;
@ConfigurationComment("Can players hide the \"Out of stock\" messages with /cstoggle?")
public static boolean CSTOGGLE_TOGGLES_OUT_OF_STOCK = false;
@ConfigurationComment("Can players hide the \"Full shop\" messages with /cstoggle?")
public static boolean CSTOGGLE_TOGGLES_FULL_SHOP = false;
@ConfigurationComment("Do you want to show \"You bought/sold... \" messages?")
public static boolean SHOW_TRANSACTION_INFORMATION_CLIENT = true;
@ConfigurationComment("Do you want to show \"Somebody bought/sold... \" messages?")
public static boolean SHOW_TRANSACTION_INFORMATION_OWNER = true;
@ConfigurationComment("If true, plugin will log transactions in its own file")
public static boolean LOG_TO_FILE = false;
@ConfigurationComment("Do you want ChestShop's messages to show up in console?")
public static boolean LOG_TO_CONSOLE = true;
@ConfigurationComment("Do you want to stack all items up to 64 item stacks?")
public static boolean STACK_TO_64 = false;
@ConfigurationComment("Do you want to use built-in protection against chest destruction?")
public static boolean USE_BUILT_IN_PROTECTION = true;
@ConfigurationComment("Do you want to have shop signs \"stick\" to chests?")
public static boolean STICK_SIGNS_TO_CHESTS = false;
@ConfigurationComment("EXPERIMENTAL: Do you want to turn off the default protection when another plugin is protecting the block? (Will leave the chest visually open - CraftBukkit bug!)")
@ConfigurationComment("Do you want to turn off the default sign protection? Warning! Other players will be able to destroy other people's shops!")
public static boolean TURN_OFF_SIGN_PROTECTION = false;
@ConfigurationComment("Do you want to disable the hopper protection, which prevents Hopper-Minecarts from taking items out of shops?")
public static boolean TURN_OFF_HOPPER_PROTECTION = false;
@ConfigurationComment("Do you want to protect shop chests with LWC?")
public static boolean PROTECT_CHEST_WITH_LWC = false;
@ConfigurationComment("Do you want to protect shop signs with LWC?")
public static boolean PROTECT_SIGN_WITH_LWC = false;
@ConfigurationComment("Should the chest's LWC protection be removed once the shop sign is destroyed? ")
public static boolean REMOVE_LWC_PROTECTION_AUTOMATICALLY = true;
@ConfigurationComment("Do you want to only let people build inside regions?")
public static boolean WORLDGUARD_INTEGRATION = false;
@ConfigurationComment("Do you want to only let people build inside region flagged by doing /region regionName flag allow-shop allow?")
public static boolean WORLDGUARD_USE_FLAG = false;
@ConfigurationComment("Do you want ChestShop to respect WorldGuard's chest protection?")
public static boolean WORLDGUARD_USE_PROTECTION = false;
@ConfigurationComment("Do you want to deny shop access to unlogged users?")
public static boolean AUTHME_HOOK = true;
@ConfigurationComment("Do you want to allow shop access to unregistered users? (Example: registration is optional)")
public static boolean AUTHME_ALLOW_UNREGISTERED = false;
@ConfigurationComment("How much Heroes exp should people get for creating a ChestShop?")
public static double HEROES_EXP = 100;
@ConfigurationComment("Add icons and make item names hoverable in transaction messages when ShowItem is installed?")
public static boolean SHOWITEM_MESSAGE = true;