From cf913ae61d445de13f0ca9185039762a508bc0fa Mon Sep 17 00:00:00 2001 From: Lixfel Date: Sun, 19 Jan 2020 17:52:48 +0100 Subject: [PATCH] Adding personal kits for WarGears o.a. --- .../src/de/steamwar/sql/PersonalKit.java | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 SpigotCore_Main/src/de/steamwar/sql/PersonalKit.java diff --git a/SpigotCore_Main/src/de/steamwar/sql/PersonalKit.java b/SpigotCore_Main/src/de/steamwar/sql/PersonalKit.java new file mode 100644 index 0000000..7de0222 --- /dev/null +++ b/SpigotCore_Main/src/de/steamwar/sql/PersonalKit.java @@ -0,0 +1,62 @@ +package de.steamwar.sql; + +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.inventory.ItemStack; + +import java.io.StringReader; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Objects; + +public class PersonalKit { + + private final int userID; + private final String gamemode; + private String inventory; + private String armor; + + private PersonalKit(ResultSet rs) throws SQLException { + userID = rs.getInt("UserID"); + gamemode = rs.getString("GameMode"); + inventory = rs.getString("Inventory"); + armor = rs.getString("Armor"); + } + + public static PersonalKit get(int userID, String gamemode){ + ResultSet rs = SQL.select("SELECT * FROM PersonalKit WHERE UserID = '" + userID + "' AND GameMode = '" + SQL.disarmString(gamemode) + "'"); + try { + if(!rs.next()) + return null; + + return new PersonalKit(rs); + } catch (SQLException e) { + throw new SecurityException("Failed loading personal kit", e); + } + } + + public static PersonalKit save(int userID, String gamemode, ItemStack[] inventory, ItemStack[] armor){ + YamlConfiguration inventoryConfig = new YamlConfiguration(); + inventoryConfig.set("Inventory", inventory); + + YamlConfiguration armorConfig = new YamlConfiguration(); + armorConfig.set("Armor", armor); + + SQL.update("INSERT INTO PersonalKit" + + " (UserID, GameMode, Inventory, Armor)" + + " VALUES" + + " ('" + userID + "', '" + gamemode + "', '" + SQL.disarmString(inventoryConfig.saveToString()) + "', '" + SQL.disarmString(armorConfig.saveToString()) + "')" + + " ON DUPLICATE KEY UPDATE" + + " Inventory = VALUES(Inventory), Armor = VALUES(Armor)"); + return get(userID, gamemode); + } + + public ItemStack[] getInventory(){ + YamlConfiguration config = YamlConfiguration.loadConfiguration(new StringReader(inventory)); + return Objects.requireNonNull(config.getList("Inventory")).toArray(new ItemStack[0]); + } + + public ItemStack[] getArmor(){ + YamlConfiguration config = YamlConfiguration.loadConfiguration(new StringReader(armor)); + return Objects.requireNonNull(config.getList("Armor")).toArray(new ItemStack[0]); + } +}