From 675a0575e772e5eaecd16f47fa4078466b5b0f10 Mon Sep 17 00:00:00 2001 From: Recursive G Date: Thu, 7 Feb 2019 18:38:46 -0600 Subject: [PATCH] NbtItemStack --- .../cat/nyaa/nyaacore/NyaaCoreLoader.java | 6 +++ .../nyaacore/configuration/NbtItemStack.java | 44 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 src/main/java/cat/nyaa/nyaacore/configuration/NbtItemStack.java diff --git a/src/main/java/cat/nyaa/nyaacore/NyaaCoreLoader.java b/src/main/java/cat/nyaa/nyaacore/NyaaCoreLoader.java index 29eb6d8c..230d3696 100644 --- a/src/main/java/cat/nyaa/nyaacore/NyaaCoreLoader.java +++ b/src/main/java/cat/nyaa/nyaacore/NyaaCoreLoader.java @@ -2,11 +2,13 @@ import cat.nyaa.nyaacore.component.IMessageQueue; import cat.nyaa.nyaacore.component.NyaaComponent; +import cat.nyaa.nyaacore.configuration.NbtItemStack; import cat.nyaa.nyaacore.http.client.HttpClient; import cat.nyaa.nyaacore.timer.TimerManager; import cat.nyaa.nyaacore.utils.ClickSelectionUtils; import cat.nyaa.nyaacore.utils.OfflinePlayerUtils; import org.bukkit.Bukkit; +import org.bukkit.configuration.serialization.ConfigurationSerialization; import org.bukkit.craftbukkit.v1_13_R2.util.CraftMagicNumbers; import org.bukkit.plugin.java.JavaPlugin; @@ -20,6 +22,10 @@ public static NyaaCoreLoader getInstance() { public static final String TARGET_MAPPING = "00ed8e5c39debc3ed194ad7c5645cc45"; + static { + ConfigurationSerialization.registerClass(NbtItemStack.class); + } + @Override public void onLoad() { instance = this; diff --git a/src/main/java/cat/nyaa/nyaacore/configuration/NbtItemStack.java b/src/main/java/cat/nyaa/nyaacore/configuration/NbtItemStack.java new file mode 100644 index 00000000..f7806f28 --- /dev/null +++ b/src/main/java/cat/nyaa/nyaacore/configuration/NbtItemStack.java @@ -0,0 +1,44 @@ +package cat.nyaa.nyaacore.configuration; + +import cat.nyaa.nyaacore.utils.ItemStackUtils; +import org.bukkit.configuration.serialization.ConfigurationSerializable; +import org.bukkit.inventory.ItemStack; + +import java.util.HashMap; +import java.util.Map; + +public class NbtItemStack implements ConfigurationSerializable { + public ItemStack it; + + public NbtItemStack(ItemStack it) { + this.it = it; + } + + @Override + public Map serialize() { + Map ret = new HashMap<>(); + if (it != null) { + try { + ret.put("nbt", ItemStackUtils.itemToBase64(it)); + } catch (Exception ex) { + ex.printStackTrace(); + ret.put("nbt", ""); + } + } else { + ret.put("nbt", ""); + } + + return ret; + } + + public static NbtItemStack deserialize(Map map) { + try { + String nbt = (String) map.getOrDefault("nbt", 0); + if (nbt == null || "".equalsIgnoreCase(nbt)) return new NbtItemStack(null); + return new NbtItemStack(ItemStackUtils.itemFromBase64(nbt)); + } catch (Exception ex) { + ex.printStackTrace(); + return new NbtItemStack(null); + } + } +} \ No newline at end of file