Skip to content

Commit ed6923b

Browse files
committed
Added a way to select leaderboard slot
1 parent 0ad5850 commit ed6923b

9 files changed

Lines changed: 129 additions & 5 deletions

File tree

API/src/main/java/dev/lrxh/api/kit/IKit.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ public interface IKit {
2626

2727
int getKitEditorSlot();
2828

29+
int getLeaderboardSlot();
30+
2931
double getHealth();
3032

3133
List<PotionEffect> getPotionEffects();

Plugin/src/main/java/dev/lrxh/neptune/feature/customkit/CustomKit.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ public Kit toTransientKit() {
126126
HashMap<KitRule, Boolean> r = new HashMap<>(rules);
127127
r.put(KitRule.HIDDEN, true);
128128
return new Kit(name, displayName, new ArrayList<>(items), arenas, icon, r,
129-
0, 0, 0, 0, health, new ArrayList<>(potionEffects), 1.0);
129+
0, 0, 0, 0, 0, health, new ArrayList<>(potionEffects), 1.0);
130130
}
131131

132132
public String serialize() {

Plugin/src/main/java/dev/lrxh/neptune/feature/leaderboard/menu/LeaderboardMenu.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public List<Button> getButtons(Player player) {
3838

3939
for (Kit kit : KitService.get().kits) {
4040
if (kit.getRules().get(KitRule.HIDDEN)) continue;
41-
buttons.add(new DisplayButton(kit.getSlot(), buildKitItem(player, kit)));
41+
buttons.add(new DisplayButton(kit.getLeaderboardSlot(), buildKitItem(player, kit)));
4242
}
4343

4444
for (LeaderboardType type : LeaderboardType.values()) {

Plugin/src/main/java/dev/lrxh/neptune/game/kit/Kit.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,13 @@ public class Kit implements IKit, ConfigData {
4545
private HashSet<Arena> arenas;
4646
private ItemStack icon;
4747
private HashMap<KitRule, Boolean> rules;
48-
private int queue, playing, slot, kitEditorSlot;
48+
private int queue, playing, slot, kitEditorSlot, leaderboardSlot;
4949
private double health;
5050
private List<PotionEffect> potionEffects;
5151
private double damageMultiplier;
5252

5353
public Kit(String name, String displayName, List<ItemStack> items, HashSet<Arena> arenas, ItemStack icon,
54-
HashMap<KitRule, Boolean> rules, int slot, double health, int kitEditorSlot,
54+
HashMap<KitRule, Boolean> rules, int slot, double health, int kitEditorSlot, int leaderboardSlot,
5555
List<PotionEffect> potionEffects, double damageMultiplier) {
5656
this.name = name;
5757
this.displayName = displayName;
@@ -64,6 +64,7 @@ public Kit(String name, String displayName, List<ItemStack> items, HashSet<Arena
6464
this.slot = slot;
6565
this.health = health;
6666
this.kitEditorSlot = kitEditorSlot;
67+
this.leaderboardSlot = leaderboardSlot;
6768
this.potionEffects = potionEffects;
6869
this.damageMultiplier = damageMultiplier;
6970

@@ -82,6 +83,7 @@ public Kit(String name, Player player) {
8283
this.slot = KitService.get().kits.size() + 1;
8384
this.health = 20;
8485
this.kitEditorSlot = slot;
86+
this.leaderboardSlot = slot;
8587
this.damageMultiplier = 1.0;
8688

8789
this.potionEffects = new ArrayList<>();
@@ -109,6 +111,7 @@ public Kit(String name, List<ItemStack> items, ItemStack icon) {
109111
this.slot = KitService.get().kits.size() + 1;
110112
this.health = 20;
111113
this.kitEditorSlot = slot;
114+
this.leaderboardSlot = slot;
112115
this.potionEffects = new ArrayList<>();
113116
this.damageMultiplier = 1.0;
114117

@@ -176,6 +179,7 @@ public void write(ConfigurationSection s) {
176179
s.set("slot", slot);
177180
s.set("health", health);
178181
s.set("kitEditor-slot", kitEditorSlot);
182+
s.set("leaderboard-slot", leaderboardSlot);
179183
s.set("damage-multiplier", damageMultiplier);
180184
for (Map.Entry<KitRule, Boolean> e : rules.entrySet()) {
181185
s.set(e.getKey().getSaveName(), e.getValue());
@@ -187,6 +191,7 @@ public static Kit read(String name, ConfigurationSection s) {
187191
List<ItemStack> items = ItemUtils.deserialize(s.getString("items", ""));
188192
int slot = s.getInt("slot", KitService.get().kits.size() + 1);
189193
int kitEditorSlot = s.getInt("kitEditor-slot", slot);
194+
int leaderboardSlot = s.getInt("leaderboard-slot", slot);
190195
double health = s.getDouble("health", 20);
191196
double damageMultiplier = s.getDouble("damage-multiplier", 1.0);
192197

@@ -212,7 +217,7 @@ public static Kit read(String name, ConfigurationSection s) {
212217
}
213218

214219
return new Kit(name, s.getString("displayName", name), items, arenas, icon, rules,
215-
slot, health, kitEditorSlot, potionEffects, damageMultiplier);
220+
slot, health, kitEditorSlot, leaderboardSlot, potionEffects, damageMultiplier);
216221
}
217222

218223
public boolean is(KitRule kitRule) {

Plugin/src/main/java/dev/lrxh/neptune/game/kit/KitService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ public Kit copyFrom(IKit kit) {
106106
kit.getSlot(),
107107
kit.getHealth(),
108108
kit.getKitEditorSlot(),
109+
kit.getLeaderboardSlot(),
109110
kit.getPotionEffects(),
110111
kit.getDamageMultiplier()
111112
);

Plugin/src/main/java/dev/lrxh/neptune/game/kit/menu/KitManagementMenu.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public List<Button> getButtons(Player player) {
3333
buttons.add(new DisplayButton(22, kit.getIcon(), " "));
3434
buttons.add(new KitRulesButton(13, kit));
3535
buttons.add(new KitSetSlotButton(23, kit));
36+
buttons.add(new KitSetLeaderboardSlotButton(32, kit));
3637
buttons.add(new KitSetIconButton(24, kit));
3738
buttons.add(new KitSetDamageMultiplierButton(25, kit));
3839
buttons.add(new KitSetHealthButton(26, kit));
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package dev.lrxh.neptune.game.kit.menu;
2+
3+
import dev.lrxh.neptune.configs.impl.MenusLocale;
4+
import dev.lrxh.neptune.game.kit.Kit;
5+
import dev.lrxh.neptune.game.kit.menu.button.KitSelectLeaderboardSlotButton;
6+
import dev.lrxh.neptune.utils.menu.Button;
7+
import dev.lrxh.neptune.utils.menu.Filter;
8+
import dev.lrxh.neptune.utils.menu.Menu;
9+
import org.bukkit.entity.Player;
10+
11+
import java.util.ArrayList;
12+
import java.util.List;
13+
14+
public class KitSelectLeaderboardSlotMenu extends Menu {
15+
private final Kit kit;
16+
17+
public KitSelectLeaderboardSlotMenu(Kit kit) {
18+
super("&eSelect Leaderboard Slot", MenusLocale.LEADERBOARD_SIZE.getInt(), Filter.NONE);
19+
this.kit = kit;
20+
}
21+
22+
@Override
23+
public List<Button> getButtons(Player player) {
24+
List<Button> buttons = new ArrayList<>();
25+
26+
for (int i = 0; i < MenusLocale.LEADERBOARD_SIZE.getInt(); i++) {
27+
buttons.add(new KitSelectLeaderboardSlotButton(i, kit));
28+
}
29+
30+
return buttons;
31+
}
32+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package dev.lrxh.neptune.game.kit.menu.button;
2+
3+
import dev.lrxh.neptune.configs.impl.MenusLocale;
4+
import dev.lrxh.neptune.game.kit.Kit;
5+
import dev.lrxh.neptune.game.kit.KitService;
6+
import dev.lrxh.neptune.game.kit.menu.KitManagementMenu;
7+
import dev.lrxh.neptune.utils.CC;
8+
import dev.lrxh.neptune.utils.ItemBuilder;
9+
import dev.lrxh.neptune.utils.menu.Button;
10+
import org.bukkit.Material;
11+
import org.bukkit.entity.Player;
12+
import org.bukkit.event.inventory.ClickType;
13+
import org.bukkit.inventory.ItemStack;
14+
import org.bukkit.inventory.meta.ItemMeta;
15+
16+
import java.util.LinkedHashSet;
17+
import java.util.Optional;
18+
19+
public class KitSelectLeaderboardSlotButton extends Button {
20+
private final Kit kit;
21+
private final LinkedHashSet<Kit> kits = KitService.get().getKits();
22+
23+
public KitSelectLeaderboardSlotButton(int slot, Kit kit) {
24+
super(slot, false);
25+
this.kit = kit;
26+
}
27+
28+
@Override
29+
public void onClick(ClickType type, Player player) {
30+
Optional<Kit> existingKit = kits.stream().filter((Kit kit) -> kit.getLeaderboardSlot() == getSlot()).findFirst();
31+
if (existingKit.isPresent()) {
32+
player.sendMessage(CC.error("Select an unoccupied slot!"));
33+
return;
34+
}
35+
kit.setLeaderboardSlot(getSlot());
36+
new KitManagementMenu(kit).open(player);
37+
player.sendMessage(CC.success("New leaderboard slot set"));
38+
}
39+
40+
@Override
41+
public ItemStack getItemStack(Player player) {
42+
Optional<Kit> existingKit = kits.stream().filter((Kit kit) -> kit.getLeaderboardSlot() == getSlot()).findFirst();
43+
if (existingKit.isPresent()) {
44+
ItemStack icon = existingKit.get().getIcon();
45+
ItemMeta meta = icon.getItemMeta();
46+
meta.displayName(CC.color("&eSlot &6" + getSlot() + " &7(&f" + existingKit.get().getDisplayName() + "&7)"));
47+
icon.setItemMeta(meta);
48+
return new ItemBuilder(icon).build();
49+
}
50+
return new ItemBuilder(Material.getMaterial(MenusLocale.FILTER_MATERIAL.getString())).name("&eSlot &6" + this.getSlot()).build();
51+
}
52+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package dev.lrxh.neptune.game.kit.menu.button;
2+
3+
import dev.lrxh.neptune.game.kit.Kit;
4+
import dev.lrxh.neptune.game.kit.menu.KitSelectLeaderboardSlotMenu;
5+
import dev.lrxh.neptune.utils.CC;
6+
import dev.lrxh.neptune.utils.ItemBuilder;
7+
import dev.lrxh.neptune.utils.menu.Button;
8+
import org.bukkit.Material;
9+
import org.bukkit.entity.Player;
10+
import org.bukkit.event.inventory.ClickType;
11+
import org.bukkit.inventory.ItemStack;
12+
13+
public class KitSetLeaderboardSlotButton extends Button {
14+
private final Kit kit;
15+
16+
public KitSetLeaderboardSlotButton(int slot, Kit kit) {
17+
super(slot, false);
18+
this.kit = kit;
19+
}
20+
21+
@Override
22+
public void onClick(ClickType type, Player player) {
23+
new KitSelectLeaderboardSlotMenu(kit).open(player);
24+
player.sendMessage(CC.info("Please select the new leaderboard slot"));
25+
}
26+
27+
@Override
28+
public ItemStack getItemStack(Player player) {
29+
return new ItemBuilder(Material.ITEM_FRAME).name("&9Change leaderboard slot &7(" + kit.getLeaderboardSlot() + ")").build();
30+
}
31+
}

0 commit comments

Comments
 (0)