Skip to content

Commit 8e574ef

Browse files
committed
Merge origin/main into configurable GUI redesign
2 parents 270a08f + 1389868 commit 8e574ef

57 files changed

Lines changed: 2510 additions & 993 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: CI
22

33
on:
44
push:
5-
branches: [ "**" ]
5+
branches: [ "main" ]
66
pull_request:
77
branches: [ "**" ]
88

pom.xml

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
<properties>
1515
<java.version>1.8</java.version>
16+
<mockito.version>5.15.2</mockito.version>
1617
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1718
</properties>
1819

@@ -56,6 +57,10 @@
5657
<groupId>org.apache.maven.plugins</groupId>
5758
<artifactId>maven-resources-plugin</artifactId>
5859
<version>3.3.1</version>
60+
<configuration>
61+
<encoding>${project.build.sourceEncoding}</encoding>
62+
<propertiesEncoding>${project.build.sourceEncoding}</propertiesEncoding>
63+
</configuration>
5964
<executions>
6065
<execution>
6166
<id>process-resources</id>
@@ -74,6 +79,14 @@
7479
</execution>
7580
</executions>
7681
</plugin>
82+
<plugin>
83+
<groupId>org.apache.maven.plugins</groupId>
84+
<artifactId>maven-surefire-plugin</artifactId>
85+
<version>3.5.2</version>
86+
<configuration>
87+
<argLine>-javaagent:${settings.localRepository}/org/mockito/mockito-core/${mockito.version}/mockito-core-${mockito.version}.jar --enable-native-access=ALL-UNNAMED -Xshare:off</argLine>
88+
</configuration>
89+
</plugin>
7790

7891
</plugins>
7992
<resources>
@@ -85,10 +98,6 @@
8598
</build>
8699

87100
<repositories>
88-
<repository>
89-
<id>papermc-repo</id>
90-
<url>https://papermc.io/repo/repository/maven-public/</url>
91-
</repository>
92101
<repository>
93102
<id>sonatype</id>
94103
<url>https://oss.sonatype.org/content/groups/public/</url>
@@ -169,5 +178,29 @@
169178
<version>2.11.6</version>
170179
<scope>provided</scope>
171180
</dependency>
181+
<dependency>
182+
<groupId>org.junit.jupiter</groupId>
183+
<artifactId>junit-jupiter</artifactId>
184+
<version>5.11.4</version>
185+
<scope>test</scope>
186+
</dependency>
187+
<dependency>
188+
<groupId>org.mockito</groupId>
189+
<artifactId>mockito-core</artifactId>
190+
<version>${mockito.version}</version>
191+
<scope>test</scope>
192+
</dependency>
193+
<dependency>
194+
<groupId>org.slf4j</groupId>
195+
<artifactId>slf4j-nop</artifactId>
196+
<version>1.7.36</version>
197+
<scope>test</scope>
198+
</dependency>
199+
<dependency>
200+
<groupId>org.xerial</groupId>
201+
<artifactId>sqlite-jdbc</artifactId>
202+
<version>3.49.1.0</version>
203+
<scope>test</scope>
204+
</dependency>
172205
</dependencies>
173206
</project>

src/main/java/dev/noah/perplayerkit/KitManager.java

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,20 @@
3131

3232
import java.io.IOException;
3333
import java.util.*;
34+
import java.util.concurrent.ConcurrentHashMap;
3435

3536
public class KitManager {
3637
private static KitManager instance;
3738
private final PerPlayerKit plugin;
38-
private final HashMap<String, ItemStack[]> kitByKitIDMap;
39+
private final Map<String, ItemStack[]> kitByKitIDMap;
3940
private final HashMap<UUID, Integer> lastKitUsedByPlayer;
4041
private final List<PublicKit> publicKitList;
4142

4243
public KitManager(PerPlayerKit plugin) {
4344
this.plugin = plugin;
4445
lastKitUsedByPlayer = new HashMap<>();
4546
publicKitList = new ArrayList<>();
46-
kitByKitIDMap = new HashMap<>();
47+
kitByKitIDMap = new ConcurrentHashMap<>();
4748
instance = this;
4849
}
4950

@@ -58,6 +59,15 @@ public ItemStack[] getItemStackArrayById(String id) {
5859
return kitByKitIDMap.get(id);
5960
}
6061

62+
private void cacheKit(String id, ItemStack[] kit) {
63+
if (kit == null) {
64+
kitByKitIDMap.remove(id);
65+
return;
66+
}
67+
68+
kitByKitIDMap.put(id, kit);
69+
}
70+
6171
public List<PublicKit> getPublicKitList() {
6272
return publicKitList;
6373
}
@@ -104,7 +114,7 @@ public boolean savekit(UUID uuid, int slot, ItemStack[] kit) {
104114
}
105115
}
106116

