Skip to content

Commit 39acbd7

Browse files
committed
Fixed issue where potions dont show in custom kit item editor
1 parent 74cb89d commit 39acbd7

7 files changed

Lines changed: 77 additions & 27 deletions

File tree

Plugin/src/main/java/com/jonahseguin/drink/parametric/CommandParameters.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,16 @@
66
public record CommandParameters(int count, CommandParameter[] parameters) {
77

88
public CommandParameters(Method method) {
9+
this(method.getParameterCount(), buildParameters(method));
10+
}
11+
12+
private static CommandParameter[] buildParameters(Method method) {
913
CommandParameter[] parameters = new CommandParameter[method.getParameters().length];
1014
for (int i = 0; i < method.getParameters().length; i++) {
1115
Parameter param = method.getParameters()[i];
1216
parameters[i] = new CommandParameter(param.getType(), param, method.getParameterAnnotations()[i]);
1317
}
14-
this(method.getParameterCount(), parameters);
18+
return parameters;
1519
}
1620

1721
public boolean isLastArgument(int index) {

Plugin/src/main/java/dev/lrxh/neptune/feature/customkit/menu/CustomKitEditorMenu.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ public void onClick(ClickType type, Player p) {
9999
}
100100
return;
101101
}
102-
ItemBrowserService.get().openBrowser(p, section, material -> {
103-
kit.setItemAt(contentsIndex, new ItemStack(material));
102+
ItemBrowserService.get().openItemBrowser(p, section, selected -> {
103+
kit.setItemAt(contentsIndex, selected);
104104
save(p);
105105
new CustomKitEditorMenu(kit).open(p);
106106
}, () -> new CustomKitEditorMenu(kit).open(p));

Plugin/src/main/java/dev/lrxh/neptune/feature/customkit/menu/CustomKitManageMenu.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ public List<Button> getButtons(Player player) {
6565
buttons.add(action(MenusLocale.CUSTOM_KIT_MANAGE_ICON_SLOT.getInt(),
6666
new ItemBuilder(MenusLocale.CUSTOM_KIT_MANAGE_ICON_MATERIAL.getString())
6767
.name(MenusLocale.CUSTOM_KIT_MANAGE_ICON_NAME.getString()).build(),
68-
p -> ItemBrowserService.get().openBrowser(p, "items", material -> {
69-
kit.setIcon(new ItemStack(material));
68+
p -> ItemBrowserService.get().openItemBrowser(p, "items", item -> {
69+
kit.setIcon(item);
7070
save(p);
7171
new CustomKitManageMenu(kit).open(p);
7272
}, () -> new CustomKitManageMenu(kit).open(p))));

Plugin/src/main/java/dev/lrxh/neptune/feature/itembrowser/ItemBrowserMenu.java

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.bukkit.entity.Player;
1010
import org.bukkit.event.inventory.ClickType;
1111
import org.bukkit.inventory.ItemStack;
12+
import org.bukkit.inventory.meta.PotionMeta;
1213

1314
import java.util.ArrayList;
1415
import java.util.List;
@@ -18,11 +19,11 @@ public class ItemBrowserMenu extends PaginatedMenu {
1819

1920
private final ItemBrowserService service;
2021
private final String section;
21-
private final Consumer<Material> itemConsumer;
22+
private final Consumer<ItemStack> itemConsumer;
2223
private final Runnable returnConsumer;
2324
private final String search;
2425

25-
public ItemBrowserMenu(ItemBrowserService service, String section, Consumer<Material> itemConsumer, String search,
26+
public ItemBrowserMenu(ItemBrowserService service, String section, Consumer<ItemStack> itemConsumer, String search,
2627
Runnable returnConsumer) {
2728
super("&fItem Browser", 54, Filter.NONE);
2829
this.service = service;
@@ -32,8 +33,8 @@ public ItemBrowserMenu(ItemBrowserService service, String section, Consumer<Mate
3233
this.returnConsumer = returnConsumer;
3334
}
3435

35-
private static String formatName(Material material) {
36-
String[] words = material.name().toLowerCase().split("_");
36+
private static String formatName(String raw) {
37+
String[] words = raw.toLowerCase().split("_");
3738
StringBuilder sb = new StringBuilder();
3839
for (String word : words) {
3940
if (word.isEmpty()) continue;
@@ -42,32 +43,42 @@ private static String formatName(Material material) {
4243
return sb.toString().trim();
4344
}
4445

46+
private static String displayName(ItemStack item) {
47+
String base = formatName(item.getType().name());
48+
if (item.getItemMeta() instanceof PotionMeta meta && meta.getBasePotionType() != null) {
49+
return base + " - " + formatName(meta.getBasePotionType().name());
50+
}
51+
return base;
52+
}
53+
4554
@Override
4655
public List<Button> getAllPagesButtons(Player player) {
47-
List<Material> items = service.getItems(section);
56+
List<ItemStack> items = service.getItemStacks(section);
4857
if (!search.isEmpty()) {
4958
String q = search.toLowerCase();
5059
items = items.stream()
51-
.filter(mat -> mat.name().toLowerCase().contains(q) || formatName(mat).toLowerCase().contains(q))
60+
.filter(item -> displayName(item).toLowerCase().contains(q)
61+
|| item.getType().name().toLowerCase().contains(q))
5262
.toList();
5363
}
5464
List<Button> buttons = new ArrayList<>();
5565
int i = 0;
56-
for (Material mat : items) {
57-
if (!mat.isItem())
66+
for (ItemStack item : items) {
67+
if (!item.getType().isItem())
5868
continue;
69+
ItemStack stack = item;
5970
buttons.add(new Button(i++) {
6071
@Override
6172
public ItemStack getItemStack(Player p) {
62-
return new ItemBuilder(mat)
63-
.name("&f" + formatName(mat))
73+
return new ItemBuilder(stack.clone())
74+
.name("&f" + displayName(stack))
6475
.lore(MenusLocale.ITEM_BROWSER_ITEM_LORE.getStringList())
6576
.build();
6677
}
6778

6879
@Override
6980
public void onClick(ClickType type, Player p) {
70-
itemConsumer.accept(mat);
81+
itemConsumer.accept(stack.clone());
7182
}
7283
});
7384
}
@@ -112,4 +123,4 @@ public void onClick(ClickType type, Player p) {
112123
public int getMaxItemsPerPage() {
113124
return 36;
114125
}
115-
}
126+
}

Plugin/src/main/java/dev/lrxh/neptune/feature/itembrowser/ItemBrowserService.java

Lines changed: 45 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,22 @@
77
import org.bukkit.Registry;
88
import org.bukkit.block.BlockType;
99
import org.bukkit.entity.Player;
10+
import org.bukkit.inventory.ItemStack;
11+
import org.bukkit.inventory.meta.PotionMeta;
12+
import org.bukkit.potion.PotionType;
1013

1114
import java.util.*;
1215
import java.util.function.Consumer;
1316

1417
public class ItemBrowserService implements IItemBrowserService {
1518

19+
private static final Set<Material> POTION_MATERIALS = Set.of(
20+
Material.POTION, Material.SPLASH_POTION, Material.LINGERING_POTION, Material.TIPPED_ARROW);
21+
1622
private static ItemBrowserService instance;
1723

1824
private final Map<String, List<Material>> sectionMaterials = new HashMap<>();
19-
private final Map<String, List<Material>> computed = new HashMap<>();
25+
private final Map<String, List<ItemStack>> computed = new HashMap<>();
2026

2127
public static ItemBrowserService get() {
2228
if (instance == null) {
@@ -27,15 +33,25 @@ public static ItemBrowserService get() {
2733

2834
@Override
2935
public List<Material> getItems(String section) {
36+
return getItemStacks(section).stream().map(ItemStack::getType).distinct().toList();
37+
}
38+
39+
public List<ItemStack> getItemStacks(String section) {
3040
return switch (section) {
3141
case "blocks", "items", "helmet", "chestplate", "leggings", "boots" ->
3242
computed.computeIfAbsent(section, this::computeSection);
33-
default -> sectionMaterials.getOrDefault(section, Collections.emptyList());
43+
default -> {
44+
List<ItemStack> list = new ArrayList<>();
45+
for (Material m : sectionMaterials.getOrDefault(section, Collections.emptyList())) {
46+
list.add(new ItemStack(m));
47+
}
48+
yield list;
49+
}
3450
};
3551
}
3652

37-
private List<Material> computeSection(String section) {
38-
return switch (section) {
53+
private List<ItemStack> computeSection(String section) {
54+
List<Material> materials = switch (section) {
3955
case "blocks" -> getBlocks();
4056
case "items" -> getAllItems();
4157
case "helmet" -> bySuffix("_HELMET");
@@ -44,6 +60,23 @@ private List<Material> computeSection(String section) {
4460
case "boots" -> bySuffix("_BOOTS");
4561
default -> Collections.emptyList();
4662
};
63+
List<ItemStack> list = new ArrayList<>();
64+
for (Material m : materials) {
65+
if (!m.isItem()) continue;
66+
if (POTION_MATERIALS.contains(m)) {
67+
for (PotionType type : PotionType.values()) {
68+
ItemStack stack = new ItemStack(m);
69+
if (stack.getItemMeta() instanceof PotionMeta meta) {
70+
meta.setBasePotionType(type);
71+
stack.setItemMeta(meta);
72+
}
73+
list.add(stack);
74+
}
75+
} else {
76+
list.add(new ItemStack(m));
77+
}
78+
}
79+
return list;
4780
}
4881

4982
public void preloadSections() {
@@ -82,17 +115,21 @@ public List<Material> getBlocks() {
82115

83116
@Override
84117
public void openBrowser(Player player, String section, Consumer<Material> itemConsumer, Runnable returnConsumer) {
85-
openBrowser(player, section, itemConsumer, "", returnConsumer);
118+
openItemBrowser(player, section, item -> itemConsumer.accept(item.getType()), "", returnConsumer);
119+
}
120+
121+
public void openItemBrowser(Player player, String section, Consumer<ItemStack> itemConsumer, Runnable returnConsumer) {
122+
openItemBrowser(player, section, itemConsumer, "", returnConsumer);
86123
}
87124

88-
public void openBrowser(Player player, String section, Consumer<Material> itemConsumer, String search, Runnable returnConsumer) {
125+
public void openItemBrowser(Player player, String section, Consumer<ItemStack> itemConsumer, String search, Runnable returnConsumer) {
89126
new ItemBrowserMenu(get(), section, itemConsumer, search, returnConsumer).open(player);
90127
}
91128

92-
public void requestSearch(Player player, String section, Consumer<Material> itemConsumer, Runnable returnConsumer) {
129+
public void requestSearch(Player player, String section, Consumer<ItemStack> itemConsumer, Runnable returnConsumer) {
93130
player.closeInventory();
94131
SignInputMenu.open(player, "", SignsLocale.ITEM_BROWSER_SEARCH.getStringList(), input ->
95-
openBrowser(player, section, itemConsumer, input, returnConsumer));
132+
openItemBrowser(player, section, itemConsumer, input, returnConsumer));
96133
}
97134

98135
@Override

Plugin/src/main/java/dev/lrxh/neptune/feature/leaderboard/impl/LeaderboardPlayerEntry.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,5 @@
55

66
import java.util.UUID;
77

8-
@AllArgsConstructor
98
public record LeaderboardPlayerEntry(String username, UUID playerUUID, Kit kit) {
109
}

Plugin/src/main/java/dev/lrxh/neptune/feature/leaderboard/impl/PlayerEntry.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,5 @@
44

55
import java.util.UUID;
66

7-
@AllArgsConstructor
87
public record PlayerEntry(String username, UUID uuid, int value) {
98
}

0 commit comments

Comments
 (0)