diff --git a/SpigotCore_Main/src/de/steamwar/comms/PacketIdManager.java b/SpigotCore_Main/src/de/steamwar/comms/PacketIdManager.java
index fb12d5c..27dbd81 100644
--- a/SpigotCore_Main/src/de/steamwar/comms/PacketIdManager.java
+++ b/SpigotCore_Main/src/de/steamwar/comms/PacketIdManager.java
@@ -1,3 +1,22 @@
+/*
+ This file is a part of the SteamWar software.
+
+ Copyright (C) 2020 SteamWar.de-Serverteam
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+*/
+
package de.steamwar.comms;
public class PacketIdManager {
diff --git a/SpigotCore_Main/src/de/steamwar/comms/handlers/InventoryHandler.java b/SpigotCore_Main/src/de/steamwar/comms/handlers/InventoryHandler.java
index 9c3ccd6..74dd9e4 100644
--- a/SpigotCore_Main/src/de/steamwar/comms/handlers/InventoryHandler.java
+++ b/SpigotCore_Main/src/de/steamwar/comms/handlers/InventoryHandler.java
@@ -27,7 +27,6 @@ import de.steamwar.inventory.SWInventory;
import de.steamwar.inventory.SWItem;
import de.steamwar.sql.SteamwarUser;
import org.bukkit.Bukkit;
-import org.bukkit.Material;
import de.steamwar.comms.packets.*;
import java.util.*;
@@ -45,38 +44,15 @@ public class InventoryHandler implements BungeeHandler {
JsonArray array = object.get("items").getAsJsonArray();
for (int i = 0; i < length; i++) {
JsonObject itemJson = array.get(i).getAsJsonObject();
- SWItem item = null;
- try {
- item = new SWItem(Material.valueOf(itemJson.get("material").getAsString()), itemJson.get("title").getAsString());
- }catch (IllegalArgumentException e) {
- item = new SWItem(Material.STONE, itemJson.get("title").getAsString());
- }
- if(itemJson.has("skullOwner")) {
- item = SWItem.getPlayerSkull(itemJson.get("skullOwner").getAsString());
- item.setName(itemJson.get("title").getAsString());
- }
- if(itemJson.has("color")) {
- item.getItemStack().setType(SWItem.getDye(itemJson.get("color").getAsInt()));
- }
- if(itemJson.has("enchanted"))
- item.setEnchanted(true);
- if(itemJson.has("lore")) {
- List lore = new ArrayList<>();
- JsonArray loreArray = itemJson.getAsJsonArray("lore");
- loreArray.forEach(jsonElement -> lore.add(jsonElement.getAsString()));
- item.setLore(lore);
- }
+ SWItem item = SWItem.getItemFromJson(itemJson);
item.setCallback(click -> {
- new InventoryCallbackPacket().setPosition(itemJson.get("position").getAsInt()).setClick(click)
- .setCallback(InventoryCallbackPacket.CallbackType.CLICK)
- .setOwner(SteamwarUser.get(player).getId()).send(Bukkit.getPlayer(player));
+ new InventoryCallbackPacket(itemJson, click, player).send(Bukkit.getPlayer(player));
});
items.put(itemJson.get("position").getAsInt(), item);
}
SWInventory inventory = new SWInventory(Bukkit.getPlayer(player), size, title, items);
- inventory.addCloseCallback(click -> new InventoryCallbackPacket()
- .setCallback(InventoryCallbackPacket.CallbackType.CLOSE).setOwner(SteamwarUser.get(player).getId()).send(Bukkit.getPlayer(player)));
+ inventory.addCloseCallback(click -> new InventoryCallbackPacket(player).send(Bukkit.getPlayer(player)));
inventory.open();
}
}
diff --git a/SpigotCore_Main/src/de/steamwar/comms/packets/InventoryCallbackPacket.java b/SpigotCore_Main/src/de/steamwar/comms/packets/InventoryCallbackPacket.java
index 0883033..6ba1c42 100644
--- a/SpigotCore_Main/src/de/steamwar/comms/packets/InventoryCallbackPacket.java
+++ b/SpigotCore_Main/src/de/steamwar/comms/packets/InventoryCallbackPacket.java
@@ -20,9 +20,13 @@
package de.steamwar.comms.packets;
import com.google.common.io.ByteArrayDataOutput;
+import com.google.gson.JsonObject;
import de.steamwar.comms.PacketIdManager;
+import de.steamwar.sql.SteamwarUser;
import org.bukkit.event.inventory.ClickType;
+import java.util.UUID;
+
public class InventoryCallbackPacket extends SpigotPacket {
int position = -1;
@@ -45,6 +49,20 @@ public class InventoryCallbackPacket extends SpigotPacket {
}
}
+ public InventoryCallbackPacket() {}
+
+ public InventoryCallbackPacket(JsonObject itemJson, ClickType click, UUID player) {
+ setPosition(itemJson.get("position").getAsInt());
+ setClick(click);
+ setCallback(InventoryCallbackPacket.CallbackType.CLICK);
+ setOwner(SteamwarUser.get(player).getId());
+ }
+
+ public InventoryCallbackPacket(UUID player) {
+ setCallback(CallbackType.CLOSE);
+ setOwner(SteamwarUser.get(player).getId());
+ }
+
public InventoryCallbackPacket setPosition(int position) {
this.position = position;
return this;
diff --git a/SpigotCore_Main/src/de/steamwar/inventory/SWItem.java b/SpigotCore_Main/src/de/steamwar/inventory/SWItem.java
index 55aa8aa..d77ffab 100644
--- a/SpigotCore_Main/src/de/steamwar/inventory/SWItem.java
+++ b/SpigotCore_Main/src/de/steamwar/inventory/SWItem.java
@@ -19,6 +19,8 @@
package de.steamwar.inventory;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
import de.steamwar.core.Core;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
@@ -137,6 +139,31 @@ public class SWItem {
callback = c;
}
+ public static SWItem getItemFromJson(JsonObject itemJson) {
+ SWItem item = null;
+ try {
+ item = new SWItem(Material.valueOf(itemJson.get("material").getAsString()), itemJson.get("title").getAsString());
+ }catch (IllegalArgumentException e) {
+ item = new SWItem(Material.STONE, itemJson.get("title").getAsString());
+ }
+ if(itemJson.has("skullOwner")) {
+ item = SWItem.getPlayerSkull(itemJson.get("skullOwner").getAsString());
+ item.setName(itemJson.get("title").getAsString());
+ }
+ if(itemJson.has("color")) {
+ item.getItemStack().setType(SWItem.getDye(itemJson.get("color").getAsInt()));
+ }
+ if(itemJson.has("enchanted"))
+ item.setEnchanted(true);
+ if(itemJson.has("lore")) {
+ List lore = new ArrayList<>();
+ JsonArray loreArray = itemJson.getAsJsonArray("lore");
+ loreArray.forEach(jsonElement -> lore.add(jsonElement.getAsString()));
+ item.setLore(lore);
+ }
+ return item;
+ }
+
private void hideAttributes() {
if (itemMeta == null) return;
itemMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);