diff --git a/Plugins/Mineplex.Core/src/mineplex/core/progression/ProgressiveKit.java b/Plugins/Mineplex.Core/src/mineplex/core/progression/ProgressiveKit.java index 1f092f763..36dcea873 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/progression/ProgressiveKit.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/progression/ProgressiveKit.java @@ -1,18 +1,17 @@ package mineplex.core.progression; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -import org.bukkit.Material; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; - import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.progression.data.KitAbilityDetail; import mineplex.core.progression.math.Calculations; +import org.bukkit.Material; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; + +import java.util.List; +import java.util.Map; +import java.util.UUID; /** * The API class all kits with the new system must use @@ -55,7 +54,17 @@ public interface ProgressiveKit * * @return The map of upgrades and their details */ - Map> getAbilityDetails(); + Map> getAbilityDetails(); + + /** + * Determines whether or not the kit UI is displayed with "Coming Soon" or actual upgrade details. + * + * @return true if the menu should populate from {@code getAbilityDetails} + */ + default boolean showUpgrades() + { + return false; + } /** * Retrieve the current level of this kit diff --git a/Plugins/Mineplex.Core/src/mineplex/core/progression/gui/buttons/KitAbilityButton.java b/Plugins/Mineplex.Core/src/mineplex/core/progression/gui/buttons/KitAbilityButton.java index 817d1a8bf..a475908a0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/progression/gui/buttons/KitAbilityButton.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/progression/gui/buttons/KitAbilityButton.java @@ -1,6 +1,7 @@ package mineplex.core.progression.gui.buttons; import com.google.common.collect.Lists; +import mineplex.core.common.util.C; import mineplex.core.itemstack.ItemBuilder; import mineplex.core.progression.data.KitAbilityDetail; import mineplex.core.progression.gui.buttons.misc.IconButton; @@ -23,7 +24,7 @@ public class KitAbilityButton extends IconButton ItemBuilder builder = new ItemBuilder(detail.getIcon()); - builder.setTitle(detail.getDisplayName()); + builder.setTitle(C.cYellow + detail.getDisplayName()); List lore = Lists.newArrayList(" "); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/progression/gui/buttons/KitUpgradeMenuButton.java b/Plugins/Mineplex.Core/src/mineplex/core/progression/gui/buttons/KitUpgradeMenuButton.java index d8792c357..be1397aa9 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/progression/gui/buttons/KitUpgradeMenuButton.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/progression/gui/buttons/KitUpgradeMenuButton.java @@ -50,13 +50,18 @@ public class KitUpgradeMenuButton extends KitButton //This ONLY flashes if their next upgrade level isn't their same one. _flash = Calculations.isUpgradeLevelEligible(level) && (nextUpgradeLevel > upgradeLevel); + ChatColor color = Calculations.getColor(level, nextUpgradeLevelPlayer); + + if(kit.showUpgrades()) + { + ItemBuilder builder = lore(new ItemBuilder(Material.ENCHANTMENT_TABLE), upgradeLevel, color, diff); + _item = builder.build(); + } + if (_flash) { flash(); } - - ChatColor color = Calculations.getColor(level, nextUpgradeLevelPlayer); - } @Override @@ -73,7 +78,7 @@ public class KitUpgradeMenuButton extends KitButton private void flash() { - this._task = new BukkitRunnable() + _task = new BukkitRunnable() { private ItemStack itemClone = ITEM_STACK.clone(); @@ -109,11 +114,11 @@ public class KitUpgradeMenuButton extends KitButton @Override public void onClick(Player player) { - this._flash = false; + _flash = false; if (_task != null) { - this._task.cancel(); + _task.cancel(); } KitMenu menu = new KitInformationTrackerMenu(getKit()); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/progression/gui/guis/KitDisplayMenu.java b/Plugins/Mineplex.Core/src/mineplex/core/progression/gui/guis/KitDisplayMenu.java index f46165e34..73f664f86 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/progression/gui/guis/KitDisplayMenu.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/progression/gui/guis/KitDisplayMenu.java @@ -1,11 +1,19 @@ package mineplex.core.progression.gui.guis; import mineplex.core.progression.ProgressiveKit; +import mineplex.core.progression.data.KitAbilityDetail; import mineplex.core.progression.gui.Button; -import mineplex.core.progression.gui.buttons.*; +import mineplex.core.progression.gui.buttons.KitAbilityButton; +import mineplex.core.progression.gui.buttons.KitIconButton; +import mineplex.core.progression.gui.buttons.KitPermanentDefaultButton; +import mineplex.core.progression.gui.buttons.KitSelectButton; +import mineplex.core.progression.gui.buttons.KitUpgradeMenuButton; +import mineplex.core.progression.gui.buttons.KitXPButton; import mineplex.core.progression.gui.buttons.misc.IconButton; import org.bukkit.entity.Player; +import java.util.List; + /** * This is the main menu a player sees when we selects an NPC Kit * Displays the most important information about this kit @@ -39,7 +47,7 @@ public class KitDisplayMenu extends KitMenu setUpIcon(buttons, player); - setUpDetails(buttons); + setUpDetails(buttons, player); setUpNextMenuButtons(buttons, player); @@ -74,8 +82,19 @@ public class KitDisplayMenu extends KitMenu * * @param buttons The array of buttons we're modifying */ - private void setUpDetails(Button[] buttons) + private void setUpDetails(Button[] buttons, Player player) { + if(getKit().showUpgrades()) + { + List details = getKit().getAbilityDetails().get(getKit().getUpgradeLevel(player.getUniqueId())); + int index = 0; + for(int i : UPGRADE_SLOTS) + { + buttons[i] = new KitAbilityButton(details.get(index++)); + } + return; + } + for (int i : UPGRADE_SLOTS) { buttons[i] = new IconButton(COMING_SOON); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/progression/gui/guis/KitInformationTrackerMenu.java b/Plugins/Mineplex.Core/src/mineplex/core/progression/gui/guis/KitInformationTrackerMenu.java index 89b0708cf..0fbb28f5a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/progression/gui/guis/KitInformationTrackerMenu.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/progression/gui/guis/KitInformationTrackerMenu.java @@ -4,7 +4,9 @@ import com.google.common.collect.Lists; import mineplex.core.common.util.C; import mineplex.core.itemstack.ItemBuilder; import mineplex.core.progression.ProgressiveKit; +import mineplex.core.progression.data.KitAbilityDetail; import mineplex.core.progression.gui.Button; +import mineplex.core.progression.gui.buttons.KitUpgradeButton; import mineplex.core.progression.gui.buttons.misc.BackButton; import mineplex.core.progression.gui.buttons.misc.IconButton; import mineplex.core.progression.math.Calculations; @@ -15,6 +17,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import java.util.List; +import java.util.Map; import java.util.UUID; /** @@ -144,6 +147,30 @@ public class KitInformationTrackerMenu extends KitMenu */ private void setUpUpgrade(Button[] buttons, Player player) { + if(getKit().showUpgrades()) + { + int upgradeLevel = getKit().getUpgradeLevel(player.getUniqueId()); + Map> details = getKit().getAbilityDetails(); + List list = details.get(upgradeLevel); + if(list == null) + { + throw new IllegalArgumentException("No upgrades for player upgrade level " + upgradeLevel); + } + int index = 0; + for(int i : UPGRADE_SLOTS) + { + KitAbilityDetail detail = list.get(index++); + ItemBuilder itemStack = new ItemBuilder(detail.getIcon()).setTitle(C.cYellow + detail.getDisplayName()).setLore(getKit().getDescription()); + if(getKit().canPurchaseUpgrade(player.getUniqueId(), upgradeLevel) && !getKit().ownsUpgrade(player.getUniqueId(), upgradeLevel)) + { + itemStack.setGlow(true); + } + KitUpgradeButton button = new KitUpgradeButton(getKit(), itemStack.build(), upgradeLevel, detail.getDisplayName()); + buttons[i] = button; + } + return; + } + for (int i : UPGRADE_SLOTS) { buttons[i] = new IconButton(COMING_SOON);