Skip to content

Commit 9f74a3d

Browse files
committedNov 8, 2023
Added Header Menu Options
Header Menu Item material, custom item data, count, lore, and name are now all configurable. Count, lore, and name for Header Menu Item are parsed through PAPI first. Lore and Name support Mini-Message. Requires Testing
1 parent 82711e3 commit 9f74a3d

File tree

3 files changed

+55
-5
lines changed

3 files changed

+55
-5
lines changed
 

‎src/main/java/simplexity/simpleprefixes/config/Config.java

+32
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
11
package simplexity.simpleprefixes.config;
22

3+
import me.clip.placeholderapi.PlaceholderAPI;
4+
import net.kyori.adventure.text.Component;
5+
import org.bukkit.Material;
6+
import org.bukkit.inventory.ItemStack;
7+
import org.bukkit.inventory.meta.ItemMeta;
38
import simplexity.simpleprefixes.SimplePrefixes;
49
import simplexity.simpleprefixes.util.Message;
510
import org.bukkit.configuration.file.FileConfiguration;
11+
;
12+
import java.util.ArrayList;
13+
import java.util.Collections;
14+
import java.util.List;
615

716

817
public class Config {
@@ -11,6 +20,10 @@ public enum SAVING_TYPE { PDC, FILE }
1120
private static SAVING_TYPE savingType = SAVING_TYPE.PDC;
1221
private static String defaultPrefix = "<white>[<gray>Player</gray>]</white> ";
1322
private static String prefixMenuName = "<bold>Prefix Menu</bold>";
23+
private static ItemStack headerItem;
24+
private static String headerName = "<aqua>Click to Reset Prefix</aqua>";
25+
private static List<String> headerLore = new ArrayList<>();
26+
private static String headerCount = "1";
1427

1528
public static void loadConfig() {
1629
SimplePrefixes.getPlugin().reloadConfig();
@@ -22,10 +35,29 @@ public static void loadConfig() {
2235
}
2336
defaultPrefix = config.getString("default-prefix", defaultPrefix);
2437
prefixMenuName = config.getString("prefix-menu-name", prefixMenuName);
38+
generateBaseHeaderItem();
39+
headerName = config.getString("header.name", "<aqua>Click to Reset Prefix</aqua>");
40+
headerLore = config.getStringList("header.lore");
41+
headerCount = config.getString("header.count", "1");
42+
}
43+
44+
public static void generateBaseHeaderItem() {
45+
FileConfiguration config = SimplePrefixes.getPlugin().getConfig();
46+
Material material = Material.getMaterial(config.getString("header.material", "ENDER_EYE"));
47+
headerItem = material != null ? new ItemStack(material) : new ItemStack(Material.ENDER_EYE);
48+
if (config.isInt("header.custom-model-data")) {
49+
ItemMeta meta = headerItem.getItemMeta();
50+
meta.setCustomModelData(config.getInt("header.custom-model-data"));
51+
headerItem.setItemMeta(meta);
52+
}
2553
}
2654

2755
public static SAVING_TYPE getSavingType() { return savingType; }
2856
public static String getDefaultPrefix() { return defaultPrefix; }
2957
public static String getPrefixMenuName() { return prefixMenuName; }
58+
public static ItemStack getHeaderItem() { return headerItem.clone(); }
59+
public static String getHeaderName() { return headerName; }
60+
public static List<String> getHeaderLore() { return Collections.unmodifiableList(headerLore); }
61+
public static String getHeaderCount() { return headerCount; }
3062

3163
}

‎src/main/java/simplexity/simpleprefixes/gui/chest/PrefixMenu.java

+15-5
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public Inventory generatePrefixMenu(Player p, int page) {
4848
}
4949
List<String> prefixes = getPlayerPrefixOptions(p);
5050
inv.setItem(0, generatePageArrowItem(page, prefixes.size(), false));
51-
inv.setItem(4, generateHeaderItem());
51+
inv.setItem(4, generateHeaderItem(p));
5252
inv.setItem(8, generatePageArrowItem(page, prefixes.size(), true));
5353

5454
int start = (page - 1) * PER_PAGE;
@@ -117,12 +117,22 @@ private ItemStack generatePageArrowItem(int page, int prefixes, boolean forward)
117117
return item;
118118
}
119119

120-
private ItemStack generateHeaderItem() {
121-
ItemStack item = new ItemStack(Material.ENDER_EYE);
122-
// TODO: Set name and description through config.
120+
private ItemStack generateHeaderItem(Player p) {
121+
ItemStack item = Config.getHeaderItem();
123122
ItemMeta meta = item.getItemMeta();
124123
meta.getPersistentDataContainer().set(nskPrefixMenu, PersistentDataType.BYTE, (byte) 1);
125-
meta.displayName(mini.deserialize("<!i><aqua>Click to Reset Your Prefix</aqua>"));
124+
meta.displayName(mini.deserialize("<!i>" + PlaceholderAPI.setPlaceholders(p, Config.getHeaderName())));
125+
List<Component> loreLines = new ArrayList<>();
126+
for (String line : Config.getHeaderLore()) {
127+
loreLines.add(mini.deserialize("<!i><white>" + PlaceholderAPI.setPlaceholders(p, line)));
128+
}
129+
meta.lore(loreLines);
130+
try {
131+
int count = Integer.parseInt(PlaceholderAPI.setPlaceholders(p, Config.getHeaderCount()));
132+
item = item.asQuantity(count);
133+
} catch (NumberFormatException e) {
134+
SimplePrefixes.getPrefixLogger().warning("Header input type does not produce a number.");
135+
}
126136
item.setItemMeta(meta);
127137
return item;
128138
}

‎src/main/resources/config.yml

+8
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,11 @@ debug-level: 0
1111
saving-type: "file"
1212
default-prefix: "<white>[<gray>Player</gray>]</white> "
1313
prefix-menu-name: "<bold>Prefix Menu</bold>"
14+
15+
# Header Item
16+
header:
17+
name: "<aqua>Click to Reset Your Prefix</aqua>"
18+
lore: []
19+
material: ENDER_EYE
20+
count: 1
21+
custom-model-data: null

0 commit comments

Comments
 (0)
Please sign in to comment.