package be.isach.ultracosmetics.menu.menus; import be.isach.ultracosmetics.UltraCosmetics; import be.isach.ultracosmetics.config.MessageManager; import be.isach.ultracosmetics.config.SettingsManager; import be.isach.ultracosmetics.cosmetics.Category; import be.isach.ultracosmetics.cosmetics.Cosmetic; import be.isach.ultracosmetics.cosmetics.type.MorphType; import be.isach.ultracosmetics.menu.ClickRunnable; import be.isach.ultracosmetics.menu.CosmeticMenu; import be.isach.ultracosmetics.player.UltraPlayer; import be.isach.ultracosmetics.util.ItemFactory; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.material.MaterialData; import java.util.ArrayList; import java.util.List; /** * Morph {@link be.isach.ultracosmetics.menu.Menu Menu}. * * @author iSach * @since 08-23-2016 */ public class MenuMorphs extends CosmeticMenu<MorphType> { public MenuMorphs(UltraCosmetics ultraCosmetics) { super(ultraCosmetics, Category.MORPHS); } @Override protected void putItems(Inventory inventory, UltraPlayer player, int page) { putSelfViewItem(inventory, player); } private void putSelfViewItem(Inventory inventory, UltraPlayer player) { int slot = inventory.getSize() - (getCategory().hasGoBackArrow() ? 5 : 6); MaterialData materialData; boolean toggle; if (player.canSeeSelfMorph()) { materialData = ItemFactory.createFromConfig("Categories.Self-View-Item.When-Enabled"); toggle = false; } else { materialData = ItemFactory.createFromConfig("Categories.Self-View-Item.When-Disabled"); toggle = true; } String msg = MessageManager.getMessage((toggle ? "Enable" : "Disable") + "-Third-Person-View"); ClickRunnable run = data -> { player.setSeeSelfMorph(!player.canSeeSelfMorph()); putSelfViewItem(inventory, player); }; putItem(inventory, slot, ItemFactory.create(materialData.getItemType(), materialData.getData(), msg), run); } @Override protected ItemStack filterItem(ItemStack itemStack, MorphType cosmeticType, UltraPlayer player) { ItemMeta itemMeta = itemStack.getItemMeta(); String loreMsg = null; if (SettingsManager.getConfig().getBoolean("No-Permission.Show-In-Lore")) { loreMsg = ChatColor.translateAlternateColorCodes('&', String.valueOf(SettingsManager.getConfig() .get("No-Permission.Lore-Message-" + ((player.hasPermission(cosmeticType.getPermission()) ? "Yes" : "No"))))); } List<String> lore = new ArrayList<>(); if (cosmeticType.showsDescription()) { lore.add(""); for (String s : cosmeticType.getDescription()) { lore.add(s); } } if (lore != null) { lore.add(""); lore.add(loreMsg); } lore.add(""); lore.add(cosmeticType.getSkill()); lore.add(""); itemMeta.setLore(lore); itemStack.setItemMeta(itemMeta); return itemStack; } @Override public List<MorphType> enabled() { return MorphType.enabled(); } @Override protected void toggleOn(UltraPlayer ultraPlayer, MorphType morphType, UltraCosmetics ultraCosmetics) { morphType.equip(ultraPlayer, ultraCosmetics); } @Override protected void toggleOff(UltraPlayer ultraPlayer) { ultraPlayer.removeMorph(); } @Override protected Cosmetic getCosmetic(UltraPlayer ultraPlayer) { return ultraPlayer.getCurrentMorph(); } }