pull/6/head
jakub 10 months ago
parent 1b8203d533
commit 9ad62e89a9
  1. 2
      src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java
  2. 8
      src/main/java/xyz/soukup/ecoCraftCore/objects/Shop.java
  3. 12
      src/main/java/xyz/soukup/ecoCraftCore/objects/VirtualChest.java
  4. 64
      src/main/java/xyz/soukup/ecoCraftCore/utilities/Converter.java
  5. 71
      src/main/java/xyz/soukup/ecoCraftCore/utilities/JSONConverter.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);

@ -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){

@ -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;
}

@ -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;
}
}

@ -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<String, Object> 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<Map<String, Object>>() {}.getType();
Map<String, Object> 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<String, Object> 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<Map<String, Object>>() {}.getType();
Map<String, Object> 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<String, Object> itemMap = (Map<String, Object>) 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;
}
}
}
Loading…
Cancel
Save