diff --git a/src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java b/src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java index 24e2467..3d295a2 100644 --- a/src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java +++ b/src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java @@ -55,7 +55,7 @@ public final class EcoCraftCore extends JavaPlugin { private void prepareDatabase() throws SQLException { String databaseUrl = "jdbc:mysql://soukup.xyz:3306/ecc"; - connectionSource = new JdbcConnectionSource(databaseUrl, "ecc", "ecc "); + connectionSource = new JdbcConnectionSource(databaseUrl, "ecc", "ecc"); Logger.getLogger("com.j256.ormlite.table.TableUtils").setLevel(Level.OFF); diff --git a/src/main/java/xyz/soukup/ecoCraftCore/objects/Shop.java b/src/main/java/xyz/soukup/ecoCraftCore/objects/Shop.java index 89ce960..a74efe1 100644 --- a/src/main/java/xyz/soukup/ecoCraftCore/objects/Shop.java +++ b/src/main/java/xyz/soukup/ecoCraftCore/objects/Shop.java @@ -3,19 +3,17 @@ import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.table.DatabaseTable; import net.kyori.adventure.text.Component; import org.bukkit.block.Sign; -import org.bukkit.block.TileState; import org.bukkit.block.sign.Side; import org.bukkit.block.sign.SignSide; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; import xyz.soukup.ecoCraftCore.utilities.DaoRegistry; -import xyz.soukup.ecoCraftCore.utilities.JSONConverter; +import xyz.soukup.ecoCraftCore.utilities.Converter; import xyz.soukup.ecoCraftCore.utilities.PDC; import java.sql.SQLException; import java.sql.Timestamp; -import java.util.List; @DatabaseTable(tableName = "shops") public class Shop { @@ -67,7 +65,7 @@ public class Shop { public Shop(Player player, ItemStack itemStack, int stock, int freeSpace, int amount, float priceBuy, float priceSell, int virtualChestID) { this.ownerType = "player"; this.owner = player.getName(); - this.itemStackJson = JSONConverter.itemStackToJson(itemStack); + this.itemStackJson = Converter.toString(itemStack); this.itemName = itemStack.getType().toString(); this.stock = stock; this.freeSpace = freeSpace; @@ -118,7 +116,7 @@ public class Shop { } public ItemStack getItemStack() { - return JSONConverter.itemStackFromJson(this.itemStackJson); + return Converter.itemstackFromString(this.itemStackJson); } public void writeIntoSign(Sign sign){ diff --git a/src/main/java/xyz/soukup/ecoCraftCore/objects/VirtualChest.java b/src/main/java/xyz/soukup/ecoCraftCore/objects/VirtualChest.java index b76c443..4821d39 100644 --- a/src/main/java/xyz/soukup/ecoCraftCore/objects/VirtualChest.java +++ b/src/main/java/xyz/soukup/ecoCraftCore/objects/VirtualChest.java @@ -4,11 +4,9 @@ import com.j256.ormlite.field.DataType; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.table.DatabaseTable; import org.bukkit.block.Chest; -import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; import xyz.soukup.ecoCraftCore.utilities.DaoRegistry; -import xyz.soukup.ecoCraftCore.utilities.JSONConverter; +import xyz.soukup.ecoCraftCore.utilities.Converter; import java.sql.SQLException; @@ -18,7 +16,7 @@ public class VirtualChest { @DatabaseField(generatedId = true) private int id; - @DatabaseField(columnName = "inventory") + @DatabaseField(columnName = "inventory", dataType = DataType.LONG_STRING) private String inventoryJson; @DatabaseField(columnName = "active_on_server") @@ -36,7 +34,7 @@ public class VirtualChest { public VirtualChest(Chest chest){ Inventory inventory = chest.getSnapshotInventory(); - this.inventoryJson = JSONConverter.inventoryToJson(inventory); + this.inventoryJson = Converter.toString(inventory); } @@ -50,7 +48,7 @@ public class VirtualChest { public void save(){ if (this.inventory != null){ - this.inventoryJson = JSONConverter.inventoryToJson(this.inventory); + this.inventoryJson = Converter.toString(this.inventory); } try { DaoRegistry.getVirtualChestDao().createOrUpdate(this); @@ -61,7 +59,7 @@ public class VirtualChest { public Inventory getInventory(){ if (this.inventory == null){ - this.inventory = JSONConverter.inventoryFromJson(this.inventoryJson); + this.inventory = Converter.inventoryFromString(this.inventoryJson); } return this.inventory; } diff --git a/src/main/java/xyz/soukup/ecoCraftCore/utilities/Converter.java b/src/main/java/xyz/soukup/ecoCraftCore/utilities/Converter.java new file mode 100644 index 0000000..cc23965 --- /dev/null +++ b/src/main/java/xyz/soukup/ecoCraftCore/utilities/Converter.java @@ -0,0 +1,64 @@ +package xyz.soukup.ecoCraftCore.utilities; + +import org.bukkit.Bukkit; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.configuration.file.YamlConfiguration; + + +public class Converter { + + public static String toString(ItemStack item) { + if (item == null) return ""; + + YamlConfiguration config = new YamlConfiguration(); + config.set("item", item); + return config.saveToString(); + } + + public static ItemStack itemstackFromString(String data) { + if (data == null || data.isEmpty()) return null; + + YamlConfiguration config = new YamlConfiguration(); + try { + config.loadFromString(data); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + return config.getItemStack("item"); + } + + public static String toString(Inventory inventory) { + if (inventory == null) return ""; + + ItemStack[] items = inventory.getContents(); + YamlConfiguration config = new YamlConfiguration(); + config.set("items", items); + config.set("size", inventory.getSize()); + return config.saveToString(); + } + + public static Inventory inventoryFromString(String data) { + if (data == null || data.isEmpty()) return null; + + YamlConfiguration config = new YamlConfiguration(); + try { + config.loadFromString(data); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + + int size = config.getInt("size"); + Inventory inv = Bukkit.createInventory(null, size); + + ItemStack[] items = ((ItemStack[]) config.get("items")); + if (items != null) { + inv.setContents(items); + } + + return inv; + } +} + diff --git a/src/main/java/xyz/soukup/ecoCraftCore/utilities/JSONConverter.java b/src/main/java/xyz/soukup/ecoCraftCore/utilities/JSONConverter.java deleted file mode 100644 index 62de207..0000000 --- a/src/main/java/xyz/soukup/ecoCraftCore/utilities/JSONConverter.java +++ /dev/null @@ -1,71 +0,0 @@ -package xyz.soukup.ecoCraftCore.utilities; - -import com.google.common.reflect.TypeToken; -import com.google.gson.Gson; -import org.bukkit.Bukkit; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; - -import java.lang.reflect.Type; -import java.util.HashMap; -import java.util.Map; - -public class JSONConverter { - - public static String itemStackToJson(ItemStack item) { - try { - Map map = item.serialize(); - return new Gson().toJson(map); - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } - - public static ItemStack itemStackFromJson(String json) { - try { - Type type = new TypeToken>() {}.getType(); - Map map = new Gson().fromJson(json, type); - return ItemStack.deserialize(map); - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } - - public static String inventoryToJson(Inventory inventory) { - try { - Map map = new HashMap<>(); - map.put("size", inventory.getSize()); - map.put("contents", inventory.getContents()); - return new Gson().toJson(map); - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } - - public static Inventory inventoryFromJson(String json) { - try { - Type type = new TypeToken>() {}.getType(); - Map map = new Gson().fromJson(json, type); - int size = ((Double) map.get("size")).intValue(); - - Object[] contentsArray = ((Object[]) ((Map) map).get("contents")); - ItemStack[] contents = new ItemStack[contentsArray.length]; - - for (int i = 0; i < contentsArray.length; i++) { - Map itemMap = (Map) contentsArray[i]; - contents[i] = ItemStack.deserialize(itemMap); - } - - Inventory inventory = Bukkit.createInventory(null, size); - inventory.setContents(contents); - - return inventory; - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } -}