1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
package me.fatpigsarefat.quests.obj.misc;
import me.fatpigsarefat.quests.Quests;
import me.fatpigsarefat.quests.obj.Items;
import me.fatpigsarefat.quests.obj.Options;
import me.fatpigsarefat.quests.player.QPlayer;
import me.fatpigsarefat.quests.player.questprogressfile.QuestProgress;
import me.fatpigsarefat.quests.quests.Quest;
import org.bukkit.Bukkit;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
public class QMenuDaily implements QMenu {
private HashMap<Integer, String> slotsToQuestIds = new HashMap<>();
private int backButtonLocation = -1;
private boolean backButtonEnabled = true;
private QMenuCategory superMenu;
private String categoryName;
private final int pageSize = 45;
private QPlayer owner;
public QMenuDaily(QPlayer owner, QMenuCategory superMenu) {
this.owner = owner;
this.superMenu = superMenu;
}
public void populate(List<Quest> quests) {
int slot = 11;
for (Quest quest : quests) {
slotsToQuestIds.put(slot, quest.getId());
slot++;
if (slot == 16) {
break;
}
}
}
@Override
public HashMap<Integer, String> getSlotsToMenu() {
return slotsToQuestIds;
}
@Override
public QPlayer getOwner() {
return owner;
}
public String getCategoryName() {
return categoryName;
}
public Inventory toInventory(int page) {
int pageMin = pageSize * (page - 1);
int pageMax = pageSize * page;
String title = Options.GUITITLE_DAILY_QUESTS.toString();
Inventory inventory = Bukkit.createInventory(null, 27, title);
//TODO daily quests
// int invSlot = 11;
// for (int pointer = pageMin; pointer < pageMax; pointer++) {
// if (slotsToQuestIds.containsKey(pointer)) {
// Quest quest = Quests.getQuestManager().getQuestById(slotsToQuestIds.get(pointer));
// QuestProgress questProgress = owner.getQuestProgressFile().getQuestProgress(quest);
// long cooldown = owner.getQuestProgressFile().getCooldownFor(quest);
// if (!owner.getQuestProgressFile().hasMetRequirements(quest)) {
// List<String> quests = new ArrayList<>();
// for (String requirement : quest.getRequirements()) {
// quests.add(Quests.getQuestManager().getQuestById(requirement).getDisplayNameStripped());
// }
// Map<String, String> placeholders = new HashMap<>();
// placeholders.put("{quest}", quest.getDisplayNameStripped());
// placeholders.put("{requirements}", String.join(", ", quests));
// ItemStack is = replaceItemStack(Items.QUEST_LOCKED.getItem(), placeholders);
// inventory.setItem(invSlot, is);
// } else if (!quest.isRepeatable() && questProgress.isCompletedBefore()) {
// Map<String, String> placeholders = new HashMap<>();
// placeholders.put("{quest}", quest.getDisplayNameStripped());
// ItemStack is = replaceItemStack(Items.QUEST_COMPLETED.getItem(), placeholders);
// inventory.setItem(invSlot, is);
// } else if (cooldown > 0) {
// Map<String, String> placeholders = new HashMap<>();
// placeholders.put("{time}", Quests.convertToFormat(TimeUnit.MINUTES.convert(cooldown, TimeUnit.MILLISECONDS)));
// placeholders.put("{quest}", quest.getDisplayNameStripped());
// ItemStack is = replaceItemStack(Items.QUEST_COOLDOWN.getItem(), placeholders);
// inventory.setItem(invSlot, is);
// } else {
// inventory.setItem(invSlot, Quests.getQuestManager().getQuestById(quest.getId()).getDisplayItem().toItemStack(questProgress));
// }
// }
// invSlot++;
// }
return inventory;
}
public ItemStack replaceItemStack(ItemStack is, Map<String, String> placeholders) {
ItemStack newItemStack = is.clone();
List<String> lore = newItemStack.getItemMeta().getLore();
List<String> newLore = new ArrayList<>();
for (String s : lore) {
for (Map.Entry<String, String> entry : placeholders.entrySet()) {
s = s.replace(entry.getKey(), entry.getValue());
}
newLore.add(s);
}
ItemMeta ism = newItemStack.getItemMeta();
ism.setLore(newLore);
newItemStack.setItemMeta(ism);
return newItemStack;
}
}
|