Implement sorting of items in the terminal
Currently you can sort by Alphabetical, amount, and ID
This commit is contained in:
parent
351dc772f6
commit
e568d27d41
|
@ -102,60 +102,9 @@ public class PlayersFile extends YamlConfiguration {
|
||||||
public static Map<UUID, List<ESSystem>> getAllSystems() {
|
public static Map<UUID, List<ESSystem>> getAllSystems() {
|
||||||
Map<UUID, List<ESSystem>> allSystems = new HashMap<>();
|
Map<UUID, List<ESSystem>> allSystems = new HashMap<>();
|
||||||
|
|
||||||
for (String playerUUID : getConfig().getConfigurationSection("players").getKeys(false)) {
|
for (String playerUUIDStr : getConfig().getConfigurationSection("players").getKeys(false)) {
|
||||||
List<ESSystem> playersSystems = new ArrayList<>();
|
UUID playerUUID = UUID.fromString(playerUUIDStr);
|
||||||
for (String systemUUID : getConfig().getConfigurationSection("players." + playerUUID + ".systems").getKeys(false)) {
|
allSystems.put(playerUUID, getPlayersSystems(playerUUID));
|
||||||
String systemPath = "players." + playerUUID + ".systems." + systemUUID + ".";
|
|
||||||
List<ESDrive> drives = new ArrayList<>();
|
|
||||||
|
|
||||||
if (getConfig().contains(systemPath + "drives")) {
|
|
||||||
for (String driveUUID : getConfig().getConfigurationSection(systemPath + "drives").getKeys(false)) {
|
|
||||||
|
|
||||||
Map<ItemStack, Integer> items = new HashMap();
|
|
||||||
if (getConfig().contains(systemPath + "drives." + driveUUID + ".items")) {
|
|
||||||
try {
|
|
||||||
JSONParser jsonParser = new JSONParser();
|
|
||||||
JSONArray itemJsonArray = (JSONArray) jsonParser.parse(getConfig().getString(systemPath + "drives." + driveUUID + ".items"));
|
|
||||||
|
|
||||||
for (int i = 0; i < itemJsonArray.size(); i++) {
|
|
||||||
JSONObject itemObject = (JSONObject) itemJsonArray.get(i);
|
|
||||||
|
|
||||||
Map.Entry<ItemStack, Integer> item = ItemSerialization.deserializeItem((String) itemObject.get("itemYAML"));
|
|
||||||
|
|
||||||
items.put(item.getKey(), item.getValue());
|
|
||||||
}
|
|
||||||
} catch (ParseException | InvalidConfigurationException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int size = getConfig().getInt(systemPath + "drives." + driveUUID + ".size");
|
|
||||||
|
|
||||||
drives.add(new ESDrive(size, items));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
List<UUID> trustedUUIDs = new ArrayList<>();
|
|
||||||
if (getConfig().contains(systemPath + "trustedUUIDs")) {
|
|
||||||
try {
|
|
||||||
JSONArray trustedJson = (JSONArray) new JSONParser().parse(getConfig().getString(systemPath + "trustedUUIDs"));
|
|
||||||
for (int i = 0; i < trustedJson.size(); i++) {
|
|
||||||
JSONObject object = (JSONObject) trustedJson.get(i);
|
|
||||||
|
|
||||||
trustedUUIDs.add(UUID.fromString((String) object.get("UUID")));
|
|
||||||
}
|
|
||||||
} catch (ParseException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean isPublic = getConfig().getBoolean(systemPath + "public");
|
|
||||||
|
|
||||||
Location loc = Utils.convertStringToLocation(getConfig().getString(systemPath + "loc"));
|
|
||||||
playersSystems.add(new ESSystem(UUID.fromString(playerUUID), UUID.fromString(systemUUID), loc, drives, trustedUUIDs, isPublic));
|
|
||||||
}
|
|
||||||
|
|
||||||
allSystems.put(UUID.fromString(playerUUID), playersSystems);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return allSystems;
|
return allSystems;
|
||||||
|
@ -209,9 +158,10 @@ public class PlayersFile extends YamlConfiguration {
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isPublic = getConfig().getBoolean(systemPath + "public");
|
boolean isPublic = getConfig().getBoolean(systemPath + "public");
|
||||||
|
ESSystem.SortOrder sortOrder = ESSystem.SortOrder.valueOf(getConfig().getString(systemPath + "sortOrder"));
|
||||||
|
|
||||||
Location loc = Utils.convertStringToLocation(getConfig().getString(systemPath + "loc"));
|
Location loc = Utils.convertStringToLocation(getConfig().getString(systemPath + "loc"));
|
||||||
systems.add(new ESSystem(uuid, UUID.fromString(systemUUID), loc, drives, trustedUUIDs, isPublic));
|
systems.add(new ESSystem(uuid, UUID.fromString(systemUUID), loc, drives, trustedUUIDs, isPublic, sortOrder));
|
||||||
}
|
}
|
||||||
|
|
||||||
return systems;
|
return systems;
|
||||||
|
@ -222,6 +172,7 @@ public class PlayersFile extends YamlConfiguration {
|
||||||
|
|
||||||
getConfig().set(systemPath + "loc", Utils.convertLocationToString(esSystem.getLocation()));
|
getConfig().set(systemPath + "loc", Utils.convertLocationToString(esSystem.getLocation()));
|
||||||
getConfig().set(systemPath + "public", esSystem.isPublic());
|
getConfig().set(systemPath + "public", esSystem.isPublic());
|
||||||
|
getConfig().set(systemPath + "sortOrder", esSystem.getSortOrder().toString());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
JSONArray jsonArray = new JSONArray();
|
JSONArray jsonArray = new JSONArray();
|
||||||
|
|
|
@ -11,6 +11,7 @@ import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.entity.Item;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
@ -88,6 +89,40 @@ public class ESTerminalGUI implements InventoryHolder, Listener {
|
||||||
items = openSearches.get(player.getUniqueId());
|
items = openSearches.get(player.getUniqueId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<ItemStack> sortedKeys = new ArrayList<>(items.keySet());
|
||||||
|
|
||||||
|
switch (openSystem.getSortOrder()) {
|
||||||
|
case ALPHABETICAL:
|
||||||
|
sortedKeys.sort((i1, i2) -> {
|
||||||
|
ItemMeta im1 = i1.getItemMeta();
|
||||||
|
ItemMeta im2 = i2.getItemMeta();
|
||||||
|
|
||||||
|
String name1 = im1 == null ? "" : im1.getDisplayName();
|
||||||
|
if (name1.isEmpty()) {
|
||||||
|
name1 = i1.getType().name();
|
||||||
|
}
|
||||||
|
|
||||||
|
String name2 = im2 == null ? "" : im2.getDisplayName();
|
||||||
|
if (name2.isEmpty()) {
|
||||||
|
name2 = i2.getType().name();
|
||||||
|
}
|
||||||
|
|
||||||
|
return name1.compareTo(name2);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
case AMOUNT:
|
||||||
|
Map<ItemStack, Integer> finalItems = items;
|
||||||
|
sortedKeys.sort((i1, i2) -> {
|
||||||
|
return finalItems.get(i2).compareTo(finalItems.get(i1));
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case ID:
|
||||||
|
sortedKeys.sort(Comparator.comparing(ItemStack::getType));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 10; i < 44; i++) {
|
for (int i = 10; i < 44; i++) {
|
||||||
// Ignore the borders
|
// Ignore the borders
|
||||||
if (i == 18 || i == 27 || i == 36 || i == 17 || i == 26 || i == 35) {
|
if (i == 18 || i == 27 || i == 36 || i == 17 || i == 26 || i == 35) {
|
||||||
|
@ -102,8 +137,8 @@ public class ESTerminalGUI implements InventoryHolder, Listener {
|
||||||
int itemIndex = i - (10 + lineIndex * 2) + pageIndex * 28; // The start of a new line is + 2 boxes, with each page showing 28 items.
|
int itemIndex = i - (10 + lineIndex * 2) + pageIndex * 28; // The start of a new line is + 2 boxes, with each page showing 28 items.
|
||||||
if (itemIndex < items.size()) {
|
if (itemIndex < items.size()) {
|
||||||
try {
|
try {
|
||||||
ItemStack item = (ItemStack) items.keySet().toArray()[itemIndex];
|
ItemStack item = sortedKeys.get(itemIndex);
|
||||||
int amount = (int) items.values().toArray()[itemIndex];
|
int amount = items.get(item);
|
||||||
|
|
||||||
ItemMeta itemMeta = item.getItemMeta();
|
ItemMeta itemMeta = item.getItemMeta();
|
||||||
if (itemMeta.hasLore()) {
|
if (itemMeta.hasLore()) {
|
||||||
|
@ -133,7 +168,6 @@ public class ESTerminalGUI implements InventoryHolder, Listener {
|
||||||
inv.clear(i);
|
inv.clear(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inv.setItem(45, createGuiItem(Material.IRON_BARS, "Security"));
|
inv.setItem(45, createGuiItem(Material.IRON_BARS, "Security"));
|
||||||
|
|
||||||
// Create the lore for the drives
|
// Create the lore for the drives
|
||||||
|
@ -169,6 +203,8 @@ public class ESTerminalGUI implements InventoryHolder, Listener {
|
||||||
lore.add(ChatColor.BLUE + "Filled Items: " + spaceColor + filledSpace + ChatColor.BLUE + "/" + ChatColor.GREEN + maxSpace);
|
lore.add(ChatColor.BLUE + "Filled Items: " + spaceColor + filledSpace + ChatColor.BLUE + "/" + ChatColor.GREEN + maxSpace);
|
||||||
lore.add(ChatColor.BLUE + "Filled Types: " + itemsColor + filledTypes + ChatColor.BLUE + "/" + ChatColor.GREEN + maxTypes);
|
lore.add(ChatColor.BLUE + "Filled Types: " + itemsColor + filledTypes + ChatColor.BLUE + "/" + ChatColor.GREEN + maxTypes);
|
||||||
inv.setItem(46, createGuiItem(Material.CHEST, "Drives", lore));
|
inv.setItem(46, createGuiItem(Material.CHEST, "Drives", lore));
|
||||||
|
|
||||||
|
inv.setItem(47, createGuiItem(Material.HOPPER, "Sort by " + openSystem.getSortOrder().toDisplayString()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -338,6 +374,24 @@ public class ESTerminalGUI implements InventoryHolder, Listener {
|
||||||
Reference.ES_SYSTEM_SECURITY_GUI.openInventory(player, openSystem);
|
Reference.ES_SYSTEM_SECURITY_GUI.openInventory(player, openSystem);
|
||||||
} else if (slot == 46) { // Drives
|
} else if (slot == 46) { // Drives
|
||||||
Reference.ES_DRIVE_GUI.openInventory(player, openSystem);
|
Reference.ES_DRIVE_GUI.openInventory(player, openSystem);
|
||||||
|
} else if (slot == 47) { // Sort method
|
||||||
|
ESSystem.SortOrder sortOrder = openSystem.getSortOrder();
|
||||||
|
|
||||||
|
// Change sort order
|
||||||
|
switch (sortOrder) {
|
||||||
|
case ID:
|
||||||
|
sortOrder = ESSystem.SortOrder.ALPHABETICAL;
|
||||||
|
break;
|
||||||
|
case AMOUNT:
|
||||||
|
sortOrder = ESSystem.SortOrder.ID;
|
||||||
|
break;
|
||||||
|
case ALPHABETICAL:
|
||||||
|
sortOrder = ESSystem.SortOrder.AMOUNT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
openSystem.setSortOrder(sortOrder);
|
||||||
|
initializeItems(player, openSystem);
|
||||||
} else {
|
} else {
|
||||||
switch (clickType) {
|
switch (clickType) {
|
||||||
case SHIFT_IN:
|
case SHIFT_IN:
|
||||||
|
|
|
@ -6,9 +6,15 @@ import net.seanomik.energeticstorage.utils.ItemSerialization;
|
||||||
import net.seanomik.energeticstorage.utils.Reference;
|
import net.seanomik.energeticstorage.utils.Reference;
|
||||||
import net.seanomik.energeticstorage.utils.Utils;
|
import net.seanomik.energeticstorage.utils.Utils;
|
||||||
import org.apache.commons.text.StringEscapeUtils;
|
import org.apache.commons.text.StringEscapeUtils;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.configuration.InvalidConfigurationException;
|
import org.bukkit.configuration.InvalidConfigurationException;
|
||||||
|
import org.bukkit.configuration.serialization.ConfigurationSerializable;
|
||||||
|
import org.bukkit.enchantments.Enchantment;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
import org.bukkit.material.MaterialData;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.json.simple.JSONArray;
|
import org.json.simple.JSONArray;
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
import org.json.simple.parser.JSONParser;
|
import org.json.simple.parser.JSONParser;
|
||||||
|
@ -16,7 +22,7 @@ import org.json.simple.parser.ParseException;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class ESDrive implements Cloneable {
|
public class ESDrive implements Cloneable, ConfigurationSerializable {
|
||||||
private UUID uuid;
|
private UUID uuid;
|
||||||
private int size;
|
private int size;
|
||||||
private Map<ItemStack, Integer> items = new HashMap<>(); // Item, amount
|
private Map<ItemStack, Integer> items = new HashMap<>(); // Item, amount
|
||||||
|
@ -25,6 +31,12 @@ public class ESDrive implements Cloneable {
|
||||||
this.size = size;
|
this.size = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected ESDrive(UUID uuid, int size, Map<ItemStack, Integer> items) {
|
||||||
|
this.uuid = uuid;
|
||||||
|
this.size = size;
|
||||||
|
this.items = items;
|
||||||
|
}
|
||||||
|
|
||||||
public ESDrive(int size, Map<ItemStack, Integer> items) {
|
public ESDrive(int size, Map<ItemStack, Integer> items) {
|
||||||
this(size);
|
this(size);
|
||||||
uuid = UUID.randomUUID();
|
uuid = UUID.randomUUID();
|
||||||
|
@ -181,4 +193,45 @@ public class ESDrive implements Cloneable {
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @TODO: Implement (has not been tested)
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public Map<String, Object> serialize() {
|
||||||
|
Map<String, Object> result = new LinkedHashMap();
|
||||||
|
result.put("uuid", uuid);
|
||||||
|
result.put("size", size);
|
||||||
|
|
||||||
|
if (!items.isEmpty()) {
|
||||||
|
List<Object> itemsSerialized = new ArrayList<>();
|
||||||
|
for (Map.Entry<ItemStack, Integer> entry : items.entrySet()) {
|
||||||
|
Map<String, Object> itemSerialized = new LinkedHashMap<>();
|
||||||
|
itemSerialized.put("amount", entry.getValue());
|
||||||
|
itemSerialized.put("item", entry.getKey().serialize());
|
||||||
|
itemsSerialized.add(itemSerialized);
|
||||||
|
}
|
||||||
|
result.put("items", itemsSerialized);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// @TODO: Implement (has not been tested)
|
||||||
|
@NotNull
|
||||||
|
public static ESDrive deserialize(@NotNull Map<String, Object> args) {
|
||||||
|
UUID uuid = (UUID) args.get("uuid");
|
||||||
|
int size = ((Number)args.get("size")).intValue();
|
||||||
|
Map<ItemStack, Integer> items = new HashMap<>();
|
||||||
|
|
||||||
|
if (args.containsKey("items")) {
|
||||||
|
Object raw = args.get("items");
|
||||||
|
if (raw instanceof Map) {
|
||||||
|
Map<?, ?> map = (Map)raw;
|
||||||
|
|
||||||
|
items.put(ItemStack.deserialize((Map<String, Object>) map.get("item")), ((Number)map.get("amount")).intValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ESDrive(uuid, size, items);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,19 +1,25 @@
|
||||||
package net.seanomik.energeticstorage.objects;
|
package net.seanomik.energeticstorage.objects;
|
||||||
|
|
||||||
import net.seanomik.energeticstorage.utils.Utils;
|
import net.seanomik.energeticstorage.utils.Utils;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.configuration.serialization.ConfigurationSerializable;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class ESSystem implements Cloneable {
|
public class ESSystem implements Cloneable, ConfigurationSerializable {
|
||||||
private UUID owner;
|
private UUID owner;
|
||||||
private UUID uuid;
|
private UUID uuid;
|
||||||
private Location location;
|
private Location location;
|
||||||
private List<ESDrive> esDrives = new ArrayList<>();
|
private List<ESDrive> esDrives = new ArrayList<>();
|
||||||
private List<UUID> trustedPlayers = new ArrayList<>();
|
private List<UUID> trustedPlayers = new ArrayList<>();
|
||||||
private boolean isPublic;
|
private boolean isPublic;
|
||||||
|
private SortOrder sortOrder;
|
||||||
|
|
||||||
public ESSystem(UUID owner, UUID uuid, Location location) {
|
public ESSystem(UUID owner, UUID uuid, Location location) {
|
||||||
this.owner = owner;
|
this.owner = owner;
|
||||||
|
@ -21,12 +27,13 @@ public class ESSystem implements Cloneable {
|
||||||
this.location = location;
|
this.location = location;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ESSystem(UUID owner, UUID uuid, Location location, List<ESDrive> esDrives, List<UUID> trustedPlayers, boolean isPublic) {
|
public ESSystem(UUID owner, UUID uuid, Location location, List<ESDrive> esDrives, List<UUID> trustedPlayers, boolean isPublic, SortOrder sortOrder) {
|
||||||
this(owner, uuid, location);
|
this(owner, uuid, location);
|
||||||
|
|
||||||
this.esDrives = esDrives;
|
this.esDrives = esDrives;
|
||||||
this.trustedPlayers = trustedPlayers;
|
this.trustedPlayers = trustedPlayers;
|
||||||
this.isPublic = isPublic;
|
this.isPublic = isPublic;
|
||||||
|
this.sortOrder = sortOrder;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setEsDrives(List<ESDrive> esDrives) {
|
public void setEsDrives(List<ESDrive> esDrives) {
|
||||||
|
@ -109,6 +116,9 @@ public class ESSystem implements Cloneable {
|
||||||
this.location = location;
|
this.location = location;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public SortOrder getSortOrder() { return sortOrder; }
|
||||||
|
public void setSortOrder(SortOrder sortOrder) { this.sortOrder = sortOrder; }
|
||||||
|
|
||||||
public ESSystem clone() {
|
public ESSystem clone() {
|
||||||
try {
|
try {
|
||||||
ESSystem system = (ESSystem) super.clone();
|
ESSystem system = (ESSystem) super.clone();
|
||||||
|
@ -172,23 +182,23 @@ public class ESSystem implements Cloneable {
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean addItem(ItemStack item) {
|
public boolean addItem(ItemStack item) {
|
||||||
ESDrive drive = findItemInAvailableDrive(item);
|
ESDrive drive = findItemInAvailableDrive(item);
|
||||||
|
|
||||||
// If we failed to find the item in the next available drive, then find another drive.
|
|
||||||
if (drive == null) {
|
|
||||||
drive = getNextAvailableDrive();
|
|
||||||
|
|
||||||
|
// If we failed to find the item in the next available drive, then find another drive.
|
||||||
if (drive == null) {
|
if (drive == null) {
|
||||||
return false;
|
drive = getNextAvailableDrive();
|
||||||
|
|
||||||
|
if (drive == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean addReturn = drive.addItem(item);
|
||||||
|
|
||||||
|
return addReturn;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean addReturn = drive.addItem(item);
|
|
||||||
|
|
||||||
return addReturn;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemStack removeItem(ItemStack item) {
|
public ItemStack removeItem(ItemStack item) {
|
||||||
// Find a drive that has this item to remove from.
|
// Find a drive that has this item to remove from.
|
||||||
ESDrive drive = null;
|
ESDrive drive = null;
|
||||||
|
@ -207,4 +217,64 @@ public boolean addItem(ItemStack item) {
|
||||||
|
|
||||||
return drive.removeItem(item);
|
return drive.removeItem(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @TODO: Implement (has not been tested)
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public Map<String, Object> serialize() {
|
||||||
|
Map<String, Object> result = new LinkedHashMap();
|
||||||
|
result.put("uuid", uuid);
|
||||||
|
result.put("owner", owner);
|
||||||
|
result.put("location", location);
|
||||||
|
result.put("drives", esDrives);
|
||||||
|
result.put("trustedPlayers", trustedPlayers);
|
||||||
|
result.put("isPublic", isPublic);
|
||||||
|
result.put("sortOrder", sortOrder.toString());
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// @TODO: Implement (has not been tested)
|
||||||
|
@NotNull
|
||||||
|
public static ESSystem deserialize(@NotNull Map<String, Object> args) {
|
||||||
|
UUID owner = (UUID) args.get("owner");
|
||||||
|
UUID uuid = (UUID) args.get("uuid");
|
||||||
|
Location location = (Location) args.get("location");
|
||||||
|
|
||||||
|
List<ESDrive> drives = new ArrayList<>();
|
||||||
|
if (args.containsKey("drives")) {
|
||||||
|
Object raw = args.get("drives");
|
||||||
|
if (raw instanceof List) {
|
||||||
|
Map<?, ?> map = (Map)raw;
|
||||||
|
|
||||||
|
drives.add(ESDrive.deserialize((Map<String, Object>) map));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<UUID> trustedPlayers = (List<UUID>) args.get("trustedPlayers");
|
||||||
|
boolean isPublic = (boolean) args.get("isPublic");
|
||||||
|
SortOrder sortOrder = SortOrder.valueOf((String)args.get("sortOrder"));
|
||||||
|
|
||||||
|
return new ESSystem(owner, uuid, location, drives, trustedPlayers, isPublic, sortOrder);
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum SortOrder {
|
||||||
|
ALPHABETICAL,
|
||||||
|
AMOUNT,
|
||||||
|
ID;
|
||||||
|
|
||||||
|
public String toDisplayString() {
|
||||||
|
switch (this) {
|
||||||
|
case ALPHABETICAL:
|
||||||
|
return "Alphabetical";
|
||||||
|
case AMOUNT:
|
||||||
|
return "Amount";
|
||||||
|
case ID:
|
||||||
|
return "ID";
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue