UltimateKits/src/main/java/com/craftaro/ultimatekits/gui/KitEditorGui.java

489 lines
22 KiB
Java
Raw Normal View History

2023-07-27 03:28:26 +02:00
package com.craftaro.ultimatekits.gui;
import com.craftaro.core.gui.AnvilGui;
import com.craftaro.core.gui.DoubleGui;
import com.craftaro.core.gui.Gui;
import com.craftaro.core.gui.GuiUtils;
import com.craftaro.core.input.ChatPrompt;
import com.craftaro.core.utils.ItemUtils;
import com.craftaro.core.utils.TextUtils;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
2023-07-27 03:28:26 +02:00
import com.craftaro.ultimatekits.UltimateKits;
import com.craftaro.ultimatekits.kit.Kit;
import com.craftaro.ultimatekits.kit.KitAnimation;
import com.craftaro.ultimatekits.kit.KitItem;
import com.craftaro.ultimatekits.settings.Settings;
2018-11-28 05:22:07 +01:00
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
2023-07-27 03:28:26 +02:00
import java.util.Optional;
2018-11-28 05:22:07 +01:00
2019-10-04 18:36:46 +02:00
public class KitEditorGui extends DoubleGui {
2020-09-08 17:41:03 +02:00
private final UltimateKits plugin;
private final Kit kit;
private final Player player;
private final Gui back;
2018-11-28 05:22:07 +01:00
2019-11-05 23:23:25 +01:00
private boolean isInFunction = false;
2018-11-28 05:22:07 +01:00
private boolean isInInventory = false;
2020-01-20 05:34:57 +01:00
private ItemStack[] stash;
2019-09-29 02:08:05 +02:00
public KitEditorGui(UltimateKits plugin, Player player, Kit kit, Gui back) {
super(6);
2018-11-28 05:22:07 +01:00
this.plugin = plugin;
this.kit = kit;
2019-09-28 23:03:49 +02:00
this.player = player;
this.back = back;
2018-11-28 05:22:07 +01:00
2019-09-28 23:03:49 +02:00
setDefaultItem(null);
setTitle(plugin.getLocale().getMessage("interface.kiteditor.title")
2020-01-20 03:30:51 +01:00
.processPlaceholder("name", kit.getName())
2019-09-28 23:03:49 +02:00
.getMessage());
2018-11-28 05:22:07 +01:00
2019-09-28 23:03:49 +02:00
setOnClose((event) -> {
restoreItemsInstance();
saveKit(player, this.inventory, false);
2023-07-27 03:28:26 +02:00
XSound.ENTITY_VILLAGER_YES.play(player);
2019-09-28 23:03:49 +02:00
});
2019-09-29 01:45:32 +02:00
2019-09-28 23:03:49 +02:00
ItemStack glass1 = GuiUtils.getBorderItem(Settings.GLASS_TYPE_1.getMaterial());
ItemStack glass2 = GuiUtils.getBorderItem(Settings.GLASS_TYPE_2.getMaterial());
ItemStack glass3 = GuiUtils.getBorderItem(Settings.GLASS_TYPE_3.getMaterial());
2021-01-15 22:36:41 +01:00
mirrorFill(0, 0, true, true, glass2);
mirrorFill(0, 1, true, true, glass2);
mirrorFill(1, 0, true, true, glass2);
mirrorFill(0, 2, true, true, glass3);
mirrorFill(0, 3, false, true, glass1);
2018-11-28 05:22:07 +01:00
2019-09-28 23:03:49 +02:00
// exit button
2023-07-27 03:28:26 +02:00
setButton(0, 8, GuiUtils.createButtonItem(Settings.EXIT_ICON.getMaterial(XMaterial.OAK_DOOR),
plugin.getLocale().getMessage("interface.button.exit").getMessage()),
2019-09-28 23:03:49 +02:00
ClickType.LEFT,
event -> player.closeInventory());
2018-11-28 05:22:07 +01:00
2019-09-28 23:03:49 +02:00
// back button
if (this.parent != null) {
2019-09-28 23:03:49 +02:00
setButton(0, 0, GuiUtils.createButtonItem(ItemUtils.getCustomHead("3ebf907494a935e955bfcadab81beafb90fb9be49c7026ba97d798d5f1a23"),
plugin.getLocale().getMessage("interface.button.back").getMessage()),
2019-09-28 23:03:49 +02:00
ClickType.LEFT,
event -> {
player.closeInventory();
this.guiManager.showGUI(player, back);
});
}
2018-11-28 05:22:07 +01:00
2019-09-28 23:41:42 +02:00
// info icon
2023-07-27 03:28:26 +02:00
setItem(0, 4, GuiUtils.createButtonItem(XMaterial.CHEST,
2019-10-04 18:36:46 +02:00
plugin.getLocale().getMessage("interface.kiteditor.info")
2020-01-20 03:30:51 +01:00
.processPlaceholder("kit", kit.getKey())
.processPlaceholder("perm", "ultimatekits.claim." + kit.getKey().toLowerCase())
2019-10-06 17:25:28 +02:00
.getMessage().split("\\|"))
2019-10-04 18:36:46 +02:00
);
2019-09-29 01:45:32 +02:00
2020-01-20 05:34:57 +01:00
saveItemsInstance();
2019-09-29 01:45:32 +02:00
paint();
Bukkit.getScheduler().runTaskLater(plugin, this::setInvItems, 3L);
2019-09-29 01:45:32 +02:00
}
2018-11-28 05:22:07 +01:00
2019-10-06 17:25:28 +02:00
private void paint() {
for (int i = 10; i < 44; i++) {
if (i == 17 || i == 36) {
2019-10-06 17:25:28 +02:00
continue;
}
2019-10-06 17:25:28 +02:00
setItem(i, null);
}
2018-11-28 05:22:07 +01:00
int num = 10;
for (ItemStack itemStack : this.kit.getReadableContents(this.player, false, true, true)) {
if (num == 17 || num == 36) {
2018-11-28 05:22:07 +01:00
num++;
}
2018-11-28 05:22:07 +01:00
2019-09-29 01:45:32 +02:00
KitItem item = new KitItem(itemStack);
2019-09-29 02:24:12 +02:00
ItemStack is = getCompiledMeta(item);
2018-11-28 05:22:07 +01:00
2019-10-06 17:25:28 +02:00
if (!this.isInFunction) {
2019-10-06 18:17:33 +02:00
setButton(num, is, null);
} else {
2019-10-06 17:25:28 +02:00
setButton(num, is,
(event) -> {
switch (event.clickType) {
case SHIFT_LEFT:
replaceItem(Action.CHANCE_UP, this.player, event.clickedItem, event.slot);
2019-10-06 17:25:28 +02:00
break;
case SHIFT_RIGHT:
replaceItem(Action.CHANCE_DOWN, this.player, event.clickedItem, event.slot);
2019-10-06 17:25:28 +02:00
break;
case LEFT:
replaceItem(Action.DISPLAY_ITEM, this.player, event.clickedItem, event.slot);
2019-10-06 17:25:28 +02:00
break;
case MIDDLE:
replaceItem(Action.DISPLAY_NAME, this.player, event.clickedItem, event.slot);
2019-10-06 17:25:28 +02:00
break;
case RIGHT:
replaceItem(Action.DISPLAY_LORE, this.player, event.clickedItem, event.slot);
2019-10-06 17:25:28 +02:00
break;
}
});
2018-11-28 05:22:07 +01:00
}
2019-10-06 17:25:28 +02:00
num++;
2018-11-28 05:22:07 +01:00
}
updateInvButton();
}
private void updateInvButton() {
2019-10-04 18:36:46 +02:00
ItemStack item;
2019-09-28 23:03:49 +02:00
if (!this.isInFunction) {
2019-09-28 23:03:49 +02:00
setUnlockedRange(1, 1, 1, 7);
setUnlockedRange(2, 0, 3, 8);
setUnlockedRange(4, 1, 4, 7);
2019-10-04 18:36:46 +02:00
2023-07-27 03:28:26 +02:00
item = GuiUtils.createButtonItem(XMaterial.PAPER,
this.plugin.getLocale().getMessage("interface.kiteditor.itemediting").getMessage(),
this.plugin.getLocale().getMessage("interface.kiteditor.itemeditinglore").getMessage().split("\\|"));
2018-11-28 05:22:07 +01:00
} else {
this.unlockedCells.clear();
2019-10-04 18:36:46 +02:00
2023-07-27 03:28:26 +02:00
item = GuiUtils.createButtonItem(XMaterial.PAPER,
this.plugin.getLocale().getMessage("interface.kiteditor.itemmoving").getMessage(),
this.plugin.getLocale().getMessage("interface.kiteditor.itemmovinglore").getMessage().split("\\|"));
2018-11-28 05:22:07 +01:00
}
2019-09-28 23:03:49 +02:00
setButton(48, item,
(event) -> {
this.isInFunction = !this.isInFunction;
saveKit(this.player, this.inventory, true);
2019-09-28 23:03:49 +02:00
paint();
});
2019-10-04 18:36:46 +02:00
ItemStack item2;
item2 = this.isInInventory ? GuiUtils.createButtonItem(XMaterial.ITEM_FRAME,
this.plugin.getLocale().getMessage("interface.kiteditor.switchtokitfunctions").getMessage(),
this.plugin.getLocale().getMessage("interface.kiteditor.switchtokitfunctionslore").getMessage().split("\\|"))
2023-07-27 03:28:26 +02:00
: GuiUtils.createButtonItem(XMaterial.ITEM_FRAME,
this.plugin.getLocale().getMessage("interface.kiteditor.switchtoinventory").getMessage(),
this.plugin.getLocale().getMessage("interface.kiteditor.switchtoinventorylore").getMessage().split("\\|"));
2019-10-04 18:36:46 +02:00
2019-09-28 23:03:49 +02:00
setButton(50, item2,
2019-10-04 18:36:46 +02:00
event -> {
if (!this.isInInventory) {
2019-10-04 18:36:46 +02:00
restoreItemsInstance();
2019-10-09 02:26:14 +02:00
setPlayerActionForRange(0, 0, 3, 8, null);
setAcceptsItems(true);
2019-09-28 23:03:49 +02:00
} else {
saveItemsInstance();
2019-10-04 18:36:46 +02:00
setInvItems();
2019-10-09 02:26:14 +02:00
setAcceptsItems(false);
2019-09-28 23:03:49 +02:00
}
updateInvButton();
});
2018-11-28 05:22:07 +01:00
}
private void saveItemsInstance() {
2019-10-04 18:36:46 +02:00
setPlayerUnlockedRange(0, 0, 3, 8, false);
this.stash = this.player.getInventory().getContents().clone();
this.player.getInventory().clear();
this.isInInventory = false;
}
2018-11-28 05:22:07 +01:00
2019-10-04 18:36:46 +02:00
private void restoreItemsInstance() {
if (!this.isInInventory) {
this.player.getInventory().clear();
}
2019-10-04 18:36:46 +02:00
setPlayerUnlockedRange(0, 0, 3, 8);
if (this.stash != null) {
this.player.getInventory().setContents(this.stash);
}
this.player.updateInventory();
this.isInInventory = true;
2019-10-04 18:36:46 +02:00
}
2018-11-28 05:22:07 +01:00
2019-10-04 18:36:46 +02:00
private void setInvItems() {
2023-07-27 03:28:26 +02:00
setPlayerButton(0, GuiUtils.createButtonItem(XMaterial.REDSTONE_TORCH,
this.plugin.getLocale().getMessage("interface.kiteditor.generaloptions").getMessage(),
this.plugin.getLocale().getMessage("interface.kiteditor.generaloptionslore").getMessage().split("\\|")),
2019-10-09 02:26:14 +02:00
(event) -> {
this.player.closeInventory();
this.guiManager.showGUI(this.player, new KitGeneralOptionsGui(this.plugin, this.player, this.kit, this.back));
2019-10-09 02:26:14 +02:00
});
2019-09-28 23:03:49 +02:00
2023-07-27 03:28:26 +02:00
setPlayerButton(1, GuiUtils.createButtonItem(XMaterial.EMERALD,
this.plugin.getLocale().getMessage("interface.kiteditor.sellingoptions").getMessage(),
this.plugin.getLocale().getMessage("interface.kiteditor.sellingoptionslore").getMessage().split("\\|")),
2019-10-09 02:26:14 +02:00
(event) -> {
this.player.closeInventory();
this.guiManager.showGUI(this.player, new KitSellingOptionsGui(this.plugin, this.player, this.kit, this.back));
2019-10-09 02:26:14 +02:00
});
2019-09-28 23:03:49 +02:00
2023-07-27 03:28:26 +02:00
setPlayerButton(3, GuiUtils.createButtonItem(XMaterial.ITEM_FRAME,
this.plugin.getLocale().getMessage("interface.kiteditor.guioptions").getMessage(),
this.plugin.getLocale().getMessage("interface.kiteditor.guioptionslore").getMessage().split("\\|")),
2019-10-09 02:26:14 +02:00
(event) -> {
this.player.closeInventory();
this.guiManager.showGUI(this.player, new KitGuiOptionsGui(this.plugin, this.player, this.kit, this.back));
2019-10-09 02:26:14 +02:00
});
2019-09-28 23:03:49 +02:00
2023-07-27 03:28:26 +02:00
setPlayerButton(4, GuiUtils.createButtonItem(XMaterial.PAPER,
this.plugin.getLocale().getMessage("interface.kiteditor.addcommand").getMessage(),
this.plugin.getLocale().getMessage("interface.kiteditor.addcommandlore").getMessage().split("\\|")),
2019-09-28 23:03:49 +02:00
(event) -> {
2019-10-04 18:36:46 +02:00
event.gui.exit();
ChatPrompt.showPrompt(event.manager.getPlugin(), event.player, "Enter a command for this kit:", response -> {
String msg = response.getMessage().trim();
2019-09-28 23:03:49 +02:00
ItemStack parseStack = new ItemStack(Material.PAPER, 1);
ItemMeta meta = parseStack.getItemMeta();
2019-09-28 23:03:49 +02:00
ArrayList<String> lore = new ArrayList<>();
2018-11-28 05:22:07 +01:00
int index = 0;
while (index < msg.length()) {
lore.add(ChatColor.GREEN + (index == 0 ? "/" : "") + msg.substring(index, Math.min(index + 30, msg.length())));
index += 30;
}
meta.setLore(lore);
meta.setDisplayName(this.plugin.getLocale().getMessage("general.type.command").getMessage());
parseStack.setItemMeta(meta);
2018-11-28 05:22:07 +01:00
this.plugin.getLocale().newMessage(this.plugin.getLocale().getMessage("interface.kiteditor.addcommandok")
.processPlaceholder("command", msg).getMessage())
.sendPrefixedMessage(this.player);
2018-11-28 05:22:07 +01:00
this.inventory.addItem(parseStack);
Bukkit.getScheduler().runTask(this.plugin, event.player::closeInventory);
}).setOnClose(() -> {
event.manager.showGUI(event.player, this);
})
2019-10-06 17:25:28 +02:00
.setOnCancel(() -> {
event.player.sendMessage(ChatColor.RED + "Edit canceled");
event.manager.showGUI(event.player, this);
});
2019-09-28 23:03:49 +02:00
});
2018-11-28 05:22:07 +01:00
2023-07-27 03:28:26 +02:00
setPlayerButton(5, GuiUtils.createButtonItem(XMaterial.SUNFLOWER,
this.plugin.getLocale().getMessage("interface.kiteditor.addeconomy").getMessage(),
this.plugin.getLocale().getMessage("interface.kiteditor.addeconomylore").getMessage().split("\\|")),
2019-09-28 23:03:49 +02:00
(event) -> {
AnvilGui gui = new AnvilGui(this.player, this);
gui.setTitle(this.plugin.getLocale().getMessage("interface.kiteditor.addeconomyprompt").getMessage());
2019-09-28 23:03:49 +02:00
gui.setAction(aevent -> {
2019-10-09 02:26:14 +02:00
String msg = gui.getInputText().trim();
2018-11-28 05:22:07 +01:00
2019-09-28 23:03:49 +02:00
ItemStack parseStack = new ItemStack(Material.PAPER, 1);
ItemMeta meta = parseStack.getItemMeta();
2018-11-28 05:22:07 +01:00
2019-09-28 23:03:49 +02:00
ArrayList<String> lore = new ArrayList<>();
2018-11-28 05:22:07 +01:00
2019-09-28 23:03:49 +02:00
int index = 0;
while (index < msg.length()) {
lore.add(ChatColor.GREEN + "$" + msg.substring(index, Math.min(index + 30, msg.length())));
index += 30;
}
meta.setLore(lore);
meta.setDisplayName(this.plugin.getLocale().getMessage("general.type.money").getMessage());
2019-09-28 23:03:49 +02:00
parseStack.setItemMeta(meta);
2018-11-28 05:22:07 +01:00
this.plugin.getLocale().getMessage("interface.kiteditor.addeconomyok").processPlaceholder("amount", msg.trim())
.sendPrefixedMessage(this.player);
2019-09-28 23:03:49 +02:00
this.inventory.addItem(parseStack);
this.player.closeInventory();
2019-09-28 23:03:49 +02:00
});
this.guiManager.showGUI(event.player, gui);
2019-09-28 23:03:49 +02:00
});
2023-07-27 03:28:26 +02:00
setPlayerButton(7, GuiUtils.createButtonItem(XMaterial.SHEEP_SPAWN_EGG,
this.plugin.getLocale().getMessage("interface.kiteditor.clone").getMessage(),
this.plugin.getLocale().getMessage("interface.kiteditor.clonelore")
.getMessage().split("\\|")),
2021-03-08 16:54:49 +01:00
(event) -> {
AnvilGui gui = new AnvilGui(this.player, this);
2021-03-08 16:54:49 +01:00
gui.setTitle("Enter a new kit name");
gui.setAction(evnt -> {
String kitStr = gui.getInputText().toLowerCase().trim();
if (this.plugin.getKitManager().getKit(kitStr) != null) {
this.plugin.getLocale().getMessage("command.kit.kitalreadyexists").sendPrefixedMessage(this.player);
this.player.closeInventory();
2021-03-08 16:54:49 +01:00
} else {
Kit newKit = this.kit.clone(kitStr);
this.plugin.getKitManager().addKit(newKit);
2023-07-27 03:28:26 +02:00
restoreItemsInstance();
saveKit(this.player, this.inventory, false);
XSound.ENTITY_VILLAGER_YES.play(this.player);
2023-07-27 03:28:26 +02:00
Bukkit.getScheduler().runTaskLater(this.plugin, () ->
this.guiManager.showGUI(this.player, new KitEditorGui(this.plugin, this.player, newKit, null)), 5L);
2021-03-08 16:54:49 +01:00
}
});
this.guiManager.showGUI(this.player, gui);
2021-03-08 16:54:49 +01:00
});
2023-07-27 03:28:26 +02:00
setPlayerButton(8, GuiUtils.createButtonItem(XMaterial.CHEST,
this.plugin.getLocale().getMessage("interface.kiteditor.animation").getMessage(),
this.plugin.getLocale().getMessage("interface.kiteditor.animationlore")
.processPlaceholder("animation", this.kit.getKitAnimation().name())
.getMessage().split("\\|")),
2019-09-28 23:03:49 +02:00
(event) -> {
if (this.kit.getKitAnimation() == KitAnimation.NONE) {
this.kit.setKitAnimation(KitAnimation.ROULETTE);
2019-09-28 23:03:49 +02:00
} else {
this.kit.setKitAnimation(KitAnimation.NONE);
2019-09-28 23:03:49 +02:00
}
2019-10-04 18:36:46 +02:00
setInvItems();
2019-09-28 23:03:49 +02:00
});
2018-11-28 05:22:07 +01:00
}
public void saveKit(Player player, Inventory i, boolean muteSave) {
2018-11-28 05:22:07 +01:00
ItemStack[] items = i.getContents();
2019-09-29 02:08:05 +02:00
for (int num = 0; num < items.length; ++num) {
2018-11-28 05:22:07 +01:00
if (num < 10 || num == 17 || num == 36) {
items[num] = null;
}
}
items = Arrays.copyOf(items, items.length - 10);
this.kit.saveKit(Arrays.asList(items));
if (!muteSave) {
this.plugin.getLocale().getMessage("interface.kiteditor.saved")
.processPlaceholder("kit", this.kit.getName())
2019-10-06 17:25:28 +02:00
.sendPrefixedMessage(player);
}
2018-11-28 05:22:07 +01:00
}
public void replaceItem(Action action, Player player, ItemStack itemStack, int slot) {
if (itemStack.getItemMeta().hasLore()) {
ItemMeta meta = itemStack.getItemMeta();
List<String> newLore = new ArrayList<>();
2024-04-01 01:22:39 +02:00
for (String line : meta.getLore())
2018-11-28 05:22:07 +01:00
newLore.add(line);
meta.setLore(newLore);
itemStack.setItemMeta(meta);
}
KitItem item = new KitItem(itemStack);
switch (action) {
2019-10-06 17:25:28 +02:00
case CHANCE_UP:
case CHANCE_DOWN:
if (action == Action.CHANCE_UP) {
2019-10-06 17:25:28 +02:00
item.setChance(item.getChance() >= 100 ? 5 : (item.getChance() + 5));
} else {
2019-10-06 17:25:28 +02:00
item.setChance(item.getChance() <= 0 ? 100 : (item.getChance() - 5));
}
2019-10-06 17:25:28 +02:00
2019-09-29 02:24:12 +02:00
setItem(slot, getCompiledMeta(item));
saveKit(player, this.inventory, true);
2019-10-06 17:25:28 +02:00
paint();
2018-11-28 05:22:07 +01:00
break;
2019-04-07 00:10:47 +02:00
case DISPLAY_ITEM: {
2019-09-29 01:45:32 +02:00
AnvilGui gui = new AnvilGui(player, this);
gui.setTitle("Enter a Material");
gui.setAction(event -> {
2023-07-27 03:28:26 +02:00
Optional<XMaterial> compatibleMaterial = XMaterial.matchXMaterial(gui.getInputText().trim());
if (!compatibleMaterial.isPresent()) {
player.sendMessage("'" + gui.getInputText().trim() + "' is not a valid material.");
2019-09-29 01:45:32 +02:00
} else {
2023-07-27 03:28:26 +02:00
Material material = compatibleMaterial.get().parseMaterial();
2019-09-29 01:45:32 +02:00
KitItem newItem = new KitItem(itemStack);
newItem.setDisplayItem(material);
2019-10-06 17:25:28 +02:00
setItem(slot, newItem.getMoveableItem());
player.closeInventory();
saveKit(player, this.inventory, true);
2019-10-06 17:25:28 +02:00
paint();
2019-07-19 22:53:18 +02:00
}
});
this.guiManager.showGUI(player, gui);
2019-07-19 22:53:18 +02:00
}
break;
case DISPLAY_NAME: {
2019-09-29 01:45:32 +02:00
AnvilGui gui = new AnvilGui(player, this);
gui.setTitle("Enter a name");
gui.setAction(event -> {
KitItem newItem = new KitItem(itemStack);
newItem.setDisplayName(gui.getInputText());
2019-09-29 02:24:12 +02:00
setItem(slot, getCompiledMeta(newItem));
2019-10-06 17:25:28 +02:00
player.closeInventory();
saveKit(player, this.inventory, true);
2019-10-06 17:25:28 +02:00
paint();
2019-08-13 16:20:04 +02:00
});
this.guiManager.showGUI(player, gui);
2019-07-19 22:53:18 +02:00
}
break;
2019-04-07 00:10:47 +02:00
case DISPLAY_LORE: {
2019-09-29 01:45:32 +02:00
AnvilGui gui = new AnvilGui(player, this);
gui.setTitle("Enter lore");
gui.setAction(event -> {
KitItem newItem = new KitItem(itemStack);
newItem.setDisplayLore(gui.getInputText());
2019-09-29 02:24:12 +02:00
setItem(slot, getCompiledMeta(newItem));
2019-10-06 17:25:28 +02:00
player.closeInventory();
saveKit(player, this.inventory, true);
2019-10-06 17:25:28 +02:00
paint();
2019-07-19 22:53:18 +02:00
});
this.guiManager.showGUI(player, gui);
2019-07-19 22:53:18 +02:00
}
break;
2020-09-08 17:41:03 +02:00
default:
paint();
break;
2018-11-28 05:22:07 +01:00
}
}
2019-09-29 02:24:12 +02:00
private ItemStack getCompiledMeta(KitItem item) {
ItemStack is = item.getMoveableItem();
ItemMeta meta;
if (is.hasItemMeta()) {
meta = is.getItemMeta();
} else {
meta = Bukkit.getItemFactory().getItemMeta(is.getType());
}
2019-09-29 02:24:12 +02:00
List<String> itemLore;
if (meta.hasLore()) {
itemLore = meta.getLore();
} else {
itemLore = new ArrayList<>();
}
2020-07-20 16:28:00 +02:00
itemLore.add(TextUtils.formatText("&8----"));
itemLore.add(ChatColor.GRAY + this.plugin.getLocale().getMessage("general.type.chance").getMessage().replaceFirst("^" + ChatColor.RESET, "")
+ ": " + ChatColor.GOLD + item.getChance() + "%"); //TODO use a placeholder message in locales
if (this.isInFunction) {
itemLore.addAll(Arrays.asList(this.plugin.getLocale().getMessage("interface.kiteditor.itemfunctionlore")
2019-09-29 02:24:12 +02:00
.processPlaceholder("item", item.getDisplayItem() == null ? "" : item.getDisplayItem().name())
.processPlaceholder("name", item.getDisplayName())
.processPlaceholder("lore", item.getDisplayLore())
2019-10-04 18:36:46 +02:00
.getMessage().split("\\|")));
2019-09-29 02:24:12 +02:00
}
meta.setLore(itemLore);
is.setItemMeta(meta);
return is;
}
2019-10-06 17:25:28 +02:00
public enum Action {NONE, CHANCE_UP, CHANCE_DOWN, DISPLAY_ITEM, DISPLAY_NAME, DISPLAY_LORE}
2018-11-28 05:22:07 +01:00
}