Lobby/src/main/java/eu/univento/lobby/listeners/PetInteract.java

126 lines
4.6 KiB
Java

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());
}
}
}
}
}