137 lines
6.2 KiB
Java
137 lines
6.2 KiB
Java
package com.craftaro.epicvouchers.menus;
|
|
|
|
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
|
|
import com.craftaro.core.utils.ItemUtils;
|
|
import com.craftaro.epicvouchers.EpicVouchers;
|
|
import com.craftaro.epicvouchers.libraries.ItemBuilder;
|
|
import com.craftaro.epicvouchers.libraries.inventory.IconInv;
|
|
import com.craftaro.epicvouchers.libraries.inventory.icons.Icon;
|
|
import com.craftaro.epicvouchers.libraries.inventory.icons.StringIcon;
|
|
import com.craftaro.epicvouchers.libraries.inventory.icons.StringListIcon;
|
|
import com.craftaro.epicvouchers.libraries.inventory.icons.ToggleableIcon;
|
|
import com.craftaro.epicvouchers.menus.sub.editor.EffectsMenu;
|
|
import com.craftaro.epicvouchers.menus.sub.editor.ParticlesMenu;
|
|
import com.craftaro.epicvouchers.menus.sub.editor.SoundsMenu;
|
|
import com.craftaro.epicvouchers.menus.sub.editor.TitlesMenu;
|
|
import com.craftaro.epicvouchers.voucher.Voucher;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.event.inventory.ClickType;
|
|
|
|
import static org.bukkit.ChatColor.GRAY;
|
|
import static org.bukkit.ChatColor.YELLOW;
|
|
import static org.bukkit.Material.BOOK;
|
|
|
|
public class VoucherEditorMenu extends IconInv {
|
|
private final EpicVouchers instance;
|
|
private final Voucher voucher;
|
|
|
|
public VoucherEditorMenu(EpicVouchers instance, Voucher voucher) {
|
|
super(36, "Voucher options");
|
|
this.instance = instance;
|
|
this.voucher = voucher;
|
|
|
|
//Booleans
|
|
|
|
addIcon(0, new ToggleableIcon("Glow", event -> voucher.setGlow(!voucher.isGlow()), voucher.isGlow()));
|
|
|
|
addIcon(1, new ToggleableIcon("Confirm", event -> voucher.setConfirm(!voucher.isConfirm()), voucher.isConfirm()));
|
|
|
|
addIcon(2, new ToggleableIcon("Unbreakable", event -> voucher.setUnbreakable(!voucher.isUnbreakable()), voucher.isUnbreakable()));
|
|
|
|
addIcon(3, new ToggleableIcon("Hide Attributes", event -> voucher.setHideAttributes(!voucher.isHideAttributes()), voucher.isHideAttributes()));
|
|
|
|
addIcon(4, new ToggleableIcon("Remove Item", event -> voucher.setRemoveItem(!voucher.isRemoveItem()), voucher.isRemoveItem()));
|
|
|
|
addIcon(5, new ToggleableIcon("Feed Player", event -> voucher.setFeedPlayer(!voucher.isFeedPlayer()), voucher.isFeedPlayer()));
|
|
|
|
addIcon(6, new ToggleableIcon("Heal Player", event -> voucher.setHealPlayer(!voucher.isHealPlayer()), voucher.isHealPlayer()));
|
|
|
|
addIcon(7, new ToggleableIcon("Smite Effect", event -> voucher.setSmiteEffect(!voucher.isSmiteEffect()), voucher.isSmiteEffect()));
|
|
|
|
//Strings
|
|
|
|
addIcon(9, new StringIcon(instance, "Permission", voucher.getPermission(), (player, editString) -> {
|
|
voucher.setPermission(editString);
|
|
reopen(player);
|
|
}));
|
|
|
|
addIcon(10, new StringIcon(instance, "Actionbar", voucher.getActionBar(), (player, editString) -> {
|
|
voucher.setActionBar(editString);
|
|
reopen(player);
|
|
}));
|
|
|
|
addIcon(11, new StringIcon(instance, "Material", voucher.getMaterial().toString(), (player, editString) -> {
|
|
if (editString.contains(":")) {
|
|
voucher.setData(Short.parseShort(editString.split(":")[1]));
|
|
voucher.setMaterial(Material.valueOf(editString.split(":")[0]));
|
|
} else {
|
|
voucher.setMaterial(Material.valueOf(editString));
|
|
}
|
|
|
|
reopen(player);
|
|
}, string -> {
|
|
if (string.isEmpty()) {
|
|
return false;
|
|
}
|
|
|
|
if (string.contains(":") && string.split(":").length == 2) {
|
|
String[] split = string.split(":");
|
|
return Material.matchMaterial(split[0]) != null && StringUtils.isNumeric(split[1]);
|
|
}
|
|
|
|
return Material.matchMaterial(string) != null;
|
|
}, true));
|
|
|
|
addIcon(12, new StringIcon(instance, "Name", voucher.getName(false), (player, editString) -> {
|
|
voucher.setName(editString);
|
|
reopen(player);
|
|
}));
|
|
|
|
addIcon(13, new StringIcon(instance, new ItemBuilder(voucher.getTexture() == null ? XMaterial.PLAYER_HEAD.parseItem() : ItemUtils.getCustomHead(voucher.getTexture()))
|
|
.name(YELLOW + "Skull Texture")
|
|
.lore(GRAY + "Right click to edit", GRAY + "Left click to clear").build(), voucher.getTexture(), (player, editString) -> {
|
|
voucher.setTexture(editString);
|
|
reopen(player);
|
|
}));
|
|
|
|
// Sections
|
|
|
|
addIcon(18, new StringListIcon(instance, voucher.getCommands(), "Commands", voucher));
|
|
|
|
addIcon(19, new StringListIcon(instance, voucher.getBroadcasts(false), "Broadcasts", voucher));
|
|
|
|
addIcon(20, new StringListIcon(instance, voucher.getMessages(false), "Messages", voucher));
|
|
|
|
addIcon(21, new StringListIcon(instance, voucher.getLore(false), "Lore", voucher));
|
|
|
|
addIcon(22, new Icon(new ItemBuilder(BOOK).name(YELLOW + "Titles").lore(GRAY + "Click to view").build(), event -> new TitlesMenu(instance, voucher).open(event.getPlayer())));
|
|
|
|
addIcon(23, new Icon(new ItemBuilder(BOOK).name(YELLOW + "Sounds").lore(GRAY + "Click to view").build(), event -> new SoundsMenu(instance, voucher).open(event.getPlayer())));
|
|
|
|
addIcon(24, new Icon(new ItemBuilder(BOOK).name(YELLOW + "Particles").lore(GRAY + "Click to view").build(), event -> new ParticlesMenu(instance, voucher).open(event.getPlayer())));
|
|
|
|
addIcon(25, new Icon(new ItemBuilder(BOOK).name(YELLOW + "Effects").lore(GRAY + "Click to view").build(), event -> new EffectsMenu(instance, voucher).open(event.getPlayer())));
|
|
|
|
// Misc
|
|
|
|
addIcon(getInventory().getSize() - 5, voucher.toItemStack());
|
|
|
|
addIcon(getInventory().getSize() - 9, new ItemBuilder(Material.BARRIER)
|
|
.name(YELLOW + "Return")
|
|
.lore(GRAY + "Return to the editor")
|
|
.build(), event -> new OptionMenu(instance, voucher).open(event.getPlayer()));
|
|
|
|
onClick(event -> {
|
|
if (event.getItem() != null && event.getClickType() != ClickType.RIGHT && event.getSlot() < 18) {
|
|
reopen(event.getPlayer());
|
|
}
|
|
});
|
|
}
|
|
|
|
private void reopen(Player player) {
|
|
new VoucherEditorMenu(this.instance, this.voucher).open(player);
|
|
}
|
|
}
|