mirror of
https://github.com/HibiscusMC/HMCCosmetics.git
synced 2026-01-04 15:41:45 +00:00
Add ability for lock names and lore #45
This commit is contained in:
@@ -7,6 +7,7 @@ import com.hibiscusmc.hmccosmetics.gui.type.Type;
|
||||
import com.hibiscusmc.hmccosmetics.gui.type.Types;
|
||||
import com.hibiscusmc.hmccosmetics.hooks.PAPIHook;
|
||||
import com.hibiscusmc.hmccosmetics.user.CosmeticUser;
|
||||
import com.hibiscusmc.hmccosmetics.user.CosmeticUsers;
|
||||
import com.hibiscusmc.hmccosmetics.util.MessagesUtil;
|
||||
import com.hibiscusmc.hmccosmetics.util.misc.Adventure;
|
||||
import com.hibiscusmc.hmccosmetics.util.misc.Placeholder;
|
||||
@@ -137,8 +138,6 @@ public class Menu {
|
||||
MessagesUtil.sendDebugMessages("something went wrong! " + item);
|
||||
continue;
|
||||
}
|
||||
ItemStack originalItem = item.clone();
|
||||
item = updateLore(player, item);
|
||||
|
||||
Type type = null;
|
||||
|
||||
@@ -147,6 +146,9 @@ public class Menu {
|
||||
if (Types.isType(typeId)) type = Types.getType(typeId);
|
||||
}
|
||||
|
||||
ItemStack originalItem = item.clone();
|
||||
item = updateLore(user, item, type, config);
|
||||
|
||||
GuiItem guiItem = ItemBuilder.from(item).asGuiItem();
|
||||
|
||||
Type finalType = type;
|
||||
@@ -155,7 +157,7 @@ public class Menu {
|
||||
if (finalType != null) finalType.run(user, config, clickType);
|
||||
|
||||
for (int i : slots) {
|
||||
gui.updateItem(i, updateLore(player, originalItem.clone()));
|
||||
gui.updateItem(i, updateLore(user, originalItem.clone(), finalType, config));
|
||||
MessagesUtil.sendDebugMessages("Updated slot " + i);
|
||||
}
|
||||
});
|
||||
@@ -190,21 +192,9 @@ public class Menu {
|
||||
return slots;
|
||||
}
|
||||
|
||||
private ItemStack updateLore(Player player, ItemStack itemStack) {
|
||||
private ItemStack updateLore(CosmeticUser user, ItemStack itemStack, Type type, ConfigurationNode config) {
|
||||
if (itemStack.hasItemMeta()) {
|
||||
List<String> processedLore = new ArrayList<>();
|
||||
|
||||
if (PAPIHook.isPAPIEnabled()) {
|
||||
if (itemStack.getItemMeta().hasLore()) {
|
||||
for (String loreLine : itemStack.getItemMeta().getLore()) {
|
||||
processedLore.add(PlaceholderAPI.setPlaceholders(player, loreLine));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ItemMeta itemMeta = itemStack.getItemMeta();
|
||||
itemMeta.setLore(processedLore);
|
||||
itemStack.setItemMeta(itemMeta);
|
||||
itemStack.setItemMeta(type.setLore(user, config, itemStack.getItemMeta()));
|
||||
}
|
||||
return itemStack;
|
||||
}
|
||||
|
||||
@@ -5,14 +5,20 @@ import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetics;
|
||||
import com.hibiscusmc.hmccosmetics.gui.action.Actions;
|
||||
import com.hibiscusmc.hmccosmetics.gui.special.DyeMenu;
|
||||
import com.hibiscusmc.hmccosmetics.gui.type.Type;
|
||||
import com.hibiscusmc.hmccosmetics.hooks.PAPIHook;
|
||||
import com.hibiscusmc.hmccosmetics.user.CosmeticUser;
|
||||
import com.hibiscusmc.hmccosmetics.util.MessagesUtil;
|
||||
import com.hibiscusmc.hmccosmetics.util.misc.StringUtils;
|
||||
import com.hibiscusmc.hmccosmetics.util.misc.Utils;
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.spongepowered.configurate.ConfigurationNode;
|
||||
import org.spongepowered.configurate.serialize.SerializationException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class TypeCosmetic extends Type {
|
||||
|
||||
@@ -73,4 +79,63 @@ public class TypeCosmetic extends Type {
|
||||
|
||||
user.updateCosmetic(cosmetic.getSlot());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemMeta setLore(CosmeticUser user, ConfigurationNode config, ItemMeta itemMeta) {
|
||||
List<String> processedLore = new ArrayList<>();
|
||||
|
||||
if (config.node("cosmetic").virtual()) return processLoreLines(user, itemMeta);;
|
||||
String cosmeticName = config.node("cosmetic").getString();
|
||||
Cosmetic cosmetic = Cosmetics.getCosmetic(cosmeticName);
|
||||
if (cosmetic == null) {
|
||||
return processLoreLines(user, itemMeta);
|
||||
}
|
||||
|
||||
if (user.canEquipCosmetic(cosmetic)) {
|
||||
return processLoreLines(user, itemMeta);
|
||||
} else {
|
||||
ConfigurationNode itemConfig = config.node("item");
|
||||
if (itemConfig.virtual()) return itemMeta;
|
||||
if (itemConfig.node("locked-name").virtual() && itemConfig.node("locked-name").virtual()) {
|
||||
return processLoreLines(user, itemMeta);
|
||||
}
|
||||
try {
|
||||
itemMeta.getLore().clear();
|
||||
|
||||
List<String> lockedLore = Utils.replaceIfNull(itemConfig.node("locked-lore").getList(String.class),
|
||||
new ArrayList<String>()).
|
||||
stream().map(StringUtils::parseStringToString).collect(Collectors.toList());
|
||||
|
||||
if (PAPIHook.isPAPIEnabled()) {
|
||||
String lockedName = StringUtils.parseStringToString(Utils.replaceIfNull(itemConfig.node("locked-name").getString(), ""));
|
||||
itemMeta.setDisplayName(PlaceholderAPI.setPlaceholders(user.getPlayer(), lockedName));
|
||||
if (itemMeta.hasLore()) {
|
||||
for (String loreLine : lockedLore) {
|
||||
processedLore.add(PlaceholderAPI.setPlaceholders(user.getPlayer(), loreLine));
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
itemMeta.setLore(processedLore);
|
||||
return itemMeta;
|
||||
}
|
||||
|
||||
private ItemMeta processLoreLines(CosmeticUser user, ItemMeta itemMeta) {
|
||||
List<String> processedLore = new ArrayList<>();
|
||||
|
||||
if (PAPIHook.isPAPIEnabled()) {
|
||||
if (itemMeta.hasLore()) {
|
||||
for (String loreLine : itemMeta.getLore()) {
|
||||
processedLore.add(PlaceholderAPI.setPlaceholders(user.getPlayer(), loreLine));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
itemMeta.setLore(processedLore);
|
||||
return itemMeta;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,8 +2,11 @@ package com.hibiscusmc.hmccosmetics.gui.type.types;
|
||||
|
||||
import com.hibiscusmc.hmccosmetics.gui.action.Actions;
|
||||
import com.hibiscusmc.hmccosmetics.gui.type.Type;
|
||||
import com.hibiscusmc.hmccosmetics.hooks.PAPIHook;
|
||||
import com.hibiscusmc.hmccosmetics.user.CosmeticUser;
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.spongepowered.configurate.ConfigurationNode;
|
||||
import org.spongepowered.configurate.serialize.SerializationException;
|
||||
|
||||
@@ -48,6 +51,21 @@ public class TypeEmpty extends Type {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemMeta setLore(CosmeticUser user, ConfigurationNode config, ItemMeta itemMeta) {
|
||||
List<String> processedLore = new ArrayList<>();
|
||||
|
||||
if (PAPIHook.isPAPIEnabled()) {
|
||||
if (itemMeta.hasLore()) {
|
||||
for (String loreLine : itemMeta.getLore()) {
|
||||
processedLore.add(PlaceholderAPI.setPlaceholders(user.getPlayer(), loreLine));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return itemMeta;
|
||||
}
|
||||
|
||||
// That's it! Now, add it as a static in another one of your classes (such as your main class) and you are good to go.
|
||||
// If you need help with that, check the Types class.
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user