107-
kitByKitIDMap.put(IDUtil.getPlayerKitId(uuid, slot), kit);
117+
cacheKit(IDUtil.getPlayerKitId(uuid, slot), kit);
108118
player.sendMessage(ChatColor.GREEN + "Kit " + slot + " saved!");
109119

110120
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> savePlayerKitToDB(uuid, slot));
@@ -149,7 +159,7 @@ public boolean savePublicKit(Player player, String publickit, ItemStack[] kit) {
149159
}
150160
}
151161

152-
kitByKitIDMap.put(IDUtil.getPublicKitId(publickit), kit);
162+
cacheKit(IDUtil.getPublicKitId(publickit), kit);
153163
player.sendMessage(ChatColor.GREEN + "Public Kit " + publickit + " saved!");
154164

155165
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> savePublicKitToDB(publickit));
@@ -192,7 +202,7 @@ public boolean savePublicKit(String id, ItemStack[] kit) {
192202
}
193203
}
194204

195-
kitByKitIDMap.put(IDUtil.getPublicKitId(id), kit);
205+
cacheKit(IDUtil.getPublicKitId(id), kit);
196206
return true;
197207
}
198208
return false;
@@ -212,7 +222,7 @@ public boolean saveEC(UUID uuid, int slot, ItemStack[] kit) {
212222
}
213223

214224
if (notEmpty) {
215-
kitByKitIDMap.put(IDUtil.getECId(uuid, slot), kit);
225+
cacheKit(IDUtil.getECId(uuid, slot), kit);
216226
player.sendMessage(ChatColor.GREEN + "Enderchest " + slot + " saved!");
217227
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> saveEnderchestToDB(uuid, slot));
218228
return true;
@@ -237,7 +247,7 @@ public boolean saveECSilent(UUID uuid, int slot, ItemStack[] kit) {
237247
return false;
238248
}
239249

240-
kitByKitIDMap.put(IDUtil.getECId(uuid, slot), kit);
250+
cacheKit(IDUtil.getECId(uuid, slot), kit);
241251
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> saveEnderchestToDB(uuid, slot));
242252
return true;
243253
}
@@ -269,7 +279,7 @@ public boolean savekit(UUID uuid, int slot, ItemStack[] kit, boolean silent) {
269279
kit[39] = null;
270280
}
271281

272-
kitByKitIDMap.put(IDUtil.getPlayerKitId(uuid, slot), ItemFilter.get().filterItemStack(kit));
282+
cacheKit(IDUtil.getPlayerKitId(uuid, slot), ItemFilter.get().filterItemStack(kit));
273283
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> savePlayerKitToDB(uuid, slot));
274284
return true;
275285
} else {
@@ -436,7 +446,8 @@ public void loadPlayerDataFromDB(UUID uuid) {
436446
if (!data.equalsIgnoreCase("error")) {
437447
try {
438448
ItemStack[] kit = Serializer.itemStackArrayFromBase64(data);
439-
kitByKitIDMap.put(IDUtil.getPlayerKitId(uuid, slot), ItemFilter.get().filterItemStack(Serializer.itemStackArrayFromBase64(data)));
449+
cacheKit(IDUtil.getPlayerKitId(uuid, slot),
450+
ItemFilter.get().filterItemStack(kit));
440451
} catch (IOException ignored) {
441452
}
442453
}
@@ -446,7 +457,8 @@ public void loadPlayerDataFromDB(UUID uuid) {
446457
if (!data.equalsIgnoreCase("error")) {
447458
try {
448459
ItemStack[] kit = Serializer.itemStackArrayFromBase64(data);
449-
kitByKitIDMap.put(IDUtil.getECId(uuid, slot), ItemFilter.get().filterItemStack(Serializer.itemStackArrayFromBase64(data)));
460+
cacheKit(IDUtil.getECId(uuid, slot),
461+
ItemFilter.get().filterItemStack(kit));
450462
} catch (IOException ignored) {
451463
}
452464
}
@@ -486,7 +498,7 @@ public void loadPublicKitFromDB(String id) {
486498
if (!data.equalsIgnoreCase("error")) {
487499
try {
488500
ItemStack[] kit = Serializer.itemStackArrayFromBase64(data);
489-
kitByKitIDMap.put(IDUtil.getPublicKitId(id), ItemFilter.get().filterItemStack(kit));
501+
cacheKit(IDUtil.getPublicKitId(id), ItemFilter.get().filterItemStack(kit));
490502
} catch (IOException ignored) {
491503
plugin.getLogger().info("Error loading public kit " + id);
492504
}
@@ -544,4 +556,4 @@ private void applyKitLoadEffects(Player player, boolean isEnderChest) {
544556
}
545557
}
546558
}
547-
}
559+
}

src/main/java/dev/noah/perplayerkit/PerPlayerKit.java

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,27 @@
1818
*/
1919
package dev.noah.perplayerkit;
2020

21-
import dev.noah.perplayerkit.commands.*;
22-
import dev.noah.perplayerkit.commands.extracommands.HealCommand;
23-
import dev.noah.perplayerkit.commands.extracommands.RepairCommand;
24-
import dev.noah.perplayerkit.commands.tabcompleters.ECSlotTabCompleter;
25-
import dev.noah.perplayerkit.commands.tabcompleters.KitSlotTabCompleter;
21+
import dev.noah.perplayerkit.commands.admin.AboutCommandListener;
22+
import dev.noah.perplayerkit.commands.admin.KitRoomCommand;
23+
import dev.noah.perplayerkit.commands.admin.PerPlayerKitCommand;
24+
import dev.noah.perplayerkit.commands.admin.SavePublicKitCommand;
25+
import dev.noah.perplayerkit.commands.completion.ECSlotTabCompleter;
26+
import dev.noah.perplayerkit.commands.completion.KitSlotTabCompleter;
27+
import dev.noah.perplayerkit.commands.features.HealCommand;
28+
import dev.noah.perplayerkit.commands.features.RegearCommand;
29+
import dev.noah.perplayerkit.commands.features.RepairCommand;
30+
import dev.noah.perplayerkit.commands.inspect.InspectEcCommand;
31+
import dev.noah.perplayerkit.commands.inspect.InspectKitCommand;
32+
import dev.noah.perplayerkit.commands.kits.DeleteKitCommand;
33+
import dev.noah.perplayerkit.commands.kits.EnderchestCommand;
34+
import dev.noah.perplayerkit.commands.kits.MainMenuCommand;
35+
import dev.noah.perplayerkit.commands.kits.PublicKitCommand;
36+
import dev.noah.perplayerkit.commands.kits.SwapKitCommand;
37+
import dev.noah.perplayerkit.commands.share.CopyKitCommand;
38+
import dev.noah.perplayerkit.commands.share.ShareECKitCommand;
39+
import dev.noah.perplayerkit.commands.share.ShareKitCommand;
40+
import dev.noah.perplayerkit.commands.shortcuts.ShortECCommand;
41+
import dev.noah.perplayerkit.commands.shortcuts.ShortKitCommand;
2642
import dev.noah.perplayerkit.gui.configurable.ConfigurableGuiService;
2743
import dev.noah.perplayerkit.listeners.*;
2844
import dev.noah.perplayerkit.listeners.antiexploit.CommandListener;

src/main/java/dev/noah/perplayerkit/commands/DeleteKitCommand.java

Lines changed: 0 additions & 78 deletions
This file was deleted.

0 commit comments

Comments
 (0)