1
0
mirror of https://e.coding.net/circlecloud/RealBackpacks.git synced 2024-12-04 03:49:07 +00:00

fix Chinese can't use in MySQL...

Signed-off-by: j502647092 <jtb1@163.com>
This commit is contained in:
j502647092 2015-05-14 14:17:10 +08:00
parent 78a14cd70c
commit 11a8b85427
5 changed files with 66 additions and 12 deletions

View File

@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>cn.CityCraft</groupId>
<artifactId>RealBackpacks</artifactId>
<version>0.1.2-SNAPSHOT</version>
<version>0.1.3-SNAPSHOT</version>
<name>RealBackpacks</name>
<build>
<sourceDirectory>src</sourceDirectory>

View File

@ -122,9 +122,11 @@ public class RealBackpacks extends JavaPlugin {
new InventoryListener(this), this);
getServer().getPluginManager().registerEvents(
new EntityListener(this), this);
getCommand("rb").setExecutor(new MainCommand(this));
getServer().getScheduler().runTaskTimer(this,
new WalkSpeedRunnable(this), 20, 20);
getCommand("rb").setExecutor(new MainCommand(this));
getLogger().info("真实背包已加载 By: 喵♂呜.");
}
}

View File

@ -16,6 +16,7 @@ import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import cn.citycraft.plugins.RealBackpacks;
import cn.citycraft.plugins.util.MysqlFunctions;
@ -193,8 +194,8 @@ public class InventoryListener implements Listener {
if (potentialBackpack != null
&& plugin.backpackItems
.containsKey(potentialBackpack)) {
if (curItem.isSimilar(plugin.backpackItems
.get(potentialBackpack))) {
if (isSimilar(curItem,
plugin.backpackItems.get(potentialBackpack))) {
e.setCancelled(true);
p.sendMessage(ChatColor.RED + "当前物品不能放入背包...");
return;
@ -235,4 +236,44 @@ public class InventoryListener implements Listener {
}
}
@SuppressWarnings("deprecation")
public boolean isSimilar(ItemStack origin, ItemStack compare) {
if (compare == null) {
return false;
}
if (compare == origin) {
return true;
}
return compare.getTypeId() == origin.getTypeId()
&& compare.getDurability() == origin.getDurability()
&& compare.hasItemMeta() == origin.hasItemMeta()
&& (compare.hasItemMeta() ? isSimilarMeta(
compare.getItemMeta(), origin.getItemMeta()) : true);
}
public boolean isSimilarMeta(ItemMeta origin, ItemMeta compare) {
if (origin.hasDisplayName() != compare.hasDisplayName())
return false;
if (origin.hasEnchants() != compare.hasEnchants())
return false;
if (origin.hasLore() != compare.hasLore())
return false;
if (origin.hasDisplayName() && compare.hasDisplayName()) {
if (!origin.getDisplayName().equals(compare.getDisplayName()))
return false;
}
if (origin.hasEnchants() && compare.hasEnchants()) {
if (!origin.getEnchants().equals(compare.getEnchants()))
return false;
}
if (origin.hasLore() && compare.hasLore()) {
if (!(origin.getLore().containsAll(compare.getLore()) || compare
.getLore().containsAll(origin.getLore())))
return false;
}
return true;
}
}

View File

@ -24,7 +24,10 @@ public class MysqlFunctions {
public static boolean checkIfTableExists(final String table) {
try {
final Connection conn = DriverManager.getConnection(plugin.getUrl(), plugin.getUser(), plugin.getPass());
//final Connection conn = DriverManager.getConnection(plugin.getUrl(), plugin.getUser(), plugin.getPass());
String url = plugin.getUrl()+"?"
+ "user=" + plugin.getUser() + "&password=" + plugin.getPass() + "&useUnicode=true&characterEncoding=utf-8";
final Connection conn = DriverManager.getConnection(url);
final Statement state = conn.createStatement();
final DatabaseMetaData dbm = conn.getMetaData();
final ResultSet tables = dbm.getTables(null, null, "rb_data", null);
@ -43,8 +46,10 @@ public class MysqlFunctions {
public static void createTables() {
try {
final Connection conn = DriverManager.getConnection(plugin.getUrl(), plugin.getUser(), plugin.getPass());
final PreparedStatement state = conn.prepareStatement("CREATE TABLE rb_data (player VARCHAR(16), backpack VARCHAR(20), inventory TEXT);");
String url = plugin.getUrl()+"?"
+ "user=" + plugin.getUser() + "&password=" + plugin.getPass() + "&useUnicode=true&characterEncoding=utf-8";
final Connection conn = DriverManager.getConnection(url);
final PreparedStatement state = conn.prepareStatement("CREATE TABLE rb_data (player VARCHAR(16), backpack VARCHAR(20), inventory TEXT)ENGINE=InnoDB DEFAULT CHARSET=UTF8;");
state.executeUpdate();
state.close();
conn.close();
@ -58,7 +63,9 @@ public class MysqlFunctions {
@Override
public void run() {
try {
final Connection conn = DriverManager.getConnection(plugin.getUrl(), plugin.getUser(), plugin.getPass());
String url = plugin.getUrl()+"?"
+ "user=" + 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(2, backpack);
@ -92,7 +99,9 @@ public class MysqlFunctions {
public static Inventory getBackpackInv(final String playerName, final String backpack) throws SQLException {
Inventory returnInv = null;
try {
final Connection conn = DriverManager.getConnection(plugin.getUrl(), plugin.getUser(), plugin.getPass());
String url = plugin.getUrl()+"?"
+ "user=" + plugin.getUser() + "&password=" + plugin.getPass() + "&useUnicode=true&characterEncoding=utf-8";
final Connection conn = DriverManager.getConnection(url);
final PreparedStatement state = conn.prepareStatement("SELECT inventory FROM rb_data WHERE player=? AND backpack=? LIMIT 1;");
state.setString(1, playerName);
state.setString(2, backpack);
@ -118,7 +127,9 @@ public class MysqlFunctions {
@Override
public void run() {
try {
final Connection conn = DriverManager.getConnection(plugin.getUrl(), plugin.getUser(), plugin.getPass());
String url = plugin.getUrl()+"?"
+ "user=" + 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(2, backpack);

View File

@ -2,7 +2,7 @@ name: RealBackpacks
main: cn.citycraft.plugins.RealBackpacks
version: 1.6.5
author: Slayr288,喵♂呜
softdepend: [Vault]
softdepend: [Vault,BVLib]
commands:
rb:
description: Main commands.