EpicHeads/main/java/com/songoda/epicheads/oldmenu/mode/BaseMode.java

99 lines
2.9 KiB
Java

package com.songoda.epicheads.oldmenu.mode;
import com.songoda.epicheads.cache.CacheHead;
import com.songoda.epicheads.oldmenu.CategorySelectMenu;
import com.songoda.epicheads.oldmenu.ConfirmMenu;
import com.songoda.epicheads.oldmenu.HeadMenu;
import com.songoda.epicheads.oldmenu.InventoryType;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
public abstract class BaseMode extends InvMode {
public BaseMode(Player player) {
super(player, InventoryType.CATEGORY);
}
public BaseMode(Player player, InventoryType type, Object... args) {
super(player, type, args);
}
@Override
public void onClick(InventoryClickEvent e, InventoryType type) {
e.setCancelled(true);
if (e.getClickedInventory() != null && e.getClickedInventory().equals(getInventory().getInventory())) {
switch (type) {
case CATEGORY:
onCategoryClick(e);
break;
case HEADS:
onHeadsClick(e);
break;
case CONFIRM:
onConfirmClick(e);
break;
default:
break;
}
}
}
public void onCategoryClick(InventoryClickEvent e) {
if(e.getCurrentItem() == null)
return;
CategorySelectMenu menu = getInventory(CategorySelectMenu.class);
String category = menu.getCategory(e.getRawSlot());
if(category != null) {
this.onCategorySelect(category);
}
}
public void onCategorySelect(String category) {
if (!canOpenCategory(category)) {
return;
}
CategorySelectMenu menu = getInventory(CategorySelectMenu.class);
openInventory(InventoryType.HEADS, category, menu.getHeads(category));
}
public abstract boolean canOpenCategory(String category);
public void onHeadsClick(InventoryClickEvent e) {
HeadMenu menu = getInventory(HeadMenu.class);
int slot = e.getRawSlot();
if (!menu.handleToolbar(slot)) {
CacheHead head = menu.getHead(slot);
if (head != null) {
onHeadSelect(e, menu, head);
}
}
}
public abstract void onHeadSelect(InventoryClickEvent e, HeadMenu menu, CacheHead head);
public void onConfirmClick(InventoryClickEvent e) {
ConfirmMenu menu = getInventory(ConfirmMenu.class);
if (menu.isConfirm(e.getRawSlot())) {
onConfirm(e, menu, menu.getSubject());
closeInventory();
}
if (menu.isDeny(e.getRawSlot())) {
closeInventory();
}
}
public abstract void onConfirm(InventoryClickEvent e, ConfirmMenu menu, CacheHead head);
}