mirror of
https://gitlab.com/phoenix-dvpmt/mmocore.git
synced 2025-02-12 13:01:32 +01:00
Fixed quest GUI showing dupes
This commit is contained in:
parent
88760db078
commit
0e365c58c8
@ -95,25 +95,25 @@ public class QuestViewer extends EditableInventory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack display(GeneratedInventory inv, int n) {
|
||||
public ItemStack display(GeneratedInventory inv, int itemIndex) {
|
||||
final QuestInventory list = (QuestInventory) inv;
|
||||
final int index = list.page * list.perPage + itemIndex;
|
||||
|
||||
QuestInventory list = (QuestInventory) inv;
|
||||
int index = list.page * list.perPage + n;
|
||||
if (index >= list.quests.size())
|
||||
return noQuest.display(inv, n);
|
||||
return noQuest.display(inv, itemIndex);
|
||||
|
||||
Quest quest = list.quests.get(index);
|
||||
if (quest.hasParent() && !inv.getPlayerData().getQuestData().checkParentAvailability(quest))
|
||||
return locked.display(inv, n);
|
||||
return locked.display(inv, itemIndex);
|
||||
|
||||
List<String> lore = new ArrayList<>(getLore());
|
||||
|
||||
// Replace quest lore
|
||||
index = lore.indexOf("{lore}");
|
||||
if (index >= 0) {
|
||||
lore.remove(index);
|
||||
int loreIndex = lore.indexOf("{lore}");
|
||||
if (loreIndex >= 0) {
|
||||
lore.remove(loreIndex);
|
||||
for (int j = 0; j < quest.getLore().size(); j++)
|
||||
lore.add(index + j, quest.getLore().get(j));
|
||||
lore.add(loreIndex + j, quest.getLore().get(j));
|
||||
}
|
||||
|
||||
// Calculate lore for later
|
||||
@ -130,38 +130,39 @@ public class QuestViewer extends EditableInventory {
|
||||
|| (next.startsWith("{completed_delay}") && !(completed && !cooldown)));
|
||||
|
||||
// Replace level requirements
|
||||
index = lore.indexOf("{level_req}{level_requirements}");
|
||||
if (index >= 0) {
|
||||
lore.remove(index);
|
||||
loreIndex = lore.indexOf("{level_req}{level_requirements}");
|
||||
if (loreIndex >= 0) {
|
||||
lore.remove(loreIndex);
|
||||
int mainRequired = quest.getLevelRestriction(null);
|
||||
if (mainRequired > 0)
|
||||
lore.add(index, (inv.getPlayerData().getLevel() >= mainRequired ? mainHit : mainNotHit).replace("{level}", "" + mainRequired));
|
||||
lore.add(loreIndex, (inv.getPlayerData().getLevel() >= mainRequired ? mainHit : mainNotHit).replace("{level}", "" + mainRequired));
|
||||
|
||||
for (Profession profession : quest.getLevelRestrictions()) {
|
||||
int required = quest.getLevelRestriction(profession);
|
||||
lore.add(index + (mainRequired > 0 ? 1 : 0),
|
||||
lore.add(loreIndex + (mainRequired > 0 ? 1 : 0),
|
||||
(inv.getPlayerData().getCollectionSkills().getLevel(profession) >= required ? professionHit : professionNotHit)
|
||||
.replace("{level}", "" + required).replace("{profession}", profession.getName()));
|
||||
}
|
||||
}
|
||||
|
||||
Placeholders holders = getPlaceholders(inv, n);
|
||||
Placeholders holders = getPlaceholders(inv, itemIndex);
|
||||
for (int j = 0; j < lore.size(); j++)
|
||||
lore.set(j, ChatColor.GRAY + holders.apply(inv.getPlayer(), lore.get(j)));
|
||||
|
||||
// Generate item
|
||||
ItemStack item = super.display(inv, n);
|
||||
ItemStack item = super.display(inv, itemIndex);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setLore(lore);
|
||||
meta.getPersistentDataContainer().set(new NamespacedKey(MMOCore.plugin, "quest_id"), PersistentDataType.STRING,quest.getId());
|
||||
meta.getPersistentDataContainer().set(new NamespacedKey(MMOCore.plugin, "quest_id"), PersistentDataType.STRING, quest.getId());
|
||||
item.setItemMeta(meta);
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Placeholders getPlaceholders(GeneratedInventory inv, int n) {
|
||||
Quest quest = ((QuestInventory) inv).quests.get(n);
|
||||
public Placeholders getPlaceholders(GeneratedInventory inv, int itemIndex) {
|
||||
final QuestInventory list = (QuestInventory) inv;
|
||||
final Quest quest = ((QuestInventory) inv).quests.get(list.page * list.perPage + itemIndex);
|
||||
PlayerData data = inv.getPlayerData();
|
||||
|
||||
Placeholders holders = new Placeholders();
|
||||
@ -218,8 +219,8 @@ public class QuestViewer extends EditableInventory {
|
||||
|
||||
if (item.getFunction().equals("quest")) {
|
||||
String questId = context.getClickedItem().getItemMeta().getPersistentDataContainer()
|
||||
.get(new NamespacedKey(MMOCore.plugin,"quest_id"), PersistentDataType.STRING);
|
||||
if (questId==null||questId.equals(""))
|
||||
.get(new NamespacedKey(MMOCore.plugin, "quest_id"), PersistentDataType.STRING);
|
||||
if (questId == null || questId.equals(""))
|
||||
return;
|
||||
|
||||
Quest quest = MMOCore.plugin.questManager.get(questId);
|
||||
|
Loading…
Reference in New Issue
Block a user