package eu.univento.lobby.utils; import eu.univento.commons.player.language.Language; import eu.univento.commons.player.rank.Rank; import eu.univento.core.api.items.ItemBuilder; import eu.univento.core.api.player.CustomPlayer; import eu.univento.commons.server.ServerInfo; import eu.univento.lobby.Lobby; import org.bukkit.Bukkit; import org.bukkit.DyeColor; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.SkullMeta; import org.bukkit.material.Dye; import java.util.ArrayList; import java.util.List; /** * opens inventorys for players * * @author joethei * @version 1.0 */ public class InventoryManager { private CustomPlayer player; private Language language; private ItemStack empty = new ItemStack(Material.AIR); public InventoryManager(CustomPlayer player) { this.player = player; this.language = player.getDatabasePlayer().getLanguage(); } public void setMainInventory(boolean forcetime) { Inventory inv = player.getInventory(); ItemStack nav = new ItemStack(Material.WORKBENCH); ItemMeta navMeta = nav.getItemMeta(); navMeta.setDisplayName(player.getDatabasePlayer().getLanguage().getWord("Lobby.Item.Navigator")); nav.setItemMeta(navMeta); ItemStack lobby = new ItemStack(Material.BLAZE_POWDER); ItemMeta lobbyMeta = lobby.getItemMeta(); lobbyMeta.setDisplayName(player.getDatabasePlayer().getLanguage().getWord("Lobby.Item.LobbySwitcher")); lobby.setItemMeta(lobbyMeta); ItemStack adventure = new ItemStack(Material.GLOWSTONE_DUST); ItemMeta adventureMeta = adventure.getItemMeta(); adventureMeta.setDisplayName(player.getDatabasePlayer().getLanguage().getWord("Lobby.Item.Adventure")); adventure.setItemMeta(adventureMeta); ItemStack fun = new ItemStack(Material.CHEST); ItemMeta funMeta = fun.getItemMeta(); funMeta.setDisplayName(player.getDatabasePlayer().getLanguage().getWord("Lobby.Item.FunChest")); fun.setItemMeta(funMeta); ItemStack youtube = new ItemStack(Material.EXP_BOTTLE); ItemMeta youtubeMeta = youtube.getItemMeta(); youtubeMeta.setDisplayName(player.getDatabasePlayer().getLanguage().getWord("Lobby.Item.Youtuber")); youtube.setItemMeta(youtubeMeta); ItemStack skull = new ItemStack(Material.SKULL_ITEM, 1, (short) 3); SkullMeta meta = (SkullMeta) skull.getItemMeta(); meta.setOwner(player.getName()); meta.setDisplayName(player.getDatabasePlayer().getLanguage().getWord("Lobby.Item.Profile")); skull.setItemMeta(meta); inv.setItem(2, empty); inv.setItem(3, empty); inv.setItem(4, empty); inv.setItem(6, empty); timeItem(inv, 0, nav, Sound.ENTITY_CHICKEN_EGG, 20L, false, forcetime); timeItem(inv, 8, skull, Sound.ENTITY_CHICKEN_EGG, 40L, false, forcetime); timeItem(inv, 1, lobby, Sound.ENTITY_CHICKEN_EGG, 60L, false, forcetime); timeItem(inv, 7, fun, Sound.ENTITY_CHICKEN_EGG, 80L, false, forcetime); if (player.getDatabasePlayer().isAllowed(Rank.VIP)) { timeItem(inv, 5, youtube, Sound.ENTITY_CHICKEN_EGG, 120L, false, forcetime); timeItem(inv, 3, adventure, Sound.ENTITY_CHICKEN_DEATH, 140L, false, forcetime); } else { timeItem(inv, 5, adventure, Sound.ENTITY_CHICKEN_EGG, 120L, false, forcetime); } } /** * gets inventory for navigation * * @return Inventory */ public Inventory getNavigatorInventory() { Inventory inv = Bukkit.createInventory(player, 45, "Navigator"); inv.setItem(31, new ItemBuilder(Material.FIREWORK_CHARGE).name(language.getWord("Lobby.Menu.Nav.Spawn")).make()); if(player.getDatabasePlayer().isAllowed(Rank.Supporter)) { ServerInfo.getServerInfo("build").whenComplete((serverInfo, throwable) -> inv.setItem(26, new ItemBuilder(Material.FLOWER_POT_ITEM).name(language.getWord("Lobby.Menu.Nav.Build")).lore(serverInfo.getPlayers() + "Spieler online").make())); } return inv; } public Inventory getLobbySwitcherInventory() { Inventory inv = Bukkit.createInventory(player, 18, "Lobbys"); return inv; } public void setYoutuberInventory() { Inventory inv = player.getInventory(); String nickState; if(player.getDatabasePlayer().getSettings().isNicked()) nickState = "on"; else nickState = "off"; ItemStack nick = new ItemStack(Material.NAME_TAG); ItemMeta nickMeta = nick.getItemMeta(); nickMeta.setDisplayName(player.getDatabasePlayer().getLanguage().getWord("Lobby.Item.YT.Nick." + nickState)); nick.setItemMeta(nickMeta); ItemStack silent = new ItemStack(Material.TNT); ItemMeta silentMeta = silent.getItemMeta(); silentMeta.setDisplayName(player.getDatabasePlayer().getLanguage().getWord("Lobby.Item.YT.SilentLobby")); silent.setItemMeta(silentMeta); ItemStack force = new ItemStack(Material.EYE_OF_ENDER); ItemMeta forceMeta = force.getItemMeta(); forceMeta.setDisplayName(player.getDatabasePlayer().getLanguage().getWord("Lobby.Item.YT.Forcefield")); force.setItemMeta(forceMeta); ItemStack extras = new ItemStack(Material.MILK_BUCKET); ItemMeta extrasMeta = extras.getItemMeta(); extrasMeta.setDisplayName(player.getDatabasePlayer().getLanguage().getWord("Lobby.Item.YT.Extras")); extras.setItemMeta(extrasMeta); Dye dye = new Dye(); dye.setColor(DyeColor.RED); ItemStack back = dye.toItemStack(); ItemMeta backMeta = back.getItemMeta(); backMeta.setDisplayName(player.getDatabasePlayer().getLanguage().getWord("Lobby.Item.YT.Back")); back.setItemMeta(backMeta); inv.setItem(0, force); inv.setItem(1, empty); inv.setItem(2, nick); inv.setItem(3, empty); inv.setItem(4, silent); inv.setItem(5, empty); inv.setItem(6, extras); inv.setItem(7, empty); inv.setItem(8, back); } /** * gets inventory for funchest * * @return Inventory */ public Inventory getFunChestInventory() { Inventory inv = Bukkit.createInventory(player, 45, "FunChest"); ItemStack music = new ItemStack(Material.RECORD_3); ItemMeta musicMeta = music.getItemMeta(); musicMeta.setLore(null); //musicMeta.setDisplayName(player.getMessages().LobbyItems_MUSIC()); music.setItemMeta(musicMeta); ItemStack gadgets = new ItemStack(Material.ARMOR_STAND); ItemMeta gadgetsMeta = gadgets.getItemMeta(); //gadgetsMeta.setDisplayName(player.getMessages().LobbyItems_GADGETS()); gadgets.setItemMeta(gadgetsMeta); ItemStack particle = new ItemStack(Material.NOTE_BLOCK); ItemMeta particleMeta = particle.getItemMeta(); //particleMeta.setDisplayName(player.getMessages().LobbyItems_PARTICLE()); particle.setItemMeta(particleMeta); ItemStack pets = new ItemStack(Material.MONSTER_EGG); ItemMeta petsMeta = pets.getItemMeta(); //petsMeta.setDisplayName(player.getMessages().LobbyItems_PETS()); pets.setItemMeta(petsMeta); inv.setItem(11, music); inv.setItem(15, gadgets); inv.setItem(29, particle); inv.setItem(33, pets); return inv; } /** * gets inventory for music * * @return Inventory */ public Inventory getMusicInventory() { Inventory inv = Bukkit.createInventory(player, 45, "Music"); ItemStack music_3 = new ItemStack(Material.RECORD_3); ItemMeta music_3Meta = music_3.getItemMeta(); List music_3Lore = new ArrayList<>(); music_3Lore.add("§6Jetzt abspielen"); music_3Meta.setDisplayName("§5Milky Way Stars | Janji feat. TR"); music_3Meta.setLore(music_3Lore); music_3.setItemMeta(music_3Meta); //if (FoundItems.hasFound("music_3")) inv.setItem(2, music_3); return inv; } /** * gets inventory for gadgets * * @return Inventory */ public Inventory getGadgetsInventory() { Inventory inv = Bukkit.createInventory(player, 45, "Gadgets"); ItemStack sugar = new ItemStack(Material.SUGAR); ItemMeta sugarMeta = sugar.getItemMeta(); sugarMeta.setDisplayName("§6Einen Teelöffel Zucker"); sugar.setItemMeta(sugarMeta); ItemStack feather = new ItemStack(Material.FEATHER); ItemMeta featherMeta = feather.getItemMeta(); featherMeta.setDisplayName("§6Federleicht"); feather.setItemMeta(featherMeta); //if (FoundItems.hasFound("sugar")) inv.setItem(0, sugar); //if (FoundItems.hasFound("feather")) inv.setItem(1, feather); return inv; } /** * gets inventory for particle effects * * @return Inventory */ public Inventory getParticleInventory() { Inventory inv = Bukkit.createInventory(player, 45, "Particle"); ItemStack hearts = new ItemStack(Material.RED_ROSE); ItemMeta heartsMeta = hearts.getItemMeta(); heartsMeta.setDisplayName("§6Herzen"); hearts.setItemMeta(heartsMeta); ItemStack lava = new ItemStack(Material.LAVA_BUCKET); ItemMeta lavaMeta = lava.getItemMeta(); lavaMeta.setDisplayName("§6Lava"); lava.setItemMeta(lavaMeta); //if (FoundItems.hasFound("hearts")) inv.setItem(0, hearts); //if(FoundItems.hasFound("lava", player)) inv.setItem(1, lava); return inv; } public Inventory getPetsInventory() { Inventory inv = Bukkit.createInventory(player, 45, "Pets"); ItemStack pig = new ItemStack(Material.MONSTER_EGG, 1, (short) 90); ItemMeta pigMeta = pig.getItemMeta(); //pigMeta.setDisplayName(player.getMessages().LobbyItems_PETS_PIG()); pig.setItemMeta(pigMeta); ItemStack cow = new ItemStack(Material.MONSTER_EGG, 1, (short) 92); ItemMeta cowMeta = cow.getItemMeta(); //cowMeta.setDisplayName(player.getMessages().LobbyItems_PETS_COW()); cow.setItemMeta(cowMeta); ItemStack chicken = new ItemStack(Material.MONSTER_EGG, 1, (short) 93); ItemMeta chickenMeta = chicken.getItemMeta(); //chickenMeta.setDisplayName(player.getMessages().LobbyItems_PETS_CHICKEN()); chicken.setItemMeta(chickenMeta); ItemStack rabbit = new ItemStack(Material.MONSTER_EGG, 1, (short) 101); ItemMeta rabbitMeta = rabbit.getItemMeta(); //rabbitMeta.setDisplayName(player.getMessages().LobbyItems_PETS_RABBIT()); rabbit.setItemMeta(rabbitMeta); ItemStack mushroom = new ItemStack(Material.MONSTER_EGG, 1, (short) 96); ItemMeta mushroomMeta = mushroom.getItemMeta(); //mushroomMeta.setDisplayName(player.getMessages().LobbyItems_PETS_MUSHROM_COW()); mushroom.setItemMeta(mushroomMeta); ItemStack horse = new ItemStack(Material.MONSTER_EGG, 1, (short) 101); ItemMeta horseMeta = horse.getItemMeta(); horseMeta.setDisplayName("Horse"); horse.setItemMeta(horseMeta); ItemStack polar = new ItemStack(Material.MONSTER_EGG, 1, (short) 101); ItemMeta polarMeta = polar.getItemMeta(); polarMeta.setDisplayName("PolarBear"); polar.setItemMeta(polarMeta); ItemStack delete = new ItemStack(Material.BARRIER); ItemMeta deleteMeta = delete.getItemMeta(); //deleteMeta.setDisplayName(player.getMessages().LobbyItems_PETS_REMOVE()); delete.setItemMeta(deleteMeta); inv.setItem(0, pig); inv.setItem(1, cow); inv.setItem(2, chicken); inv.setItem(3, rabbit); inv.setItem(4, mushroom); inv.setItem(5, horse); inv.setItem(6, polar); inv.setItem(44, delete); return inv; } /** * gets inventory for profile * * @return Inventory */ public Inventory getProfileInventory() { Inventory inv = Bukkit.createInventory(player, 9, "Profil"); ItemStack stats = new ItemStack(Material.COMPASS); ItemMeta statsMeta = stats.getItemMeta(); //statsMeta.setDisplayName(player.getMessages().LobbyItems_STATS()); stats.setItemMeta(statsMeta); ItemStack quests = new ItemStack(Material.PRISMARINE_SHARD); ItemStack secrets = new ItemStack(Material.CHEST); ItemStack friends = new ItemStack(Material.PUMPKIN); ItemMeta friendsMeta = friends.getItemMeta(); //friendsMeta.setDisplayName(player.getMessages().LobbyItems_FRIENDS()); friends.setItemMeta(friendsMeta); ItemStack settings = new ItemStack(Material.NAME_TAG); ItemMeta settingsMeta = settings.getItemMeta(); //settingsMeta.setDisplayName(player.getMessages().LobbyItems_SETTINGS()); settings.setItemMeta(settingsMeta); inv.setItem(0, stats); inv.setItem(1, friends); inv.setItem(2, quests); inv.setItem(3, secrets); inv.setItem(8, settings); return inv; } /** * gets inventory for settings * * @return Inventory */ public Inventory getSettingsInventory() { Inventory inv = Bukkit.createInventory(player, 18, "Settings"); ArrayList on = new ArrayList<>(); //on.add(player.getMessages().LobbyItems_SETTINGS_ON()); ArrayList off = new ArrayList<>(); //off.add(player.getMessages().LobbyItems_SETTINGS_OFF()); ItemStack fastMenu = new ItemStack(Material.ANVIL); ItemMeta fastMenuMeta = fastMenu.getItemMeta(); //fastMenuMeta.setDisplayName(player.getMessages().LobbyItems_SETTINGS_FASTMENU()); if (player.getDatabasePlayer().getSettings().hasInventoryAnimationEnabled()) fastMenuMeta.addEnchant(Enchantment.ARROW_DAMAGE, 10, false); if (player.getDatabasePlayer().getSettings().hasInventoryAnimationEnabled()) fastMenuMeta.setLore(on); else fastMenuMeta.setLore(off); fastMenu.setItemMeta(fastMenuMeta); ItemStack teleport = new ItemStack(Material.ENDER_PEARL); ItemMeta teleportMeta = teleport.getItemMeta(); //teleportMeta.setDisplayName(player.getMessages().LobbyItems_SETTINGS_SERVER_TELEPORT()); if (player.getDatabasePlayer().getSettings().hasTeleportAnimationEnabled()) teleportMeta.addEnchant(Enchantment.ARROW_DAMAGE, 10, false); if (player.getDatabasePlayer().getSettings().hasTeleportAnimationEnabled()) teleportMeta.setLore(on); else fastMenuMeta.setLore(off); teleport.setItemMeta(teleportMeta); ItemStack requestsParty = new ItemStack(Material.FIREWORK); ItemMeta requestsPartyMeta = requestsParty.getItemMeta(); //requestsPartyMeta.setDisplayName(player.getMessages().LobbyItems_SETTINGS_PARTY_REQUESTS()); if (player.getDatabasePlayer().getSettings().hasPartyRequestsEnabled()) requestsPartyMeta.addEnchant(Enchantment.ARROW_DAMAGE, 10, false); if (player.getDatabasePlayer().getSettings().hasPartyRequestsEnabled()) requestsPartyMeta.setLore(on); else requestsPartyMeta.setLore(off); requestsParty.setItemMeta(requestsPartyMeta); ItemStack requestsFriends = new ItemStack(Material.PUMPKIN); ItemMeta requestsFriendsMeta = requestsFriends.getItemMeta(); //requestsFriendsMeta.setDisplayName(player.getMessages().LobbyItems_SETTINGS_FRIEND_REQUESTS()); if (player.getDatabasePlayer().getSettings().hasFriendRequestsEnabled()) requestsFriendsMeta.addEnchant(Enchantment.ARROW_DAMAGE, 10, false); if (player.getDatabasePlayer().getSettings().hasFriendRequestsEnabled()) requestsFriendsMeta.setLore(on); else requestsFriendsMeta.setLore(off); requestsFriends.setItemMeta(requestsFriendsMeta); ItemStack friendJump = new ItemStack(Material.ELYTRA); ItemMeta friendJumpMeta = friendJump.getItemMeta(); friendJumpMeta.setDisplayName("Freunde springen nicht gerne"); if (player.getDatabasePlayer().getSettings().hasFriendJumpEnabled()) friendJumpMeta.addEnchant(Enchantment.ARROW_DAMAGE, 10, false); if (player.getDatabasePlayer().getSettings().hasFriendJumpEnabled()) friendJumpMeta.setLore(on); else friendJumpMeta.setLore(off); friendJump.setItemMeta(friendJumpMeta); ItemStack chat = new ItemStack(Material.SIGN); ItemMeta chatMeta = chat.getItemMeta(); //chatMeta.setDisplayName(player.getMessages().LobbyItems_SETTINGS_CHATSOUNDS()); if (player.getDatabasePlayer().getSettings().hasChatSoundsEnabled()) chatMeta.addEnchant(Enchantment.ARROW_DAMAGE, 10, false); if (player.getDatabasePlayer().getSettings().hasChatSoundsEnabled()) chatMeta.setLore(on); else chatMeta.setLore(off); chat.setItemMeta(chatMeta); ItemStack effects = new ItemStack(Material.BLAZE_POWDER); ItemMeta effectsMeta = effects.getItemMeta(); //effectsMeta.setDisplayName(player.getMessages().LobbyItems_SETTINGS_EFFECTS()); if (player.getDatabasePlayer().getSettings().hasEffectsEnabled()) effectsMeta.addEnchant(Enchantment.ARROW_DAMAGE, 10, false); if (player.getDatabasePlayer().getSettings().hasEffectsEnabled()) effectsMeta.setLore(on); else effectsMeta.setLore(off); effects.setItemMeta(effectsMeta); ItemStack storyMode = new ItemStack(Material.BOOK_AND_QUILL); ItemMeta storyModeMeta = storyMode.getItemMeta(); storyModeMeta.setDisplayName("Geschichtsmodus ist auch noch da"); if (player.getDatabasePlayer().getSettings().hasStoryModeEnabled()) storyModeMeta.addEnchant(Enchantment.ARROW_DAMAGE, 10, false); if (player.getDatabasePlayer().getSettings().hasStoryModeEnabled()) storyModeMeta.setLore(on); else storyModeMeta.setLore(off); storyMode.setItemMeta(storyModeMeta); ItemStack languages = new ItemStack(Material.BOOK); ItemMeta languagesMeta = languages.getItemMeta(); //languagesMeta.setDisplayName(player.getMessages().LobbyItems_SETTINGS_LANGUAGES()); languages.setItemMeta(languagesMeta); inv.setItem(0, fastMenu); inv.setItem(1, teleport); inv.setItem(2, requestsParty); inv.setItem(3, requestsFriends); inv.setItem(4, friendJump); inv.setItem(5, chat); inv.setItem(6, effects); inv.setItem(7, storyMode); inv.setItem(17, languages); return inv; } public Inventory getLanguagesInventory() { Inventory inv = Bukkit.createInventory(player, 9, "Languages"); ItemStack de = new ItemStack(Material.PAPER); ItemMeta deMeta = de.getItemMeta(); deMeta.setDisplayName("§eDeutsch"); if (player.getDatabasePlayer().getSettings().getLanguage().equals("DE")) deMeta.addEnchant(Enchantment.ARROW_DAMAGE, 10, false); de.setItemMeta(deMeta); ItemStack en = new ItemStack(Material.PAPER); ItemMeta enMeta = en.getItemMeta(); enMeta.setDisplayName("§eEnglish"); if (player.getDatabasePlayer().getSettings().getLanguage().equals("EN")) enMeta.addEnchant(Enchantment.ARROW_DAMAGE, 10, false); en.setItemMeta(enMeta); ItemStack it = new ItemStack(Material.PAPER); ItemMeta itMeta = it.getItemMeta(); itMeta.setDisplayName("§eitaliano"); if (player.getDatabasePlayer().getSettings().getLanguage().equals("IT")) itMeta.addEnchant(Enchantment.ARROW_DAMAGE, 10, false); it.setItemMeta(itMeta); inv.setItem(0, de); inv.setItem(1, en); inv.setItem(2, it); return inv; } /** * gets friends inventory * * @return Inventory */ public Inventory getFriendsInventory() { Inventory inv = Bukkit.createInventory(player, 45, "Friens"); /** ArrayList list = player.getFriends(); for(int i = 0; i >= list.size(); i++) { OfflinePlayer p = Bukkit.getOfflinePlayer(list.get(i)); ItemStack skull = new ItemStack(Material.SKULL_ITEM, 1, (short) 3); SkullMeta meta = (SkullMeta) skull.getItemMeta(); meta.setOwner(p.getName()); meta.setDisplayName(p.getName()); skull.setItemMeta(meta); inv.addItem(skull); } */ return inv; } public Inventory getStatsInventory() { Inventory inv = Bukkit.createInventory(player, 45, "stats"); return inv; } /** * time item appearance of item * * @param inv inventory * @param slot Inventory slot * @param item ItemStack * @param sound Sound * @param time long * @param menu is menu ? * @param forcedtime if true settings will be ignored */ private void timeItem(Inventory inv, int slot, ItemStack item, Sound sound, long time, boolean menu, boolean forcedtime) { if (!player.getDatabasePlayer().getSettings().hasInventoryAnimationEnabled() || forcedtime) { addItem(inv, slot, item, null, menu); } else { Bukkit.getScheduler().scheduleAsyncDelayedTask(Lobby.getInstance(), () -> addItem(inv, slot, item, sound, menu), time); } } /** * add item to inventory * * @param inv inventory * @param slot Inventory slot * @param item ItemStack * @param sound Sound * @param menu is menu ? */ public void addItem(Inventory inv, int slot, ItemStack item, Sound sound, boolean menu) { if (menu) { String name = inv.getTitle(); if (player.getOpenInventory().getTitle().equals(name)) { inv.setItem(slot, item); player.playSound(player.getEyeLocation(), sound, 1.0F, 1.0F); } } else { inv.setItem(slot, item); player.playSound(player.getEyeLocation(), sound, 1.0F, 1.0F); } } }