mirror of
https://gitlab.com/phoenix-dvpmt/mmocore.git
synced 2025-02-02 11:21:22 +01:00
using generics to improve gui api
This commit is contained in:
parent
b06f38c2eb
commit
fb75868e8d
@ -1,11 +1,7 @@
|
||||
package net.Indyuce.mmocore.gui;
|
||||
|
||||
import net.Indyuce.mmocore.api.event.PlayerAttributeUseEvent;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.event.PlayerAttributeUseEvent;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.api.player.attribute.PlayerAttribute;
|
||||
import net.Indyuce.mmocore.api.player.attribute.PlayerAttributes.AttributeInstance;
|
||||
@ -13,10 +9,12 @@ import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.PluginInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
||||
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
|
||||
import net.Indyuce.mmocore.manager.SoundManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
|
||||
public class AttributeView extends EditableInventory {
|
||||
public AttributeView() {
|
||||
@ -26,10 +24,10 @@ public class AttributeView extends EditableInventory {
|
||||
@Override
|
||||
public InventoryItem load(String function, ConfigurationSection config) {
|
||||
if (function.equalsIgnoreCase("reallocation"))
|
||||
return new InventoryPlaceholderItem(config) {
|
||||
return new InventoryItem(config) {
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
public Placeholders getPlaceholders(GeneratedInventory inv, int n) {
|
||||
Placeholders holders = new Placeholders();
|
||||
holders.register("attribute_points", inv.getPlayerData().getAttributePoints());
|
||||
holders.register("points", inv.getPlayerData().getAttributeReallocationPoints());
|
||||
@ -38,14 +36,14 @@ public class AttributeView extends EditableInventory {
|
||||
}
|
||||
};
|
||||
|
||||
return function.startsWith("attribute_") ? new AttributeItem(function, config) : new NoPlaceholderItem(config);
|
||||
return function.startsWith("attribute_") ? new AttributeItem(function, config) : new SimplePlaceholderItem(config);
|
||||
}
|
||||
|
||||
public GeneratedInventory newInventory(PlayerData data) {
|
||||
return new AttributeViewerInventory(data, this);
|
||||
}
|
||||
|
||||
public static class AttributeItem extends InventoryPlaceholderItem {
|
||||
public static class AttributeItem extends InventoryItem {
|
||||
private final PlayerAttribute attribute;
|
||||
|
||||
public AttributeItem(String function, ConfigurationSection config) {
|
||||
@ -56,7 +54,7 @@ public class AttributeView extends EditableInventory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
public Placeholders getPlaceholders(GeneratedInventory inv, int n) {
|
||||
int total = inv.getPlayerData().getAttributes().getInstance(attribute).getTotal();
|
||||
|
||||
Placeholders holders = new Placeholders();
|
||||
|
@ -1,12 +1,5 @@
|
||||
package net.Indyuce.mmocore.gui;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.event.PlayerChangeClassEvent;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
@ -16,89 +9,89 @@ import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.PluginInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
||||
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
|
||||
import net.Indyuce.mmocore.manager.SoundManager;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class ClassConfirmation extends EditableInventory {
|
||||
public ClassConfirmation() {
|
||||
super("class-confirm");
|
||||
}
|
||||
|
||||
@Override
|
||||
public InventoryItem load(String function, ConfigurationSection config) {
|
||||
return function.equalsIgnoreCase("yes") ? new YesItem(config) : new NoPlaceholderItem(config);
|
||||
}
|
||||
@Override
|
||||
public InventoryItem load(String function, ConfigurationSection config) {
|
||||
return function.equalsIgnoreCase("yes") ? new YesItem(config) : new SimplePlaceholderItem(config);
|
||||
}
|
||||
|
||||
public GeneratedInventory newInventory(PlayerData data, PlayerClass profess, PluginInventory last) {
|
||||
return new ClassConfirmationInventory(data, this, profess, last);
|
||||
}
|
||||
public GeneratedInventory newInventory(PlayerData data, PlayerClass profess, PluginInventory last) {
|
||||
return new ClassConfirmationInventory(data, this, profess, last);
|
||||
}
|
||||
|
||||
public class UnlockedItem extends InventoryPlaceholderItem {
|
||||
public class UnlockedItem extends InventoryItem<ClassConfirmationInventory> {
|
||||
|
||||
public UnlockedItem(ConfigurationSection config) {
|
||||
super(config);
|
||||
}
|
||||
public UnlockedItem(ConfigurationSection config) {
|
||||
super(config);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
PlayerClass profess = ((ClassConfirmationInventory) inv).profess;
|
||||
SavedClassInformation info = inv.getPlayerData().getClassInfo(profess);
|
||||
Placeholders holders = new Placeholders();
|
||||
@Override
|
||||
public Placeholders getPlaceholders(ClassConfirmationInventory inv, int n) {
|
||||
PlayerClass profess = inv.profess;
|
||||
SavedClassInformation info = inv.getPlayerData().getClassInfo(profess);
|
||||
Placeholders holders = new Placeholders();
|
||||
|
||||
int nextLevelExp = inv.getPlayerData().getLevelUpExperience();
|
||||
double ratio = (double) info.getExperience() / (double) nextLevelExp;
|
||||
int nextLevelExp = inv.getPlayerData().getLevelUpExperience();
|
||||
double ratio = (double) info.getExperience() / (double) nextLevelExp;
|
||||
|
||||
StringBuilder bar = new StringBuilder("" + ChatColor.BOLD);
|
||||
int chars = (int) (ratio * 20);
|
||||
for (int j = 0; j < 20; j++)
|
||||
bar.append(j == chars ? "" + ChatColor.WHITE + ChatColor.BOLD : "").append("|");
|
||||
StringBuilder bar = new StringBuilder("" + ChatColor.BOLD);
|
||||
int chars = (int) (ratio * 20);
|
||||
for (int j = 0; j < 20; j++)
|
||||
bar.append(j == chars ? "" + ChatColor.WHITE + ChatColor.BOLD : "").append("|");
|
||||
|
||||
holders.register("percent", decimal.format(ratio * 100));
|
||||
holders.register("progress", bar.toString());
|
||||
holders.register("class", profess.getName());
|
||||
holders.register("unlocked_skills", info.getSkillKeys().size());
|
||||
holders.register("class_skills", profess.getSkills().size());
|
||||
holders.register("next_level", "" + nextLevelExp);
|
||||
holders.register("level", info.getLevel());
|
||||
holders.register("exp", info.getExperience());
|
||||
holders.register("skill_points", info.getSkillPoints());
|
||||
holders.register("class_skills", profess.getSkills().size());
|
||||
holders.register("next_level", "" + nextLevelExp);
|
||||
holders.register("level", info.getLevel());
|
||||
holders.register("exp", info.getExperience());
|
||||
holders.register("skill_points", info.getSkillPoints());
|
||||
|
||||
return holders;
|
||||
}
|
||||
}
|
||||
return holders;
|
||||
}
|
||||
}
|
||||
|
||||
public class YesItem extends InventoryItem {
|
||||
private final InventoryPlaceholderItem unlocked, locked;
|
||||
public class YesItem extends SimplePlaceholderItem<ClassConfirmationInventory> {
|
||||
private final InventoryItem unlocked, locked;
|
||||
|
||||
public YesItem(ConfigurationSection config) {
|
||||
super(config);
|
||||
public YesItem(ConfigurationSection config) {
|
||||
super(config);
|
||||
|
||||
Validate.isTrue(config.contains("unlocked"), "Could not load 'unlocked' config");
|
||||
Validate.isTrue(config.contains("locked"), "Could not load 'locked' config");
|
||||
Validate.isTrue(config.contains("unlocked"), "Could not load 'unlocked' config");
|
||||
Validate.isTrue(config.contains("locked"), "Could not load 'locked' config");
|
||||
|
||||
unlocked = new UnlockedItem(config.getConfigurationSection("unlocked"));
|
||||
locked = new InventoryPlaceholderItem(config.getConfigurationSection("locked")) {
|
||||
unlocked = new UnlockedItem(config.getConfigurationSection("unlocked"));
|
||||
locked = new InventoryItem<ClassConfirmationInventory>(config.getConfigurationSection("locked")) {
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
Placeholders holders = new Placeholders();
|
||||
holders.register("class", ((ClassConfirmationInventory) inv).profess.getName());
|
||||
return holders;
|
||||
}
|
||||
};
|
||||
}
|
||||
@Override
|
||||
public Placeholders getPlaceholders(ClassConfirmationInventory inv, int n) {
|
||||
Placeholders holders = new Placeholders();
|
||||
holders.register("class", inv.profess.getName());
|
||||
return holders;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack display(GeneratedInventory inv, int n) {
|
||||
return inv.getPlayerData().hasSavedClass(((ClassConfirmationInventory) inv).profess) ? unlocked.display(inv, n) : locked.display(inv, n);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
public ItemStack display(ClassConfirmationInventory inv, int n) {
|
||||
return inv.getPlayerData().hasSavedClass(inv.profess) ? unlocked.display(inv, n) : locked.display(inv, n);
|
||||
}
|
||||
}
|
||||
|
||||
public class ClassConfirmationInventory extends GeneratedInventory {
|
||||
|
@ -1,17 +1,8 @@
|
||||
package net.Indyuce.mmocore.gui;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import io.lumine.mythic.lib.MythicLib;
|
||||
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||
import io.lumine.mythic.lib.api.item.NBTItem;
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.ConfigMessage;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
@ -20,12 +11,20 @@ import net.Indyuce.mmocore.api.player.profess.PlayerClass;
|
||||
import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
|
||||
import net.Indyuce.mmocore.manager.InventoryManager;
|
||||
import net.Indyuce.mmocore.manager.SoundManager;
|
||||
import io.lumine.mythic.lib.MythicLib;
|
||||
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||
import io.lumine.mythic.lib.api.item.NBTItem;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ClassSelect extends EditableInventory {
|
||||
public ClassSelect() {
|
||||
@ -34,14 +33,14 @@ public class ClassSelect extends EditableInventory {
|
||||
|
||||
@Override
|
||||
public InventoryItem load(String function, ConfigurationSection config) {
|
||||
return function.equals("class") ? new ClassItem(config) : new NoPlaceholderItem(config);
|
||||
return function.equals("class") ? new ClassItem(config) : new SimplePlaceholderItem(config);
|
||||
}
|
||||
|
||||
public GeneratedInventory newInventory(PlayerData data) {
|
||||
return new ProfessSelectionInventory(data, this);
|
||||
}
|
||||
|
||||
public class ClassItem extends NoPlaceholderItem {
|
||||
public class ClassItem extends SimplePlaceholderItem<ProfessSelectionInventory> {
|
||||
private final String name;
|
||||
private final List<String> lore;
|
||||
|
||||
@ -57,13 +56,11 @@ public class ClassSelect extends EditableInventory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack display(GeneratedInventory inv, int n) {
|
||||
ProfessSelectionInventory generated = (ProfessSelectionInventory) inv;
|
||||
|
||||
if (n >= generated.classes.size())
|
||||
public ItemStack display(ProfessSelectionInventory inv, int n) {
|
||||
if (n >= inv.classes.size())
|
||||
return null;
|
||||
|
||||
PlayerClass profess = generated.classes.get(n);
|
||||
PlayerClass profess = inv.classes.get(n);
|
||||
ItemStack item = profess.getIcon();
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
if (hideFlags())
|
||||
@ -89,11 +86,6 @@ public class ClassSelect extends EditableInventory {
|
||||
item.setItemMeta(meta);
|
||||
return NBTItem.get(item).addTag(new ItemTag("classId", profess.getId())).toItem();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public class ProfessSelectionInventory extends GeneratedInventory {
|
||||
|
@ -1,12 +1,6 @@
|
||||
package net.Indyuce.mmocore.gui;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
|
||||
import io.lumine.mythic.lib.version.VersionMaterial;
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.experience.Booster;
|
||||
import net.Indyuce.mmocore.api.experience.Profession;
|
||||
@ -18,10 +12,14 @@ import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.PluginInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
||||
import io.lumine.mythic.lib.version.VersionMaterial;
|
||||
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
|
||||
public class PlayerStats extends EditableInventory {
|
||||
public PlayerStats() {
|
||||
@ -35,7 +33,7 @@ public class PlayerStats extends EditableInventory {
|
||||
return new BoostItem(config);
|
||||
|
||||
if (function.equals("boost-next"))
|
||||
return new NoPlaceholderItem(config) {
|
||||
return new SimplePlaceholderItem<PlayerStatsInventory>(config) {
|
||||
|
||||
@Override
|
||||
public boolean hasDifferentDisplay() {
|
||||
@ -43,23 +41,18 @@ public class PlayerStats extends EditableInventory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
public boolean canDisplay(PlayerStatsInventory inv) {
|
||||
InventoryItem boost = inv.getByFunction("boost");
|
||||
return boost != null && ((PlayerStatsInventory) inv).boostOffset + boost.getSlots().size() < MMOCore.plugin.boosterManager.getBoosters().size();
|
||||
return boost != null && inv.boostOffset + boost.getSlots().size() < MMOCore.plugin.boosterManager.getBoosters().size();
|
||||
}
|
||||
};
|
||||
|
||||
if (function.equals("boost-previous"))
|
||||
return new NoPlaceholderItem(config) {
|
||||
return new SimplePlaceholderItem<PlayerStatsInventory>(config) {
|
||||
|
||||
@Override
|
||||
public boolean hasDifferentDisplay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
return ((PlayerStatsInventory) inv).boostOffset > 0;
|
||||
public boolean canDisplay(PlayerStatsInventory inv) {
|
||||
return inv.boostOffset > 0;
|
||||
}
|
||||
};
|
||||
|
||||
@ -71,10 +64,15 @@ public class PlayerStats extends EditableInventory {
|
||||
Validate.isTrue(MMOCore.plugin.professionManager.has(id));
|
||||
Profession profession = MMOCore.plugin.professionManager.get(id);
|
||||
|
||||
return new InventoryPlaceholderItem(config) {
|
||||
return new InventoryItem(config) {
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
public boolean hasDifferentDisplay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(GeneratedInventory inv, int n) {
|
||||
|
||||
Placeholders holders = new Placeholders();
|
||||
net.Indyuce.mmocore.api.player.stats.PlayerStats stats = inv.getPlayerData().getStats();
|
||||
@ -105,10 +103,15 @@ public class PlayerStats extends EditableInventory {
|
||||
return new PlayerProfileItem(config);
|
||||
|
||||
if (function.equals("stats"))
|
||||
return new InventoryPlaceholderItem(config) {
|
||||
return new InventoryItem(config) {
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
public boolean hasDifferentDisplay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(GeneratedInventory inv, int n) {
|
||||
|
||||
net.Indyuce.mmocore.api.player.stats.PlayerStats stats = inv.getPlayerData().getStats();
|
||||
Placeholders holders = new Placeholders();
|
||||
@ -127,7 +130,7 @@ public class PlayerStats extends EditableInventory {
|
||||
}
|
||||
};
|
||||
|
||||
return new NoPlaceholderItem(config);
|
||||
return new SimplePlaceholderItem(config);
|
||||
}
|
||||
|
||||
public PlayerStatsInventory newInventory(PlayerData data) {
|
||||
@ -160,89 +163,18 @@ public class PlayerStats extends EditableInventory {
|
||||
}
|
||||
}
|
||||
|
||||
public class BoostItem extends InventoryItem {
|
||||
private final InventoryPlaceholderItem noBoost, mainLevel, profession;
|
||||
|
||||
public BoostItem(ConfigurationSection config) {
|
||||
super(config);
|
||||
|
||||
ConfigurationSection noBoost = config.getConfigurationSection("no-boost");
|
||||
Validate.notNull(noBoost, "Could not load 'no-boost' config");
|
||||
this.noBoost = new NoPlaceholderItem(noBoost);
|
||||
|
||||
ConfigurationSection mainLevel = config.getConfigurationSection("main-level");
|
||||
Validate.notNull(mainLevel, "Could not load 'main-level' config");
|
||||
this.mainLevel = new InventoryPlaceholderItem(mainLevel) {
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
Placeholders holders = new Placeholders();
|
||||
Booster boost = MMOCore.plugin.boosterManager.get(((PlayerStatsInventory) inv).boostOffset + n);
|
||||
|
||||
holders.register("author", boost.hasAuthor() ? boost.getAuthor() : "Server");
|
||||
holders.register("value", (int) (boost.getExtra() * 100));
|
||||
holders.register("left", boost.isTimedOut() ?
|
||||
MMOCore.plugin.configManager.getSimpleMessage("booster-expired").message()
|
||||
: new DelayFormat(2).format(boost.getLeft()));
|
||||
|
||||
return holders;
|
||||
}
|
||||
};
|
||||
|
||||
ConfigurationSection profession = config.getConfigurationSection("profession");
|
||||
Validate.notNull(profession, "Could not load 'profession' config");
|
||||
this.profession = new InventoryPlaceholderItem(profession) {
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
Placeholders holders = new Placeholders();
|
||||
Booster boost = MMOCore.plugin.boosterManager.get(((PlayerStatsInventory) inv).boostOffset + n);
|
||||
|
||||
holders.register("author", boost.hasAuthor() ? boost.getAuthor() : "Server");
|
||||
holders.register("profession", boost.getProfession().getName());
|
||||
holders.register("value", (int) (boost.getExtra() * 100));
|
||||
holders.register("left", boost.isTimedOut() ?
|
||||
MMOCore.plugin.configManager.getSimpleMessage("booster-expired").message()
|
||||
: new DelayFormat(2).format(boost.getLeft()));
|
||||
|
||||
return holders;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasDifferentDisplay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack display(GeneratedInventory inv, int n) {
|
||||
int offset = ((PlayerStatsInventory) inv).boostOffset;
|
||||
if (n + offset >= MMOCore.plugin.boosterManager.getBoosters().size())
|
||||
return noBoost.display(inv, n);
|
||||
|
||||
Booster boost = MMOCore.plugin.boosterManager.get(((PlayerStatsInventory) inv).boostOffset + n);
|
||||
return amount(boost.hasProfession() ? profession.display(inv, n) : mainLevel.display(inv, n), n + offset + 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private ItemStack amount(ItemStack item, int amount) {
|
||||
item.setAmount(amount);
|
||||
return item;
|
||||
}
|
||||
|
||||
public static class PartyMoraleItem extends InventoryPlaceholderItem {
|
||||
public static class PartyMoraleItem extends InventoryItem {
|
||||
public PartyMoraleItem(ConfigurationSection config) {
|
||||
super(config);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
public Placeholders getPlaceholders(GeneratedInventory inv, int n) {
|
||||
Placeholders holders = new Placeholders();
|
||||
|
||||
int count = inv.getPlayerData().getParty().getMembers().count();
|
||||
@ -257,10 +189,9 @@ public class PlayerStats extends EditableInventory {
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
return inv.getPlayerData().hasParty() && inv.getPlayerData().getParty().getMembers().count() > 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class PlayerProfileItem extends InventoryPlaceholderItem {
|
||||
public static class PlayerProfileItem extends InventoryItem {
|
||||
public PlayerProfileItem(ConfigurationSection config) {
|
||||
super(config);
|
||||
}
|
||||
@ -277,7 +208,7 @@ public class PlayerStats extends EditableInventory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
public Placeholders getPlaceholders(GeneratedInventory inv, int n) {
|
||||
PlayerData data = inv.getPlayerData();
|
||||
Placeholders holders = new Placeholders();
|
||||
|
||||
@ -297,11 +228,87 @@ public class PlayerStats extends EditableInventory {
|
||||
holders.register("attribute_points", "" + data.getAttributePoints());
|
||||
holders.register("progress", bar.toString());
|
||||
holders.register("next_level", "" + nextLevelExp);
|
||||
if(data.isOnline())
|
||||
if (data.isOnline())
|
||||
holders.register("player", "" + data.getPlayer().getName());
|
||||
holders.register("class", "" + data.getProfess().getName());
|
||||
|
||||
return holders;
|
||||
}
|
||||
}
|
||||
|
||||
public class BoostItem extends SimplePlaceholderItem<PlayerStatsInventory> {
|
||||
private final InventoryItem noBoost, mainLevel, profession;
|
||||
|
||||
public BoostItem(ConfigurationSection config) {
|
||||
super(config);
|
||||
|
||||
ConfigurationSection noBoost = config.getConfigurationSection("no-boost");
|
||||
Validate.notNull(noBoost, "Could not load 'no-boost' config");
|
||||
this.noBoost = new SimplePlaceholderItem(noBoost);
|
||||
|
||||
ConfigurationSection mainLevel = config.getConfigurationSection("main-level");
|
||||
Validate.notNull(mainLevel, "Could not load 'main-level' config");
|
||||
this.mainLevel = new InventoryItem<PlayerStatsInventory>(mainLevel) {
|
||||
|
||||
@Override
|
||||
public boolean hasDifferentDisplay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PlayerStatsInventory inv, int n) {
|
||||
Placeholders holders = new Placeholders();
|
||||
Booster boost = MMOCore.plugin.boosterManager.get(inv.boostOffset + n);
|
||||
|
||||
holders.register("author", boost.hasAuthor() ? boost.getAuthor() : "Server");
|
||||
holders.register("value", (int) (boost.getExtra() * 100));
|
||||
holders.register("left", boost.isTimedOut() ?
|
||||
MMOCore.plugin.configManager.getSimpleMessage("booster-expired").message()
|
||||
: new DelayFormat(2).format(boost.getLeft()));
|
||||
|
||||
return holders;
|
||||
}
|
||||
};
|
||||
|
||||
ConfigurationSection profession = config.getConfigurationSection("profession");
|
||||
Validate.notNull(profession, "Could not load 'profession' config");
|
||||
this.profession = new InventoryItem<PlayerStatsInventory>(profession) {
|
||||
|
||||
@Override
|
||||
public boolean hasDifferentDisplay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PlayerStatsInventory inv, int n) {
|
||||
Placeholders holders = new Placeholders();
|
||||
Booster boost = MMOCore.plugin.boosterManager.get(inv.boostOffset + n);
|
||||
|
||||
holders.register("author", boost.hasAuthor() ? boost.getAuthor() : "Server");
|
||||
holders.register("profession", boost.getProfession().getName());
|
||||
holders.register("value", (int) (boost.getExtra() * 100));
|
||||
holders.register("left", boost.isTimedOut() ?
|
||||
MMOCore.plugin.configManager.getSimpleMessage("booster-expired").message()
|
||||
: new DelayFormat(2).format(boost.getLeft()));
|
||||
|
||||
return holders;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasDifferentDisplay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack display(PlayerStatsInventory inv, int n) {
|
||||
int offset = inv.boostOffset;
|
||||
if (n + offset >= MMOCore.plugin.boosterManager.getBoosters().size())
|
||||
return noBoost.display(inv, n);
|
||||
|
||||
Booster boost = MMOCore.plugin.boosterManager.get(inv.boostOffset + n);
|
||||
return amount(boost.hasProfession() ? profession.display(inv, n) : mainLevel.display(inv, n), n + offset + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,18 @@
|
||||
package net.Indyuce.mmocore.gui;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||
import io.lumine.mythic.lib.api.item.NBTItem;
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.experience.Profession;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.api.quest.Quest;
|
||||
import net.Indyuce.mmocore.api.util.math.format.DelayFormat;
|
||||
import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
||||
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
|
||||
import net.Indyuce.mmocore.manager.SoundManager;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
@ -14,20 +22,10 @@ import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.experience.Profession;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.api.quest.Quest;
|
||||
import net.Indyuce.mmocore.api.util.math.format.DelayFormat;
|
||||
import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
||||
import net.Indyuce.mmocore.manager.SoundManager;
|
||||
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||
import io.lumine.mythic.lib.api.item.NBTItem;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class QuestViewer extends EditableInventory {
|
||||
public QuestViewer() {
|
||||
@ -39,35 +37,34 @@ public class QuestViewer extends EditableInventory {
|
||||
|
||||
if (function.equals("quest"))
|
||||
return new QuestItem(config);
|
||||
|
||||
|
||||
if (function.equals("previous"))
|
||||
return new NoPlaceholderItem(config) {
|
||||
return new SimplePlaceholderItem<QuestInventory>(config) {
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
return ((QuestInventory) inv).page > 0;
|
||||
public boolean canDisplay(QuestInventory inv) {
|
||||
return inv.page > 0;
|
||||
}
|
||||
};
|
||||
|
||||
if (function.equals("next"))
|
||||
return new NoPlaceholderItem(config) {
|
||||
return new SimplePlaceholderItem<QuestInventory>(config) {
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
QuestInventory generated = (QuestInventory) inv;
|
||||
return generated.perPage * (generated.page + 1) < generated.quests.size();
|
||||
public boolean canDisplay(QuestInventory inv) {
|
||||
return inv.perPage * (inv.page + 1) < inv.quests.size();
|
||||
}
|
||||
};
|
||||
|
||||
return new NoPlaceholderItem(config);
|
||||
return new SimplePlaceholderItem(config);
|
||||
}
|
||||
|
||||
public GeneratedInventory newInventory(PlayerData data) {
|
||||
return new QuestInventory(data, this);
|
||||
}
|
||||
|
||||
public class QuestItem extends NoPlaceholderItem {
|
||||
private final InventoryPlaceholderItem noQuest, locked;
|
||||
public class QuestItem extends SimplePlaceholderItem {
|
||||
private final SimplePlaceholderItem noQuest, locked;
|
||||
|
||||
private final String mainHit, mainNotHit, professionHit, professionNotHit;
|
||||
private final SimpleDateFormat dateFormat;
|
||||
@ -78,8 +75,8 @@ public class QuestViewer extends EditableInventory {
|
||||
Validate.isTrue(config.contains("no-quest"), "Could not load config 'no-quest'");
|
||||
Validate.isTrue(config.contains("locked"), "Could not load config 'locked'");
|
||||
|
||||
locked = new NoPlaceholderItem(config.getConfigurationSection("locked"));
|
||||
noQuest = new NoPlaceholderItem(config.getConfigurationSection("no-quest"));
|
||||
locked = new SimplePlaceholderItem(config.getConfigurationSection("locked"));
|
||||
noQuest = new SimplePlaceholderItem(config.getConfigurationSection("no-quest"));
|
||||
|
||||
Validate.isTrue(config.contains("date-format"), "Could not find date-format");
|
||||
dateFormat = new SimpleDateFormat(config.getString("date-format"));
|
||||
|
@ -1,8 +1,18 @@
|
||||
package net.Indyuce.mmocore.gui;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import io.lumine.mythic.lib.MythicLib;
|
||||
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||
import io.lumine.mythic.lib.api.item.NBTItem;
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.api.skill.Skill;
|
||||
import net.Indyuce.mmocore.api.skill.Skill.SkillInfo;
|
||||
import net.Indyuce.mmocore.api.util.MMOCoreUtils;
|
||||
import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
||||
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
@ -14,21 +24,8 @@ import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.api.skill.Skill;
|
||||
import net.Indyuce.mmocore.api.skill.Skill.SkillInfo;
|
||||
import net.Indyuce.mmocore.api.util.MMOCoreUtils;
|
||||
import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.PluginInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
||||
import io.lumine.mythic.lib.MythicLib;
|
||||
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||
import io.lumine.mythic.lib.api.item.NBTItem;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class SkillList extends EditableInventory {
|
||||
public SkillList() {
|
||||
@ -48,11 +45,11 @@ public class SkillList extends EditableInventory {
|
||||
return new LevelItem(config);
|
||||
|
||||
if (function.equals("upgrade"))
|
||||
return new InventoryPlaceholderItem(config) {
|
||||
return new InventoryItem<SkillViewerInventory>(config) {
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
Skill selected = ((SkillViewerInventory) inv).selected.getSkill();
|
||||
public Placeholders getPlaceholders(SkillViewerInventory inv, int n) {
|
||||
Skill selected = inv.selected.getSkill();
|
||||
Placeholders holders = new Placeholders();
|
||||
|
||||
holders.register("skill_caps", selected.getName().toUpperCase());
|
||||
@ -63,21 +60,21 @@ public class SkillList extends EditableInventory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
return !((SkillViewerInventory) inv).binding;
|
||||
public boolean canDisplay(SkillViewerInventory inv) {
|
||||
return !inv.binding;
|
||||
}
|
||||
};
|
||||
|
||||
if (function.equals("slot"))
|
||||
return new InventoryPlaceholderItem(config) {
|
||||
return new InventoryItem<SkillViewerInventory>(config) {
|
||||
private final String none = MythicLib.plugin.parseColors(config.getString("no-skill"));
|
||||
private final Material emptyMaterial = Material
|
||||
.valueOf(config.getString("empty-item").toUpperCase().replace("-", "_").replace(" ", "_"));
|
||||
private final int emptyCMD = config.getInt("empty-custom-model-data", getModelData());
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
Skill selected = ((SkillViewerInventory) inv).selected.getSkill();
|
||||
public Placeholders getPlaceholders(SkillViewerInventory inv, int n) {
|
||||
Skill selected = inv.selected.getSkill();
|
||||
Skill skill = inv.getPlayerData().hasSkillBound(n) ? inv.getPlayerData().getBoundSkill(n).getSkill() : null;
|
||||
|
||||
Placeholders holders = new Placeholders();
|
||||
@ -91,7 +88,7 @@ public class SkillList extends EditableInventory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack display(GeneratedInventory inv, int n) {
|
||||
public ItemStack display(SkillViewerInventory inv, int n) {
|
||||
ItemStack item = super.display(inv, n);
|
||||
if (!inv.getPlayerData().hasSkillBound(n)) {
|
||||
item.setType(emptyMaterial);
|
||||
@ -106,8 +103,8 @@ public class SkillList extends EditableInventory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
return ((SkillViewerInventory) inv).binding;
|
||||
public boolean canDisplay(SkillViewerInventory inv) {
|
||||
return inv.binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -116,15 +113,15 @@ public class SkillList extends EditableInventory {
|
||||
}
|
||||
};
|
||||
|
||||
return new NoPlaceholderItem(config);
|
||||
return new SimplePlaceholderItem(config);
|
||||
}
|
||||
|
||||
public GeneratedInventory newInventory(PlayerData data) {
|
||||
return new SkillViewerInventory(data, this);
|
||||
}
|
||||
|
||||
public class SwitchItem extends NoPlaceholderItem {
|
||||
private final InventoryPlaceholderItem binding, upgrading;
|
||||
public class SwitchItem extends SimplePlaceholderItem<SkillViewerInventory> {
|
||||
private final SimplePlaceholderItem binding, upgrading;
|
||||
|
||||
public SwitchItem(ConfigurationSection config) {
|
||||
super(config);
|
||||
@ -132,22 +129,22 @@ public class SkillList extends EditableInventory {
|
||||
Validate.isTrue(config.contains("binding"), "Config must have 'binding'");
|
||||
Validate.isTrue(config.contains("upgrading"), "Config must have 'upgrading'");
|
||||
|
||||
binding = new NoPlaceholderItem(config.getConfigurationSection("binding"));
|
||||
upgrading = new NoPlaceholderItem(config.getConfigurationSection("upgrading"));
|
||||
binding = new SimplePlaceholderItem(config.getConfigurationSection("binding"));
|
||||
upgrading = new SimplePlaceholderItem(config.getConfigurationSection("upgrading"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack display(GeneratedInventory inv, int n) {
|
||||
return ((SkillViewerInventory) inv).binding ? upgrading.display(inv) : binding.display(inv);
|
||||
public ItemStack display(SkillViewerInventory inv, int n) {
|
||||
return inv.binding ? upgrading.display(inv) : binding.display(inv);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
public boolean canDisplay(SkillViewerInventory inv) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public class LevelItem extends InventoryPlaceholderItem {
|
||||
public class LevelItem extends InventoryItem<SkillViewerInventory> {
|
||||
private final int offset;
|
||||
|
||||
public LevelItem(ConfigurationSection config) {
|
||||
@ -162,9 +159,9 @@ public class SkillList extends EditableInventory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack display(GeneratedInventory inv, int n) {
|
||||
public ItemStack display(SkillViewerInventory inv, int n) {
|
||||
|
||||
SkillInfo skill = ((SkillViewerInventory) inv).selected;
|
||||
SkillInfo skill = inv.selected;
|
||||
int skillLevel = inv.getPlayerData().getSkillLevel(skill.getSkill()) + n - offset;
|
||||
if (skillLevel < 1)
|
||||
return new ItemStack(Material.AIR);
|
||||
@ -193,17 +190,17 @@ public class SkillList extends EditableInventory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
return null;
|
||||
public Placeholders getPlaceholders(SkillViewerInventory inv, int n) {
|
||||
return new Placeholders();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
return !((SkillViewerInventory) inv).binding;
|
||||
public boolean canDisplay(SkillViewerInventory inv) {
|
||||
return !inv.binding;
|
||||
}
|
||||
}
|
||||
|
||||
public class SkillItem extends InventoryPlaceholderItem {
|
||||
public class SkillItem extends InventoryItem<SkillViewerInventory> {
|
||||
private final int selectedSkillSlot;
|
||||
|
||||
public SkillItem(ConfigurationSection config) {
|
||||
@ -218,13 +215,12 @@ public class SkillList extends EditableInventory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack display(GeneratedInventory inv, int n) {
|
||||
public ItemStack display(SkillViewerInventory inv, int n) {
|
||||
|
||||
/*
|
||||
* calculate placeholders
|
||||
*/
|
||||
SkillViewerInventory viewer = (SkillViewerInventory) inv;
|
||||
SkillInfo skill = viewer.skills.get(mod(n + inv.getPlayerData().skillGuiDisplayOffset, viewer.skills.size()));
|
||||
SkillInfo skill = inv.skills.get(mod(n + inv.getPlayerData().skillGuiDisplayOffset, inv.skills.size()));
|
||||
Placeholders holders = getPlaceholders(inv.getPlayerData(), skill);
|
||||
|
||||
List<String> lore = new ArrayList<>(getLore());
|
||||
@ -264,8 +260,8 @@ public class SkillList extends EditableInventory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
return null;
|
||||
public Placeholders getPlaceholders(SkillViewerInventory inv, int n) {
|
||||
return new Placeholders();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,9 +1,5 @@
|
||||
package net.Indyuce.mmocore.gui;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.event.PlayerChangeClassEvent;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
@ -12,10 +8,12 @@ import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.PluginInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
||||
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
|
||||
import net.Indyuce.mmocore.manager.SoundManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
|
||||
public class SubclassConfirmation extends EditableInventory {
|
||||
public SubclassConfirmation() {
|
||||
@ -24,17 +22,17 @@ public class SubclassConfirmation extends EditableInventory {
|
||||
|
||||
@Override
|
||||
public InventoryItem load(String function, ConfigurationSection config) {
|
||||
return function.equalsIgnoreCase("yes") ? new InventoryPlaceholderItem(config) {
|
||||
return function.equalsIgnoreCase("yes") ? new InventoryItem<SubclassConfirmationInventory>(config) {
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
@Override
|
||||
public Placeholders getPlaceholders(SubclassConfirmationInventory inv, int n) {
|
||||
|
||||
Placeholders holders = new Placeholders();
|
||||
holders.register("class", ((SubclassConfirmationInventory) inv).profess.getName());
|
||||
return holders;
|
||||
}
|
||||
} : new NoPlaceholderItem(config);
|
||||
}
|
||||
Placeholders holders = new Placeholders();
|
||||
holders.register("class", inv.profess.getName());
|
||||
return holders;
|
||||
}
|
||||
} : new SimplePlaceholderItem(config);
|
||||
}
|
||||
|
||||
public GeneratedInventory newInventory(PlayerData data, PlayerClass profess, PluginInventory last) {
|
||||
return new SubclassConfirmationInventory(data, this, profess, last);
|
||||
|
@ -1,14 +1,8 @@
|
||||
package net.Indyuce.mmocore.gui;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import io.lumine.mythic.lib.MythicLib;
|
||||
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||
import io.lumine.mythic.lib.api.item.NBTItem;
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.ConfigMessage;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
@ -17,12 +11,17 @@ import net.Indyuce.mmocore.api.player.profess.Subclass;
|
||||
import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
|
||||
import net.Indyuce.mmocore.manager.InventoryManager;
|
||||
import net.Indyuce.mmocore.manager.SoundManager;
|
||||
import io.lumine.mythic.lib.MythicLib;
|
||||
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||
import io.lumine.mythic.lib.api.item.NBTItem;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class SubclassSelect extends EditableInventory {
|
||||
public SubclassSelect() {
|
||||
@ -31,14 +30,14 @@ public class SubclassSelect extends EditableInventory {
|
||||
|
||||
@Override
|
||||
public InventoryItem load(String function, ConfigurationSection config) {
|
||||
return function.equals("class") ? new ClassItem(config) : new NoPlaceholderItem(config);
|
||||
return function.equals("class") ? new ClassItem(config) : new SimplePlaceholderItem(config);
|
||||
}
|
||||
|
||||
public GeneratedInventory newInventory(PlayerData data) {
|
||||
return new SubclassSelectionInventory(data, this);
|
||||
}
|
||||
|
||||
public class ClassItem extends InventoryItem {
|
||||
public class ClassItem extends SimplePlaceholderItem<SubclassSelectionInventory> {
|
||||
private final String name;
|
||||
private final List<String> lore;
|
||||
|
||||
@ -49,20 +48,19 @@ public class SubclassSelect extends EditableInventory {
|
||||
this.lore = config.getStringList("lore");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasDifferentDisplay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack display(GeneratedInventory inv, int n) {
|
||||
SubclassSelectionInventory generated = (SubclassSelectionInventory) inv;
|
||||
|
||||
if (n >= generated.subclasses.size())
|
||||
public ItemStack display(SubclassSelectionInventory inv, int n) {
|
||||
if (n >= inv.subclasses.size())
|
||||
return null;
|
||||
|
||||
PlayerClass profess = generated.subclasses.get(n).getProfess();
|
||||
|
||||
|
||||
PlayerClass profess = inv.subclasses.get(n).getProfess();
|
||||
|
||||
|
||||
ItemStack item = profess.getIcon();
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName(MythicLib.plugin.parseColors(name).replace("{name}", profess.getName()));
|
||||
@ -88,7 +86,7 @@ public class SubclassSelect extends EditableInventory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
public boolean canDisplay(SubclassSelectionInventory inv) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -1,26 +1,23 @@
|
||||
package net.Indyuce.mmocore.gui;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||
import io.lumine.mythic.lib.api.item.NBTItem;
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.Waypoint;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
||||
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.Waypoint;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.PluginInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
||||
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||
import io.lumine.mythic.lib.api.item.NBTItem;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class WaypointViewer extends EditableInventory {
|
||||
public WaypointViewer() {
|
||||
@ -34,25 +31,24 @@ public class WaypointViewer extends EditableInventory {
|
||||
return new WaypointItem(config);
|
||||
|
||||
if (function.equals("previous"))
|
||||
return new NoPlaceholderItem(config) {
|
||||
return new SimplePlaceholderItem<WaypointViewerInventory>(config) {
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
return ((WaypointViewerInventory) inv).page > 0;
|
||||
public boolean canDisplay(WaypointViewerInventory inv) {
|
||||
return inv.page > 0;
|
||||
}
|
||||
};
|
||||
|
||||
if (function.equals("next"))
|
||||
return new NoPlaceholderItem(config) {
|
||||
return new SimplePlaceholderItem<WaypointViewerInventory>(config) {
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
WaypointViewerInventory generated = (WaypointViewerInventory) inv;
|
||||
return inv.getEditable().getByFunction("waypoint").getSlots().size() * (generated.page + 1) < generated.waypoints.size();
|
||||
public boolean canDisplay(WaypointViewerInventory inv) {
|
||||
return inv.getEditable().getByFunction("waypoint").getSlots().size() * (inv.page + 1) < inv.waypoints.size();
|
||||
}
|
||||
};
|
||||
|
||||
return new NoPlaceholderItem(config);
|
||||
return new SimplePlaceholderItem(config);
|
||||
}
|
||||
|
||||
public GeneratedInventory newInventory(PlayerData data) {
|
||||
@ -63,7 +59,7 @@ public class WaypointViewer extends EditableInventory {
|
||||
return new WaypointViewerInventory(data, this, waypoint);
|
||||
}
|
||||
|
||||
public class WaypointDisplayItem extends InventoryPlaceholderItem {
|
||||
public class WaypointDisplayItem extends InventoryItem<WaypointViewerInventory> {
|
||||
private final Material notReady;
|
||||
|
||||
public WaypointDisplayItem(ConfigurationSection config) {
|
||||
@ -74,28 +70,21 @@ public class WaypointViewer extends EditableInventory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack display(GeneratedInventory inv, int n) {
|
||||
WaypointViewerInventory generated = (WaypointViewerInventory) inv;
|
||||
public ItemStack display(WaypointViewerInventory inv, int n) {
|
||||
ItemStack disp = super.display(inv, n);
|
||||
|
||||
Waypoint waypoint = generated.waypoints.get(generated.page * inv.getEditable().getByFunction("waypoint").getSlots().size() + n);
|
||||
if (inv.getPlayerData().getStellium() < waypoint.getStelliumCost() || (generated.current == null && !waypoint.isDynamic()))
|
||||
Waypoint waypoint = inv.waypoints.get(inv.page * inv.getEditable().getByFunction("waypoint").getSlots().size() + n);
|
||||
if (inv.getPlayerData().getStellium() < waypoint.getStelliumCost() || (inv.current == null && !waypoint.isDynamic()))
|
||||
disp.setType(notReady);
|
||||
|
||||
return NBTItem.get(disp).addTag(new ItemTag("waypointId", waypoint.getId())).toItem();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
WaypointViewerInventory generated = (WaypointViewerInventory) inv;
|
||||
public Placeholders getPlaceholders(WaypointViewerInventory inv, int n) {
|
||||
Placeholders holders = new Placeholders();
|
||||
|
||||
Waypoint waypoint = generated.waypoints.get(generated.page * generated.getByFunction("waypoint").getSlots().size() + n);
|
||||
Waypoint waypoint = inv.waypoints.get(inv.page * inv.getByFunction("waypoint").getSlots().size() + n);
|
||||
holders.register("name", waypoint.getName());
|
||||
holders.register("stellium", decimal.format(waypoint.getStelliumCost()));
|
||||
|
||||
@ -103,8 +92,8 @@ public class WaypointViewer extends EditableInventory {
|
||||
}
|
||||
}
|
||||
|
||||
public class WaypointItem extends InventoryItem {
|
||||
private final InventoryPlaceholderItem noWaypoint, locked;
|
||||
public class WaypointItem extends SimplePlaceholderItem<WaypointViewerInventory> {
|
||||
private final SimplePlaceholderItem noWaypoint, locked;
|
||||
private final WaypointDisplayItem availWaypoint;
|
||||
|
||||
public WaypointItem(ConfigurationSection config) {
|
||||
@ -114,31 +103,26 @@ public class WaypointViewer extends EditableInventory {
|
||||
Validate.notNull(config.getConfigurationSection("locked"), "Could not load 'locked' config");
|
||||
Validate.notNull(config.getConfigurationSection("display"), "Could not load 'display' config");
|
||||
|
||||
noWaypoint = new NoPlaceholderItem(config.getConfigurationSection("no-waypoint"));
|
||||
locked = new NoPlaceholderItem(config.getConfigurationSection("locked"));
|
||||
noWaypoint = new SimplePlaceholderItem(config.getConfigurationSection("no-waypoint"));
|
||||
locked = new SimplePlaceholderItem(config.getConfigurationSection("locked"));
|
||||
availWaypoint = new WaypointDisplayItem(config.getConfigurationSection("display"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasDifferentDisplay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack display(GeneratedInventory inv, int n) {
|
||||
WaypointViewerInventory generated = (WaypointViewerInventory) inv;
|
||||
public ItemStack display(WaypointViewerInventory inv, int n) {
|
||||
|
||||
int index = generated.page * inv.getEditable().getByFunction("waypoint").getSlots().size() + n;
|
||||
if (index >= generated.waypoints.size())
|
||||
int index = inv.page * inv.getEditable().getByFunction("waypoint").getSlots().size() + n;
|
||||
if (index >= inv.waypoints.size())
|
||||
return noWaypoint.display(inv, n);
|
||||
|
||||
Waypoint waypoint = generated.waypoints.get(index);
|
||||
Waypoint waypoint = inv.waypoints.get(index);
|
||||
return inv.getPlayerData().hasWaypoint(waypoint) ? availWaypoint.display(inv, n) : locked.display(inv);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public class WaypointViewerInventory extends GeneratedInventory {
|
||||
|
@ -1,27 +1,52 @@
|
||||
package net.Indyuce.mmocore.gui.api.item;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.mojang.authlib.GameProfile;
|
||||
import com.mojang.authlib.properties.Property;
|
||||
import io.lumine.mythic.lib.MythicLib;
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Level;
|
||||
|
||||
public abstract class InventoryItem {
|
||||
public abstract class InventoryItem<T extends GeneratedInventory> {
|
||||
private final String id, function;
|
||||
private final List<Integer> slots = new ArrayList<>();
|
||||
|
||||
public InventoryItem(ConfigurationSection config) {
|
||||
this(config.getName(), config.getString("function"));
|
||||
private final Material material;
|
||||
private final String name, texture;
|
||||
private final List<String> lore;
|
||||
private final int modelData;
|
||||
private final boolean placeholders, hideFlags;
|
||||
|
||||
config.getStringList("slots").forEach(str -> slots.add(Integer.parseInt(str)));
|
||||
public InventoryItem(ConfigurationSection config) {
|
||||
this(Material.valueOf(config.getString("item", "").toUpperCase().replace(" ", "_").replace("-", "_")), config);
|
||||
}
|
||||
|
||||
public InventoryItem(String id, String function) {
|
||||
this.id = id;
|
||||
this.function = function == null ? "" : function.toLowerCase();
|
||||
public InventoryItem(Material material, ConfigurationSection config) {
|
||||
this.id = config.getName();
|
||||
this.function = config.getString("function", "");
|
||||
|
||||
this.material = material;
|
||||
this.name = config.getString("name");
|
||||
this.lore = config.getStringList("lore");
|
||||
this.hideFlags = config.getBoolean("hide-flags");
|
||||
this.texture = config.getString("texture");
|
||||
this.placeholders = config.getBoolean("placeholders");
|
||||
this.modelData = config.getInt("custom-model-data");
|
||||
|
||||
config.getStringList("slots").forEach(str -> slots.add(Integer.parseInt(str)));
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
@ -40,30 +65,103 @@ public abstract class InventoryItem {
|
||||
return slots;
|
||||
}
|
||||
|
||||
public boolean hasDifferentDisplay() {
|
||||
return false;
|
||||
public Material getMaterial() {
|
||||
return material;
|
||||
}
|
||||
|
||||
public void setDisplayed(Inventory inv, GeneratedInventory generated) {
|
||||
public boolean hideFlags() {
|
||||
return hideFlags;
|
||||
}
|
||||
|
||||
public boolean hasName() {
|
||||
return name != null;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public boolean hasLore() {
|
||||
return lore != null && !lore.isEmpty();
|
||||
}
|
||||
|
||||
public List<String> getLore() {
|
||||
return lore;
|
||||
}
|
||||
|
||||
public int getModelData() {
|
||||
return modelData;
|
||||
}
|
||||
|
||||
public void setDisplayed(Inventory inv, T generated) {
|
||||
generated.addLoaded(this);
|
||||
|
||||
if (!hasDifferentDisplay()) {
|
||||
ItemStack display = display(generated);
|
||||
for (int slot : getSlots())
|
||||
inv.setItem(slot, display);
|
||||
}
|
||||
|
||||
else
|
||||
} else
|
||||
for (int j = 0; j < slots.size(); j++)
|
||||
inv.setItem(slots.get(j), display(generated, j));
|
||||
|
||||
}
|
||||
|
||||
public ItemStack display(GeneratedInventory inv) {
|
||||
public boolean hasDifferentDisplay() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canDisplay(T inv) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public ItemStack display(T inv) {
|
||||
return display(inv, 0);
|
||||
}
|
||||
|
||||
public abstract ItemStack display(GeneratedInventory inv, int n);
|
||||
public ItemStack display(T inv, int n) {
|
||||
|
||||
public abstract boolean canDisplay(GeneratedInventory inv);
|
||||
Placeholders placeholders = getPlaceholders(inv, n);
|
||||
ItemStack item = new ItemStack(material);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
|
||||
if (texture != null && meta instanceof SkullMeta)
|
||||
applyTexture(texture, (SkullMeta) meta);
|
||||
|
||||
if (hasName())
|
||||
meta.setDisplayName(placeholders.apply(inv.getPlayer(), getName()));
|
||||
|
||||
if (hideFlags())
|
||||
meta.addItemFlags(ItemFlag.values());
|
||||
|
||||
if (hasLore()) {
|
||||
List<String> lore = new ArrayList<>();
|
||||
getLore().forEach(line -> lore.add(ChatColor.GRAY + placeholders.apply(inv.getPlayer(), line)));
|
||||
meta.setLore(lore);
|
||||
}
|
||||
|
||||
if (MythicLib.plugin.getVersion().isStrictlyHigher(1, 13))
|
||||
meta.setCustomModelData(getModelData());
|
||||
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
private void applyTexture(String value, SkullMeta meta) {
|
||||
try {
|
||||
GameProfile profile = new GameProfile(UUID.randomUUID(), null);
|
||||
profile.getProperties().put("textures", new Property("textures", value));
|
||||
|
||||
Field profileField = meta.getClass().getDeclaredField("profile");
|
||||
profileField.setAccessible(true);
|
||||
profileField.set(meta, profile);
|
||||
} catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException exception) {
|
||||
MMOCore.log(Level.WARNING, "Could not apply item texture value of " + getId());
|
||||
}
|
||||
}
|
||||
|
||||
public Placeholders getPlaceholders(T inv) {
|
||||
return getPlaceholders(inv, 0);
|
||||
}
|
||||
|
||||
public abstract Placeholders getPlaceholders(T inv, int n);
|
||||
}
|
||||
|
@ -1,132 +0,0 @@
|
||||
package net.Indyuce.mmocore.gui.api.item;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
|
||||
import com.mojang.authlib.GameProfile;
|
||||
import com.mojang.authlib.properties.Property;
|
||||
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.PluginInventory;
|
||||
import io.lumine.mythic.lib.MythicLib;
|
||||
|
||||
public abstract class InventoryPlaceholderItem extends InventoryItem {
|
||||
private final Material material;
|
||||
private final String name, texture;
|
||||
private final List<String> lore;
|
||||
private final int modelData;
|
||||
private final boolean placeholders, hideFlags;
|
||||
|
||||
public InventoryPlaceholderItem(ConfigurationSection config) {
|
||||
this(Material.valueOf(config.getString("item", "").toUpperCase().replace(" ", "_").replace("-", "_")), config);
|
||||
}
|
||||
|
||||
public InventoryPlaceholderItem(Material material, ConfigurationSection config) {
|
||||
super(config);
|
||||
|
||||
this.material = material;
|
||||
this.name = config.getString("name");
|
||||
this.lore = config.getStringList("lore");
|
||||
this.hideFlags = config.getBoolean("hide-flags");
|
||||
this.texture = config.getString("texture");
|
||||
this.placeholders = config.getBoolean("placeholders");
|
||||
this.modelData = config.getInt("custom-model-data");
|
||||
}
|
||||
|
||||
public Material getMaterial() {
|
||||
return material;
|
||||
}
|
||||
|
||||
public boolean hideFlags() {
|
||||
return hideFlags;
|
||||
}
|
||||
|
||||
public boolean hasName() {
|
||||
return name != null;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public boolean hasLore() {
|
||||
return lore != null && !lore.isEmpty();
|
||||
}
|
||||
|
||||
public List<String> getLore() {
|
||||
return lore;
|
||||
}
|
||||
|
||||
public int getModelData() {
|
||||
return modelData;
|
||||
}
|
||||
|
||||
public boolean supportPlaceholders() {
|
||||
return placeholders;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public Placeholders getPlaceholders(PluginInventory inv) {
|
||||
return getPlaceholders(inv, 0);
|
||||
}
|
||||
|
||||
public abstract Placeholders getPlaceholders(PluginInventory inv, int n);
|
||||
|
||||
@Override
|
||||
public ItemStack display(GeneratedInventory inv, int n) {
|
||||
|
||||
Placeholders placeholders = getPlaceholders(inv, n);
|
||||
ItemStack item = new ItemStack(material);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
|
||||
if (texture != null && meta instanceof SkullMeta)
|
||||
applyTexture(texture, (SkullMeta) meta);
|
||||
|
||||
if (hasName())
|
||||
meta.setDisplayName(placeholders.apply(inv.getPlayer(), getName()));
|
||||
|
||||
if (hideFlags())
|
||||
meta.addItemFlags(ItemFlag.values());
|
||||
|
||||
if (hasLore()) {
|
||||
List<String> lore = new ArrayList<>();
|
||||
getLore().forEach(line -> lore.add(ChatColor.GRAY + placeholders.apply(inv.getPlayer(), line)));
|
||||
meta.setLore(lore);
|
||||
}
|
||||
|
||||
if (MythicLib.plugin.getVersion().isStrictlyHigher(1, 13))
|
||||
meta.setCustomModelData(getModelData());
|
||||
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
private void applyTexture(String value, SkullMeta meta) {
|
||||
try {
|
||||
GameProfile profile = new GameProfile(UUID.randomUUID(), null);
|
||||
profile.getProperties().put("textures", new Property("textures", value));
|
||||
|
||||
Field profileField = meta.getClass().getDeclaredField("profile");
|
||||
profileField.setAccessible(true);
|
||||
profileField.set(meta, profile);
|
||||
} catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException exception) {
|
||||
MMOCore.log(Level.WARNING, "Could not apply item texture value of " + getId());
|
||||
}
|
||||
}
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
package net.Indyuce.mmocore.gui.api.item;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
|
||||
import net.Indyuce.mmocore.gui.api.PluginInventory;
|
||||
|
||||
public class NoPlaceholderItem extends InventoryPlaceholderItem {
|
||||
public NoPlaceholderItem(ConfigurationSection config) {
|
||||
super(config);
|
||||
}
|
||||
|
||||
public NoPlaceholderItem(Material material, ConfigurationSection config) {
|
||||
super(material, config);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
return new Placeholders();
|
||||
}
|
||||
}
|
@ -1,12 +1,11 @@
|
||||
package net.Indyuce.mmocore.gui.api.item;
|
||||
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
|
||||
public class Placeholders {
|
||||
private final Map<String, String> placeholders = new HashMap<>();
|
||||
|
||||
@ -16,16 +15,16 @@ public class Placeholders {
|
||||
|
||||
public String apply(Player player, String str) {
|
||||
|
||||
/*
|
||||
* remove potential conditions, apply color codes and external
|
||||
* placeholders if needed.
|
||||
*/
|
||||
/*
|
||||
* Remove potential conditions, apply color codes
|
||||
* and external placeholders if needed.
|
||||
*/
|
||||
str = MMOCore.plugin.placeholderParser.parse(player, removeCondition(str));
|
||||
|
||||
while (str.contains("{") && str.substring(str.indexOf("{")).contains("}")) {
|
||||
String holder = str.substring(str.indexOf("{") + 1, str.indexOf("}"));
|
||||
str = str.replace("{" + holder + "}", placeholders.getOrDefault(holder, "PHE"));
|
||||
}
|
||||
String holder = str.substring(str.indexOf("{") + 1, str.indexOf("}"));
|
||||
str = str.replace("{" + holder + "}", placeholders.getOrDefault(holder, "Error"));
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,20 @@
|
||||
package net.Indyuce.mmocore.gui.api.item;
|
||||
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
|
||||
public class SimplePlaceholderItem<T extends GeneratedInventory> extends InventoryItem<T> {
|
||||
public SimplePlaceholderItem(ConfigurationSection config) {
|
||||
super(config);
|
||||
}
|
||||
|
||||
public SimplePlaceholderItem(Material material, ConfigurationSection config) {
|
||||
super(material, config);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(T inv, int n) {
|
||||
return new Placeholders();
|
||||
}
|
||||
}
|
@ -1,27 +1,26 @@
|
||||
package net.Indyuce.mmocore.gui.api.item;
|
||||
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
|
||||
import io.lumine.mythic.lib.api.MMOLineConfig;
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.quest.trigger.Trigger;
|
||||
import net.Indyuce.mmocore.gui.api.PluginInventory;
|
||||
import io.lumine.mythic.lib.api.MMOLineConfig;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
|
||||
public class TriggerItem extends InventoryPlaceholderItem {
|
||||
private final Trigger trigger;
|
||||
|
||||
public TriggerItem(ConfigurationSection config, String format) {
|
||||
super(config);
|
||||
|
||||
trigger = MMOCore.plugin.loadManager.loadTrigger(new MMOLineConfig(format));
|
||||
}
|
||||
public class TriggerItem extends InventoryItem {
|
||||
private final Trigger trigger;
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
return new Placeholders();
|
||||
}
|
||||
|
||||
public Trigger getTrigger() {
|
||||
return trigger;
|
||||
}
|
||||
public TriggerItem(ConfigurationSection config, String format) {
|
||||
super(config);
|
||||
|
||||
trigger = MMOCore.plugin.loadManager.loadTrigger(new MMOLineConfig(format));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
return new Placeholders();
|
||||
}
|
||||
|
||||
public Trigger getTrigger() {
|
||||
return trigger;
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,17 @@
|
||||
package net.Indyuce.mmocore.gui.social.friend;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||
import io.lumine.mythic.lib.api.item.NBTItem;
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.api.util.input.PlayerInput.InputType;
|
||||
import net.Indyuce.mmocore.api.util.math.format.DelayFormat;
|
||||
import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
||||
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
|
||||
import net.Indyuce.mmocore.manager.InventoryManager;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
@ -14,20 +24,7 @@ import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.api.util.input.PlayerInput.InputType;
|
||||
import net.Indyuce.mmocore.api.util.math.format.DelayFormat;
|
||||
import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.PluginInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
||||
import net.Indyuce.mmocore.manager.InventoryManager;
|
||||
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||
import io.lumine.mythic.lib.api.item.NBTItem;
|
||||
import java.util.UUID;
|
||||
|
||||
public class EditableFriendList extends EditableInventory {
|
||||
public EditableFriendList() {
|
||||
@ -41,38 +38,42 @@ public class EditableFriendList extends EditableInventory {
|
||||
return new FriendItem(config);
|
||||
|
||||
if (function.equals("previous"))
|
||||
return new NoPlaceholderItem(config) {
|
||||
return new SimplePlaceholderItem<FriendListInventory>(config) {
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
return ((FriendListInventory) inv).page > 0;
|
||||
public boolean canDisplay(FriendListInventory inv) {
|
||||
return inv.page > 0;
|
||||
}
|
||||
};
|
||||
|
||||
if (function.equals("next"))
|
||||
return new NoPlaceholderItem(config) {
|
||||
return new SimplePlaceholderItem<FriendListInventory>(config) {
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
FriendListInventory generated = (FriendListInventory) inv;
|
||||
return inv.getEditable().getByFunction("friend").getSlots().size() * generated.page < inv.getPlayerData().getFriends().size();
|
||||
public boolean canDisplay(FriendListInventory inv) {
|
||||
return inv.getEditable().getByFunction("friend").getSlots().size() * inv.page < inv.getPlayerData().getFriends().size();
|
||||
}
|
||||
};
|
||||
|
||||
return new NoPlaceholderItem(config);
|
||||
return new SimplePlaceholderItem(config);
|
||||
}
|
||||
|
||||
public GeneratedInventory newInventory(PlayerData data) {
|
||||
return new FriendListInventory(data, this);
|
||||
}
|
||||
|
||||
public static class OfflineFriendItem extends InventoryPlaceholderItem {
|
||||
public static class OfflineFriendItem extends InventoryItem {
|
||||
public OfflineFriendItem(ConfigurationSection config) {
|
||||
super(config);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
public boolean hasDifferentDisplay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(GeneratedInventory inv, int n) {
|
||||
OfflinePlayer friend = Bukkit.getOfflinePlayer(inv.getPlayerData().getFriends().get(n));
|
||||
|
||||
Placeholders holders = new Placeholders();
|
||||
@ -98,18 +99,23 @@ public class EditableFriendList extends EditableInventory {
|
||||
}
|
||||
}
|
||||
|
||||
public static class OnlineFriendItem extends InventoryPlaceholderItem {
|
||||
public static class OnlineFriendItem extends SimplePlaceholderItem {
|
||||
public OnlineFriendItem(ConfigurationSection config) {
|
||||
super(config);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
public boolean hasDifferentDisplay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(GeneratedInventory inv, int n) {
|
||||
Player friend = Bukkit.getPlayer(inv.getPlayerData().getFriends().get(n));
|
||||
PlayerData data = PlayerData.get(friend);
|
||||
|
||||
Placeholders holders = new Placeholders();
|
||||
if(data.isOnline())
|
||||
if (data.isOnline())
|
||||
holders.register("name", data.getPlayer().getName());
|
||||
holders.register("class", data.getProfess().getName());
|
||||
holders.register("level", data.getLevel());
|
||||
@ -134,7 +140,7 @@ public class EditableFriendList extends EditableInventory {
|
||||
}
|
||||
}
|
||||
|
||||
public static class FriendItem extends NoPlaceholderItem {
|
||||
public static class FriendItem extends SimplePlaceholderItem {
|
||||
private final OnlineFriendItem online;
|
||||
private final OfflineFriendItem offline;
|
||||
|
||||
|
@ -1,19 +1,16 @@
|
||||
package net.Indyuce.mmocore.gui.social.friend;
|
||||
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.player.OfflinePlayerData;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.PluginInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
|
||||
public class EditableFriendRemoval extends EditableInventory {
|
||||
public EditableFriendRemoval() {
|
||||
@ -23,16 +20,16 @@ public class EditableFriendRemoval extends EditableInventory {
|
||||
@Override
|
||||
public InventoryItem load(String function, ConfigurationSection config) {
|
||||
|
||||
return new InventoryPlaceholderItem(config) {
|
||||
return new InventoryItem<ClassConfirmationInventory>(config) {
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
Placeholders holders = new Placeholders();
|
||||
holders.register("name", ((ClassConfirmationInventory) inv).friend.getName());
|
||||
return holders;
|
||||
}
|
||||
};
|
||||
}
|
||||
@Override
|
||||
public Placeholders getPlaceholders(ClassConfirmationInventory inv, int n) {
|
||||
Placeholders holders = new Placeholders();
|
||||
holders.register("name", inv.friend.getName());
|
||||
return holders;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public GeneratedInventory newInventory(PlayerData data, OfflinePlayer friend, GeneratedInventory last) {
|
||||
return new ClassConfirmationInventory(data, this, friend, last);
|
||||
|
@ -1,7 +1,16 @@
|
||||
package net.Indyuce.mmocore.gui.social.guild;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||
import io.lumine.mythic.lib.api.item.NBTItem;
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.api.util.input.PlayerInput.InputType;
|
||||
import net.Indyuce.mmocore.api.util.math.format.DelayFormat;
|
||||
import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
||||
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
@ -14,19 +23,7 @@ import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.api.util.input.PlayerInput.InputType;
|
||||
import net.Indyuce.mmocore.api.util.math.format.DelayFormat;
|
||||
import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.PluginInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
||||
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||
import io.lumine.mythic.lib.api.item.NBTItem;
|
||||
import java.util.UUID;
|
||||
|
||||
public class EditableGuildAdmin extends EditableInventory {
|
||||
public EditableGuildAdmin() {
|
||||
@ -35,21 +32,30 @@ public class EditableGuildAdmin extends EditableInventory {
|
||||
|
||||
@Override
|
||||
public InventoryItem load(String function, ConfigurationSection config) {
|
||||
return function.equals("member") ? new MemberItem(config) : new NoPlaceholderItem(config);
|
||||
return function.equals("member") ? new MemberItem(config) : new SimplePlaceholderItem(config);
|
||||
}
|
||||
|
||||
public static class MemberDisplayItem extends InventoryPlaceholderItem {
|
||||
public GeneratedInventory newInventory(PlayerData data) {
|
||||
return new GuildViewInventory(data, this);
|
||||
}
|
||||
|
||||
public static class MemberDisplayItem extends InventoryItem {
|
||||
public MemberDisplayItem(ConfigurationSection config) {
|
||||
super(config);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
public boolean hasDifferentDisplay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(GeneratedInventory inv, int n) {
|
||||
PlayerData member = PlayerData.get(inv.getPlayerData().getGuild().getMembers().get(n));
|
||||
|
||||
Placeholders holders = new Placeholders();
|
||||
|
||||
if(member.isOnline())
|
||||
if (member.isOnline())
|
||||
holders.register("name", member.getPlayer().getName());
|
||||
holders.register("class", member.getProfess().getName());
|
||||
holders.register("level", "" + member.getLevel());
|
||||
@ -66,7 +72,7 @@ public class EditableGuildAdmin extends EditableInventory {
|
||||
|
||||
if (meta instanceof SkullMeta)
|
||||
Bukkit.getScheduler().runTaskAsynchronously(MMOCore.plugin, () -> {
|
||||
if(!member.isOnline()) return;
|
||||
if (!member.isOnline()) return;
|
||||
((SkullMeta) meta).setOwningPlayer(member.getPlayer());
|
||||
disp.setItemMeta(meta);
|
||||
});
|
||||
@ -75,8 +81,8 @@ public class EditableGuildAdmin extends EditableInventory {
|
||||
}
|
||||
}
|
||||
|
||||
public static class MemberItem extends InventoryItem {
|
||||
private final InventoryPlaceholderItem empty;
|
||||
public static class MemberItem extends SimplePlaceholderItem {
|
||||
private final InventoryItem empty;
|
||||
private final MemberDisplayItem member;
|
||||
|
||||
public MemberItem(ConfigurationSection config) {
|
||||
@ -85,7 +91,7 @@ public class EditableGuildAdmin extends EditableInventory {
|
||||
Validate.notNull(config.contains("empty"), "Could not load empty config");
|
||||
Validate.notNull(config.contains("member"), "Could not load member config");
|
||||
|
||||
empty = new NoPlaceholderItem(config.getConfigurationSection("empty"));
|
||||
empty = new SimplePlaceholderItem(config.getConfigurationSection("empty"));
|
||||
member = new MemberDisplayItem(config.getConfigurationSection("member"));
|
||||
}
|
||||
|
||||
@ -98,15 +104,6 @@ public class EditableGuildAdmin extends EditableInventory {
|
||||
public boolean hasDifferentDisplay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public GeneratedInventory newInventory(PlayerData data) {
|
||||
return new GuildViewInventory(data, this);
|
||||
}
|
||||
|
||||
public class GuildViewInventory extends GeneratedInventory {
|
||||
|
@ -1,19 +1,18 @@
|
||||
package net.Indyuce.mmocore.gui.social.guild;
|
||||
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.api.util.input.PlayerInput.InputType;
|
||||
import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
|
||||
import net.Indyuce.mmocore.manager.InventoryManager;
|
||||
import net.Indyuce.mmocore.manager.data.GuildDataManager.GuildConfiguration.NamingRules;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
|
||||
public class EditableGuildCreation extends EditableInventory {
|
||||
public EditableGuildCreation() {
|
||||
@ -22,8 +21,8 @@ public class EditableGuildCreation extends EditableInventory {
|
||||
|
||||
@Override
|
||||
public InventoryItem load(String function, ConfigurationSection config) {
|
||||
return new NoPlaceholderItem(config);
|
||||
}
|
||||
return new SimplePlaceholderItem(config);
|
||||
}
|
||||
|
||||
public GeneratedInventory newInventory(PlayerData data) {
|
||||
return new GuildCreationInventory(data, this);
|
||||
|
@ -1,7 +1,17 @@
|
||||
package net.Indyuce.mmocore.gui.social.guild;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||
import io.lumine.mythic.lib.api.item.NBTItem;
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.player.OfflinePlayerData;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.api.util.input.PlayerInput.InputType;
|
||||
import net.Indyuce.mmocore.api.util.math.format.DelayFormat;
|
||||
import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
||||
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
@ -14,20 +24,7 @@ import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.player.OfflinePlayerData;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.api.util.input.PlayerInput.InputType;
|
||||
import net.Indyuce.mmocore.api.util.math.format.DelayFormat;
|
||||
import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.PluginInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
||||
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||
import io.lumine.mythic.lib.api.item.NBTItem;
|
||||
import java.util.UUID;
|
||||
|
||||
public class EditableGuildView extends EditableInventory {
|
||||
public EditableGuildView() {
|
||||
@ -36,16 +33,21 @@ public class EditableGuildView extends EditableInventory {
|
||||
|
||||
@Override
|
||||
public InventoryItem load(String function, ConfigurationSection config) {
|
||||
return function.equals("member") ? new MemberItem(config) : (function.equals("next") || function.equals("previous") || function.equals("disband") || function.equals("invite")) ? new ConditionalItem(function, config) : new NoPlaceholderItem(config);
|
||||
return function.equals("member") ? new MemberItem(config) : (function.equals("next") || function.equals("previous") || function.equals("disband") || function.equals("invite")) ? new ConditionalItem(function, config) : new SimplePlaceholderItem(config);
|
||||
}
|
||||
|
||||
public static class MemberDisplayItem extends InventoryPlaceholderItem {
|
||||
public static class MemberDisplayItem extends InventoryItem {
|
||||
public MemberDisplayItem(ConfigurationSection config) {
|
||||
super(config);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
public boolean hasDifferentDisplay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(GeneratedInventory inv, int n) {
|
||||
UUID uuid = inv.getPlayerData().getGuild().getMembers().get(n);
|
||||
Placeholders holders = new Placeholders();
|
||||
/*
|
||||
@ -79,8 +81,8 @@ public class EditableGuildView extends EditableInventory {
|
||||
}
|
||||
}
|
||||
|
||||
public class MemberItem extends InventoryItem {
|
||||
private final InventoryPlaceholderItem empty;
|
||||
public class MemberItem extends SimplePlaceholderItem<GuildViewInventory> {
|
||||
private final InventoryItem empty;
|
||||
private final MemberDisplayItem member;
|
||||
|
||||
public MemberItem(ConfigurationSection config) {
|
||||
@ -89,13 +91,13 @@ public class EditableGuildView extends EditableInventory {
|
||||
Validate.notNull(config.contains("empty"), "Could not load empty config");
|
||||
Validate.notNull(config.contains("member"), "Could not load member config");
|
||||
|
||||
empty = new NoPlaceholderItem(config.getConfigurationSection("empty"));
|
||||
empty = new SimplePlaceholderItem(config.getConfigurationSection("empty"));
|
||||
member = new MemberDisplayItem(config.getConfigurationSection("member"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack display(GeneratedInventory inv, int n) {
|
||||
int index = n * ((GuildViewInventory) inv).getPage();
|
||||
public ItemStack display(GuildViewInventory inv, int n) {
|
||||
int index = n * inv.getPage();
|
||||
return inv.getPlayerData().getGuild().getMembers().count() > index ? member.display(inv, index) : empty.display(inv, index);
|
||||
}
|
||||
|
||||
@ -103,14 +105,9 @@ public class EditableGuildView extends EditableInventory {
|
||||
public boolean hasDifferentDisplay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDisplay(GeneratedInventory inv) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public class ConditionalItem extends NoPlaceholderItem {
|
||||
public class ConditionalItem extends SimplePlaceholderItem {
|
||||
private final String function;
|
||||
|
||||
public ConditionalItem(String func, ConfigurationSection config) {
|
||||
|
@ -1,16 +1,15 @@
|
||||
package net.Indyuce.mmocore.gui.social.party;
|
||||
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
|
||||
import net.Indyuce.mmocore.manager.InventoryManager;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
|
||||
public class EditablePartyCreation extends EditableInventory {
|
||||
public EditablePartyCreation() {
|
||||
@ -19,8 +18,8 @@ public class EditablePartyCreation extends EditableInventory {
|
||||
|
||||
@Override
|
||||
public InventoryItem load(String function, ConfigurationSection config) {
|
||||
return new NoPlaceholderItem(config);
|
||||
}
|
||||
return new SimplePlaceholderItem(config);
|
||||
}
|
||||
|
||||
public GeneratedInventory newInventory(PlayerData data) {
|
||||
return new ClassConfirmationInventory(data, this);
|
||||
|
@ -10,9 +10,8 @@ import net.Indyuce.mmocore.gui.api.EditableInventory;
|
||||
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
|
||||
import net.Indyuce.mmocore.gui.api.PluginInventory;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.InventoryPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.NoPlaceholderItem;
|
||||
import net.Indyuce.mmocore.gui.api.item.Placeholders;
|
||||
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
@ -28,7 +27,6 @@ import org.bukkit.inventory.meta.SkullMeta;
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
|
||||
public class EditablePartyView extends EditableInventory {
|
||||
public EditablePartyView() {
|
||||
super("party-view");
|
||||
@ -36,20 +34,25 @@ public class EditablePartyView extends EditableInventory {
|
||||
|
||||
@Override
|
||||
public InventoryItem load(String function, ConfigurationSection config) {
|
||||
return function.equals("member") ? new MemberItem(config) : new NoPlaceholderItem(config);
|
||||
return function.equals("member") ? new MemberItem(config) : new SimplePlaceholderItem(config);
|
||||
}
|
||||
|
||||
public static class MemberDisplayItem extends InventoryPlaceholderItem {
|
||||
public static class MemberDisplayItem extends InventoryItem {
|
||||
public MemberDisplayItem(ConfigurationSection config) {
|
||||
super(config);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(PluginInventory inv, int n) {
|
||||
public boolean hasDifferentDisplay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(GeneratedInventory inv, int n) {
|
||||
PlayerData member = inv.getPlayerData().getParty().getMembers().get(n);
|
||||
|
||||
Placeholders holders = new Placeholders();
|
||||
if(member.isOnline())
|
||||
if (member.isOnline())
|
||||
holders.register("name", member.getPlayer().getName());
|
||||
holders.register("class", member.getProfess().getName());
|
||||
holders.register("level", "" + member.getLevel());
|
||||
@ -69,7 +72,7 @@ public class EditablePartyView extends EditableInventory {
|
||||
*/
|
||||
if (meta instanceof SkullMeta)
|
||||
Bukkit.getScheduler().runTaskAsynchronously(MMOCore.plugin, () -> {
|
||||
if(!member.isOnline()) return;
|
||||
if (!member.isOnline()) return;
|
||||
((SkullMeta) meta).setOwningPlayer(member.getPlayer());
|
||||
disp.setItemMeta(meta);
|
||||
});
|
||||
@ -78,8 +81,8 @@ public class EditablePartyView extends EditableInventory {
|
||||
}
|
||||
}
|
||||
|
||||
public static class MemberItem extends InventoryItem {
|
||||
private final InventoryPlaceholderItem empty;
|
||||
public static class MemberItem extends SimplePlaceholderItem {
|
||||
private final InventoryItem empty;
|
||||
private final MemberDisplayItem member;
|
||||
|
||||
public MemberItem(ConfigurationSection config) {
|
||||
@ -88,7 +91,7 @@ public class EditablePartyView extends EditableInventory {
|
||||
Validate.notNull(config.contains("empty"), "Could not load empty config");
|
||||
Validate.notNull(config.contains("member"), "Could not load member config");
|
||||
|
||||
empty = new NoPlaceholderItem(config.getConfigurationSection("empty"));
|
||||
empty = new SimplePlaceholderItem(config.getConfigurationSection("empty"));
|
||||
member = new MemberDisplayItem(config.getConfigurationSection("member"));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user