PlayerKitsF/src/main/java/pk/ajneb97/managers/edit/InventoryEditDisplayManager.java
2025-11-03 16:57:39 -03:00

197 lines
8.7 KiB
Java

package pk.ajneb97.managers.edit;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import pk.ajneb97.PlayerKits2;
import pk.ajneb97.managers.MessagesManager;
import pk.ajneb97.model.Kit;
import pk.ajneb97.model.KitAction;
import pk.ajneb97.model.inventory.InventoryPlayer;
import pk.ajneb97.model.item.KitItem;
import pk.ajneb97.utils.InventoryItem;
import pk.ajneb97.utils.InventoryUtils;
import pk.ajneb97.utils.OtherUtils;
import java.util.ArrayList;
import java.util.List;
public class InventoryEditDisplayManager {
private PlayerKits2 plugin;
private InventoryEditManager inventoryEditManager;
public InventoryEditDisplayManager(PlayerKits2 plugin, InventoryEditManager inventoryEditManager){
this.plugin = plugin;
this.inventoryEditManager = inventoryEditManager;
}
public void openInventory(InventoryPlayer inventoryPlayer, String type) {
inventoryPlayer.setInventoryName("edit_display_" + type);
Inventory inv = Bukkit.createInventory(null, 27, MessagesManager.getLegacyColoredMessage("&9Editing Kit"));
//Decoration
ArrayList<Integer> slots = new ArrayList<>();
OtherUtils.addRangeToList(0,11,slots);
OtherUtils.addRangeToList(15,26,slots);
for(int i : slots){
if(OtherUtils.isLegacy()){
new InventoryItem(inv, i, Material.valueOf("STAINED_GLASS_PANE")).dataValue((short) 15).name("").ready();
}else{
new InventoryItem(inv, i, Material.BLACK_STAINED_GLASS_PANE).name("").ready();
}
}
//Set Go Back
new InventoryItem(inv, 18, Material.ARROW).name("&eGo Back").ready();
//Info Heads
Material headMaterial = null;
if(OtherUtils.isLegacy()){
headMaterial = Material.valueOf("SKULL_ITEM");
}else{
headMaterial = Material.PLAYER_HEAD;
}
List<String> lore = new ArrayList<>();
lore.add("&7On this empty space you can place an");
lore.add("&7already created custom item, or you can");
lore.add("&7do so directly from the config of this kit.");
new InventoryItem(inv, 12, headMaterial)
.setSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTliZjMyOTJlMTI2YTEwNWI1NGViYTcxM2FhMWIxNTJkNTQxYTFkODkzODgyOWM1NjM2NGQxNzhlZDIyYmYifX19")
.name("&6Place item here >>").lore(lore).ready();
new InventoryItem(inv, 14, headMaterial)
.setSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYmQ2OWUwNmU1ZGFkZmQ4NGU1ZjNkMWMyMTA2M2YyNTUzYjJmYTk0NWVlMWQ0ZDcxNTJmZGM1NDI1YmMxMmE5In19fQ==")
.name("&6<< Place item here").lore(lore).ready();
Kit kit = plugin.getKitsManager().getKitByName(inventoryPlayer.getKitName());
KitItem kitItem = getKitDisplayItemFromType(kit,type);
//Set Info Item
lore = new ArrayList<>();
lore.add("&7You are currently editing the");
if(type.equals("permission")){
lore.add("&6&lNo Permissions Display Item");
}else if(type.equals("onetime")){
lore.add("&6&lOne Time Display Item");
}else if(type.equals("cooldown")){
lore.add("&eSet &6&lCooldown Display Item");
}else if(type.equals("requirements")){
lore.add("&6&lOne Time Requirements Display Item");
}else if(type.startsWith("action")){
String actionType = type.split("_")[1];
int actionSlot = Integer.parseInt(type.split("_")[2]);
lore.add("&6&l"+actionType.toUpperCase()+" Action "+actionSlot+" Display Item");
}
else{
lore.add("&6&lDefault Display Item");
}
new InventoryItem(inv, 0, Material.COMPASS).name("&6&lInfo").lore(lore).ready();
//Save Item
lore = new ArrayList<>();
lore.add("&7Click here if you made changes");
lore.add("&7to the item, before leaving this");
lore.add("&7inventory.");
new InventoryItem(inv, 26, Material.EMERALD_BLOCK).name("&6&lSave Item").lore(lore).ready();
if(kitItem != null && kitItem.getId() != null){
inv.setItem(13,plugin.getKitItemManager().createItemFromKitItem(kitItem, inventoryPlayer.getPlayer(), kit));
}
inventoryPlayer.getPlayer().openInventory(inv);
inventoryEditManager.getPlayers().add(inventoryPlayer);
}
public void saveKitItem(InventoryPlayer inventoryPlayer){
Inventory inv = InventoryUtils.getTopInventory(inventoryPlayer.getPlayer());
if(inv != null) {
ItemStack item = inv.getItem(13);
KitItem kitItem = null;
if(item != null && !item.getType().equals(Material.AIR)){
kitItem = plugin.getKitItemManager().createKitItemFromItemStack(item,false);
}
Kit kit = plugin.getKitsManager().getKitByName(inventoryPlayer.getKitName());
String type = inventoryPlayer.getInventoryName().replace("edit_display_","");
if(type.equals("permission")){
kit.setDisplayItemNoPermission(kitItem);
}else if(type.equals("onetime")){
kit.setDisplayItemOneTime(kitItem);
}else if(type.equals("cooldown")){
kit.setDisplayItemCooldown(kitItem);
}else if(type.equals("requirements")){
kit.setDisplayItemOneTimeRequirements(kitItem);
}else if(type.startsWith("action")){
String actionType = type.split("_")[1];
int actionSlot = Integer.parseInt(type.split("_")[2]);
KitAction kitAction = getKitActionsFromType(kit,actionType).get(actionSlot);
kitAction.setDisplayItem(kitItem);
}else{
kit.setDisplayItemDefault(kitItem);
}
plugin.getConfigsManager().getKitsConfigManager().saveConfig(kit);
}
}
public void clickInventory(InventoryPlayer inventoryPlayer, ItemStack item, int slot, ClickType clickType,InventoryClickEvent event){
if(event.getSlotType() == null || event.getClickedInventory() == null){
return;
}
if(event.getClickedInventory().equals(InventoryUtils.getTopInventory(inventoryPlayer.getPlayer()))){
//Top inventory
//Cancel unless is slot 13
if(slot != 13){
event.setCancelled(true);
if(slot == 18){
if(inventoryPlayer.getInventoryName().startsWith("edit_display_action")){
String type = inventoryPlayer.getInventoryName().replace("edit_display_action_","");
String actionType = type.split("_")[0];
int actionSlot = Integer.parseInt(type.split("_")[1]);
inventoryEditManager.getInventoryEditActionsManager().getInventoryEditActionsEditManager()
.openInventory(inventoryPlayer,actionType,actionSlot);
}else{
inventoryEditManager.openInventory(inventoryPlayer);
}
}else if(slot == 26){
saveKitItem(inventoryPlayer);
inventoryPlayer.getPlayer().sendMessage(MessagesManager.getLegacyColoredMessage(PlayerKits2.prefix+"&aDisplay item saved."));
}
}
}
}
public KitItem getKitDisplayItemFromType(Kit kit, String type){
if(type.startsWith("action")){
String actionType = type.split("_")[1];
int actionSlot = Integer.parseInt(type.split("_")[2]);
KitAction kitAction = getKitActionsFromType(kit,actionType).get(actionSlot);
return kitAction.getDisplayItem();
}else{
KitItem kitItem = kit.getDisplayItemDefault();
switch(type){
case "permission":
return kit.getDisplayItemNoPermission();
case "onetime":
return kit.getDisplayItemOneTime();
case "cooldown":
return kit.getDisplayItemCooldown();
case "requirements":
return kit.getDisplayItemOneTimeRequirements();
}
return kitItem;
}
}
public ArrayList<KitAction> getKitActionsFromType(Kit kit,String type){
ArrayList<KitAction> actions = null;
if(type.equals("claim")){
actions = kit.getClaimActions();
}else{
actions = kit.getErrorActions();
}
return actions;
}
}