mirror of
https://e.coding.net/circlecloud/RealBackpacks.git
synced 2025-11-24 21:36:12 +00:00
@@ -28,10 +28,12 @@ public class MainCommand implements CommandExecutor {
|
|||||||
|
|
||||||
private boolean exist = false;
|
private boolean exist = false;
|
||||||
|
|
||||||
private String[] helps = new String[] { "§6====== 真实背包插件 By:喵♂呜 ======",
|
private final String[] helps = new String[] { "§6====== 真实背包插件 By:喵♂呜 ======",
|
||||||
"§4* §a查看可购买列表 §7/rb list ", "§4* §a购买背包 §7/rb buy <背包名称> ",
|
"§4* §a查看可购买列表 §7/rb list ",
|
||||||
|
"§4* §a购买背包 §7/rb buy <背包名称> ",
|
||||||
"§4* §a给玩家指定背包 §7/rb give <玩家名称> <背包名称>",
|
"§4* §a给玩家指定背包 §7/rb give <玩家名称> <背包名称>",
|
||||||
"§4* §a查看玩家指定背包 §7/rb view <玩家名称> <背包名称>", "§4* §a数据转移至MySQL §7/rb filetomysql" };
|
"§4* §a查看玩家指定背包 §7/rb view <玩家名称> <背包名称>",
|
||||||
|
"§4* §a数据转移至MySQL §7/rb filetomysql" };
|
||||||
|
|
||||||
public MainCommand(final RealBackpacks plugin) {
|
public MainCommand(final RealBackpacks plugin) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
@@ -56,8 +58,7 @@ public class MainCommand implements CommandExecutor {
|
|||||||
plugin.setupLists();
|
plugin.setupLists();
|
||||||
plugin.getServer().resetRecipes();
|
plugin.getServer().resetRecipes();
|
||||||
plugin.setup();
|
plugin.setup();
|
||||||
sender.sendMessage(ChatColor.GRAY + "配置文件重载完毕 用时 " + ChatColor.YELLOW
|
sender.sendMessage(ChatColor.GRAY + "配置文件重载完毕 用时 " + ChatColor.YELLOW + (System.currentTimeMillis() - first) + "毫秒" + ChatColor.GRAY + ".");
|
||||||
+ (System.currentTimeMillis() - first) + "毫秒" + ChatColor.GRAY + ".");
|
|
||||||
return true;
|
return true;
|
||||||
} else if (command.equalsIgnoreCase("buy") || command.equalsIgnoreCase("purchase")) {
|
} else if (command.equalsIgnoreCase("buy") || command.equalsIgnoreCase("purchase")) {
|
||||||
if (!plugin.isUsingVault()) {
|
if (!plugin.isUsingVault()) {
|
||||||
@@ -69,8 +70,7 @@ public class MainCommand implements CommandExecutor {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!(args.length == 2)) {
|
if (!(args.length == 2)) {
|
||||||
sender.sendMessage(ChatColor.RED + "命令错误. 正确命令:" + ChatColor.GRAY
|
sender.sendMessage(ChatColor.RED + "命令错误. 正确命令:" + ChatColor.GRAY + " /rb buy <backpack>");
|
||||||
+ " /rb buy <backpack>");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
String backpack = null;
|
String backpack = null;
|
||||||
@@ -83,13 +83,11 @@ public class MainCommand implements CommandExecutor {
|
|||||||
sender.sendMessage("没有购买的权限.");
|
sender.sendMessage("没有购买的权限.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (plugin.backpackData.get(backpack).get(13) != null
|
if (plugin.backpackData.get(backpack).get(13) != null && !plugin.backpackData.get(backpack).get(13).equals("true")) {
|
||||||
&& !plugin.backpackData.get(backpack).get(13).equals("true")) {
|
|
||||||
sender.sendMessage("不能被购买.");
|
sender.sendMessage("不能被购买.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
final double price = Double.parseDouble(plugin.backpackData.get(backpack).get(
|
final double price = Double.parseDouble(plugin.backpackData.get(backpack).get(14));
|
||||||
14));
|
|
||||||
if (RealBackpacks.econ.getBalance(sender.getName()) < price) {
|
if (RealBackpacks.econ.getBalance(sender.getName()) < price) {
|
||||||
sender.sendMessage(ChatColor.RED + "你没有足够的钱购买这个背包.");
|
sender.sendMessage(ChatColor.RED + "你没有足够的钱购买这个背包.");
|
||||||
return false;
|
return false;
|
||||||
@@ -99,31 +97,21 @@ public class MainCommand implements CommandExecutor {
|
|||||||
final ItemStack backpackItem = plugin.backpackItems.get(backpack);
|
final ItemStack backpackItem = plugin.backpackItems.get(backpack);
|
||||||
if (inv.firstEmpty() != -1) {
|
if (inv.firstEmpty() != -1) {
|
||||||
RealBackpacks.econ.withdrawPlayer(p.getName(), price);
|
RealBackpacks.econ.withdrawPlayer(p.getName(), price);
|
||||||
if (plugin.backpackData.get(backpack).get(18) != null
|
if (plugin.backpackData.get(backpack).get(18) != null && plugin.backpackData.get(backpack).get(18).equalsIgnoreCase("true")) {
|
||||||
&& plugin.backpackData.get(backpack).get(18)
|
if (RealBackpacks.globalGlow && plugin.backpackData.get(backpack).get(17) != null && plugin.backpackData.get(backpack).get(17).equalsIgnoreCase("true")) {
|
||||||
.equalsIgnoreCase("true")) {
|
inv.setItem(inv.firstEmpty(), RealBackpacks.NMS.addGlow(backpackItem));
|
||||||
if (RealBackpacks.globalGlow
|
|
||||||
&& plugin.backpackData.get(backpack).get(17) != null
|
|
||||||
&& plugin.backpackData.get(backpack).get(17)
|
|
||||||
.equalsIgnoreCase("true")) {
|
|
||||||
inv.setItem(inv.firstEmpty(),
|
|
||||||
RealBackpacks.NMS.addGlow(backpackItem));
|
|
||||||
} else {
|
} else {
|
||||||
inv.setItem(inv.firstEmpty(), backpackItem);
|
inv.setItem(inv.firstEmpty(), backpackItem);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (RealBackpacks.globalGlow
|
if (RealBackpacks.globalGlow && plugin.backpackData.get(backpack).get(17) != null && plugin.backpackData.get(backpack).get(17).equalsIgnoreCase("true")) {
|
||||||
&& plugin.backpackData.get(backpack).get(17) != null
|
|
||||||
&& plugin.backpackData.get(backpack).get(17)
|
|
||||||
.equalsIgnoreCase("true")) {
|
|
||||||
inv.addItem(RealBackpacks.NMS.addGlow(backpackItem));
|
inv.addItem(RealBackpacks.NMS.addGlow(backpackItem));
|
||||||
} else {
|
} else {
|
||||||
inv.addItem(backpackItem);
|
inv.addItem(backpackItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
p.updateInventory();
|
p.updateInventory();
|
||||||
sender.sendMessage(ChatColor.GREEN + "你花费了 " + ChatColor.GOLD + price
|
sender.sendMessage(ChatColor.GREEN + "你花费了 " + ChatColor.GOLD + price + ChatColor.GREEN + " 购买了背包: " + ChatColor.GOLD + backpack);
|
||||||
+ ChatColor.GREEN + " 购买了背包: " + ChatColor.GOLD + backpack);
|
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
sender.sendMessage(ChatColor.RED + "你的背包是空的.");
|
sender.sendMessage(ChatColor.RED + "你的背包是空的.");
|
||||||
@@ -134,53 +122,35 @@ public class MainCommand implements CommandExecutor {
|
|||||||
sender.sendMessage(ChatColor.RED + "你没有此命令的权限!");
|
sender.sendMessage(ChatColor.RED + "你没有此命令的权限!");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
sender.sendMessage(ChatColor.LIGHT_PURPLE + " 名称 " + ChatColor.GOLD + "|"
|
sender.sendMessage(ChatColor.LIGHT_PURPLE + " 名称 " + ChatColor.GOLD + "|" + ChatColor.AQUA + " 大小 " + ChatColor.GOLD + "|" + ChatColor.GREEN + " 价格 ");
|
||||||
+ ChatColor.AQUA + " 大小 " + ChatColor.GOLD + "|" + ChatColor.GREEN
|
|
||||||
+ " 价格 ");
|
|
||||||
sender.sendMessage(ChatColor.GOLD + "-----------------------------------");
|
sender.sendMessage(ChatColor.GOLD + "-----------------------------------");
|
||||||
if (plugin.isUsingPerms()) {
|
if (plugin.isUsingPerms()) {
|
||||||
for (final String backpack : plugin.backpacks) {
|
for (final String backpack : plugin.backpacks) {
|
||||||
final boolean hasPerm = sender.hasPermission("rb." + backpack + ".buy");
|
final boolean hasPerm = sender.hasPermission("rb." + backpack + ".buy");
|
||||||
final List<String> key = plugin.backpackData.get(backpack);
|
final List<String> key = plugin.backpackData.get(backpack);
|
||||||
if (plugin.backpackData.get(backpack).get(13).equalsIgnoreCase("true")
|
if (plugin.backpackData.get(backpack).get(13).equalsIgnoreCase("true") && hasPerm) {
|
||||||
&& hasPerm) {
|
sender.sendMessage(ChatColor.LIGHT_PURPLE + backpack + ChatColor.GOLD + " | " + ChatColor.AQUA + key.get(0) + ChatColor.GOLD + " | " + ChatColor.GREEN
|
||||||
sender.sendMessage(ChatColor.LIGHT_PURPLE + backpack
|
|
||||||
+ ChatColor.GOLD + " | " + ChatColor.AQUA + key.get(0)
|
|
||||||
+ ChatColor.GOLD + " | " + ChatColor.GREEN
|
|
||||||
+ Double.parseDouble(key.get(14)));
|
+ Double.parseDouble(key.get(14)));
|
||||||
} else if (plugin.backpackData.get(backpack).get(13) != null
|
} else if (plugin.backpackData.get(backpack).get(13) != null && !plugin.backpackData.get(backpack).get(13).equalsIgnoreCase("true") && hasPerm) {
|
||||||
&& !plugin.backpackData.get(backpack).get(13)
|
sender.sendMessage(ChatColor.LIGHT_PURPLE + backpack + ChatColor.GOLD + " | " + ChatColor.AQUA + key.get(0) + ChatColor.GOLD + " | " + ChatColor.RED + "不能购买");
|
||||||
.equalsIgnoreCase("true") && hasPerm) {
|
|
||||||
sender.sendMessage(ChatColor.LIGHT_PURPLE + backpack
|
|
||||||
+ ChatColor.GOLD + " | " + ChatColor.AQUA + key.get(0)
|
|
||||||
+ ChatColor.GOLD + " | " + ChatColor.RED + "不能购买");
|
|
||||||
} else {
|
} else {
|
||||||
sender.sendMessage(ChatColor.LIGHT_PURPLE + backpack
|
sender.sendMessage(ChatColor.LIGHT_PURPLE + backpack + ChatColor.GOLD + " | " + ChatColor.AQUA + key.get(0) + ChatColor.GOLD + " | " + ChatColor.RED + "没有足够的权限购买");
|
||||||
+ ChatColor.GOLD + " | " + ChatColor.AQUA + key.get(0)
|
|
||||||
+ ChatColor.GOLD + " | " + ChatColor.RED + "没有足够的权限购买");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (final String backpack : plugin.backpacks) {
|
for (final String backpack : plugin.backpacks) {
|
||||||
final List<String> key = plugin.backpackData.get(backpack);
|
final List<String> key = plugin.backpackData.get(backpack);
|
||||||
if (plugin.backpackData.get(backpack).get(13) != null
|
if (plugin.backpackData.get(backpack).get(13) != null && plugin.backpackData.get(backpack).get(13).equalsIgnoreCase("true")) {
|
||||||
&& plugin.backpackData.get(backpack).get(13)
|
sender.sendMessage(ChatColor.LIGHT_PURPLE + backpack + ChatColor.GOLD + " | " + ChatColor.AQUA + key.get(0) + ChatColor.GOLD + " | " + ChatColor.GREEN
|
||||||
.equalsIgnoreCase("true")) {
|
|
||||||
sender.sendMessage(ChatColor.LIGHT_PURPLE + backpack
|
|
||||||
+ ChatColor.GOLD + " | " + ChatColor.AQUA + key.get(0)
|
|
||||||
+ ChatColor.GOLD + " | " + ChatColor.GREEN
|
|
||||||
+ Double.parseDouble(key.get(14)));
|
+ Double.parseDouble(key.get(14)));
|
||||||
} else {
|
} else {
|
||||||
sender.sendMessage(ChatColor.LIGHT_PURPLE + backpack
|
sender.sendMessage(ChatColor.LIGHT_PURPLE + backpack + ChatColor.GOLD + " | " + ChatColor.AQUA + key.get(0) + ChatColor.GOLD + " | " + ChatColor.RED + "不能购买");
|
||||||
+ ChatColor.GOLD + " | " + ChatColor.AQUA + key.get(0)
|
|
||||||
+ ChatColor.GOLD + " | " + ChatColor.RED + "不能购买");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (command.equalsIgnoreCase("give")) {
|
} else if (command.equalsIgnoreCase("give")) {
|
||||||
if (!(args.length == 3)) {
|
if (!(args.length == 3)) {
|
||||||
sender.sendMessage(ChatColor.RED + "错误的命令. 正确方式:" + ChatColor.GRAY
|
sender.sendMessage(ChatColor.RED + "错误的命令. 正确方式:" + ChatColor.GRAY + " /rb give <玩家> <背包名称>");
|
||||||
+ " /rb give <玩家> <背包名称>");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
String backpack = null;
|
String backpack = null;
|
||||||
@@ -201,39 +171,30 @@ public class MainCommand implements CommandExecutor {
|
|||||||
final Inventory inv = other.getInventory();
|
final Inventory inv = other.getInventory();
|
||||||
final ItemStack backpackItem = plugin.backpackItems.get(backpack);
|
final ItemStack backpackItem = plugin.backpackItems.get(backpack);
|
||||||
if (inv.firstEmpty() != -1) {
|
if (inv.firstEmpty() != -1) {
|
||||||
if (plugin.backpackData.get(backpack).get(18) != null
|
if (plugin.backpackData.get(backpack).get(18) != null && plugin.backpackData.get(backpack).get(18).equalsIgnoreCase("true")) {
|
||||||
&& plugin.backpackData.get(backpack).get(18)
|
if (RealBackpacks.globalGlow && plugin.backpackData.get(backpack).get(17) != null && plugin.backpackData.get(backpack).get(17).equalsIgnoreCase("true")) {
|
||||||
.equalsIgnoreCase("true")) {
|
inv.setItem(inv.firstEmpty(), RealBackpacks.NMS.addGlow(backpackItem));
|
||||||
if (RealBackpacks.globalGlow
|
|
||||||
&& plugin.backpackData.get(backpack).get(17) != null
|
|
||||||
&& plugin.backpackData.get(backpack).get(17)
|
|
||||||
.equalsIgnoreCase("true")) {
|
|
||||||
inv.setItem(inv.firstEmpty(),
|
|
||||||
RealBackpacks.NMS.addGlow(backpackItem));
|
|
||||||
} else {
|
} else {
|
||||||
inv.setItem(inv.firstEmpty(), backpackItem);
|
inv.setItem(inv.firstEmpty(), backpackItem);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (RealBackpacks.globalGlow
|
if (RealBackpacks.globalGlow && plugin.backpackData.get(backpack).get(17) != null && plugin.backpackData.get(backpack).get(17).equalsIgnoreCase("true")) {
|
||||||
&& plugin.backpackData.get(backpack).get(17) != null
|
|
||||||
&& plugin.backpackData.get(backpack).get(17)
|
|
||||||
.equalsIgnoreCase("true")) {
|
|
||||||
inv.addItem(RealBackpacks.NMS.addGlow(backpackItem));
|
inv.addItem(RealBackpacks.NMS.addGlow(backpackItem));
|
||||||
} else {
|
} else {
|
||||||
inv.addItem(backpackItem);
|
inv.addItem(backpackItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
other.updateInventory();
|
other.updateInventory();
|
||||||
sender.sendMessage(ChatColor.GREEN + "你把背包 " + ChatColor.GOLD + backpack
|
sender.sendMessage(ChatColor.GREEN + "你把背包 " + ChatColor.GOLD + backpack + ChatColor.GREEN + " 发送给了 " + ChatColor.GOLD + other.getName());
|
||||||
+ ChatColor.GREEN + " 发送给了 " + ChatColor.GOLD + other.getName());
|
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
sender.sendMessage(ChatColor.RED + other.getName() + "的背包已经满了");
|
sender.sendMessage(ChatColor.RED + other.getName() + "的背包已经满了");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else if (command.equalsIgnoreCase("filetomysql")) {
|
} else if (command.equalsIgnoreCase("filetomysql")) {
|
||||||
if (plugin.isUsingPerms() && !sender.hasPermission("rb.filetomysql"))
|
if (plugin.isUsingPerms() && !sender.hasPermission("rb.filetomysql")) {
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() {
|
plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@@ -244,67 +205,53 @@ public class MainCommand implements CommandExecutor {
|
|||||||
exist = true;
|
exist = true;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
final Connection conn = DriverManager.getConnection(
|
final Connection conn = DriverManager.getConnection(plugin.getUrl(), plugin.getUser(), plugin.getPass());
|
||||||
plugin.getUrl(), plugin.getUser(), plugin.getPass());
|
final File dir = new File(plugin.getDataFolder() + File.separator + "userdata");
|
||||||
final File dir = new File(plugin.getDataFolder() + File.separator
|
int i = 0, times = 0;
|
||||||
+ "userdata");
|
|
||||||
int i = 0,times = 0;
|
|
||||||
final int files = dir.listFiles().length;
|
final int files = dir.listFiles().length;
|
||||||
for (final File child : dir.listFiles()) {
|
for (final File child : dir.listFiles()) {
|
||||||
final String player = child.getName().replace(".yml", "");
|
final String player = child.getName().replace(".yml", "");
|
||||||
final FileConfig config = PlayerConfig.getInstance(plugin,
|
final FileConfig config = PlayerConfig.getInstance(plugin, player);
|
||||||
player);
|
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
PreparedStatement statement = null;
|
PreparedStatement statement = null;
|
||||||
PreparedStatement state = null;
|
PreparedStatement state = null;
|
||||||
for (final String backpack : config.getConfigurationSection("")
|
for (final String backpack : config.getConfigurationSection("").getKeys(false)) {
|
||||||
.getKeys(false)) {
|
|
||||||
if (exist) {
|
if (exist) {
|
||||||
statement = conn
|
statement = conn.prepareStatement("SELECT EXISTS(SELECT 1 FROM rb_data WHERE player = ? AND backpack = ? LIMIT 1);");
|
||||||
.prepareStatement("SELECT EXISTS(SELECT 1 FROM rb_data WHERE player = ? AND backpack = ? LIMIT 1);");
|
|
||||||
statement.setString(1, player);
|
statement.setString(1, player);
|
||||||
statement.setString(2, backpack);
|
statement.setString(2, backpack);
|
||||||
final ResultSet res = statement.executeQuery();
|
final ResultSet res = statement.executeQuery();
|
||||||
if (res.next()) {
|
if (res.next()) {
|
||||||
if (res.getInt(1) == 1) {
|
if (res.getInt(1) == 1) {
|
||||||
state = conn
|
state = conn.prepareStatement("UPDATE rb_data SET player=?, backpack=?, inventory=? WHERE player=? AND backpack=?;");
|
||||||
.prepareStatement("UPDATE rb_data SET player=?, backpack=?, inventory=? WHERE player=? AND backpack=?;");
|
|
||||||
state.setString(1, player);
|
state.setString(1, player);
|
||||||
state.setString(2, backpack);
|
state.setString(2, backpack);
|
||||||
state.setString(3, Serialization
|
state.setString(3, Serialization.listToString(config.getStringList(backpack + ".Inventory")));
|
||||||
.listToString(config
|
|
||||||
.getStringList(backpack
|
|
||||||
+ ".Inventory")));
|
|
||||||
state.setString(4, player);
|
state.setString(4, player);
|
||||||
state.setString(5, backpack);
|
state.setString(5, backpack);
|
||||||
} else {
|
} else {
|
||||||
state = conn
|
state = conn.prepareStatement("INSERT INTO rb_data (player, backpack, inventory) VALUES(?, ?, ?);");
|
||||||
.prepareStatement("INSERT INTO rb_data (player, backpack, inventory) VALUES(?, ?, ?);");
|
|
||||||
state.setString(1, player);
|
state.setString(1, player);
|
||||||
state.setString(2, backpack);
|
state.setString(2, backpack);
|
||||||
state.setString(3, Serialization
|
state.setString(3, Serialization.listToString(config.getStringList(backpack + ".Inventory")));
|
||||||
.listToString(config
|
|
||||||
.getStringList(backpack
|
|
||||||
+ ".Inventory")));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
state = conn
|
state = conn.prepareStatement("INSERT INTO rb_data (player, backpack, inventory) VALUES(?, ?, ?);");
|
||||||
.prepareStatement("INSERT INTO rb_data (player, backpack, inventory) VALUES(?, ?, ?);");
|
|
||||||
state.setString(1, player);
|
state.setString(1, player);
|
||||||
state.setString(2, backpack);
|
state.setString(2, backpack);
|
||||||
state.setString(3, Serialization.listToString(config
|
state.setString(3, Serialization.listToString(config.getStringList(backpack + ".Inventory")));
|
||||||
.getStringList(backpack + ".Inventory")));
|
|
||||||
}
|
}
|
||||||
|
if (state != null) {
|
||||||
state.executeUpdate();
|
state.executeUpdate();
|
||||||
state.close();
|
state.close();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (i == 50) {
|
if (i == 50) {
|
||||||
i = 0;
|
i = 0;
|
||||||
times++;
|
times++;
|
||||||
sender.sendMessage(ChatColor.LIGHT_PURPLE + "" + times * 50
|
sender.sendMessage(ChatColor.LIGHT_PURPLE + "" + times * 50 + "/" + files + " files have been transferred.");
|
||||||
+ "/" + files + " files have been transferred.");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
conn.close();
|
conn.close();
|
||||||
@@ -316,8 +263,7 @@ public class MainCommand implements CommandExecutor {
|
|||||||
});
|
});
|
||||||
} else if (command.equalsIgnoreCase("view")) {
|
} else if (command.equalsIgnoreCase("view")) {
|
||||||
if (!(args.length == 3)) {
|
if (!(args.length == 3)) {
|
||||||
sender.sendMessage(ChatColor.RED + "命令错误. 正确命令:" + ChatColor.GRAY
|
sender.sendMessage(ChatColor.RED + "命令错误. 正确命令:" + ChatColor.GRAY + " /rb view <player> <backpack>");
|
||||||
+ " /rb view <player> <backpack>");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
String backpack = null;
|
String backpack = null;
|
||||||
@@ -344,8 +290,7 @@ public class MainCommand implements CommandExecutor {
|
|||||||
if (!plugin.isUsingMysql()) {
|
if (!plugin.isUsingMysql()) {
|
||||||
boolean fileExists = false;
|
boolean fileExists = false;
|
||||||
String fullName = null;
|
String fullName = null;
|
||||||
final File dir = new File(plugin.getDataFolder() + File.separator
|
final File dir = new File(plugin.getDataFolder() + File.separator + "userdata");
|
||||||
+ "userdata");
|
|
||||||
for (final File f : dir.listFiles()) {
|
for (final File f : dir.listFiles()) {
|
||||||
final String fileName = f.getName();
|
final String fileName = f.getName();
|
||||||
fullName = fileName.replace(".yml", "");
|
fullName = fileName.replace(".yml", "");
|
||||||
@@ -361,15 +306,9 @@ public class MainCommand implements CommandExecutor {
|
|||||||
}
|
}
|
||||||
final FileConfig config = PlayerConfig.getInstance(plugin, fullName);
|
final FileConfig config = PlayerConfig.getInstance(plugin, fullName);
|
||||||
if (config.getStringList(backpack + ".Inventory") == null) {
|
if (config.getStringList(backpack + ".Inventory") == null) {
|
||||||
inv = plugin.getServer().createInventory(
|
inv = plugin.getServer().createInventory(p, Integer.parseInt(key.get(0)), ChatColor.translateAlternateColorCodes('&', fullName + "'s " + backpack + " data"));
|
||||||
p,
|
|
||||||
Integer.parseInt(key.get(0)),
|
|
||||||
ChatColor.translateAlternateColorCodes('&', fullName + "'s "
|
|
||||||
+ backpack + " data"));
|
|
||||||
} else {
|
} else {
|
||||||
inv = Serialization.toInventory(
|
inv = Serialization.toInventory(config.getStringList(backpack + ".Inventory"), fullName + "'s " + backpack + " data", Integer.parseInt(key.get(0)));
|
||||||
config.getStringList(backpack + ".Inventory"), fullName + "'s "
|
|
||||||
+ backpack + " data", Integer.parseInt(key.get(0)));
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -29,38 +29,43 @@ public class InventoryListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public boolean isSimilar(ItemStack origin, ItemStack compare) {
|
public boolean isSimilar(final ItemStack origin, final ItemStack compare) {
|
||||||
if (compare == null)
|
if (compare == null) {
|
||||||
return false;
|
return false;
|
||||||
if (compare == origin)
|
}
|
||||||
|
if (compare == origin) {
|
||||||
return true;
|
return true;
|
||||||
return compare.getTypeId() == origin.getTypeId()
|
}
|
||||||
&& compare.getDurability() == origin.getDurability()
|
return compare.getTypeId() == origin.getTypeId() && compare.getDurability() == origin.getDurability() && compare.hasItemMeta() == origin.hasItemMeta()
|
||||||
&& compare.hasItemMeta() == origin.hasItemMeta()
|
&& (compare.hasItemMeta() ? isSimilarMeta(compare.getItemMeta(), origin.getItemMeta()) : true);
|
||||||
&& (compare.hasItemMeta() ? isSimilarMeta(compare.getItemMeta(),
|
|
||||||
origin.getItemMeta()) : true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSimilarMeta(ItemMeta origin, ItemMeta compare) {
|
public boolean isSimilarMeta(final ItemMeta origin, final ItemMeta compare) {
|
||||||
if (origin.hasDisplayName() != compare.hasDisplayName())
|
if (origin.hasDisplayName() != compare.hasDisplayName()) {
|
||||||
return false;
|
return false;
|
||||||
if (origin.hasEnchants() != compare.hasEnchants())
|
}
|
||||||
|
if (origin.hasEnchants() != compare.hasEnchants()) {
|
||||||
return false;
|
return false;
|
||||||
if (origin.hasLore() != compare.hasLore())
|
}
|
||||||
|
if (origin.hasLore() != compare.hasLore()) {
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (origin.hasDisplayName() && compare.hasDisplayName()) {
|
if (origin.hasDisplayName() && compare.hasDisplayName()) {
|
||||||
if (!origin.getDisplayName().equals(compare.getDisplayName()))
|
if (!origin.getDisplayName().equals(compare.getDisplayName())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (origin.hasEnchants() && compare.hasEnchants()) {
|
if (origin.hasEnchants() && compare.hasEnchants()) {
|
||||||
if (!origin.getEnchants().equals(compare.getEnchants()))
|
if (!origin.getEnchants().equals(compare.getEnchants())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (origin.hasLore() && compare.hasLore()) {
|
if (origin.hasLore() && compare.hasLore()) {
|
||||||
if (!(compare.getLore().containsAll(origin.getLore())))
|
if (!(compare.getLore().containsAll(origin.getLore()))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,18 +113,14 @@ public class InventoryListener implements Listener {
|
|||||||
if (whitelist == null) {
|
if (whitelist == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
String potentialBackpack = RBUtil.stringToBackpack(whitelist);
|
final String potentialBackpack = RBUtil.stringToBackpack(whitelist);
|
||||||
if (potentialBackpack != null
|
if (potentialBackpack != null && plugin.backpackItems.containsKey(potentialBackpack)) {
|
||||||
&& plugin.backpackItems.containsKey(potentialBackpack)) {
|
if (curItem.isSimilar(plugin.backpackItems.get(potentialBackpack)) || cursor.isSimilar(plugin.backpackItems.get(potentialBackpack))) {
|
||||||
if (curItem.isSimilar(plugin.backpackItems.get(potentialBackpack))
|
|
||||||
|| cursor.isSimilar(plugin.backpackItems
|
|
||||||
.get(potentialBackpack))) {
|
|
||||||
go = false;
|
go = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (RBUtil.itemsAreEqual(curItem, whitelist)
|
if (RBUtil.itemsAreEqual(curItem, whitelist) || RBUtil.itemsAreEqual(cursor, whitelist)) {
|
||||||
|| RBUtil.itemsAreEqual(cursor, whitelist)) {
|
|
||||||
go = false;
|
go = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -136,9 +137,8 @@ public class InventoryListener implements Listener {
|
|||||||
if (blacklist == null) {
|
if (blacklist == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
String potentialBackpack = RBUtil.stringToBackpack(blacklist);
|
final String potentialBackpack = RBUtil.stringToBackpack(blacklist);
|
||||||
if (potentialBackpack != null
|
if (potentialBackpack != null && plugin.backpackItems.containsKey(potentialBackpack)) {
|
||||||
&& plugin.backpackItems.containsKey(potentialBackpack)) {
|
|
||||||
if (isSimilar(curItem, plugin.backpackItems.get(potentialBackpack))) {
|
if (isSimilar(curItem, plugin.backpackItems.get(potentialBackpack))) {
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
p.sendMessage(ChatColor.RED + "当前物品不能放入背包...");
|
p.sendMessage(ChatColor.RED + "当前物品不能放入背包...");
|
||||||
@@ -155,24 +155,6 @@ public class InventoryListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Dupes for (String backpack : plugin.backpackItems.keySet()) { if
|
|
||||||
* (p.getInventory().contains(plugin.backpackItems.get(backpack))) {
|
|
||||||
* plugin.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
|
|
||||||
*
|
|
||||||
* @Override public void run() { Location loc = p.getLocation(); World world =
|
|
||||||
* p.getWorld(); for (ItemStack item : p.getInventory().getContents()) { if (item !=
|
|
||||||
* null && item.hasItemMeta() && item.getAmount() > 1) { for (String backpack :
|
|
||||||
* plugin.backpacks) { String unstackable = plugin.backpackData.get(backpack).get(18);
|
|
||||||
* if (unstackable == null || unstackable.equalsIgnoreCase("false")) { continue; } if
|
|
||||||
* (item.isSimilar(plugin.backpackItems.get(backpack))) { while (item.getAmount() > 1) {
|
|
||||||
* item.setAmount(item.getAmount() - 1); if (p.getInventory().firstEmpty() != -1) {
|
|
||||||
* p.getInventory().setItem(p.getInventory().firstEmpty(), item); p.updateInventory(); }
|
|
||||||
* else { world.dropItemNaturally(loc, plugin.backpackItems.get(backpack)); } } } } } }
|
|
||||||
* } }, 2L); break; } }
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -196,8 +178,7 @@ public class InventoryListener implements Listener {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
PlayerConfig.getInstance(plugin, name).set(backpack + ".Inventory",
|
PlayerConfig.getInstance(plugin, name).set(backpack + ".Inventory", invString);
|
||||||
invString);
|
|
||||||
PlayerConfig.save();
|
PlayerConfig.save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -214,8 +195,7 @@ public class InventoryListener implements Listener {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
PlayerConfig.getInstance(plugin, split[1]).set(split[0] + ".Inventory",
|
PlayerConfig.getInstance(plugin, split[1]).set(split[0] + ".Inventory", invString);
|
||||||
invString);
|
|
||||||
PlayerConfig.save();
|
PlayerConfig.save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,50 +18,37 @@ public class MysqlFunctions {
|
|||||||
|
|
||||||
private static cn.citycraft.RealBackpacks.RealBackpacks plugin;
|
private static cn.citycraft.RealBackpacks.RealBackpacks plugin;
|
||||||
|
|
||||||
public static void addBackpackData(final String playerName,
|
public static void addBackpackData(final String playerName, final String backpack, final List<String> invString) throws SQLException {
|
||||||
final String backpack, final List<String> invString)
|
plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() {
|
||||||
throws SQLException {
|
|
||||||
plugin.getServer().getScheduler()
|
|
||||||
.runTaskAsynchronously(plugin, new Runnable() {
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
String url = plugin.getUrl()
|
final String url = plugin.getUrl() + "?" + "user=" + plugin.getUser() + "&password=" + plugin.getPass() + "&useUnicode=true&characterEncoding=utf-8";
|
||||||
+ "?"
|
final Connection conn = DriverManager.getConnection(url);
|
||||||
+ "user="
|
final PreparedStatement statement = conn.prepareStatement("SELECT EXISTS(SELECT 1 FROM rb_data WHERE player = ? AND backpack = ? LIMIT 1);");
|
||||||
+ plugin.getUser()
|
|
||||||
+ "&password="
|
|
||||||
+ plugin.getPass()
|
|
||||||
+ "&useUnicode=true&characterEncoding=utf-8";
|
|
||||||
final Connection conn = DriverManager
|
|
||||||
.getConnection(url);
|
|
||||||
PreparedStatement statement = conn
|
|
||||||
.prepareStatement("SELECT EXISTS(SELECT 1 FROM rb_data WHERE player = ? AND backpack = ? LIMIT 1);");
|
|
||||||
statement.setString(1, playerName);
|
statement.setString(1, playerName);
|
||||||
statement.setString(2, backpack);
|
statement.setString(2, backpack);
|
||||||
final ResultSet res = statement.executeQuery();
|
final ResultSet res = statement.executeQuery();
|
||||||
PreparedStatement state = null;
|
PreparedStatement state = null;
|
||||||
if (res.next()) {
|
if (res.next()) {
|
||||||
if (res.getInt(1) == 1) {
|
if (res.getInt(1) == 1) {
|
||||||
state = conn
|
state = conn.prepareStatement("UPDATE rb_data SET player=?, backpack=?, inventory=? WHERE player=? AND backpack=?;");
|
||||||
.prepareStatement("UPDATE rb_data SET player=?, backpack=?, inventory=? WHERE player=? AND backpack=?;");
|
|
||||||
state.setString(1, playerName);
|
state.setString(1, playerName);
|
||||||
state.setString(2, backpack);
|
state.setString(2, backpack);
|
||||||
state.setString(3, Serialization
|
state.setString(3, Serialization.listToString(invString));
|
||||||
.listToString(invString));
|
|
||||||
state.setString(4, playerName);
|
state.setString(4, playerName);
|
||||||
state.setString(5, backpack);
|
state.setString(5, backpack);
|
||||||
} else {
|
} else {
|
||||||
state = conn
|
state = conn.prepareStatement("INSERT INTO rb_data (player, backpack, inventory) VALUES(?, ?, ?);");
|
||||||
.prepareStatement("INSERT INTO rb_data (player, backpack, inventory) VALUES(?, ?, ?);");
|
|
||||||
state.setString(1, playerName);
|
state.setString(1, playerName);
|
||||||
state.setString(2, backpack);
|
state.setString(2, backpack);
|
||||||
state.setString(3, Serialization
|
state.setString(3, Serialization.listToString(invString));
|
||||||
.listToString(invString));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (state != null) {
|
||||||
state.executeUpdate();
|
state.executeUpdate();
|
||||||
state.close();
|
state.close();
|
||||||
|
}
|
||||||
conn.close();
|
conn.close();
|
||||||
} catch (final SQLException e) {
|
} catch (final SQLException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@@ -72,19 +59,18 @@ public class MysqlFunctions {
|
|||||||
|
|
||||||
public static boolean checkIfTableExists(final String table) {
|
public static boolean checkIfTableExists(final String table) {
|
||||||
try {
|
try {
|
||||||
String url = plugin.getUrl() + "?" + "user=" + plugin.getUser()
|
final String url = plugin.getUrl() + "?" + "user=" + plugin.getUser() + "&password=" + plugin.getPass() + "&useUnicode=true&characterEncoding=utf-8";
|
||||||
+ "&password=" + plugin.getPass()
|
|
||||||
+ "&useUnicode=true&characterEncoding=utf-8";
|
|
||||||
final Connection conn = DriverManager.getConnection(url);
|
final Connection conn = DriverManager.getConnection(url);
|
||||||
final Statement state = conn.createStatement();
|
final Statement state = conn.createStatement();
|
||||||
final DatabaseMetaData dbm = conn.getMetaData();
|
final DatabaseMetaData dbm = conn.getMetaData();
|
||||||
final ResultSet tables = dbm.getTables(null, null, "rb_data", null);
|
final ResultSet tables = dbm.getTables(null, null, "rb_data", null);
|
||||||
state.close();
|
state.close();
|
||||||
conn.close();
|
conn.close();
|
||||||
if (tables.next())
|
if (tables.next()) {
|
||||||
return true;
|
return true;
|
||||||
else
|
} else {
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
} catch (final SQLException e) {
|
} catch (final SQLException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@@ -93,12 +79,9 @@ public class MysqlFunctions {
|
|||||||
|
|
||||||
public static void createTables() {
|
public static void createTables() {
|
||||||
try {
|
try {
|
||||||
String url = plugin.getUrl() + "?" + "user=" + plugin.getUser()
|
final String url = plugin.getUrl() + "?" + "user=" + plugin.getUser() + "&password=" + plugin.getPass() + "&useUnicode=true&characterEncoding=utf-8";
|
||||||
+ "&password=" + plugin.getPass()
|
|
||||||
+ "&useUnicode=true&characterEncoding=utf-8";
|
|
||||||
final Connection conn = DriverManager.getConnection(url);
|
final Connection conn = DriverManager.getConnection(url);
|
||||||
final PreparedStatement state = conn
|
final PreparedStatement state = conn.prepareStatement("CREATE TABLE rb_data (player VARCHAR(16), backpack VARCHAR(20), inventory TEXT)ENGINE=InnoDB DEFAULT CHARSET=UTF8;");
|
||||||
.prepareStatement("CREATE TABLE rb_data (player VARCHAR(16), backpack VARCHAR(20), inventory TEXT)ENGINE=InnoDB DEFAULT CHARSET=UTF8;");
|
|
||||||
state.executeUpdate();
|
state.executeUpdate();
|
||||||
state.close();
|
state.close();
|
||||||
conn.close();
|
conn.close();
|
||||||
@@ -108,22 +91,13 @@ public class MysqlFunctions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void delete(final String playerName, final String backpack) {
|
public static void delete(final String playerName, final String backpack) {
|
||||||
plugin.getServer().getScheduler()
|
plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() {
|
||||||
.runTaskAsynchronously(plugin, new Runnable() {
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
String url = plugin.getUrl()
|
final String url = plugin.getUrl() + "?" + "user=" + plugin.getUser() + "&password=" + plugin.getPass() + "&useUnicode=true&characterEncoding=utf-8";
|
||||||
+ "?"
|
final Connection conn = DriverManager.getConnection(url);
|
||||||
+ "user="
|
final PreparedStatement state = conn.prepareStatement("DELETE FROM rb_data WHERE player = ? AND backpack = ?;");
|
||||||
+ plugin.getUser()
|
|
||||||
+ "&password="
|
|
||||||
+ plugin.getPass()
|
|
||||||
+ "&useUnicode=true&characterEncoding=utf-8";
|
|
||||||
final Connection conn = DriverManager
|
|
||||||
.getConnection(url);
|
|
||||||
final PreparedStatement state = conn
|
|
||||||
.prepareStatement("DELETE FROM rb_data WHERE player = ? AND backpack = ?;");
|
|
||||||
state.setString(1, playerName);
|
state.setString(1, playerName);
|
||||||
state.setString(2, backpack);
|
state.setString(2, backpack);
|
||||||
state.executeUpdate();
|
state.executeUpdate();
|
||||||
@@ -136,30 +110,20 @@ public class MysqlFunctions {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Inventory getBackpackInv(final String playerName,
|
public static Inventory getBackpackInv(final String playerName, final String backpack) throws SQLException {
|
||||||
final String backpack) throws SQLException {
|
|
||||||
Inventory returnInv = null;
|
Inventory returnInv = null;
|
||||||
try {
|
try {
|
||||||
String url = plugin.getUrl() + "?" + "user=" + plugin.getUser()
|
final String url = plugin.getUrl() + "?" + "user=" + plugin.getUser() + "&password=" + plugin.getPass() + "&useUnicode=true&characterEncoding=utf-8";
|
||||||
+ "&password=" + plugin.getPass()
|
|
||||||
+ "&useUnicode=true&characterEncoding=utf-8";
|
|
||||||
final Connection conn = DriverManager.getConnection(url);
|
final Connection conn = DriverManager.getConnection(url);
|
||||||
final PreparedStatement state = conn
|
final PreparedStatement state = conn.prepareStatement("SELECT inventory FROM rb_data WHERE player=? AND backpack=? LIMIT 1;");
|
||||||
.prepareStatement("SELECT inventory FROM rb_data WHERE player=? AND backpack=? LIMIT 1;");
|
|
||||||
state.setString(1, playerName);
|
state.setString(1, playerName);
|
||||||
state.setString(2, backpack);
|
state.setString(2, backpack);
|
||||||
final ResultSet res = state.executeQuery();
|
final ResultSet res = state.executeQuery();
|
||||||
if (res.next()) {
|
if (res.next()) {
|
||||||
final String invString = res.getString(1);
|
final String invString = res.getString(1);
|
||||||
if (invString != null) {
|
if (invString != null) {
|
||||||
returnInv = Serialization.toInventory(Serialization
|
returnInv = Serialization.toInventory(Serialization.stringToList(invString), ChatColor.translateAlternateColorCodes('&', plugin.backpackData.get(backpack).get(3)),
|
||||||
.stringToList(invString), ChatColor
|
Integer.parseInt(plugin.backpackData.get(backpack).get(0)));
|
||||||
.translateAlternateColorCodes('&',
|
|
||||||
plugin.backpackData.get(backpack).get(3)),
|
|
||||||
Integer.parseInt(plugin.backpackData.get(backpack)
|
|
||||||
.get(0)));
|
|
||||||
} else {
|
|
||||||
returnInv = null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
state.close();
|
state.close();
|
||||||
|
|||||||
Reference in New Issue
Block a user