mirror of
https://github.com/amalthea-mc/ShopChest.git
synced 2024-11-12 21:51:06 +00:00
Change configuration values per command
This will probably be a bit buggy, so I recommend to keep editing the file manually. Also, all of the comments in the config.yml will get deleted after using the command! This closes #10.
This commit is contained in:
parent
34468ef623
commit
47414009bf
@ -1,6 +1,5 @@
|
|||||||
package de.epiceric.shopchest;
|
package de.epiceric.shopchest;
|
||||||
|
|
||||||
import de.epiceric.shopchest.config.Config;
|
|
||||||
import de.epiceric.shopchest.config.Regex;
|
import de.epiceric.shopchest.config.Regex;
|
||||||
import de.epiceric.shopchest.event.ShopPreCreateEvent;
|
import de.epiceric.shopchest.event.ShopPreCreateEvent;
|
||||||
import de.epiceric.shopchest.event.ShopPreInfoEvent;
|
import de.epiceric.shopchest.event.ShopPreInfoEvent;
|
||||||
@ -126,6 +125,36 @@ public class Commands extends BukkitCommand {
|
|||||||
} else {
|
} else {
|
||||||
p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.NO_PERMISSION_LIMITS));
|
p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.NO_PERMISSION_LIMITS));
|
||||||
}
|
}
|
||||||
|
} else if (args[0].equalsIgnoreCase("config")) {
|
||||||
|
if (perm.has(p, "shopchest.config")) {
|
||||||
|
if (args.length >= 4) {
|
||||||
|
String property = args[2];
|
||||||
|
String value = args[3];
|
||||||
|
|
||||||
|
if (args[1].equalsIgnoreCase("set")) {
|
||||||
|
plugin.getShopChestConfig().set(property, value);
|
||||||
|
p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CHANGED_CONFIG_SET, new LocalizedMessage.ReplacedRegex(Regex.PROPERTY, property), new LocalizedMessage.ReplacedRegex(Regex.VALUE, value)));
|
||||||
|
return true;
|
||||||
|
} else if (args[1].equalsIgnoreCase("add")) {
|
||||||
|
plugin.getShopChestConfig().add(property, value);
|
||||||
|
p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CHANGED_CONFIG_ADDED, new LocalizedMessage.ReplacedRegex(Regex.PROPERTY, property), new LocalizedMessage.ReplacedRegex(Regex.VALUE, value)));
|
||||||
|
return true;
|
||||||
|
} else if (args[1].equalsIgnoreCase("remove")) {
|
||||||
|
plugin.getShopChestConfig().remove(property, value);
|
||||||
|
p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.CHANGED_CONFIG_REMOVED, new LocalizedMessage.ReplacedRegex(Regex.PROPERTY, property), new LocalizedMessage.ReplacedRegex(Regex.VALUE, value)));
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
sendBasicHelpMessage(p);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sendBasicHelpMessage(p);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.NO_PERMISSION_CONFIG));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
sendBasicHelpMessage(p);
|
sendBasicHelpMessage(p);
|
||||||
return true;
|
return true;
|
||||||
@ -220,7 +249,7 @@ public class Commands extends BukkitCommand {
|
|||||||
|
|
||||||
if (limit != -1) {
|
if (limit != -1) {
|
||||||
if (ShopUtils.getShopAmount(p) >= limit) {
|
if (ShopUtils.getShopAmount(p) >= limit) {
|
||||||
if (shopType != ShopType.ADMIN || !Config.exclude_admin_shops) {
|
if (shopType != ShopType.ADMIN || !plugin.getShopChestConfig().exclude_admin_shops) {
|
||||||
p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.SHOP_LIMIT_REACHED, new LocalizedMessage.ReplacedRegex(Regex.LIMIT, String.valueOf(limit))));
|
p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.SHOP_LIMIT_REACHED, new LocalizedMessage.ReplacedRegex(Regex.LIMIT, String.valueOf(limit))));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -248,7 +277,7 @@ public class Commands extends BukkitCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (String item : Config.blacklist) {
|
for (String item : plugin.getShopChestConfig().blacklist) {
|
||||||
|
|
||||||
ItemStack itemStack;
|
ItemStack itemStack;
|
||||||
|
|
||||||
@ -264,7 +293,7 @@ public class Commands extends BukkitCommand {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (String key : Config.minimum_prices) {
|
for (String key : plugin.getShopChestConfig().minimum_prices) {
|
||||||
|
|
||||||
ItemStack itemStack;
|
ItemStack itemStack;
|
||||||
double price = plugin.getConfig().getDouble("minimum-prices." + key);
|
double price = plugin.getConfig().getDouble("minimum-prices." + key);
|
||||||
@ -293,7 +322,7 @@ public class Commands extends BukkitCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (sellEnabled && buyEnabled) {
|
if (sellEnabled && buyEnabled) {
|
||||||
if (Config.buy_greater_or_equal_sell) {
|
if (plugin.getShopChestConfig().buy_greater_or_equal_sell) {
|
||||||
if (buyPrice < sellPrice) {
|
if (buyPrice < sellPrice) {
|
||||||
p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.BUY_PRICE_TOO_LOW, new LocalizedMessage.ReplacedRegex(Regex.MIN_PRICE, String.valueOf(sellPrice))));
|
p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.BUY_PRICE_TOO_LOW, new LocalizedMessage.ReplacedRegex(Regex.MIN_PRICE, String.valueOf(sellPrice))));
|
||||||
return;
|
return;
|
||||||
@ -311,7 +340,7 @@ public class Commands extends BukkitCommand {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
double creationPrice = (shopType == ShopType.NORMAL) ? Config.shop_creation_price_normal : Config.shop_creation_price_admin;
|
double creationPrice = (shopType == ShopType.NORMAL) ? plugin.getShopChestConfig().shop_creation_price_normal : plugin.getShopChestConfig().shop_creation_price_admin;
|
||||||
if (creationPrice > 0) {
|
if (creationPrice > 0) {
|
||||||
if (plugin.getEconomy().getBalance(p) < creationPrice) {
|
if (plugin.getEconomy().getBalance(p) < creationPrice) {
|
||||||
p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.SHOP_CREATE_NOT_ENOUGH_MONEY, new LocalizedMessage.ReplacedRegex(Regex.CREATION_PRICE, String.valueOf(creationPrice))));
|
p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.SHOP_CREATE_NOT_ENOUGH_MONEY, new LocalizedMessage.ReplacedRegex(Regex.CREATION_PRICE, String.valueOf(creationPrice))));
|
||||||
@ -359,12 +388,13 @@ public class Commands extends BukkitCommand {
|
|||||||
* @param player Player who will receive the message
|
* @param player Player who will receive the message
|
||||||
*/
|
*/
|
||||||
private void sendBasicHelpMessage(Player player) {
|
private void sendBasicHelpMessage(Player player) {
|
||||||
player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name + " create <amount> <buy-price> <sell-price> [normal|admin] - " + LanguageUtils.getMessage(LocalizedMessage.Message.COMMAND_DESC_CREATE));
|
player.sendMessage(ChatColor.GREEN + "/" + plugin.getShopChestConfig().main_command_name + " create <amount> <buy-price> <sell-price> [normal|admin] - " + LanguageUtils.getMessage(LocalizedMessage.Message.COMMAND_DESC_CREATE));
|
||||||
player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name + " remove - " + LanguageUtils.getMessage(LocalizedMessage.Message.COMMAND_DESC_REMOVE));
|
player.sendMessage(ChatColor.GREEN + "/" + plugin.getShopChestConfig().main_command_name + " remove - " + LanguageUtils.getMessage(LocalizedMessage.Message.COMMAND_DESC_REMOVE));
|
||||||
player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name + " info - " + LanguageUtils.getMessage(LocalizedMessage.Message.COMMAND_DESC_INFO));
|
player.sendMessage(ChatColor.GREEN + "/" + plugin.getShopChestConfig().main_command_name + " info - " + LanguageUtils.getMessage(LocalizedMessage.Message.COMMAND_DESC_INFO));
|
||||||
player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name + " reload - " + LanguageUtils.getMessage(LocalizedMessage.Message.COMMAND_DESC_RELOAD));
|
player.sendMessage(ChatColor.GREEN + "/" + plugin.getShopChestConfig().main_command_name + " reload - " + LanguageUtils.getMessage(LocalizedMessage.Message.COMMAND_DESC_RELOAD));
|
||||||
player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name + " update - " + LanguageUtils.getMessage(LocalizedMessage.Message.COMMAND_DESC_UPDATE));
|
player.sendMessage(ChatColor.GREEN + "/" + plugin.getShopChestConfig().main_command_name + " update - " + LanguageUtils.getMessage(LocalizedMessage.Message.COMMAND_DESC_UPDATE));
|
||||||
player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name + " limits - " + LanguageUtils.getMessage(LocalizedMessage.Message.COMMAND_DESC_LIMITS));
|
player.sendMessage(ChatColor.GREEN + "/" + plugin.getShopChestConfig().main_command_name + " limits - " + LanguageUtils.getMessage(LocalizedMessage.Message.COMMAND_DESC_LIMITS));
|
||||||
|
player.sendMessage(ChatColor.GREEN + "/" + plugin.getShopChestConfig().main_command_name + " config <set|add|remove> <property> <value> - " + LanguageUtils.getMessage(LocalizedMessage.Message.COMMAND_DESC_CONFIG));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package de.epiceric.shopchest;
|
package de.epiceric.shopchest;
|
||||||
|
|
||||||
import de.epiceric.shopchest.config.Config;
|
import de.epiceric.shopchest.config.Config;
|
||||||
import de.epiceric.shopchest.config.LanguageConfiguration;
|
|
||||||
import de.epiceric.shopchest.config.Regex;
|
import de.epiceric.shopchest.config.Regex;
|
||||||
import de.epiceric.shopchest.language.LanguageUtils;
|
import de.epiceric.shopchest.language.LanguageUtils;
|
||||||
import de.epiceric.shopchest.language.LocalizedMessage;
|
import de.epiceric.shopchest.language.LocalizedMessage;
|
||||||
@ -23,14 +22,11 @@ import net.milkbowl.vault.economy.Economy;
|
|||||||
import net.milkbowl.vault.permission.Permission;
|
import net.milkbowl.vault.permission.Permission;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.configuration.InvalidConfigurationException;
|
|
||||||
import org.bukkit.entity.Item;
|
import org.bukkit.entity.Item;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.RegisteredServiceProvider;
|
import org.bukkit.plugin.RegisteredServiceProvider;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -38,6 +34,8 @@ import java.util.ArrayList;
|
|||||||
public class ShopChest extends JavaPlugin {
|
public class ShopChest extends JavaPlugin {
|
||||||
|
|
||||||
private static ShopChest instance;
|
private static ShopChest instance;
|
||||||
|
|
||||||
|
private Config config = null;
|
||||||
private Economy econ = null;
|
private Economy econ = null;
|
||||||
private Permission perm = null;
|
private Permission perm = null;
|
||||||
private boolean lockette = false;
|
private boolean lockette = false;
|
||||||
@ -46,7 +44,6 @@ public class ShopChest extends JavaPlugin {
|
|||||||
private boolean isUpdateNeeded = false;
|
private boolean isUpdateNeeded = false;
|
||||||
private String latestVersion = "";
|
private String latestVersion = "";
|
||||||
private String downloadLink = "";
|
private String downloadLink = "";
|
||||||
private LanguageConfiguration langConfig;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return An instance of ShopChest
|
* @return An instance of ShopChest
|
||||||
@ -78,69 +75,6 @@ public class ShopChest extends JavaPlugin {
|
|||||||
return perm != null;
|
return perm != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Initializes the language configuration
|
|
||||||
*/
|
|
||||||
private void initLanguageConfig() {
|
|
||||||
langConfig = new LanguageConfiguration(this);
|
|
||||||
File langFolder = new File(getDataFolder(), "lang");
|
|
||||||
|
|
||||||
if (!(new File(langFolder, "en_US.lang")).exists())
|
|
||||||
saveResource("lang/en_US.lang", false);
|
|
||||||
|
|
||||||
if (!(new File(langFolder, "de_DE.lang")).exists())
|
|
||||||
saveResource("lang/de_DE.lang", false);
|
|
||||||
|
|
||||||
File langConfigFile = new File(langFolder, Config.language_file + ".lang");
|
|
||||||
File langDefaultFile = new File(langFolder, "en_US.lang");
|
|
||||||
|
|
||||||
if (!langConfigFile.exists()) {
|
|
||||||
if (!langDefaultFile.exists()) {
|
|
||||||
try {
|
|
||||||
Reader r = getTextResource("lang/" + langConfigFile.getName());
|
|
||||||
|
|
||||||
if (r == null) {
|
|
||||||
r = getTextResource("lang/en_US.lang");
|
|
||||||
getLogger().info("Using locale \"en_US\" (Streamed from jar file)");
|
|
||||||
} else {
|
|
||||||
getLogger().info("Using locale \"" + langConfigFile.getName().substring(0, langConfigFile.getName().length() - 5) + "\" (Streamed from jar file)");
|
|
||||||
}
|
|
||||||
|
|
||||||
BufferedReader br = new BufferedReader(r);
|
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
String line = br.readLine();
|
|
||||||
|
|
||||||
while (line != null) {
|
|
||||||
sb.append(line);
|
|
||||||
sb.append("\n");
|
|
||||||
line = br.readLine();
|
|
||||||
}
|
|
||||||
|
|
||||||
langConfig.loadFromString(sb.toString());
|
|
||||||
} catch (IOException | InvalidConfigurationException ex) {
|
|
||||||
ex.printStackTrace();
|
|
||||||
getLogger().warning("Using default language values");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
try {
|
|
||||||
langConfig.load(langDefaultFile);
|
|
||||||
getLogger().info("Using locale \"en_US\"");
|
|
||||||
} catch (IOException | InvalidConfigurationException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
getLogger().warning("Using default language values");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
try {
|
|
||||||
getLogger().info("Using locale \"" + langConfigFile.getName().substring(0, langConfigFile.getName().length() - 5) + "\"");
|
|
||||||
langConfig.load(langConfigFile);
|
|
||||||
} catch (IOException | InvalidConfigurationException ex) {
|
|
||||||
ex.printStackTrace();
|
|
||||||
getLogger().warning("Using default language values");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
@ -178,11 +112,9 @@ public class ShopChest extends JavaPlugin {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
initLanguageConfig();
|
config = new Config(this);
|
||||||
LanguageUtils.load();
|
LanguageUtils.load();
|
||||||
saveResource("item_names.txt", true);
|
saveResource("item_names.txt", true);
|
||||||
reloadConfig();
|
|
||||||
saveDefaultConfig();
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Metrics metrics = new Metrics(this);
|
Metrics metrics = new Metrics(this);
|
||||||
@ -222,7 +154,7 @@ public class ShopChest extends JavaPlugin {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getValue() {
|
public int getValue() {
|
||||||
if (Config.database_type == Database.DatabaseType.SQLite)
|
if (config.database_type == Database.DatabaseType.SQLite)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -234,7 +166,7 @@ public class ShopChest extends JavaPlugin {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getValue() {
|
public int getValue() {
|
||||||
if (Config.database_type == Database.DatabaseType.MySQL)
|
if (config.database_type == Database.DatabaseType.MySQL)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -247,7 +179,7 @@ public class ShopChest extends JavaPlugin {
|
|||||||
getLogger().severe("Could not submit stats.");
|
getLogger().severe("Could not submit stats.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Config.database_type == Database.DatabaseType.SQLite) {
|
if (config.database_type == Database.DatabaseType.SQLite) {
|
||||||
getLogger().info("Using SQLite");
|
getLogger().info("Using SQLite");
|
||||||
database = new SQLite(this);
|
database = new SQLite(this);
|
||||||
} else {
|
} else {
|
||||||
@ -258,70 +190,75 @@ public class ShopChest extends JavaPlugin {
|
|||||||
lockette = getServer().getPluginManager().getPlugin("Lockette") != null;
|
lockette = getServer().getPluginManager().getPlugin("Lockette") != null;
|
||||||
lwc = getServer().getPluginManager().getPlugin("LWC") != null;
|
lwc = getServer().getPluginManager().getPlugin("LWC") != null;
|
||||||
|
|
||||||
UpdateChecker uc = new UpdateChecker(this);
|
Bukkit.getScheduler().runTaskAsynchronously(this, new Runnable() {
|
||||||
UpdateCheckerResult result = uc.check();
|
@Override
|
||||||
|
public void run() {
|
||||||
|
UpdateChecker uc = new UpdateChecker(ShopChest.this);
|
||||||
|
UpdateCheckerResult result = uc.check();
|
||||||
|
|
||||||
Bukkit.getConsoleSender().sendMessage("[ShopChest] " + LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CHECKING));
|
Bukkit.getConsoleSender().sendMessage("[ShopChest] " + LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CHECKING));
|
||||||
if (result == UpdateCheckerResult.TRUE) {
|
if (result == UpdateCheckerResult.TRUE) {
|
||||||
latestVersion = uc.getVersion();
|
latestVersion = uc.getVersion();
|
||||||
downloadLink = uc.getLink();
|
downloadLink = uc.getLink();
|
||||||
isUpdateNeeded = true;
|
isUpdateNeeded = true;
|
||||||
Bukkit.getConsoleSender().sendMessage("[ShopChest] " + LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion)));
|
Bukkit.getConsoleSender().sendMessage("[ShopChest] " + LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion)));
|
||||||
|
|
||||||
for (Player p : getServer().getOnlinePlayers()) {
|
for (Player p : getServer().getOnlinePlayers()) {
|
||||||
if (p.isOp() || perm.has(p, "shopchest.notification.update")) {
|
if (p.isOp() || perm.has(p, "shopchest.notification.update")) {
|
||||||
IJsonBuilder jb;
|
IJsonBuilder jb;
|
||||||
switch (Utils.getServerVersion()) {
|
switch (Utils.getServerVersion()) {
|
||||||
case "v1_8_R1":
|
case "v1_8_R1":
|
||||||
jb = new de.epiceric.shopchest.nms.v1_8_R1.JsonBuilder(LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion)), LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD), downloadLink);
|
jb = new de.epiceric.shopchest.nms.v1_8_R1.JsonBuilder(LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion)), LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD), downloadLink);
|
||||||
break;
|
break;
|
||||||
case "v1_8_R2":
|
case "v1_8_R2":
|
||||||
jb = new de.epiceric.shopchest.nms.v1_8_R2.JsonBuilder(LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion)), LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD), downloadLink);
|
jb = new de.epiceric.shopchest.nms.v1_8_R2.JsonBuilder(LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion)), LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD), downloadLink);
|
||||||
break;
|
break;
|
||||||
case "v1_8_R3":
|
case "v1_8_R3":
|
||||||
jb = new de.epiceric.shopchest.nms.v1_8_R3.JsonBuilder(LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion)), LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD), downloadLink);
|
jb = new de.epiceric.shopchest.nms.v1_8_R3.JsonBuilder(LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion)), LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD), downloadLink);
|
||||||
break;
|
break;
|
||||||
case "v1_9_R1":
|
case "v1_9_R1":
|
||||||
jb = new de.epiceric.shopchest.nms.v1_9_R1.JsonBuilder(LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion)), LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD), downloadLink);
|
jb = new de.epiceric.shopchest.nms.v1_9_R1.JsonBuilder(LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion)), LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD), downloadLink);
|
||||||
break;
|
break;
|
||||||
case "v1_9_R2":
|
case "v1_9_R2":
|
||||||
jb = new de.epiceric.shopchest.nms.v1_9_R2.JsonBuilder(LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion)), LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD), downloadLink);
|
jb = new de.epiceric.shopchest.nms.v1_9_R2.JsonBuilder(LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion)), LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD), downloadLink);
|
||||||
break;
|
break;
|
||||||
case "v1_10_R1":
|
case "v1_10_R1":
|
||||||
jb = new de.epiceric.shopchest.nms.v1_10_R1.JsonBuilder(LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion)), LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD), downloadLink);
|
jb = new de.epiceric.shopchest.nms.v1_10_R1.JsonBuilder(LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_AVAILABLE, new LocalizedMessage.ReplacedRegex(Regex.VERSION, latestVersion)), LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_CLICK_TO_DOWNLOAD), downloadLink);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
jb.sendJson(p);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
jb.sendJson(p);
|
|
||||||
|
} else if (result == UpdateCheckerResult.FALSE) {
|
||||||
|
latestVersion = "";
|
||||||
|
downloadLink = "";
|
||||||
|
isUpdateNeeded = false;
|
||||||
|
Bukkit.getConsoleSender().sendMessage("[ShopChest] " + LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_NO_UPDATE));
|
||||||
|
} else {
|
||||||
|
latestVersion = "";
|
||||||
|
downloadLink = "";
|
||||||
|
isUpdateNeeded = false;
|
||||||
|
Bukkit.getConsoleSender().sendMessage("[ShopChest] " + LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_ERROR));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
});
|
||||||
} else if (result == UpdateCheckerResult.FALSE) {
|
|
||||||
latestVersion = "";
|
|
||||||
downloadLink = "";
|
|
||||||
isUpdateNeeded = false;
|
|
||||||
Bukkit.getConsoleSender().sendMessage("[ShopChest] " + LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_NO_UPDATE));
|
|
||||||
} else {
|
|
||||||
latestVersion = "";
|
|
||||||
downloadLink = "";
|
|
||||||
isUpdateNeeded = false;
|
|
||||||
Bukkit.getConsoleSender().sendMessage("[ShopChest] " + LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_ERROR));
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Commands.registerCommand(new Commands(this, Config.main_command_name, "Manage Shops.", "", new ArrayList<String>()), this);
|
Commands.registerCommand(new Commands(this, config.main_command_name, "Manage Shops.", "", new ArrayList<String>()), this);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
initializeShops();
|
initializeShops();
|
||||||
|
|
||||||
getServer().getPluginManager().registerEvents(new HologramUpdateListener(), this);
|
getServer().getPluginManager().registerEvents(new HologramUpdateListener(this), this);
|
||||||
getServer().getPluginManager().registerEvents(new ItemProtectListener(), this);
|
getServer().getPluginManager().registerEvents(new ItemProtectListener(), this);
|
||||||
getServer().getPluginManager().registerEvents(new ShopInteractListener(this), this);
|
getServer().getPluginManager().registerEvents(new ShopInteractListener(this), this);
|
||||||
getServer().getPluginManager().registerEvents(new NotifyUpdateOnJoinListener(this), this);
|
getServer().getPluginManager().registerEvents(new NotifyUpdateOnJoinListener(this), this);
|
||||||
getServer().getPluginManager().registerEvents(new ChestProtectListener(), this);
|
getServer().getPluginManager().registerEvents(new ChestProtectListener(this), this);
|
||||||
getServer().getPluginManager().registerEvents(new ItemCustomNameListener(), this);
|
getServer().getPluginManager().registerEvents(new ItemCustomNameListener(), this);
|
||||||
|
|
||||||
if (getServer().getPluginManager().getPlugin("ClearLag") != null)
|
if (getServer().getPluginManager().getPlugin("ClearLag") != null)
|
||||||
@ -354,13 +291,6 @@ public class ShopChest extends JavaPlugin {
|
|||||||
getLogger().info("Initialized " + String.valueOf(count) + " Shops");
|
getLogger().info("Initialized " + String.valueOf(count) + " Shops");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return ShopChest's {@link LanguageConfiguration}
|
|
||||||
*/
|
|
||||||
public LanguageConfiguration getLanguageConfig() {
|
|
||||||
return langConfig;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Registered Economy of Vault
|
* @return Registered Economy of Vault
|
||||||
*/
|
*/
|
||||||
@ -441,4 +371,21 @@ public class ShopChest extends JavaPlugin {
|
|||||||
this.downloadLink = downloadLink;
|
this.downloadLink = downloadLink;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The {@link Config} of ShopChset
|
||||||
|
*/
|
||||||
|
public Config getShopChestConfig() {
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides a reader for a text file located inside the jar.
|
||||||
|
* The returned reader will read text with the UTF-8 charset.
|
||||||
|
* @param file - the filename of the resource to load
|
||||||
|
* @return null if getResource(String) returns null
|
||||||
|
* @throws IllegalArgumentException - if file is null
|
||||||
|
*/
|
||||||
|
public Reader getTextResourceP(String file) throws IllegalArgumentException {
|
||||||
|
return getTextResource(file);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,14 @@
|
|||||||
package de.epiceric.shopchest.config;
|
package de.epiceric.shopchest.config;
|
||||||
|
|
||||||
import de.epiceric.shopchest.ShopChest;
|
import de.epiceric.shopchest.ShopChest;
|
||||||
|
import de.epiceric.shopchest.language.LanguageUtils;
|
||||||
import de.epiceric.shopchest.sql.Database;
|
import de.epiceric.shopchest.sql.Database;
|
||||||
|
import org.bukkit.configuration.InvalidConfigurationException;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.Reader;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -10,88 +16,324 @@ import java.util.Set;
|
|||||||
|
|
||||||
public class Config {
|
public class Config {
|
||||||
|
|
||||||
private static ShopChest plugin = ShopChest.getInstance();
|
private ShopChest plugin;
|
||||||
|
|
||||||
|
private LanguageConfiguration langConfig;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The hostname used in ShopChest's MySQL database
|
* The hostname used in ShopChest's MySQL database
|
||||||
**/
|
**/
|
||||||
public static String database_mysql_host = plugin.getConfig().getString("database.mysql.hostname");
|
public String database_mysql_host;
|
||||||
|
|
||||||
/** The port used for ShopChest's MySQL database **/
|
/** The port used for ShopChest's MySQL database **/
|
||||||
public static int database_mysql_port = plugin.getConfig().getInt("database.mysql.port");
|
public int database_mysql_port;
|
||||||
|
|
||||||
/** The database used for ShopChest's MySQL database **/
|
/** The database used for ShopChest's MySQL database **/
|
||||||
public static String database_mysql_database = plugin.getConfig().getString("database.mysql.database");
|
public String database_mysql_database;
|
||||||
|
|
||||||
/** The username used in ShopChest's MySQL database **/
|
/** The username used in ShopChest's MySQL database **/
|
||||||
public static String database_mysql_username = plugin.getConfig().getString("database.mysql.username");
|
public String database_mysql_username;
|
||||||
|
|
||||||
/** The password used in ShopChest's MySQL database **/
|
/** The password used in ShopChest's MySQL database **/
|
||||||
public static String database_mysql_password = plugin.getConfig().getString("database.mysql.password");
|
public String database_mysql_password;
|
||||||
|
|
||||||
/** The database type used for ShopChest. **/
|
/** The database type used for ShopChest. **/
|
||||||
public static Database.DatabaseType database_type = Database.DatabaseType.valueOf(plugin.getConfig().getString("database.type"));
|
public Database.DatabaseType database_type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The amount of attempts, ShopChest tries to reconnect to the database, when the connection is lost, until giving up
|
* The amount of attempts, ShopChest tries to reconnect to the database, when the connection is lost, until giving up
|
||||||
**/
|
**/
|
||||||
public static int database_reconnect_attempts = plugin.getConfig().getInt("database.reconnect-attempts");
|
public int database_reconnect_attempts;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>The minimum prices for certain items</p>
|
* <p>The minimum prices for certain items</p>
|
||||||
* This returns a key set, which contains e.g "STONE", "STONE:1", of the <i>minimum-prices</i> section in ShopChest's config.
|
* This returns a key set, which contains e.g "STONE", "STONE:1", of the <i>minimum-prices</i> section in ShopChest's config.
|
||||||
* To actually retrieve the price for an item, you have to get the Double <i>minimum-prices.<b>key</b></i>.
|
* To actually retrieve the price for an item, you have to get the Double <i>minimum-prices.<b>key</b></i>.
|
||||||
**/
|
**/
|
||||||
public static Set<String> minimum_prices = (plugin.getConfig().getConfigurationSection("minimum-prices") == null) ? new HashSet<String>() : plugin.getConfig().getConfigurationSection("minimum-prices").getKeys(true);
|
public Set<String> minimum_prices;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>The shop limits of certain groups</p>
|
* <p>The shop limits of certain groups</p>
|
||||||
* This returns a key set, which contains the group names, of the <i>shop-limits.group</i> section in ShopChest's config.
|
* This returns a key set, which contains the group names, of the <i>shop-limits.group</i> section in ShopChest's config.
|
||||||
* To actually retrieve the limits for a group, you have to get the Integer <i>shop-limits.group.<b>key</b></i>.
|
* To actually retrieve the limits for a group, you have to get the Integer <i>shop-limits.group.<b>key</b></i>.
|
||||||
**/
|
**/
|
||||||
public static Set<String> shopLimits_group = (plugin.getConfig().getConfigurationSection("shop-limits.group") == null) ? new HashSet<String>() : plugin.getConfig().getConfigurationSection("shop-limits.group").getKeys(true);
|
public Set<String> shopLimits_group;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>The shop limits of certain players</p>
|
* <p>The shop limits of certain players</p>
|
||||||
* This returns a key set, which contains the player names, of the <i>shop-limits.player</i> section in ShopChest's config.
|
* This returns a key set, which contains the player names, of the <i>shop-limits.player</i> section in ShopChest's config.
|
||||||
* To actually retrieve the limits for a player, you have to get the Integer <i>shop-limits.player.<b>key</b></i>.
|
* To actually retrieve the limits for a player, you have to get the Integer <i>shop-limits.player.<b>key</b></i>.
|
||||||
**/
|
**/
|
||||||
public static Set<String> shopLimits_player = (plugin.getConfig().getConfigurationSection("shop-limits.player") == null) ? new HashSet<String>() : plugin.getConfig().getConfigurationSection("shop-limits.player").getKeys(true);
|
public Set<String> shopLimits_player;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>List containing items, of which players can't create a shop</p>
|
* <p>List containing items, of which players can't create a shop</p>
|
||||||
* If this list contains an item (e.g "STONE", "STONE:1"), it's in the blacklist.
|
* If this list contains an item (e.g "STONE", "STONE:1"), it's in the blacklist.
|
||||||
**/
|
**/
|
||||||
public static List<String> blacklist = (plugin.getConfig().getStringList("blacklist") == null) ? new ArrayList<String>() : plugin.getConfig().getStringList("blacklist");
|
public List<String> blacklist;
|
||||||
|
|
||||||
/** Whether the buy price of a shop must be greater than or equal the sell price **/
|
/** Whether the buy price of a shop must be greater than or equal the sell price **/
|
||||||
public static boolean buy_greater_or_equal_sell = plugin.getConfig().getBoolean("buy-greater-or-equal-sell");
|
public boolean buy_greater_or_equal_sell;
|
||||||
|
|
||||||
/** Whether shops should be protected by hoppers **/
|
/** Whether shops should be protected by hoppers **/
|
||||||
public static boolean hopper_protection = plugin.getConfig().getBoolean("hopper-protection");
|
public boolean hopper_protection;
|
||||||
|
|
||||||
/** Whether shops should be protected by explosions **/
|
/** Whether shops should be protected by explosions **/
|
||||||
public static boolean explosion_protection = plugin.getConfig().getBoolean("explosion-protection");
|
public boolean explosion_protection;
|
||||||
|
|
||||||
/** Whether admin shops should be excluded of the shop limits **/
|
/** Whether admin shops should be excluded of the shop limits **/
|
||||||
public static boolean exclude_admin_shops = plugin.getConfig().getBoolean("shop-limits.exclude-admin-shops");
|
public boolean exclude_admin_shops;
|
||||||
|
|
||||||
/** The maximum distance between a player and a shop to see the hologram **/
|
/** The maximum distance between a player and a shop to see the hologram **/
|
||||||
public static double maximal_distance = plugin.getConfig().getDouble("maximal-distance");
|
public double maximal_distance;
|
||||||
|
|
||||||
/** The price a player has to pay in order to create a normal shop **/
|
/** The price a player has to pay in order to create a normal shop **/
|
||||||
public static double shop_creation_price_normal = plugin.getConfig().getDouble("shop-creation-price.normal");
|
public double shop_creation_price_normal;
|
||||||
|
|
||||||
/** The price a player has to pay in order to create an admin shop **/
|
/** The price a player has to pay in order to create an admin shop **/
|
||||||
public static double shop_creation_price_admin = plugin.getConfig().getDouble("shop-creation-price.admin");
|
public double shop_creation_price_admin;
|
||||||
|
|
||||||
/** The default shop limit for players and groups that are not listed in {@link #shopLimits_player} or in {@link #shopLimits_group} **/
|
/** The default shop limit for players and groups that are not listed in {@link #shopLimits_player} or in {@link #shopLimits_group} **/
|
||||||
public static int default_limit = plugin.getConfig().getInt("shop-limits.default");
|
public int default_limit;
|
||||||
|
|
||||||
/** The main command of ShopChest <i>(default: shop)</i> **/
|
/** The main command of ShopChest <i>(default: shop)</i> **/
|
||||||
public static String main_command_name = plugin.getConfig().getString("main-command-name");
|
public String main_command_name;
|
||||||
|
|
||||||
/** The language file to use (e.g <i>en_US</i>, <i>de_DE</i>) **/
|
/** The language file to use (e.g <i>en_US</i>, <i>de_DE</i>) **/
|
||||||
public static String language_file = plugin.getConfig().getString("language-file");
|
public String language_file;
|
||||||
|
|
||||||
|
|
||||||
|
public Config(ShopChest plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
|
||||||
|
plugin.saveDefaultConfig();
|
||||||
|
plugin.reloadConfig();
|
||||||
|
|
||||||
|
reload(true, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>Set a configuration value</p>
|
||||||
|
* <i>Config is automatically reloaded</i>
|
||||||
|
*
|
||||||
|
* @param property Property to change
|
||||||
|
* @param value Value to set
|
||||||
|
*/
|
||||||
|
public void set(String property, String value) {
|
||||||
|
boolean langChange = (property.equalsIgnoreCase("language-file"));
|
||||||
|
try {
|
||||||
|
int intValue = Integer.parseInt(value);
|
||||||
|
plugin.getConfig().set(property, intValue);
|
||||||
|
|
||||||
|
plugin.saveConfig();
|
||||||
|
plugin.reloadConfig();
|
||||||
|
reload(false, langChange);
|
||||||
|
|
||||||
|
return;
|
||||||
|
} catch (NumberFormatException e) { /* Value not an integer */ }
|
||||||
|
|
||||||
|
try {
|
||||||
|
double doubleValue = Double.parseDouble(value);
|
||||||
|
plugin.getConfig().set(property, doubleValue);
|
||||||
|
|
||||||
|
plugin.saveConfig();
|
||||||
|
plugin.reloadConfig();
|
||||||
|
reload(false, langChange);
|
||||||
|
|
||||||
|
return;
|
||||||
|
} catch (NumberFormatException e) { /* Value not a double */ }
|
||||||
|
|
||||||
|
if (value.equalsIgnoreCase("true") || value.equalsIgnoreCase("false")) {
|
||||||
|
boolean boolValue = Boolean.parseBoolean(value);
|
||||||
|
plugin.getConfig().set(property, boolValue);
|
||||||
|
} else {
|
||||||
|
plugin.getConfig().set(property, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
plugin.saveConfig();
|
||||||
|
plugin.reloadConfig();
|
||||||
|
|
||||||
|
reload(false, langChange);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a value to a list in the config.yml.
|
||||||
|
* If the list does not exist, a new list with the given value will be created
|
||||||
|
* @param property Location of the list
|
||||||
|
* @param value Value to add
|
||||||
|
*/
|
||||||
|
public void add(String property, String value) {
|
||||||
|
List list = (plugin.getConfig().getList(property) == null) ? new ArrayList<>() : plugin.getConfig().getList(property);
|
||||||
|
|
||||||
|
try {
|
||||||
|
int intValue = Integer.parseInt(value);
|
||||||
|
list.add(intValue);
|
||||||
|
|
||||||
|
plugin.saveConfig();
|
||||||
|
plugin.reloadConfig();
|
||||||
|
reload(false, false);
|
||||||
|
|
||||||
|
return;
|
||||||
|
} catch (NumberFormatException e) { /* Value not an integer */ }
|
||||||
|
|
||||||
|
try {
|
||||||
|
double doubleValue = Double.parseDouble(value);
|
||||||
|
list.add(doubleValue);
|
||||||
|
|
||||||
|
plugin.saveConfig();
|
||||||
|
plugin.reloadConfig();
|
||||||
|
reload(false, false);
|
||||||
|
|
||||||
|
return;
|
||||||
|
} catch (NumberFormatException e) { /* Value not a double */ }
|
||||||
|
|
||||||
|
if (value.equalsIgnoreCase("true") || value.equalsIgnoreCase("false")) {
|
||||||
|
boolean boolValue = Boolean.parseBoolean(value);
|
||||||
|
list.add(boolValue);
|
||||||
|
} else {
|
||||||
|
list.add(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
plugin.saveConfig();
|
||||||
|
plugin.reloadConfig();
|
||||||
|
|
||||||
|
reload(false, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void remove(String property, String value) {
|
||||||
|
List list = (plugin.getConfig().getList(property) == null) ? new ArrayList<>() : plugin.getConfig().getList(property);
|
||||||
|
|
||||||
|
try {
|
||||||
|
int intValue = Integer.parseInt(value);
|
||||||
|
list.remove(intValue);
|
||||||
|
|
||||||
|
plugin.saveConfig();
|
||||||
|
plugin.reloadConfig();
|
||||||
|
reload(false, false);
|
||||||
|
|
||||||
|
return;
|
||||||
|
} catch (NumberFormatException e) { /* Value not an integer */ }
|
||||||
|
|
||||||
|
try {
|
||||||
|
double doubleValue = Double.parseDouble(value);
|
||||||
|
list.remove(doubleValue);
|
||||||
|
|
||||||
|
plugin.saveConfig();
|
||||||
|
plugin.reloadConfig();
|
||||||
|
reload(false, false);
|
||||||
|
|
||||||
|
return;
|
||||||
|
} catch (NumberFormatException e) { /* Value not a double */ }
|
||||||
|
|
||||||
|
if (value.equalsIgnoreCase("true") || value.equalsIgnoreCase("false")) {
|
||||||
|
boolean boolValue = Boolean.parseBoolean(value);
|
||||||
|
list.remove(boolValue);
|
||||||
|
} else {
|
||||||
|
list.remove(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
plugin.saveConfig();
|
||||||
|
plugin.reloadConfig();
|
||||||
|
|
||||||
|
reload(false, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reload the configuration values from config.yml
|
||||||
|
*/
|
||||||
|
public void reload(boolean firstLoad, boolean langReload) {
|
||||||
|
database_mysql_host = plugin.getConfig().getString("database.mysql.hostname");
|
||||||
|
database_mysql_port = plugin.getConfig().getInt("database.mysql.port");
|
||||||
|
database_mysql_database = plugin.getConfig().getString("database.mysql.database");
|
||||||
|
database_mysql_username = plugin.getConfig().getString("database.mysql.username");
|
||||||
|
database_mysql_password = plugin.getConfig().getString("database.mysql.password");
|
||||||
|
database_type = Database.DatabaseType.valueOf(plugin.getConfig().getString("database.type"));
|
||||||
|
database_reconnect_attempts = plugin.getConfig().getInt("database.reconnect-attempts");
|
||||||
|
minimum_prices = (plugin.getConfig().getConfigurationSection("minimum-prices") == null) ? new HashSet<String>() : plugin.getConfig().getConfigurationSection("minimum-prices").getKeys(true);
|
||||||
|
shopLimits_group = (plugin.getConfig().getConfigurationSection("shop-limits.group") == null) ? new HashSet<String>() : plugin.getConfig().getConfigurationSection("shop-limits.group").getKeys(true);
|
||||||
|
shopLimits_player = (plugin.getConfig().getConfigurationSection("shop-limits.player") == null) ? new HashSet<String>() : plugin.getConfig().getConfigurationSection("shop-limits.player").getKeys(true);
|
||||||
|
blacklist = (plugin.getConfig().getStringList("blacklist") == null) ? new ArrayList<String>() : plugin.getConfig().getStringList("blacklist");
|
||||||
|
buy_greater_or_equal_sell = plugin.getConfig().getBoolean("buy-greater-or-equal-sell");
|
||||||
|
hopper_protection = plugin.getConfig().getBoolean("hopper-protection");
|
||||||
|
explosion_protection = plugin.getConfig().getBoolean("explosion-protection");
|
||||||
|
exclude_admin_shops = plugin.getConfig().getBoolean("shop-limits.exclude-admin-shops");
|
||||||
|
maximal_distance = plugin.getConfig().getDouble("maximal-distance");
|
||||||
|
shop_creation_price_normal = plugin.getConfig().getDouble("shop-creation-price.normal");
|
||||||
|
shop_creation_price_admin = plugin.getConfig().getDouble("shop-creation-price.admin");
|
||||||
|
default_limit = plugin.getConfig().getInt("shop-limits.default");
|
||||||
|
main_command_name = plugin.getConfig().getString("main-command-name");
|
||||||
|
language_file = plugin.getConfig().getString("language-file");
|
||||||
|
|
||||||
|
if (firstLoad || langReload) loadLanguageConfig();
|
||||||
|
if (!firstLoad && langReload) LanguageUtils.load();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return ShopChest's {@link LanguageConfiguration}
|
||||||
|
*/
|
||||||
|
public LanguageConfiguration getLanguageConfig() {
|
||||||
|
return langConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void loadLanguageConfig() {
|
||||||
|
langConfig = new LanguageConfiguration(plugin);
|
||||||
|
File langFolder = new File(plugin.getDataFolder(), "lang");
|
||||||
|
|
||||||
|
if (!(new File(langFolder, "en_US.lang")).exists())
|
||||||
|
plugin.saveResource("lang/en_US.lang", false);
|
||||||
|
|
||||||
|
if (!(new File(langFolder, "de_DE.lang")).exists())
|
||||||
|
plugin.saveResource("lang/de_DE.lang", false);
|
||||||
|
|
||||||
|
File langConfigFile = new File(langFolder, language_file + ".lang");
|
||||||
|
File langDefaultFile = new File(langFolder, "en_US.lang");
|
||||||
|
|
||||||
|
if (!langConfigFile.exists()) {
|
||||||
|
if (!langDefaultFile.exists()) {
|
||||||
|
try {
|
||||||
|
Reader r = plugin.getTextResourceP("lang/" + langConfigFile.getName());
|
||||||
|
|
||||||
|
if (r == null) {
|
||||||
|
r = plugin.getTextResourceP("lang/en_US.lang");
|
||||||
|
plugin.getLogger().info("Using locale \"en_US\" (Streamed from jar file)");
|
||||||
|
} else {
|
||||||
|
plugin.getLogger().info("Using locale \"" + langConfigFile.getName().substring(0, langConfigFile.getName().length() - 5) + "\" (Streamed from jar file)");
|
||||||
|
}
|
||||||
|
|
||||||
|
BufferedReader br = new BufferedReader(r);
|
||||||
|
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
String line = br.readLine();
|
||||||
|
|
||||||
|
while (line != null) {
|
||||||
|
sb.append(line);
|
||||||
|
sb.append("\n");
|
||||||
|
line = br.readLine();
|
||||||
|
}
|
||||||
|
|
||||||
|
langConfig.loadFromString(sb.toString());
|
||||||
|
} catch (IOException | InvalidConfigurationException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
plugin.getLogger().warning("Using default language values");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
langConfig.load(langDefaultFile);
|
||||||
|
plugin.getLogger().info("Using locale \"en_US\"");
|
||||||
|
} catch (IOException | InvalidConfigurationException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
plugin.getLogger().warning("Using default language values");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
plugin.getLogger().info("Using locale \"" + langConfigFile.getName().substring(0, langConfigFile.getName().length() - 5) + "\"");
|
||||||
|
langConfig.load(langConfigFile);
|
||||||
|
} catch (IOException | InvalidConfigurationException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
plugin.getLogger().warning("Using default language values");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import org.bukkit.configuration.InvalidConfigurationException;
|
|||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
@ -47,7 +48,7 @@ public class LanguageConfiguration extends FileConfiguration {
|
|||||||
@Override
|
@Override
|
||||||
public void load(File file) throws IOException, InvalidConfigurationException {
|
public void load(File file) throws IOException, InvalidConfigurationException {
|
||||||
FileInputStream fis = new FileInputStream(file);
|
FileInputStream fis = new FileInputStream(file);
|
||||||
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
|
InputStreamReader isr = new InputStreamReader(fis, StandardCharsets.UTF_8);
|
||||||
BufferedReader br = new BufferedReader(isr);
|
BufferedReader br = new BufferedReader(isr);
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
@ -15,7 +15,9 @@ public enum Regex {
|
|||||||
LIMIT("%LIMIT%"),
|
LIMIT("%LIMIT%"),
|
||||||
PLAYER("%PLAYER%"),
|
PLAYER("%PLAYER%"),
|
||||||
POTION_EFFECT("%POTION-EFFECT%"),
|
POTION_EFFECT("%POTION-EFFECT%"),
|
||||||
MUSIC_TITLE("%MUSIC-TITLE%");
|
MUSIC_TITLE("%MUSIC-TITLE%"),
|
||||||
|
PROPERTY("%PROPERTY%"),
|
||||||
|
VALUE("%VALUE%");
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ import java.util.ArrayList;
|
|||||||
public class LanguageUtils {
|
public class LanguageUtils {
|
||||||
|
|
||||||
private static ShopChest plugin = ShopChest.getInstance();
|
private static ShopChest plugin = ShopChest.getInstance();
|
||||||
private static LanguageConfiguration langConfig = plugin.getLanguageConfig();
|
private static LanguageConfiguration langConfig;
|
||||||
|
|
||||||
private static ArrayList<ItemName> itemNames = new ArrayList<>();
|
private static ArrayList<ItemName> itemNames = new ArrayList<>();
|
||||||
private static ArrayList<EnchantmentName> enchantmentNames = new ArrayList<>();
|
private static ArrayList<EnchantmentName> enchantmentNames = new ArrayList<>();
|
||||||
@ -34,6 +34,17 @@ public class LanguageUtils {
|
|||||||
|
|
||||||
|
|
||||||
public static void load() {
|
public static void load() {
|
||||||
|
langConfig = plugin.getShopChestConfig().getLanguageConfig();
|
||||||
|
|
||||||
|
itemNames.clear();
|
||||||
|
enchantmentNames.clear();
|
||||||
|
enchantmentLevelNames.clear();
|
||||||
|
potionEffectNames.clear();
|
||||||
|
entityNames.clear();
|
||||||
|
potionNames.clear();
|
||||||
|
musicDiscNames.clear();
|
||||||
|
messages.clear();
|
||||||
|
|
||||||
// Add Block Names
|
// Add Block Names
|
||||||
itemNames.add(new ItemName(Material.STONE, langConfig.getString("tile.stone.stone.name", "Stone")));
|
itemNames.add(new ItemName(Material.STONE, langConfig.getString("tile.stone.stone.name", "Stone")));
|
||||||
itemNames.add(new ItemName(Material.STONE, 1, langConfig.getString("tile.stone.granite.name", "Granite")));
|
itemNames.add(new ItemName(Material.STONE, 1, langConfig.getString("tile.stone.granite.name", "Granite")));
|
||||||
@ -899,12 +910,17 @@ public class LanguageUtils {
|
|||||||
messages.add(new LocalizedMessage(LocalizedMessage.Message.NO_PERMISSION_RELOAD, langConfig.getString("message.noPermission.reload", "&cYou don't have permission to reload the shops.")));
|
messages.add(new LocalizedMessage(LocalizedMessage.Message.NO_PERMISSION_RELOAD, langConfig.getString("message.noPermission.reload", "&cYou don't have permission to reload the shops.")));
|
||||||
messages.add(new LocalizedMessage(LocalizedMessage.Message.NO_PERMISSION_UPDATE, langConfig.getString("message.noPermission.update", "&cYou don't have permission to check for updates.")));
|
messages.add(new LocalizedMessage(LocalizedMessage.Message.NO_PERMISSION_UPDATE, langConfig.getString("message.noPermission.update", "&cYou don't have permission to check for updates.")));
|
||||||
messages.add(new LocalizedMessage(LocalizedMessage.Message.NO_PERMISSION_LIMITS, langConfig.getString("message.noPermission.limits", "&cYou don't have permission to view the shop limits.")));
|
messages.add(new LocalizedMessage(LocalizedMessage.Message.NO_PERMISSION_LIMITS, langConfig.getString("message.noPermission.limits", "&cYou don't have permission to view the shop limits.")));
|
||||||
|
messages.add(new LocalizedMessage(LocalizedMessage.Message.NO_PERMISSION_CONFIG, langConfig.getString("message.noPermission.config", "&cYou don't have permission to change configuration values.")));
|
||||||
messages.add(new LocalizedMessage(LocalizedMessage.Message.COMMAND_DESC_CREATE, langConfig.getString("message.commandDescription.create", "Create a shop.")));
|
messages.add(new LocalizedMessage(LocalizedMessage.Message.COMMAND_DESC_CREATE, langConfig.getString("message.commandDescription.create", "Create a shop.")));
|
||||||
messages.add(new LocalizedMessage(LocalizedMessage.Message.COMMAND_DESC_REMOVE, langConfig.getString("message.commandDescription.remove", "Remove a shop.")));
|
messages.add(new LocalizedMessage(LocalizedMessage.Message.COMMAND_DESC_REMOVE, langConfig.getString("message.commandDescription.remove", "Remove a shop.")));
|
||||||
messages.add(new LocalizedMessage(LocalizedMessage.Message.COMMAND_DESC_INFO, langConfig.getString("message.commandDescription.info", "Retrieve shop information.")));
|
messages.add(new LocalizedMessage(LocalizedMessage.Message.COMMAND_DESC_INFO, langConfig.getString("message.commandDescription.info", "Retrieve shop information.")));
|
||||||
messages.add(new LocalizedMessage(LocalizedMessage.Message.COMMAND_DESC_RELOAD, langConfig.getString("message.commandDescription.reload", "Reload shops.")));
|
messages.add(new LocalizedMessage(LocalizedMessage.Message.COMMAND_DESC_RELOAD, langConfig.getString("message.commandDescription.reload", "Reload shops.")));
|
||||||
messages.add(new LocalizedMessage(LocalizedMessage.Message.COMMAND_DESC_UPDATE, langConfig.getString("message.commandDescription.update", "Check for Updates.")));
|
messages.add(new LocalizedMessage(LocalizedMessage.Message.COMMAND_DESC_UPDATE, langConfig.getString("message.commandDescription.update", "Check for Updates.")));
|
||||||
messages.add(new LocalizedMessage(LocalizedMessage.Message.COMMAND_DESC_LIMITS, langConfig.getString("message.commandDescription.limits", "View shop limits.")));
|
messages.add(new LocalizedMessage(LocalizedMessage.Message.COMMAND_DESC_LIMITS, langConfig.getString("message.commandDescription.limits", "View shop limits.")));
|
||||||
|
messages.add(new LocalizedMessage(LocalizedMessage.Message.COMMAND_DESC_CONFIG, langConfig.getString("message.commandDescription.config", "Change configuration values.")));
|
||||||
|
messages.add(new LocalizedMessage(LocalizedMessage.Message.CHANGED_CONFIG_SET, langConfig.getString("message.config.set", "&6Changed &a%PROPERTY% &6to &a%VALUE%&6."), Regex.PROPERTY, Regex.VALUE));
|
||||||
|
messages.add(new LocalizedMessage(LocalizedMessage.Message.CHANGED_CONFIG_REMOVED, langConfig.getString("message.config.removed", "&6Removed &a%VALUE% &6from &a%PROPERTY%&6."), Regex.PROPERTY, Regex.VALUE));
|
||||||
|
messages.add(new LocalizedMessage(LocalizedMessage.Message.CHANGED_CONFIG_ADDED, langConfig.getString("message.config.added", "&6Added &a%VALUE% &6to &a%PROPERTY%&6."), Regex.PROPERTY, Regex.VALUE));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -108,12 +108,17 @@ public class LocalizedMessage {
|
|||||||
NO_PERMISSION_RELOAD,
|
NO_PERMISSION_RELOAD,
|
||||||
NO_PERMISSION_UPDATE,
|
NO_PERMISSION_UPDATE,
|
||||||
NO_PERMISSION_LIMITS,
|
NO_PERMISSION_LIMITS,
|
||||||
|
NO_PERMISSION_CONFIG,
|
||||||
COMMAND_DESC_CREATE,
|
COMMAND_DESC_CREATE,
|
||||||
COMMAND_DESC_REMOVE,
|
COMMAND_DESC_REMOVE,
|
||||||
COMMAND_DESC_INFO,
|
COMMAND_DESC_INFO,
|
||||||
COMMAND_DESC_RELOAD,
|
COMMAND_DESC_RELOAD,
|
||||||
COMMAND_DESC_UPDATE,
|
COMMAND_DESC_UPDATE,
|
||||||
COMMAND_DESC_LIMITS
|
COMMAND_DESC_LIMITS,
|
||||||
|
COMMAND_DESC_CONFIG,
|
||||||
|
CHANGED_CONFIG_SET,
|
||||||
|
CHANGED_CONFIG_REMOVED,
|
||||||
|
CHANGED_CONFIG_ADDED
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class ReplacedRegex {
|
public static class ReplacedRegex {
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package de.epiceric.shopchest.listeners;
|
package de.epiceric.shopchest.listeners;
|
||||||
|
|
||||||
import de.epiceric.shopchest.ShopChest;
|
import de.epiceric.shopchest.ShopChest;
|
||||||
import de.epiceric.shopchest.config.Config;
|
|
||||||
import de.epiceric.shopchest.language.LanguageUtils;
|
import de.epiceric.shopchest.language.LanguageUtils;
|
||||||
import de.epiceric.shopchest.language.LocalizedMessage;
|
import de.epiceric.shopchest.language.LocalizedMessage;
|
||||||
import de.epiceric.shopchest.shop.Shop;
|
import de.epiceric.shopchest.shop.Shop;
|
||||||
@ -26,6 +25,12 @@ import java.util.ArrayList;
|
|||||||
|
|
||||||
public class ChestProtectListener implements Listener {
|
public class ChestProtectListener implements Listener {
|
||||||
|
|
||||||
|
private ShopChest plugin;
|
||||||
|
|
||||||
|
public ChestProtectListener(ShopChest plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onBlockBreak(BlockBreakEvent e) {
|
public void onBlockBreak(BlockBreakEvent e) {
|
||||||
if (ShopUtils.isShop(e.getBlock().getLocation())) {
|
if (ShopUtils.isShop(e.getBlock().getLocation())) {
|
||||||
@ -36,7 +41,7 @@ public class ChestProtectListener implements Listener {
|
|||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onBlockExplode(BlockExplodeEvent e) {
|
public void onBlockExplode(BlockExplodeEvent e) {
|
||||||
if (Config.explosion_protection) {
|
if (plugin.getShopChestConfig().explosion_protection) {
|
||||||
ArrayList<Block> bl = new ArrayList<>(e.blockList());
|
ArrayList<Block> bl = new ArrayList<>(e.blockList());
|
||||||
for (Block b : bl) {
|
for (Block b : bl) {
|
||||||
if (b.getType().equals(Material.CHEST) || b.getType().equals(Material.TRAPPED_CHEST)) {
|
if (b.getType().equals(Material.CHEST) || b.getType().equals(Material.TRAPPED_CHEST)) {
|
||||||
@ -48,7 +53,7 @@ public class ChestProtectListener implements Listener {
|
|||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onEntityExplode(EntityExplodeEvent e) {
|
public void onEntityExplode(EntityExplodeEvent e) {
|
||||||
if (Config.explosion_protection) {
|
if (plugin.getShopChestConfig().explosion_protection) {
|
||||||
ArrayList<Block> bl = new ArrayList<>(e.blockList());
|
ArrayList<Block> bl = new ArrayList<>(e.blockList());
|
||||||
for (Block b : bl) {
|
for (Block b : bl) {
|
||||||
if (b.getType().equals(Material.CHEST) || b.getType().equals(Material.TRAPPED_CHEST)) {
|
if (b.getType().equals(Material.CHEST) || b.getType().equals(Material.TRAPPED_CHEST)) {
|
||||||
@ -100,7 +105,7 @@ public class ChestProtectListener implements Listener {
|
|||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGH)
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
public void onItemMove(InventoryMoveItemEvent e) {
|
public void onItemMove(InventoryMoveItemEvent e) {
|
||||||
if (Config.hopper_protection) {
|
if (plugin.getShopChestConfig().hopper_protection) {
|
||||||
if ((e.getSource().getType().equals(InventoryType.CHEST)) && (!e.getInitiator().getType().equals(InventoryType.PLAYER))) {
|
if ((e.getSource().getType().equals(InventoryType.CHEST)) && (!e.getInitiator().getType().equals(InventoryType.PLAYER))) {
|
||||||
|
|
||||||
if (e.getSource().getHolder() instanceof DoubleChest) {
|
if (e.getSource().getHolder() instanceof DoubleChest) {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package de.epiceric.shopchest.listeners;
|
package de.epiceric.shopchest.listeners;
|
||||||
|
|
||||||
import de.epiceric.shopchest.config.Config;
|
import de.epiceric.shopchest.ShopChest;
|
||||||
import de.epiceric.shopchest.shop.Shop;
|
import de.epiceric.shopchest.shop.Shop;
|
||||||
import de.epiceric.shopchest.utils.ShopUtils;
|
import de.epiceric.shopchest.utils.ShopUtils;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
@ -11,6 +11,12 @@ import org.bukkit.event.player.PlayerMoveEvent;
|
|||||||
|
|
||||||
public class HologramUpdateListener implements Listener {
|
public class HologramUpdateListener implements Listener {
|
||||||
|
|
||||||
|
private ShopChest plugin;
|
||||||
|
|
||||||
|
public HologramUpdateListener(ShopChest plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerMove(PlayerMoveEvent e) {
|
public void onPlayerMove(PlayerMoveEvent e) {
|
||||||
|
|
||||||
@ -25,7 +31,7 @@ public class HologramUpdateListener implements Listener {
|
|||||||
|
|
||||||
if (playerLocation.getWorld().equals(shopLocation.getWorld())) {
|
if (playerLocation.getWorld().equals(shopLocation.getWorld())) {
|
||||||
|
|
||||||
if (playerLocation.distance(shop.getHologram().getLocation()) <= Config.maximal_distance) {
|
if (playerLocation.distance(shop.getHologram().getLocation()) <= plugin.getShopChestConfig().maximal_distance) {
|
||||||
|
|
||||||
if (!shop.getHologram().isVisible(p)) {
|
if (!shop.getHologram().isVisible(p)) {
|
||||||
shop.getHologram().showPlayer(p);
|
shop.getHologram().showPlayer(p);
|
||||||
|
@ -3,7 +3,6 @@ package de.epiceric.shopchest.listeners;
|
|||||||
import com.griefcraft.lwc.LWC;
|
import com.griefcraft.lwc.LWC;
|
||||||
import com.griefcraft.model.Protection;
|
import com.griefcraft.model.Protection;
|
||||||
import de.epiceric.shopchest.ShopChest;
|
import de.epiceric.shopchest.ShopChest;
|
||||||
import de.epiceric.shopchest.config.Config;
|
|
||||||
import de.epiceric.shopchest.config.Regex;
|
import de.epiceric.shopchest.config.Regex;
|
||||||
import de.epiceric.shopchest.event.ShopBuySellEvent;
|
import de.epiceric.shopchest.event.ShopBuySellEvent;
|
||||||
import de.epiceric.shopchest.event.ShopCreateEvent;
|
import de.epiceric.shopchest.event.ShopCreateEvent;
|
||||||
@ -244,14 +243,14 @@ public class ShopInteractListener implements Listener {
|
|||||||
* @param shopType Type of the shop
|
* @param shopType Type of the shop
|
||||||
*/
|
*/
|
||||||
private void create(Player executor, Location location, ItemStack product, double buyPrice, double sellPrice, ShopType shopType) {
|
private void create(Player executor, Location location, ItemStack product, double buyPrice, double sellPrice, ShopType shopType) {
|
||||||
int id = database.getNextFreeID(Config.database_reconnect_attempts);
|
int id = database.getNextFreeID(plugin.getShopChestConfig().database_reconnect_attempts);
|
||||||
|
|
||||||
if (id == 0) {
|
if (id == 0) {
|
||||||
executor.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.ERROR_OCCURRED, new LocalizedMessage.ReplacedRegex(Regex.ERROR, "Could not connect to database")));
|
executor.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.ERROR_OCCURRED, new LocalizedMessage.ReplacedRegex(Regex.ERROR, "Could not connect to database")));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
double creationPrice = (shopType == ShopType.NORMAL) ? Config.shop_creation_price_normal : Config.shop_creation_price_admin;
|
double creationPrice = (shopType == ShopType.NORMAL) ? plugin.getShopChestConfig().shop_creation_price_normal : plugin.getShopChestConfig().shop_creation_price_admin;
|
||||||
|
|
||||||
ShopCreateEvent event = new ShopCreateEvent(executor, Shop.createImaginaryShop(executor, product, buyPrice, sellPrice,shopType), creationPrice);
|
ShopCreateEvent event = new ShopCreateEvent(executor, Shop.createImaginaryShop(executor, product, buyPrice, sellPrice,shopType), creationPrice);
|
||||||
Bukkit.getPluginManager().callEvent(event);
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package de.epiceric.shopchest.sql;
|
package de.epiceric.shopchest.sql;
|
||||||
|
|
||||||
import de.epiceric.shopchest.ShopChest;
|
import de.epiceric.shopchest.ShopChest;
|
||||||
import de.epiceric.shopchest.config.Config;
|
|
||||||
import de.epiceric.shopchest.shop.Shop;
|
import de.epiceric.shopchest.shop.Shop;
|
||||||
import de.epiceric.shopchest.shop.Shop.ShopType;
|
import de.epiceric.shopchest.shop.Shop.ShopType;
|
||||||
import de.epiceric.shopchest.utils.ShopUtils;
|
import de.epiceric.shopchest.utils.ShopUtils;
|
||||||
@ -20,10 +19,12 @@ public abstract class Database {
|
|||||||
public ShopChest plugin;
|
public ShopChest plugin;
|
||||||
public Connection connection;
|
public Connection connection;
|
||||||
|
|
||||||
private int attempts = Config.database_reconnect_attempts;
|
private int attempts;
|
||||||
|
|
||||||
public Database(ShopChest plugin) {
|
public Database(ShopChest plugin) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
|
this.attempts = plugin.getShopChestConfig().database_reconnect_attempts;
|
||||||
|
|
||||||
initialize();
|
initialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package de.epiceric.shopchest.sql;
|
package de.epiceric.shopchest.sql;
|
||||||
|
|
||||||
import de.epiceric.shopchest.ShopChest;
|
import de.epiceric.shopchest.ShopChest;
|
||||||
import de.epiceric.shopchest.config.Config;
|
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.DriverManager;
|
import java.sql.DriverManager;
|
||||||
@ -21,10 +20,10 @@ public class MySQL extends Database {
|
|||||||
|
|
||||||
Class.forName("com.mysql.jdbc.Driver");
|
Class.forName("com.mysql.jdbc.Driver");
|
||||||
|
|
||||||
String connectUrl = "jdbc:mysql://" + Config.database_mysql_host + ":" + Config.database_mysql_port + "/" + Config.database_mysql_database;
|
String connectUrl = "jdbc:mysql://" + plugin.getShopChestConfig().database_mysql_host + ":" + plugin.getShopChestConfig().database_mysql_port + "/" + plugin.getShopChestConfig().database_mysql_database;
|
||||||
plugin.getLogger().info("Connecting to MySQL Server \"" + connectUrl + "\" as user \"" + Config.database_mysql_username + "\"");
|
plugin.getLogger().info("Connecting to MySQL Server \"" + connectUrl + "\" as user \"" + plugin.getShopChestConfig().database_mysql_username + "\"");
|
||||||
|
|
||||||
connection = DriverManager.getConnection(connectUrl, Config.database_mysql_username, Config.database_mysql_password);
|
connection = DriverManager.getConnection(connectUrl, plugin.getShopChestConfig().database_mysql_username, plugin.getShopChestConfig().database_mysql_password);
|
||||||
|
|
||||||
return connection;
|
return connection;
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
|
@ -81,7 +81,7 @@ public class ShopUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (addToDatabase)
|
if (addToDatabase)
|
||||||
plugin.getShopDatabase().addShop(shop, Config.database_reconnect_attempts);
|
plugin.getShopDatabase().addShop(shop, plugin.getShopChestConfig().database_reconnect_attempts);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,7 +108,7 @@ public class ShopUtils {
|
|||||||
shop.removeHologram();
|
shop.removeHologram();
|
||||||
|
|
||||||
if (removeFromDatabase)
|
if (removeFromDatabase)
|
||||||
plugin.getShopDatabase().removeShop(shop, Config.database_reconnect_attempts);
|
plugin.getShopDatabase().removeShop(shop, plugin.getShopChestConfig().database_reconnect_attempts);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -117,12 +117,12 @@ public class ShopUtils {
|
|||||||
* @return The shop limits of the given player
|
* @return The shop limits of the given player
|
||||||
*/
|
*/
|
||||||
public static int getShopLimit(Player p) {
|
public static int getShopLimit(Player p) {
|
||||||
int limit = Config.default_limit;
|
int limit = plugin.getShopChestConfig().default_limit;
|
||||||
|
|
||||||
if (plugin.getPermission().hasGroupSupport()) {
|
if (plugin.getPermission().hasGroupSupport()) {
|
||||||
List<String> groups = new ArrayList<String>();
|
List<String> groups = new ArrayList<String>();
|
||||||
|
|
||||||
for (String key : Config.shopLimits_group) {
|
for (String key : plugin.getShopChestConfig().shopLimits_group) {
|
||||||
for (int i = 0; i < plugin.getPermission().getGroups().length; i++) {
|
for (int i = 0; i < plugin.getPermission().getGroups().length; i++) {
|
||||||
if (plugin.getPermission().getGroups()[i].equals(key)) {
|
if (plugin.getPermission().getGroups()[i].equals(key)) {
|
||||||
if (plugin.getPermission().playerInGroup(p, key)) {
|
if (plugin.getPermission().playerInGroup(p, key)) {
|
||||||
@ -153,7 +153,7 @@ public class ShopUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (String key : Config.shopLimits_player) {
|
for (String key : plugin.getShopChestConfig().shopLimits_player) {
|
||||||
int pLimit = ShopChest.getInstance().getConfig().getInt("shop-limits.player." + key);
|
int pLimit = ShopChest.getInstance().getConfig().getInt("shop-limits.player." + key);
|
||||||
if (Utils.isUUID(key)) {
|
if (Utils.isUUID(key)) {
|
||||||
if (p.getUniqueId().equals(UUID.fromString(key))) {
|
if (p.getUniqueId().equals(UUID.fromString(key))) {
|
||||||
@ -179,7 +179,7 @@ public class ShopUtils {
|
|||||||
|
|
||||||
for (Shop shop : ShopUtils.getShops()) {
|
for (Shop shop : ShopUtils.getShops()) {
|
||||||
if (shop.getVendor().equals(p)) {
|
if (shop.getVendor().equals(p)) {
|
||||||
if (shop.getShopType() != Shop.ShopType.ADMIN || !Config.exclude_admin_shops) {
|
if (shop.getShopType() != Shop.ShopType.ADMIN || !plugin.getShopChestConfig().exclude_admin_shops) {
|
||||||
shopCount++;
|
shopCount++;
|
||||||
|
|
||||||
if (shop.getChest().getInventory().getHolder() instanceof DoubleChest)
|
if (shop.getChest().getInventory().getHolder() instanceof DoubleChest)
|
||||||
@ -196,6 +196,8 @@ public class ShopUtils {
|
|||||||
* @return Amount of shops, which were reloaded
|
* @return Amount of shops, which were reloaded
|
||||||
*/
|
*/
|
||||||
public static int reloadShops() {
|
public static int reloadShops() {
|
||||||
|
plugin.getShopChestConfig().reload(false, true);
|
||||||
|
|
||||||
for (Shop shop : ShopUtils.getShops()) {
|
for (Shop shop : ShopUtils.getShops()) {
|
||||||
ShopUtils.removeShop(shop, false);
|
ShopUtils.removeShop(shop, false);
|
||||||
}
|
}
|
||||||
@ -212,10 +214,10 @@ public class ShopUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for (int id = 1; id < plugin.getShopDatabase().getHighestID(Config.database_reconnect_attempts) + 1; id++) {
|
for (int id = 1; id < plugin.getShopDatabase().getHighestID(plugin.getShopChestConfig().database_reconnect_attempts) + 1; id++) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Shop shop = (Shop) plugin.getShopDatabase().get(id, Database.ShopInfo.SHOP, Config.database_reconnect_attempts);
|
Shop shop = (Shop) plugin.getShopDatabase().get(id, Database.ShopInfo.SHOP, plugin.getShopChestConfig().database_reconnect_attempts);
|
||||||
ShopUtils.addShop(shop, false);
|
ShopUtils.addShop(shop, false);
|
||||||
} catch (NullPointerException e) {
|
} catch (NullPointerException e) {
|
||||||
continue;
|
continue;
|
||||||
|
@ -63,13 +63,18 @@ message.noPermission.sell=&cDu hast keine Berechtigung etwas zu verkaufen.
|
|||||||
message.noPermission.remove-others=&cDu hast keine Berechtigung diesen Shop zu entfernen.
|
message.noPermission.remove-others=&cDu hast keine Berechtigung diesen Shop zu entfernen.
|
||||||
message.noPermission.reload=&cDu hast keine Berechtigung die Shops neu zu laden.
|
message.noPermission.reload=&cDu hast keine Berechtigung die Shops neu zu laden.
|
||||||
message.noPermission.update=&cDu hast keine Berechtigung nach Aktualisierungen zu suchen.
|
message.noPermission.update=&cDu hast keine Berechtigung nach Aktualisierungen zu suchen.
|
||||||
message.noPermission.limits=&cDu hast keine Berechtigung die Shop Limits zu sehen
|
message.noPermission.limits=&cDu hast keine Berechtigung die Shop Limits zu sehen.
|
||||||
|
message.noPermission.config=&cDu hast keine Berechtigung Konfigurationswerte zu verändern.
|
||||||
message.commandDescription.create=Erstelle einen Shop.
|
message.commandDescription.create=Erstelle einen Shop.
|
||||||
message.commandDescription.remove=Entferne einen Shop.
|
message.commandDescription.remove=Entferne einen Shop.
|
||||||
message.commandDescription.info=Rufe Informationen über den Shop ab.
|
message.commandDescription.info=Rufe Informationen über den Shop ab.
|
||||||
message.commandDescription.reload=Lade die Shops neu.
|
message.commandDescription.reload=Lade die Shops neu.
|
||||||
message.commandDescription.update=Suche nach Aktualisierungen.
|
message.commandDescription.update=Suche nach Aktualisierungen.
|
||||||
message.commandDescription.limits=Betrachte die Shop Limits.
|
message.commandDescription.limits=Betrachte die Shop Limits.
|
||||||
|
message.commandDescription.config=Verändere Konfigurationswerte.
|
||||||
|
message.config.set=&6Eigenschaft &a%PROPERTY% &6wurde auf &a%VALUE% &6gesetzt.
|
||||||
|
message.config.added=&6Wert &a%VALUE% &6wurde zu &a%PROPERTY% &6hinzugefügt.
|
||||||
|
message.config.removed=&6Wert &a%VALUE% &6wurde aus &a%PROPERTY% &6entfernt.
|
||||||
|
|
||||||
effect.absorption=Absorption
|
effect.absorption=Absorption
|
||||||
effect.blindness=Blindheit
|
effect.blindness=Blindheit
|
||||||
|
@ -224,6 +224,9 @@ message.noPermission.update=&cYou don't have permission to check for updates.
|
|||||||
# Set the message when a not permitted player tries to view the shop limits.
|
# Set the message when a not permitted player tries to view the shop limits.
|
||||||
message.noPermission.limits=&cYou don't have permission to view the shop limits.
|
message.noPermission.limits=&cYou don't have permission to view the shop limits.
|
||||||
|
|
||||||
|
# Set the message when a not permitted player tries to change configuration values.
|
||||||
|
message.noPermission.config=&cYou don't have permission to change configuration values.
|
||||||
|
|
||||||
# Set the command description message for '/shop create' when you type '/shop'.
|
# Set the command description message for '/shop create' when you type '/shop'.
|
||||||
message.commandDescription.create=Create a shop.
|
message.commandDescription.create=Create a shop.
|
||||||
|
|
||||||
@ -242,6 +245,21 @@ message.commandDescription.update=Check for Updates.
|
|||||||
# Set the command description message for '/shop limits' when you type '/shop'.
|
# Set the command description message for '/shop limits' when you type '/shop'.
|
||||||
message.commandDescription.limits=View shop limits.
|
message.commandDescription.limits=View shop limits.
|
||||||
|
|
||||||
|
# Set the command description message for '/shop config' when you type '/shop'.
|
||||||
|
message.commandDescription.config=Change configuration values.
|
||||||
|
|
||||||
|
# Set the message a player gets after setting a configuration value per command
|
||||||
|
# Usable regex: %PROPERTY%, %VALUE%
|
||||||
|
message.config.set=&6Changed &a%PROPERTY% &6to &a%VALUE%&6.
|
||||||
|
|
||||||
|
# Set the message a player gets after adding a value to a list in the configuration per command
|
||||||
|
# Usable regex: %PROPERTY%, %VALUE%
|
||||||
|
message.config.added=&6Added &a%VALUE% &6to &a%PROPERTY%&6.
|
||||||
|
|
||||||
|
# Set the message a player gets after removing a value from a list in the configuration per command
|
||||||
|
# Usable regex: %PROPERTY%, %VALUE%
|
||||||
|
message.config.removed=&6Removed &a%VALUE% &6from &a%PROPERTY%&6.
|
||||||
|
|
||||||
# Effect names that will be displayed in the place of %POTION-EFFECT%
|
# Effect names that will be displayed in the place of %POTION-EFFECT%
|
||||||
effect.none=No Effects
|
effect.none=No Effects
|
||||||
effect.moveSpeed=Speed
|
effect.moveSpeed=Speed
|
||||||
|
@ -57,4 +57,7 @@ permissions:
|
|||||||
default: op
|
default: op
|
||||||
shopchest.limits:
|
shopchest.limits:
|
||||||
description: Allows you to view shop limits.
|
description: Allows you to view shop limits.
|
||||||
default: true
|
default: true
|
||||||
|
shopchest.config:
|
||||||
|
description: Allows you to change configuration values per command.
|
||||||
|
default: op
|
Loading…
Reference in New Issue
Block a user