diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/ui/packages/SupportClansPackagePage.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/ui/packages/SupportClansPackagePage.java index 68f4d7514..4f261edfb 100644 --- a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/ui/packages/SupportClansPackagePage.java +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/ui/packages/SupportClansPackagePage.java @@ -46,10 +46,6 @@ public class SupportClansPackagePage extends SupportPackagePage addRuneAmplifier(20); addRuneAmplifier(60); - List allPackages = new ArrayList<>(); - _packageList.forEach(pair -> allPackages.addAll(pair.getRight())); - _receivedClansPackages = getPackageOwnership(allPackages); - addToItemLores(); buildPage(); @@ -92,43 +88,4 @@ public class SupportClansPackagePage extends SupportPackagePage _packageList.add(getPackagePair(new ItemBuilder(Material.EMERALD).setAmount(Math.min(minutes, 64)), minutes + " Minute Rune Amplifier", packageName)); _itemPackages.add(packageName); } - - private void addToItemLores() - { - _packageList.forEach(pair -> - { - // Only process item packages, i.e. ones that - // can be received multiple times - List packages = pair.getRight().stream().filter(p -> _itemPackages.contains(p)).collect(Collectors.toList()); - - if (packages.size() == 0) - { - return; - } - - ItemStack item = pair.getLeft(); - - List newLore = new ArrayList<>(); - - newLore.addAll(Arrays.asList( - C.mBody + "This player has", - C.mBody + "received:" - )); - - for (String packageName : packages) - { - newLore.add(" " + C.cYellow + _receivedClansPackages.computeIfAbsent(packageName, k -> 0) + " " + C.cWhite + packageName); - } - - newLore.add(""); - - ItemMeta meta = item.getItemMeta(); - - newLore.addAll(meta.getLore()); - - meta.setLore(newLore); - - item.setItemMeta(meta); - }); - } } diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/ui/packages/SupportPackagePage.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/ui/packages/SupportPackagePage.java index dfd9f0106..36d011562 100644 --- a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/ui/packages/SupportPackagePage.java +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/ui/packages/SupportPackagePage.java @@ -4,10 +4,13 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; import mineplex.core.account.CoreClient; import mineplex.core.common.Pair; @@ -29,6 +32,8 @@ public class SupportPackagePage extends SupportPage // as items when the above package is clicked. protected List _itemPackages; + protected Map _receivedPackages; + public SupportPackagePage(CustomerSupport plugin, SupportShop shop, Player player, CoreClient target, SupportPage previousPage, String name) { super(plugin, shop, player, target, previousPage, name); @@ -69,13 +74,33 @@ public class SupportPackagePage extends SupportPage private void addPackage(Pair> item, int slot) { - addButton(slot, item.getLeft(), (p, c) -> + // Only 1 item, and it's an item type + if (item.getRight().size() == 1 && _itemPackages.contains(item.getRight().get(0))) { - for (String packageName : item.getRight()) + addButton(slot, item.getLeft(), (p, c) -> { - giveUnknownSalesPackage(packageName, _itemPackages.contains(packageName)); - } - }); + getShop().openPageForPlayer(getPlayer(), + new SupportGivePackagePage( + getPlugin(), + getShop(), + getPlayer(), + _target, + this, + new ItemBuilder(item.getLeft().getType()).setTitle(item.getLeft().getItemMeta().getDisplayName()), + item.getRight().get(0) + )); + }); + } + else + { + addButton(slot, item.getLeft(), (p, c) -> + { + for (String packageName : item.getRight()) + { + giveUnknownSalesPackage(packageName, _itemPackages.contains(packageName)); + } + }); + } } private List>> getPackageList() @@ -83,6 +108,54 @@ public class SupportPackagePage extends SupportPage return _packageList; } + /** + * Call this method once all items + * have been added to the _packageList + * map so that they can be processed. + */ + protected void addToItemLores() + { + List allPackages = new ArrayList<>(); + _packageList.forEach(pair -> allPackages.addAll(pair.getRight())); + _receivedPackages = getPackageOwnership(allPackages); + + _packageList.forEach(pair -> + { + // Only process item packages, i.e. ones that + // can be received multiple times + List packages = pair.getRight().stream().filter(p -> _itemPackages.contains(p)).collect(Collectors.toList()); + + if (packages.size() == 0) + { + return; + } + + ItemStack item = pair.getLeft(); + + List newLore = new ArrayList<>(); + + newLore.addAll(Arrays.asList( + C.mBody + "This player has", + C.mBody + "received:" + )); + + for (String packageName : packages) + { + newLore.add(" " + C.cYellow + _receivedPackages.computeIfAbsent(packageName, k -> 0) + " " + C.cWhite + packageName); + } + + newLore.add(""); + + ItemMeta meta = item.getItemMeta(); + + newLore.addAll(meta.getLore()); + + meta.setLore(newLore); + + item.setItemMeta(meta); + }); + } + @Override protected void buildPage() {