forked from Upstream/mmocore
Fixed waypoint lore not working in UI
This commit is contained in:
parent
3b1ab33e2f
commit
8a017a6109
@ -1,5 +1,6 @@
|
|||||||
package net.Indyuce.mmocore.gui;
|
package net.Indyuce.mmocore.gui;
|
||||||
|
|
||||||
|
import io.lumine.mythic.lib.UtilityMethods;
|
||||||
import net.Indyuce.mmocore.MMOCore;
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
import net.Indyuce.mmocore.api.ConfigMessage;
|
import net.Indyuce.mmocore.api.ConfigMessage;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerActivity;
|
import net.Indyuce.mmocore.api.player.PlayerActivity;
|
||||||
@ -13,11 +14,12 @@ import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
|
|||||||
import net.Indyuce.mmocore.waypoint.Waypoint;
|
import net.Indyuce.mmocore.waypoint.Waypoint;
|
||||||
import net.Indyuce.mmocore.waypoint.WaypointPath;
|
import net.Indyuce.mmocore.waypoint.WaypointPath;
|
||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.*;
|
||||||
import org.bukkit.NamespacedKey;
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.inventory.ItemFlag;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
import org.bukkit.inventory.meta.SkullMeta;
|
||||||
import org.bukkit.persistence.PersistentDataContainer;
|
import org.bukkit.persistence.PersistentDataContainer;
|
||||||
import org.bukkit.persistence.PersistentDataType;
|
import org.bukkit.persistence.PersistentDataType;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@ -137,23 +139,39 @@ public class WaypointViewer extends EditableInventory {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack display(WaypointViewerInventory inv, int n) {
|
public ItemStack display(WaypointViewerInventory inv, int n) {
|
||||||
ItemStack disp = super.display(inv, n);
|
// TODO refactor code
|
||||||
|
final Placeholders placeholders = getPlaceholders(inv, n);
|
||||||
|
final OfflinePlayer effectivePlayer = getEffectivePlayer(inv, n);
|
||||||
|
|
||||||
|
final ItemStack item = new ItemStack(getMaterial());
|
||||||
|
final ItemMeta meta = item.getItemMeta();
|
||||||
|
meta.setCustomModelData(getModelData());
|
||||||
|
// if (texture != null && meta instanceof SkullMeta)
|
||||||
|
// UtilityMethods.setTextureValue((SkullMeta) meta, texture);
|
||||||
|
|
||||||
|
if (hasName()) meta.setDisplayName(placeholders.apply(effectivePlayer, getName()));
|
||||||
|
|
||||||
|
if (hideFlags()) meta.addItemFlags(ItemFlag.values());
|
||||||
// If a player can teleport to another waypoint given his location
|
// If a player can teleport to another waypoint given his location
|
||||||
Waypoint waypoint = inv.waypoints.get(inv.page * inv.getEditable().getByFunction("waypoint").getSlots().size() + n);
|
Waypoint waypoint = inv.waypoints.get(inv.page * inv.getEditable().getByFunction("waypoint").getSlots().size() + n);
|
||||||
ItemMeta meta = disp.getItemMeta();
|
|
||||||
List<String> lore = new ArrayList<>();
|
if (hasLore()) {
|
||||||
meta.getLore().forEach(string -> {
|
List<String> lore = new ArrayList<>();
|
||||||
if (string.contains("{lore}"))
|
getLore().forEach(line -> {
|
||||||
lore.addAll(waypoint.getLore());
|
if (line.equals("{lore}")) for (String added : waypoint.getLore())
|
||||||
else
|
lore.add(ChatColor.GRAY + placeholders.apply(effectivePlayer, added));
|
||||||
lore.add(string);
|
else lore.add(ChatColor.GRAY + placeholders.apply(effectivePlayer, line));
|
||||||
});
|
});
|
||||||
meta.setLore(lore);
|
meta.setLore(lore);
|
||||||
|
}
|
||||||
|
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
|
||||||
|
// Extra code
|
||||||
PersistentDataContainer container = meta.getPersistentDataContainer();
|
PersistentDataContainer container = meta.getPersistentDataContainer();
|
||||||
container.set(new NamespacedKey(MMOCore.plugin, "waypointId"), PersistentDataType.STRING, waypoint.getId());
|
container.set(new NamespacedKey(MMOCore.plugin, "waypointId"), PersistentDataType.STRING, waypoint.getId());
|
||||||
disp.setItemMeta(meta);
|
item.setItemMeta(meta);
|
||||||
return disp;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -42,7 +42,7 @@ public abstract class InventoryItem<T extends GeneratedInventory> {
|
|||||||
this(null, material, config);
|
this(null, material, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryItem(InventoryItem parent, Material material, ConfigurationSection config) {
|
public InventoryItem(InventoryItem<?> parent, Material material, ConfigurationSection config) {
|
||||||
this.id = config.getName();
|
this.id = config.getName();
|
||||||
this.function = config.getString("function", "");
|
this.function = config.getString("function", "");
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
|
Loading…
Reference in New Issue
Block a user