diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/open/OpenRankSelector.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/open/OpenRankSelector.java new file mode 100644 index 000000000..e43f35c77 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/open/OpenRankSelector.java @@ -0,0 +1,21 @@ +package mineplex.core.cosmetic.ui.button.open; + +import org.bukkit.entity.Player; + +import mineplex.core.cosmetic.ui.page.Menu; +import mineplex.core.cosmetic.ui.page.RankSelectorPage; +import mineplex.core.gadget.types.Gadget; + +public class OpenRankSelector extends OpenPageButton +{ + public OpenRankSelector(Menu menu, Gadget active) + { + super(menu, active); + } + + @Override + protected void leftClick(Player player) + { + getMenu().getShop().openPageForPlayer(player, new RankSelectorPage(getMenu().getPlugin(), getMenu().getShop(), getMenu().getClientManager(), getMenu().getDonationManager(), "Rank Selector Particles", player)); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java index 37d7190f4..a06c32823 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java @@ -30,6 +30,7 @@ import mineplex.core.cosmetic.ui.button.open.OpenMounts; import mineplex.core.cosmetic.ui.button.open.OpenMusic; import mineplex.core.cosmetic.ui.button.open.OpenParticles; import mineplex.core.cosmetic.ui.button.open.OpenPets; +import mineplex.core.cosmetic.ui.button.open.OpenRankSelector; import mineplex.core.cosmetic.ui.button.open.OpenTaunts; import mineplex.core.cosmetic.ui.button.open.OpenWinEffect; import mineplex.core.donation.DonationManager; @@ -46,6 +47,7 @@ public class Menu extends ShopPageBase private static final String VISIBILITY_HUB = "Usable in Lobbies"; private static final String VISIBILITY_EVERYWHERE = "Visible Everywhere"; private static final String VISIBILITY_GAMES = "Visible in Games"; + private static final String VISIBILITY_GAME_HUB = "Visible in Game Lobbies"; public Menu(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, Player player) { @@ -66,10 +68,9 @@ public class Menu extends ShopPageBase shardLore.add(C.cGray + "handy. Maybe I can collect more!"); ShopItem shards = new ShopItem(Material.PRISMARINE_SHARD, C.cAqua + C.Bold + treasureShards + " Treasure Shards", shardLore.toArray(new String[0]), 0, false); - addItem(4, shards); // Cosmetic Items - int[] slots = UtilUI.getIndicesFor(15, 1, 5, 1); + int[] slots = UtilUI.getIndicesFor(15, 0, 5, 1); /*int particleSlot = 9;//slots[0]; int arrowSlot = 11;//slots[1]; int jumpSlot = 13;//slots[2]; @@ -88,11 +89,14 @@ public class Menu extends ShopPageBase deathSlot = slots[3], gadgetSlot = slots[4], morphSlot = slots[5], mountSlot = slots[6], petSlot = slots[7], hatSlot = slots[8], costumeSlot = slots[9], musicSlot = slots[10], tauntSlot = slots[11], - winEffectSlot = slots[12], gameModifierSlot = slots[13], balloonsSlot = slots[14]; + winEffectSlot = slots[12], gameModifierSlot = slots[13], balloonsSlot = slots[14], + rankSelectorSlot = balloonsSlot + 4; - EnumMap ownedCount = new EnumMap(GadgetType.class); - EnumMap maxCount = new EnumMap(GadgetType.class); - EnumMap enabled = new EnumMap(GadgetType.class); + addItem(rankSelectorSlot + 2, shards); + + EnumMap ownedCount = new EnumMap<>(GadgetType.class); + EnumMap maxCount = new EnumMap<>(GadgetType.class); + EnumMap enabled = new EnumMap<>(GadgetType.class); for(GadgetType type : GadgetType.values()) { @@ -218,6 +222,11 @@ public class Menu extends ShopPageBase lore = getLore(ownedCount.get(type), maxCount.get(type), "Balloons are collectibles that you can float above your head as you wander the lobby. You can have up to 10 balloons in your hand at one time.", VISIBILITY_HUB, enabled.get(type)); addButton(balloonsSlot, new ShopItem(Material.LEASH, "Balloons", lore, 1, false), new OpenBalloons(this, enabled.get(type))); if (enabled.containsKey(type)) addGlow(balloonsSlot); + + type = GadgetType.RANK_SELECTOR; + lore = getLore(ownedCount.get(type), maxCount.get(type), "Placeholder", VISIBILITY_GAME_HUB, enabled.get(type)); + addButton(rankSelectorSlot, new ShopItem(Material.LEVER, "Rank Selector Particles", lore, 1, false), new OpenRankSelector(this, enabled.get(type))); + if (enabled.containsKey(type)) addGlow(rankSelectorSlot); } private String[] getLore(int ownedCount, int maxCount, String info, String visibility, Gadget enabled) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/RankSelectorPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/RankSelectorPage.java new file mode 100644 index 000000000..b291aa5a2 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/RankSelectorPage.java @@ -0,0 +1,50 @@ +package mineplex.core.cosmetic.ui.page; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; + +import mineplex.core.account.CoreClientManager; +import mineplex.core.common.util.C; +import mineplex.core.cosmetic.CosmeticManager; +import mineplex.core.cosmetic.ui.CosmeticShop; +import mineplex.core.donation.DonationManager; +import mineplex.core.gadget.types.Gadget; +import mineplex.core.gadget.types.GadgetType; +import mineplex.core.shop.item.IButton; +import mineplex.core.shop.item.ShopItem; + +public class RankSelectorPage extends GadgetPage +{ + public RankSelectorPage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player) + { + super(plugin, shop, clientManager, donationManager, name, player); + } + + @Override + protected void buildPage() + { + int slot = 10; + + for (Gadget gadget : getPlugin().getGadgetManager().getGadgets(GadgetType.RANK_SELECTOR)) + { + addGadget(gadget, slot); + + if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.RANK_SELECTOR) == gadget) + addGlow(slot); + + slot++; + + if (slot == 17 || slot == 26 || slot == 35) + slot += 2; + } + + addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton() + { + public void onClick(Player player, ClickType clickType) + { + getShop().openPageForPlayer(getPlayer(), new Menu(getPlugin(), getShop(), getClientManager(), getDonationManager(), player)); + } + }); + } +} \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetType.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetType.java index 6f06cb54c..c5ab0e306 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetType.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetType.java @@ -17,7 +17,8 @@ public enum GadgetType TAUNT("Taunts", "activeTaunt"), WIN_EFFECT("Win Effects", "activeWinEffect"), GAME_MODIFIER("Game Modifiers", ""), - BALLOON("Balloons", ""); + BALLOON("Balloons", ""), + RANK_SELECTOR("Rank Selectors", "activeRankSelector"); private String _name; private String _databaseKey;