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 { private void prepareDatabase() throws SQLException {
String databaseUrl = "jdbc:mysql://soukup.xyz:3306/ecc"; 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); 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 com.j256.ormlite.table.DatabaseTable;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import org.bukkit.block.Sign; import org.bukkit.block.Sign;
import org.bukkit.block.TileState;
import org.bukkit.block.sign.Side; import org.bukkit.block.sign.Side;
import org.bukkit.block.sign.SignSide; import org.bukkit.block.sign.SignSide;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import xyz.soukup.ecoCraftCore.utilities.DaoRegistry; 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 xyz.soukup.ecoCraftCore.utilities.PDC;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.List;
@DatabaseTable(tableName = "shops") @DatabaseTable(tableName = "shops")
public class Shop { 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) { public Shop(Player player, ItemStack itemStack, int stock, int freeSpace, int amount, float priceBuy, float priceSell, int virtualChestID) {
this.ownerType = "player"; this.ownerType = "player";
this.owner = player.getName(); this.owner = player.getName();
this.itemStackJson = JSONConverter.itemStackToJson(itemStack); this.itemStackJson = Converter.toString(itemStack);
this.itemName = itemStack.getType().toString(); this.itemName = itemStack.getType().toString();
this.stock = stock; this.stock = stock;
this.freeSpace = freeSpace; this.freeSpace = freeSpace;
@ -118,7 +116,7 @@ public class Shop {
} }
public ItemStack getItemStack() { public ItemStack getItemStack() {
return JSONConverter.itemStackFromJson(this.itemStackJson); return Converter.itemstackFromString(this.itemStackJson);
} }
public void writeIntoSign(Sign sign){ 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.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable; import com.j256.ormlite.table.DatabaseTable;
import org.bukkit.block.Chest; import org.bukkit.block.Chest;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import xyz.soukup.ecoCraftCore.utilities.DaoRegistry; import xyz.soukup.ecoCraftCore.utilities.DaoRegistry;
import xyz.soukup.ecoCraftCore.utilities.JSONConverter; import xyz.soukup.ecoCraftCore.utilities.Converter;
import java.sql.SQLException; import java.sql.SQLException;
@ -18,7 +16,7 @@ public class VirtualChest {
@DatabaseField(generatedId = true) @DatabaseField(generatedId = true)
private int id; private int id;
@DatabaseField(columnName = "inventory") @DatabaseField(columnName = "inventory", dataType = DataType.LONG_STRING)
private String inventoryJson; private String inventoryJson;
@DatabaseField(columnName = "active_on_server") @DatabaseField(columnName = "active_on_server")
@ -36,7 +34,7 @@ public class VirtualChest {
public VirtualChest(Chest chest){ public VirtualChest(Chest chest){
Inventory inventory = chest.getSnapshotInventory(); Inventory inventory = chest.getSnapshotInventory();
this.inventoryJson = JSONConverter.inventoryToJson(inventory); this.inventoryJson = Converter.toString(inventory);
} }
@ -50,7 +48,7 @@ public class VirtualChest {
public void save(){ public void save(){
if (this.inventory != null){ if (this.inventory != null){
this.inventoryJson = JSONConverter.inventoryToJson(this.inventory); this.inventoryJson = Converter.toString(this.inventory);
} }
try { try {
DaoRegistry.getVirtualChestDao().createOrUpdate(this); DaoRegistry.getVirtualChestDao().createOrUpdate(this);
@ -61,7 +59,7 @@ public class VirtualChest {
public Inventory getInventory(){ public Inventory getInventory(){
if (this.inventory == null){ if (this.inventory == null){
this.inventory = JSONConverter.inventoryFromJson(this.inventoryJson); this.inventory = Converter.inventoryFromString(this.inventoryJson);
} }
return this.inventory; 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