package eu.univento.lobby.listeners; import eu.univento.core.api.gui.AnvilGUI; import eu.univento.core.api.languages.Messages; import eu.univento.core.api.player.CustomPlayer; import eu.univento.lobby.utils.PetManager; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Ageable; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; /** * @author joethei * @version 0.1 */ public class PetInteract implements Listener { @EventHandler public void onEntityInteract(PlayerInteractEntityEvent e) { e.setCancelled(true); CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer()); Entity entity = e.getRightClicked(); if (PetManager.getPet(p) == entity) { p.openInventory(getInventory(p)); } } Inventory getInventory(CustomPlayer p) { Messages msgs = new Messages(p); Inventory inv = Bukkit.createInventory(p, 9, msgs.LobbyItems_YOUR_PET()); ItemStack name = new ItemStack(Material.NAME_TAG); ItemMeta nameMeta = name.getItemMeta(); nameMeta.setDisplayName(msgs.LobbyItems_PETS_NAME()); name.setItemMeta(nameMeta); ItemStack baby = new ItemStack(Material.SUGAR); ItemMeta babyMeta = baby.getItemMeta(); babyMeta.setDisplayName(msgs.LobbyItems_PETS_AGE()); baby.setItemMeta(babyMeta); ItemStack mount = new ItemStack(Material.SADDLE); ItemMeta mountMeta = mount.getItemMeta(); mountMeta.setDisplayName(msgs.LobbyItems_PETS_RIDE()); mount.setItemMeta(mountMeta); ItemStack delete = new ItemStack(Material.BARRIER); ItemMeta deleteMeta = delete.getItemMeta(); deleteMeta.setDisplayName(msgs.LobbyItems_PETS_REMOVE()); delete.setItemMeta(deleteMeta); inv.setItem(0, name); inv.setItem(1, baby); inv.setItem(2, mount); inv.setItem(8, delete); return inv; } @EventHandler public void onInventoryClick(InventoryClickEvent e) { if (e.getWhoClicked() instanceof Player) { CustomPlayer p = CustomPlayer.getPlayer(e.getWhoClicked().getName()); Messages msgs = new Messages(p); if (e.getInventory().getName().equals(getInventory(p).getName())) { if (e.getCurrentItem().getType() == Material.NAME_TAG) { assert p != null; p.closeInventory(); AnvilGUI gui = new AnvilGUI(p, event -> { if(event.getSlot() == AnvilGUI.AnvilSlot.OUTPUT) { event.setWillClose(true); event.setWillDestroy(true); PetManager.setName(p, p.getColor() + event.getName()); p.refreshExperience(); }else{ event.setWillDestroy(true); event.setWillClose(true); } }); ItemStack name = new ItemStack(Material.NAME_TAG); ItemMeta nameMeta = name.getItemMeta(); nameMeta.setDisplayName(PetManager.getName(p)); name.setItemMeta(nameMeta); gui.setSlot(AnvilGUI.AnvilSlot.INPUT_LEFT, name); gui.open(); } if(e.getCurrentItem().getType() == Material.SUGAR) { p.closeInventory(); Entity pet = PetManager.getPet(p); Ageable age = (Ageable) pet; if(age.isAdult()) { age.setBaby(); }else { age.setAdult(); } } if(e.getCurrentItem().getType() == Material.SADDLE) { p.closeInventory(); Entity pet = PetManager.getPet(p); if(pet.getPassenger() != null) { pet.setPassenger(null); }else { pet.setPassenger(p); } } if (e.getCurrentItem().getType() == Material.BARRIER) { p.closeInventory(); PetManager.removePet(p); p.sendMessage(msgs.PREFIX() + msgs.Lobby_PET_REMOVE()); } } } } }