2012-11-23 20:59:12 +01:00
package com.Acrobot.ChestShop.Configuration ;
2013-04-23 20:09:23 +02:00
import com.Acrobot.Breeze.Configuration.Annotations.ConfigurationComment ;
2018-10-23 20:04:18 +02:00
import com.Acrobot.Breeze.Configuration.Annotations.Parser ;
2013-04-23 20:09:23 +02:00
import com.Acrobot.Breeze.Configuration.Annotations.PrecededBySpace ;
2018-10-23 20:04:18 +02:00
import com.Acrobot.Breeze.Configuration.Configuration ;
import com.Acrobot.Breeze.Configuration.ValueParser ;
import com.Acrobot.ChestShop.ChestShop ;
2020-01-15 22:55:40 +01:00
import com.Acrobot.ChestShop.Security ;
2018-10-23 20:04:18 +02:00
import org.bukkit.Material ;
2012-11-23 20:59:12 +01:00
2019-04-25 19:44:22 +02:00
import java.math.BigDecimal ;
2018-05-05 17:23:30 +02:00
import java.util.Arrays ;
2018-10-23 20:04:18 +02:00
import java.util.Collection ;
import java.util.EnumSet ;
import java.util.LinkedHashSet ;
import java.util.Set ;
import java.util.logging.Level ;
2018-05-05 17:23:30 +02:00
2012-11-23 20:59:12 +01:00
/ * *
* @author Acrobot
* /
public class Properties {
2019-05-02 19:35:45 +02:00
2019-05-03 22:08:56 +02:00
static {
2020-01-15 22:55:40 +01:00
Configuration . registerParser ( " StringSet " , new ValueParser ( ) {
@Override
public < T > Object parseToJava ( Class < T > type , Object object ) {
2018-10-23 20:04:18 +02:00
if ( object instanceof Collection ) {
return new LinkedHashSet < > ( ( Collection < String > ) object ) ;
}
return object ;
}
} ) ;
2020-01-15 22:55:40 +01:00
Configuration . registerParser ( " MaterialSet " , new ValueParser ( ) {
@Override
public < T > Object parseToJava ( Class < T > type , Object object ) {
2018-10-23 20:04:18 +02:00
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 ;
}
} ) ;
2020-01-15 22:55:40 +01:00
Configuration . registerParser ( " BigDecimal " , new ValueParser ( ) {
2019-04-25 19:44:22 +02:00
@Override
public String parseToYAML ( Object object ) {
if ( object instanceof BigDecimal ) {
return object . toString ( ) ;
}
return super . parseToYAML ( object ) ;
}
2020-01-15 22:55:40 +01:00
@Override
public < T > Object parseToJava ( Class < T > type , Object object ) {
2019-04-25 19:44:22 +02:00
if ( object instanceof Double ) {
return BigDecimal . valueOf ( ( Double ) object ) ;
2019-05-03 22:08:56 +02:00
} else if ( object instanceof Long ) {
return BigDecimal . valueOf ( ( Long ) object ) ;
} else if ( object instanceof Integer ) {
return BigDecimal . valueOf ( ( Integer ) object ) ;
2019-04-25 19:44:22 +02:00
}
return object ;
}
} ) ;
2018-10-23 20:04:18 +02:00
}
2014-03-20 16:57:32 +01:00
@ConfigurationComment ( " Do you want to turn off the automatic updates of ChestShop? " )
public static boolean TURN_OFF_UPDATES = false ;
2017-06-30 21:28:18 +02:00
@PrecededBySpace
2018-03-12 21:01:28 +01:00
@ConfigurationComment ( " How large should the internal caches be? " )
2017-06-30 21:28:18 +02:00
public static int CACHE_SIZE = 1000 ;
2018-10-23 20:04:18 +02:00
@PrecededBySpace
@ConfigurationComment ( " What containers are allowed to hold a shop? (Only blocks with inventories work!) " )
@Parser ( " MaterialSet " )
public static Set < Material > SHOP_CONTAINERS = EnumSet . of (
Material . CHEST ,
Material . TRAPPED_CHEST
) ;
2013-04-23 20:09:23 +02:00
@PrecededBySpace
2012-11-23 20:59:12 +01:00
@ConfigurationComment ( " (In 1/1000th of a second) How often can a player use the shop sign? " )
2012-11-23 21:00:35 +01:00
public static int SHOP_INTERACTION_INTERVAL = 250 ;
2012-11-23 20:59:12 +01:00
@ConfigurationComment ( " Do you want to allow using shops to people in creative mode? " )
public static boolean IGNORE_CREATIVE_MODE = true ;
2018-11-19 21:10:48 +01:00
@ConfigurationComment ( " Do you want to allow using shops to people who have access to it due to their permissions? (owners are always ignored) " )
public static boolean IGNORE_ACCESS_PERMS = true ;
2012-11-23 20:59:12 +01:00
@ConfigurationComment ( " If true, people will buy with left-click and sell with right-click. " )
public static boolean REVERSE_BUTTONS = false ;
2013-04-05 14:17:34 +02:00
@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 ;
2012-11-23 20:59:12 +01:00
2013-04-05 14:17:34 +02:00
@ConfigurationComment ( " What can you do by clicking shift with SHIFT_SELLS_IN_STACKS turned on? (ALL/BUY/SELL) " )
2013-03-30 15:58:06 +01:00
public static String SHIFT_ALLOWS = " ALL " ;
2012-11-23 20:59:12 +01:00
@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 ;
2013-04-23 20:09:23 +02:00
@PrecededBySpace
2012-11-23 20:59:12 +01:00
@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 ;
2018-05-05 17:23:30 +02:00
@ConfigurationComment ( " A list of worlds in which to remove empty shops with the previous config. Case sensitive. An empty list means all worlds. " )
2018-10-23 20:04:18 +02:00
@Parser ( " StringSet " )
public static Set < String > REMOVE_EMPTY_WORLDS = new LinkedHashSet < > ( Arrays . asList ( " world1 " , " world2 " ) ) ;
2018-05-05 17:23:30 +02:00
2013-04-23 20:09:23 +02:00
@PrecededBySpace
2012-11-23 20:59:12 +01:00
@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 " )
2019-04-25 19:44:22 +02:00
public static BigDecimal SHOP_CREATION_PRICE = BigDecimal . valueOf ( 0 ) ;
2012-11-23 20:59:12 +01:00
@ConfigurationComment ( " How much money do you get back when destroying a sign? " )
2019-04-25 19:44:22 +02:00
public static BigDecimal SHOP_REFUND_PRICE = BigDecimal . valueOf ( 0 ) ;
2012-11-23 20:59:12 +01:00
2018-09-06 00:07:35 +02:00
@ConfigurationComment ( " How many decimal places are allowed at a maximum for prices? " )
public static int PRICE_PRECISION = 2 ;
2013-04-23 20:09:23 +02:00
@PrecededBySpace
2012-11-23 20:59:12 +01:00
@ConfigurationComment ( " Should we block shops that sell things for more than they buy? (This prevents newbies from creating shops that would be exploited) " )
public static boolean BLOCK_SHOPS_WITH_SELL_PRICE_HIGHER_THAN_BUY_PRICE = true ;
2013-04-23 20:09:23 +02:00
@PrecededBySpace
2012-11-23 20:59:12 +01:00
@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 ;
2018-01-05 18:30:06 +01:00
@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) " )
2012-11-23 20:59:12 +01:00
public static boolean ALLOW_PARTIAL_TRANSACTIONS = true ;
2014-03-12 13:27:30 +01:00
@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 ;
2019-11-19 21:50:17 +01:00
@PrecededBySpace
@ConfigurationComment ( " Enable this if you use BungeeCord and want players to receive shop notifications on other servers " )
public static boolean BUNGEECORD_MESSAGES = false ;
2013-04-23 20:09:23 +02:00
@PrecededBySpace
2012-11-23 20:59:12 +01:00
@ConfigurationComment ( " Do you want to show \" Out of stock \" messages? " )
public static boolean SHOW_MESSAGE_OUT_OF_STOCK = true ;
2017-07-04 17:06:34 +02:00
@ConfigurationComment ( " Do you want to show \" Full shop \" messages? " )
public static boolean SHOW_MESSAGE_FULL_SHOP = true ;
2019-05-27 18:11:09 +02:00
@ConfigurationComment ( " How many seconds do you want to wait before showing notifications for the same shop to the owner again? " )
public static long NOTIFICATION_MESSAGE_COOLDOWN = 10 ;
2017-07-04 17:06:34 +02:00
@PrecededBySpace
@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 ;
2012-11-23 20:59:12 +01:00
@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 ;
2013-04-23 20:09:23 +02:00
@PrecededBySpace
2012-11-23 20:59:12 +01:00
@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 ;
2019-04-01 14:49:48 +02:00
@ConfigurationComment ( " Should all shop removals be logged to the console? " )
public static boolean LOG_ALL_SHOP_REMOVALS = true ;
2013-04-23 20:09:23 +02:00
@PrecededBySpace
2013-02-07 14:17:23 +01:00
@ConfigurationComment ( " Do you want to stack all items up to 64 item stacks? " )
public static boolean STACK_TO_64 = false ;
2012-11-23 20:59:12 +01:00
@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!) " )
public static boolean TURN_OFF_DEFAULT_PROTECTION_WHEN_PROTECTED_EXTERNALLY = false ;
@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 ;
2018-10-23 20:27:39 +02:00
@ConfigurationComment ( " Do you want to disable the hopper protection, which prevents Hopper-Minecarts from taking items out of shops? " )
2013-08-26 23:36:50 +02:00
public static boolean TURN_OFF_HOPPER_PROTECTION = false ;
2012-11-23 20:59:12 +01:00
@ConfigurationComment ( " Do you want to protect shop chests with LWC? " )
public static boolean PROTECT_CHEST_WITH_LWC = false ;
2020-01-15 22:55:40 +01:00
@ConfigurationComment ( " Of which type should the container protection be? Possible type: public, private, donate and on some LWC versions display " )
public static Security . Type LWC_CHEST_PROTECTION_TYPE = Security . Type . PRIVATE ;
2012-11-23 20:59:12 +01:00
@ConfigurationComment ( " Do you want to protect shop signs with LWC? " )
public static boolean PROTECT_SIGN_WITH_LWC = false ;
2020-01-15 22:55:40 +01:00
@ConfigurationComment ( " Of which type should the sign protection be? Possible type: public, private, donate and on some LWC versions display " )
public static Security . Type LWC_SIGN_PROTECTION_TYPE = Security . Type . PRIVATE ;
2014-06-22 14:32:40 +02:00
@ConfigurationComment ( " Should the chest's LWC protection be removed once the shop sign is destroyed? " )
public static boolean REMOVE_LWC_PROTECTION_AUTOMATICALLY = true ;
2013-04-23 20:09:23 +02:00
@PrecededBySpace
2020-01-15 23:32:25 +01:00
@ConfigurationComment ( " Do you want to only let people build inside WorldGuard regions? " )
2012-11-23 20:59:12 +01:00
public static boolean WORLDGUARD_INTEGRATION = false ;
2017-07-24 16:04:58 +02:00
@ConfigurationComment ( " Do you want to only let people build inside region flagged by doing /region regionName flag allow-shop allow? " )
2018-01-07 02:11:59 +01:00
public static boolean WORLDGUARD_USE_FLAG = false ;
2012-11-23 20:59:12 +01:00
@ConfigurationComment ( " Do you want ChestShop to respect WorldGuard's chest protection? " )
public static boolean WORLDGUARD_USE_PROTECTION = false ;
2020-01-15 23:32:25 +01:00
@PrecededBySpace
@ConfigurationComment ( " Do you want to only let people build inside GriefPrevention claims? " )
public static boolean GRIEFPREVENTION_INTEGRATION = false ;
2020-01-15 23:44:34 +01:00
@PrecededBySpace
@ConfigurationComment ( " Do you want to only let people build inside RedProtect regions? " )
public static boolean REDPROTECT_INTEGRATION = false ;
2016-08-20 22:17:10 +02:00
@PrecededBySpace
@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 ;
2013-04-23 20:09:23 +02:00
@PrecededBySpace
2012-11-23 20:59:12 +01:00
@ConfigurationComment ( " How much Heroes exp should people get for creating a ChestShop? " )
public static double HEROES_EXP = 100 ;
2018-05-07 16:32:51 +02:00
2018-01-06 17:44:35 +01:00
@PrecededBySpace
@ConfigurationComment ( " Add icons and make item names hoverable in transaction messages when ShowItem is installed? " )
public static boolean SHOWITEM_MESSAGE = true ;
2016-08-20 22:17:10 +02:00
}