Skip to content

Commit 50379e8

Browse files
committed
Added a way to duel with custom kits and change the amount of item in the custom kit editor
1 parent 6d7b6e9 commit 50379e8

5 files changed

Lines changed: 109 additions & 2 deletions

File tree

Plugin/src/main/java/dev/lrxh/neptune/configs/impl/MenusLocale.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,16 @@ public enum MenusLocale implements IDataAccessor {
8989
DUEL_LORE("DUEL.LORE", DataType.STRING_LIST,
9090
"",
9191
"&a&lClick to select kit!"),
92+
DUEL_CUSTOM_KIT_BUTTON_SLOT("DUEL.CUSTOM_KIT.SLOT", DataType.INT, "35"),
93+
DUEL_CUSTOM_KIT_BUTTON_MATERIAL("DUEL.CUSTOM_KIT.MATERIAL", DataType.STRING, "NETHER_STAR"),
94+
DUEL_CUSTOM_KIT_BUTTON_NAME("DUEL.CUSTOM_KIT.NAME", DataType.STRING, "&bCustom Kits"),
95+
DUEL_CUSTOM_KIT_BUTTON_LORE("DUEL.CUSTOM_KIT.LORE", DataType.STRING_LIST,
96+
"",
97+
"&a&lClick to duel with a custom kit!"),
98+
DUEL_CUSTOM_KIT_TITLE("DUEL.CUSTOM_KIT.TITLE", DataType.STRING, "<b><yellow>Select Custom Kit</b> <dark_gray>| <white><target>"),
99+
DUEL_CUSTOM_KIT_ITEM_LORE("DUEL.CUSTOM_KIT.ITEM.LORE", DataType.STRING_LIST,
100+
"",
101+
"&a&lClick to duel with this kit!"),
92102
ROUNDS_TITLE("ROUNDS.TITLE", DataType.STRING, "<b><yellow>Select Rounds Amount</b> <dark_gray>| <white><target>"),
93103
ROUNDS_SIZE("ROUNDS.SIZE", DataType.INT, "27"),
94104
ROUNDS_STARTING_SLOT("DUEL.STARTING-SLOT", DataType.INT, "10"),
@@ -646,7 +656,7 @@ public enum MenusLocale implements IDataAccessor {
646656
CUSTOM_KIT_EDITOR_TITLE("CUSTOM_KIT.EDITOR.TITLE", DataType.STRING, "&bEdit Items"),
647657
CUSTOM_KIT_EDITOR_SIZE("CUSTOM_KIT.EDITOR.SIZE", DataType.INT, "54"),
648658
CUSTOM_KIT_EDITOR_ITEM_LORE("CUSTOM_KIT.EDITOR.ITEM-LORE", DataType.STRING_LIST,
649-
" ", "&aLeft-click to enchant", "&cRight-click to remove"),
659+
" ", "&aLeft-click to enchant", "&cRight-click to remove", "&eShift-right-click to set amount"),
650660
CUSTOM_KIT_EDITOR_EMPTY_MATERIAL("CUSTOM_KIT.EDITOR.EMPTY.MATERIAL", DataType.STRING, "GRAY_STAINED_GLASS_PANE"),
651661
CUSTOM_KIT_EDITOR_EMPTY_NAME("CUSTOM_KIT.EDITOR.EMPTY.NAME", DataType.STRING, "&7Empty"),
652662
CUSTOM_KIT_EDITOR_SLOT_MATERIAL("CUSTOM_KIT.EDITOR.SLOT.MATERIAL", DataType.STRING, "LIGHT_GRAY_STAINED_GLASS_PANE"),

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import dev.lrxh.neptune.utils.menu.Filter;
1414
import dev.lrxh.neptune.utils.menu.Menu;
1515
import dev.lrxh.neptune.utils.menu.impl.ReturnButton;
16+
import dev.lrxh.neptune.utils.sign.SignInputMenu;
1617
import net.kyori.adventure.text.Component;
1718
import net.kyori.adventure.text.format.NamedTextColor;
1819
import net.kyori.adventure.text.format.TextDecoration;
@@ -68,7 +69,18 @@ public ItemStack getItemStack(Player p) {
6869
public void onClick(ClickType type, Player p) {
6970
ItemStack item = kit.itemAt(contentsIndex);
7071
if (item != null && !item.getType().isAir()) {
71-
if (type.isRightClick()) {
72+
if (type == ClickType.SHIFT_RIGHT) {
73+
p.closeInventory();
74+
SignInputMenu.open(p, "", "Enter amount (1-64)", input -> {
75+
try {
76+
item.setAmount(Math.max(1, Math.min(64, Integer.parseInt(input.trim()))));
77+
kit.setItemAt(contentsIndex, item);
78+
save(p);
79+
} catch (NumberFormatException ignored) {
80+
}
81+
new CustomKitEditorMenu(kit).open(p);
82+
});
83+
} else if (type.isRightClick()) {
7284
kit.setItemAt(contentsIndex, null);
7385
save(p);
7486
open(p);

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public List<Button> getButtons(Player player) {
4343

4444
int slot = 0;
4545
for (CustomKit kit : kits) {
46+
if (hostMode && kit.getArenaNames().isEmpty()) continue;
4647
buttons.add(new Button(slot++) {
4748
@Override
4849
public ItemStack getItemStack(Player p) {
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package dev.lrxh.neptune.game.duel.menu;
2+
3+
import dev.lrxh.neptune.API;
4+
import dev.lrxh.neptune.Neptune;
5+
import dev.lrxh.neptune.configs.impl.MenusLocale;
6+
import dev.lrxh.neptune.feature.customkit.CustomKit;
7+
import dev.lrxh.neptune.feature.customkit.CustomKitService;
8+
import dev.lrxh.neptune.game.duel.DuelRequest;
9+
import dev.lrxh.neptune.game.kit.Kit;
10+
import dev.lrxh.neptune.profile.impl.Profile;
11+
import dev.lrxh.neptune.utils.CC;
12+
import dev.lrxh.neptune.utils.ItemBuilder;
13+
import dev.lrxh.neptune.utils.menu.Button;
14+
import dev.lrxh.neptune.utils.menu.Filter;
15+
import dev.lrxh.neptune.utils.menu.Menu;
16+
import org.bukkit.Bukkit;
17+
import org.bukkit.entity.Player;
18+
import org.bukkit.event.inventory.ClickType;
19+
import org.bukkit.inventory.ItemStack;
20+
21+
import java.util.ArrayList;
22+
import java.util.List;
23+
24+
public class CustomKitSelectMenu extends Menu {
25+
private final Player receiver;
26+
private final boolean party;
27+
28+
public CustomKitSelectMenu(Player receiver, boolean party) {
29+
super(MenusLocale.DUEL_CUSTOM_KIT_TITLE.getString().replaceAll("<target>", receiver.getName()), MenusLocale.CUSTOM_KIT_SIZE.getInt(), Filter.valueOf(MenusLocale.CUSTOM_KIT_FILTER.getString()));
30+
this.receiver = receiver;
31+
this.party = party;
32+
}
33+
34+
@Override
35+
public List<Button> getButtons(Player player) {
36+
List<Button> buttons = new ArrayList<>();
37+
int slot = 0;
38+
for (CustomKit kit : CustomKitService.get().get(player.getUniqueId())) {
39+
if (kit.getArenaNames().isEmpty()) continue;
40+
buttons.add(new Button(slot++) {
41+
@Override
42+
public ItemStack getItemStack(Player p) {
43+
return new ItemBuilder(kit.getIcon())
44+
.name(MenusLocale.CUSTOM_KIT_ITEM_NAME.getString().replace("<kit>", kit.getDisplayName()))
45+
.lore(MenusLocale.DUEL_CUSTOM_KIT_ITEM_LORE.getStringList()).build();
46+
}
47+
48+
@Override
49+
public void onClick(ClickType type, Player p) {
50+
Profile profile = API.getProfile(receiver);
51+
if (profile == null) return;
52+
Kit transientKit = kit.toTransientKit();
53+
transientKit.getRandomArena().thenAccept(arena -> {
54+
if (arena == null) {
55+
p.sendMessage(CC.error("No arena found, please contact an admin"));
56+
return;
57+
}
58+
DuelRequest duelRequest = new DuelRequest(p.getUniqueId(), transientKit, arena, party, 1);
59+
profile.sendDuel(duelRequest);
60+
Bukkit.getScheduler().runTask(Neptune.get(), () -> p.closeInventory());
61+
});
62+
}
63+
});
64+
}
65+
return buttons;
66+
}
67+
}

Plugin/src/main/java/dev/lrxh/neptune/game/duel/menu/KitSelectMenu.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,13 @@
44
import dev.lrxh.neptune.game.kit.Kit;
55
import dev.lrxh.neptune.game.kit.KitService;
66
import dev.lrxh.neptune.game.kit.impl.KitRule;
7+
import dev.lrxh.neptune.utils.ItemBuilder;
78
import dev.lrxh.neptune.utils.menu.Button;
89
import dev.lrxh.neptune.utils.menu.Filter;
910
import dev.lrxh.neptune.utils.menu.Menu;
1011
import org.bukkit.entity.Player;
12+
import org.bukkit.event.inventory.ClickType;
13+
import org.bukkit.inventory.ItemStack;
1114

1215
import java.util.ArrayList;
1316
import java.util.List;
@@ -31,6 +34,20 @@ public List<Button> getButtons(Player player) {
3134
buttons.add(new KitSelectButton(kit.getSlot(), kit, receiver, party));
3235
}
3336

37+
buttons.add(new Button(MenusLocale.DUEL_CUSTOM_KIT_BUTTON_SLOT.getInt()) {
38+
@Override
39+
public ItemStack getItemStack(Player p) {
40+
return new ItemBuilder(MenusLocale.DUEL_CUSTOM_KIT_BUTTON_MATERIAL.getString())
41+
.name(MenusLocale.DUEL_CUSTOM_KIT_BUTTON_NAME.getString())
42+
.lore(MenusLocale.DUEL_CUSTOM_KIT_BUTTON_LORE.getStringList()).build();
43+
}
44+
45+
@Override
46+
public void onClick(ClickType type, Player p) {
47+
new CustomKitSelectMenu(receiver, party).open(p);
48+
}
49+
});
50+
3451
return buttons;
3552
}
3653
}

0 commit comments

Comments
 (0)