Skip to content

Commit f618335

Browse files
Some quality of life improvements (#60)
* Remove unused first-join-kit configuration from config.yml * refactor(KitCommand): Refactor KitCommand to improve inventory handling * refactor(PlayerConnectionListener): Simplify player join kit handling * refactor(PlayerKitService): Enhance first join kit handling and inventory management
1 parent b6bfc25 commit f618335

4 files changed

Lines changed: 21 additions & 28 deletions

File tree

src/main/java/net/onelitefeather/playerkits/command/KitCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ private void helpCommand(CommandSender sender, final @Argument("query") @Greedy
4040
@Permission("playerkits.command.kits")
4141
@CommandDescription("Open the kits overview")
4242
public void execute(@NotNull Player player) {
43-
player.openInventory(this.playerKitService.getKitInventory());
43+
this.playerKitService.openKitsInventory(player);
4444
}
4545

4646
@Command("kit give <player> <kit>")
Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package net.onelitefeather.playerkits.listener;
22

33
import net.onelitefeather.playerkits.PlayerKitsPlugin;
4-
import net.onelitefeather.playerkits.kit.KitClaimResult;
54
import net.onelitefeather.playerkits.service.PlayerKitService;
6-
import org.bukkit.entity.Player;
75
import org.bukkit.event.EventHandler;
86
import org.bukkit.event.Listener;
97
import org.bukkit.event.player.PlayerJoinEvent;
@@ -14,10 +12,6 @@ public record PlayerConnectionListener(@NotNull PlayerKitsPlugin plugin,
1412

1513
@EventHandler
1614
private void handlePlayerJoin(PlayerJoinEvent event) {
17-
Player player = event.getPlayer();
18-
var kit = this.kitService.getFirstJoinKit();
19-
if (kit != null && this.plugin.getClaimedKitService().canClaim(player.getUniqueId(), kit.getName()) == KitClaimResult.SUCCESS) {
20-
this.kitService.handleGrantKit(player, player, kit);
21-
}
15+
this.kitService.giveFirstJoinKits(event.getPlayer());
2216
}
2317
}

src/main/java/net/onelitefeather/playerkits/service/PlayerKitService.java

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public final class PlayerKitService {
3434

3535
private final LoadingCache<String, PlayerKit> kitCache = Caffeine.newBuilder()
3636
.maximumSize(1000)
37-
.expireAfterWrite(5, TimeUnit.MINUTES)
37+
.expireAfterAccess(5, TimeUnit.MINUTES)
3838
.build(this::getPlayerKit);
3939

4040
private final PlayerKitsPlugin plugin;
@@ -46,7 +46,6 @@ public PlayerKitService(@NotNull PlayerKitsPlugin plugin) {
4646

4747
this.plugin = plugin;
4848
buildInventories();
49-
loadKits();
5049
this.kitItemDescription = new ArrayList<>();
5150
for (String description : plugin.getConfig().getStringList("gui.item-description")) {
5251
this.kitItemDescription.add(MiniMessage.miniMessage().deserialize(description));
@@ -66,7 +65,6 @@ public boolean deleteKit(@NotNull PlayerKit playerKit) {
6665
session.remove(playerKit.getProperties());
6766
session.remove(playerKit);
6867
transaction.commit();
69-
removeKitFromInventory(playerKit);
7068
this.kitCache.invalidate(playerKit.getName());
7169
return true;
7270
} catch (HibernateException e) {
@@ -110,9 +108,11 @@ public void createKit(@NotNull PlayerKit playerKit) {
110108
}
111109
}
112110

113-
@Nullable
114-
public PlayerKit getFirstJoinKit() {
115-
return getPlayerKit(this.plugin.getConfig().getString("first-join-kit", "firstjoin"));
111+
public List<PlayerKit> getFirstJoinKits() {
112+
return this.plugin.getDatabaseService().getSessionFactory().map(SessionFactory::openSession).map(session -> {
113+
var query = session.createQuery("SELECT pt FROM PlayerKit pt JOIN FETCH pt.properties p WHERE pt.firstJoin = true", PlayerKit.class);
114+
return query.list();
115+
}).orElse(Collections.emptyList());
116116
}
117117

118118
@NotNull
@@ -241,27 +241,27 @@ public Inventory getKitPreviewInventory() {
241241
return kitPreviewInventory;
242242
}
243243

244-
private void removeKitFromInventory(@NotNull PlayerKit playerKit) {
245-
this.kitInventory.remove(playerKit.getProperties().getDisplayItem());
246-
}
247244

248245
private void addKitToInventory(@NotNull PlayerKit playerKit) {
249246

250247
if (!playerKit.isVisible()) return;
251-
var slot = this.kitInventory.firstEmpty();
252-
if (slot == -1L) return;
253248

254-
this.kitInventory.setItem(slot,
255-
InventoryUtil.createItem(
256-
playerKit.getProperties().getDisplayItem(),
257-
MiniMessage.miniMessage().deserialize(playerKit.getDisplayName()), this.kitItemDescription));
249+
var kitMaterial = playerKit.getProperties().getDisplayItem();
250+
if (this.kitInventory.contains(kitMaterial)) return;
251+
252+
this.kitInventory.addItem(InventoryUtil.createItem(
253+
playerKit.getProperties().getDisplayItem(),
254+
MiniMessage.miniMessage().deserialize(playerKit.getDisplayName()), this.kitItemDescription));
255+
}
256+
257+
public void giveFirstJoinKits(Player player) {
258+
getFirstJoinKits().forEach(playerKit -> handleGrantKit(player, player, playerKit));
258259
}
259260

260-
private void loadKits() {
261+
public void openKitsInventory(Player player) {
261262
var kits = getKits();
262-
for (PlayerKit kit : kits) {
263-
addKitToInventory(kit);
264-
}
263+
kits.forEach(this::addKitToInventory);
264+
player.openInventory(this.getKitInventory());
265265
}
266266

267267
public void kitGrantSuccess(@NotNull CommandSender commandSender,

src/main/resources/config.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
first-join-kit: 'firstjoin'
21
items:
32
open-last-inventory: '<red>Back</red>'
43
gui:

0 commit comments

Comments
 (0)