126 lines
4.6 KiB
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());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |