Skip to content

Commit 97d345e

Browse files
committed
Refactor Cache (DRAFT)
1 parent 1a7220b commit 97d345e

File tree

19 files changed

+145
-42
lines changed

19 files changed

+145
-42
lines changed

common/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@
3030
<artifactId>HikariCP</artifactId>
3131
<version>6.3.0</version>
3232
</dependency>
33+
<dependency>
34+
<groupId>org.jetbrains</groupId>
35+
<artifactId>annotations</artifactId>
36+
<version>26.0.2</version>
37+
<scope>compile</scope>
38+
</dependency>
3339
</dependencies>
3440

3541
</project>

paper/src/main/java/simplexity/simplepms/paper/saving/Cache.java renamed to common/src/main/java/com/simplexity/simplepms/common/database/Cache.java

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
package simplexity.simplepms.paper.saving;
1+
package com.simplexity.simplepms.common.database;
22

3-
import org.bukkit.Bukkit;
4-
import org.bukkit.entity.Player;
5-
import simplexity.simplepms.paper.SimplePMs;
6-
import simplexity.simplepms.paper.config.LocaleMessage;
3+
import com.simplexity.simplepms.common.logic.LocaleKey;
4+
import com.simplexity.simplepms.common.logic.PlatformBridge;
75
import com.simplexity.simplepms.common.database.objects.PlayerBlock;
86
import com.simplexity.simplepms.common.database.objects.PlayerSettings;
97

@@ -17,7 +15,7 @@
1715
public class Cache {
1816
public static final HashMap<UUID, List<PlayerBlock>> blockList = new HashMap<>();
1917
public static final HashMap<UUID, PlayerSettings> playerSettings = new HashMap<>();
20-
public static final HashSet<Player> spyingPlayers = new HashSet<>();
18+
public static final HashSet<UUID> spyingPlayers = new HashSet<>();
2119

2220
public static List<PlayerBlock> getBlockList(UUID uuid) {
2321
return blockList.get(uuid);
@@ -27,20 +25,16 @@ public static PlayerSettings getPlayerSettings(UUID uuid) {
2725
return playerSettings.get(uuid);
2826
}
2927

28+
public static void populateCache(UUID uuid, boolean hasSpyPerms) {
29+
List<PlayerBlock> blocklist = SQLHandler.getInstance().getBlockedPlayers(uuid);
30+
blockList.put(uuid, blocklist);
31+
populateNullNames(uuid);
3032

31-
public static void populateCache(UUID uuid, Player player, boolean hasSpyPerms) {
32-
Bukkit.getScheduler().runTaskAsynchronously(SimplePMs.getInstance(), () -> {
33-
DatabaseHandler.getInstance().getBlockedPlayers(uuid).thenAccept(blocklist -> {
34-
blockList.put(uuid, blocklist);
35-
populateNullNames(uuid);
36-
});
37-
DatabaseHandler.getInstance().getSettings(uuid).thenAccept(settings -> {
38-
playerSettings.put(uuid, settings);
39-
if (hasSpyPerms && settings.isSocialSpyEnabled()) {
40-
spyingPlayers.add(player);
41-
}
42-
});
43-
});
33+
PlayerSettings settings = SQLHandler.getInstance().getSettings(uuid);
34+
playerSettings.put(uuid, settings);
35+
if (hasSpyPerms && settings.isSocialSpyEnabled()) {
36+
spyingPlayers.add(uuid);
37+
}
4438
}
4539

4640
/**
@@ -71,7 +65,7 @@ public static void updateSocialSpySettings(UUID uuid, boolean socialSpy) {
7165
PlayerSettings settings = playerSettings.get(uuid);
7266
settings.setSocialSpyEnabled(socialSpy);
7367
playerSettings.put(uuid, settings);
74-
DatabaseHandler.getInstance().updateSettings(uuid, settings.isSocialSpyEnabled(), settings.areMessagesDisabled());
68+
SQLHandler.getInstance().updateSettings(uuid, settings.isSocialSpyEnabled(), settings.areMessagesDisabled());
7569
}
7670

7771
/**
@@ -84,7 +78,7 @@ public static void updateMessageSettings(UUID uuid, boolean messageDisabled) {
8478
PlayerSettings settings = playerSettings.get(uuid);
8579
settings.setMessagesDisabled(messageDisabled);
8680
playerSettings.put(uuid, settings);
87-
DatabaseHandler.getInstance().updateSettings(uuid, settings.isSocialSpyEnabled(), settings.areMessagesDisabled());
81+
SQLHandler.getInstance().updateSettings(uuid, settings.isSocialSpyEnabled(), settings.areMessagesDisabled());
8882
}
8983

9084
/**
@@ -99,7 +93,7 @@ public static void addBlockedUser(UUID uuid, PlayerBlock playerBlock) {
9993
List<PlayerBlock> blockedPlayers = blockList.get(uuid);
10094
blockedPlayers.add(playerBlock);
10195
blockList.put(uuid, blockedPlayers);
102-
DatabaseHandler.getInstance().addBlockedPlayer(uuid, playerBlock.getBlockedPlayerUUID(), playerBlock.getBlockedPlayerName(), playerBlock.getBlockReason());
96+
SQLHandler.getInstance().addBlockedPlayer(uuid, playerBlock.getBlockedPlayerUUID(), playerBlock.getBlockedPlayerName(), playerBlock.getBlockReason());
10397
}
10498

10599
/**
@@ -117,7 +111,7 @@ public static void removeBlockedUser(UUID uuid, UUID blockedPlayerUuid) {
117111
}
118112
}
119113
blockList.put(uuid, userBlockList);
120-
DatabaseHandler.getInstance().removeBlockedPlayer(uuid, blockedPlayerUuid);
114+
SQLHandler.getInstance().removeBlockedPlayer(uuid, blockedPlayerUuid);
121115
}
122116

123117
private static void removeCachedDuplicates(UUID blockingUuid, UUID blockedUuid) {
@@ -132,15 +126,15 @@ private static void populateNullNames(UUID uuidToCheck) {
132126
if (playerBlocks == null || playerBlocks.isEmpty()) return;
133127
for (PlayerBlock block : playerBlocks) {
134128
if (block.getBlockedPlayerName() == null || block.getBlockedPlayerName().isEmpty()) {
135-
String newName = Bukkit.getOfflinePlayer(block.getBlockedPlayerUUID()).getName();
136-
if (newName == null) newName = LocaleMessage.ERROR_NAME_NOT_FOUND.getMessage();
129+
String newName = PlatformBridge.getPlatformAdapter().getPlayerName(block.getBlockedPlayerUUID());
130+
if (newName == null) newName = PlatformBridge.getPlatformAdapter().getLocaleString(LocaleKey.ERROR_NAME_NOT_FOUND);
137131
block.setBlockedPlayerName(newName);
138132
}
139133
}
140134
blockList.put(uuidToCheck, playerBlocks);
141135
}
142136

143-
public static Set<Player> getSpyingPlayers() {
137+
public static Set<UUID> getSpyingPlayers() {
144138
return spyingPlayers;
145139
}
146140
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.simplexity.simplepms.common.logic;
2+
3+
public enum LocaleKey {
4+
5+
ERROR_NAME_NOT_FOUND
6+
7+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.simplexity.simplepms.common.logic;
2+
3+
import org.jetbrains.annotations.NotNull;
4+
import org.jetbrains.annotations.Nullable;
5+
6+
import java.util.UUID;
7+
8+
public interface PlatformAdapter {
9+
10+
/**
11+
* Retrieve the player name based on the player's UUID.
12+
* @param playerUUID Player's UUID
13+
* @return Player's name
14+
*/
15+
@Nullable String getPlayerName(@NotNull UUID playerUUID);
16+
17+
/**
18+
* Retrieve a locale String from a given {@link LocaleKey}
19+
* @return String defined by the {@link LocaleKey}, null if not found.
20+
*/
21+
@Nullable String getLocaleString(@NotNull LocaleKey key);
22+
23+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.simplexity.simplepms.common.logic;
2+
3+
import org.jetbrains.annotations.NotNull;
4+
5+
public class PlatformBridge {
6+
7+
private static PlatformAdapter adapter;
8+
9+
/**
10+
* Sets the platform adapter.
11+
* <br/>
12+
* Any platform should implement their own version of {@link PlatformAdapter}
13+
* and then call this method.
14+
* @param adapter PlatformAdapter implemented by the platform.
15+
*/
16+
public static void setPlatformAdapter(@NotNull PlatformAdapter adapter) {
17+
PlatformBridge.adapter = adapter;
18+
}
19+
20+
/**
21+
* Retrieves the platform adapter for use in the common module.
22+
* <br/>
23+
* {@link #setPlatformAdapter(PlatformAdapter)} should be called
24+
* in the enable step of whatever platform is being used.
25+
* @return PlatformAdapter
26+
* @throws IllegalStateException If the platform adapter was never set before calling any PlatformAdapter methods.
27+
*/
28+
public static @NotNull PlatformAdapter getPlatformAdapter() {
29+
if (adapter == null) throw new IllegalStateException("PlatformAdapter was not initialized.");
30+
return adapter;
31+
}
32+
33+
}

paper/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
<artifact>*:*</artifact>
6161
<excludes>
6262
<exclude>META-INF/MANIFEST.MF</exclude>
63+
<exclude>META-INF/versions/9/module-info.class</exclude>
6364
</excludes>
6465
</filter>
6566
</filters>

paper/src/main/java/simplexity/simplepms/paper/SimplePMs.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package simplexity.simplepms.paper;
22

33
import com.simplexity.simplepms.common.logger.Logger;
4+
import com.simplexity.simplepms.common.logic.PlatformBridge;
45
import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents;
56
import net.kyori.adventure.text.minimessage.MiniMessage;
67
import org.bukkit.command.ConsoleCommandSender;
@@ -19,6 +20,7 @@
1920
import simplexity.simplepms.paper.listeners.PreCommandListener;
2021
import simplexity.simplepms.paper.listeners.QuitListener;
2122
import simplexity.simplepms.paper.logic.Constants;
23+
import simplexity.simplepms.paper.logic.PaperPlatformAdapter;
2224
import simplexity.simplepms.paper.saving.DatabaseHandler;
2325

2426
@SuppressWarnings("UnstableApiUsage")
@@ -42,6 +44,7 @@ public void onEnable() {
4244
registerCommands();
4345
registerPermissions();
4446
Logger.setLogger(this.getSLF4JLogger());
47+
PlatformBridge.setPlatformAdapter(new PaperPlatformAdapter());
4548
}
4649

4750
private void registerListeners() {

paper/src/main/java/simplexity/simplepms/paper/commands/Blocklist.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import simplexity.simplepms.paper.SimplePMs;
1212
import simplexity.simplepms.paper.config.LocaleMessage;
1313
import simplexity.simplepms.paper.logic.Constants;
14-
import simplexity.simplepms.paper.saving.Cache;
14+
import com.simplexity.simplepms.common.database.Cache;
1515
import com.simplexity.simplepms.common.database.objects.PlayerBlock;
1616

1717
import java.util.List;

paper/src/main/java/simplexity/simplepms/paper/commands/MessageToggle.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import org.bukkit.entity.Player;
88
import simplexity.simplepms.paper.config.LocaleMessage;
99
import simplexity.simplepms.paper.logic.Constants;
10-
import simplexity.simplepms.paper.saving.Cache;
10+
import com.simplexity.simplepms.common.database.Cache;
1111
import com.simplexity.simplepms.common.database.objects.PlayerSettings;
1212

1313
import java.util.UUID;

paper/src/main/java/simplexity/simplepms/paper/commands/SocialSpy.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import org.bukkit.entity.Player;
99
import simplexity.simplepms.paper.config.LocaleMessage;
1010
import simplexity.simplepms.paper.logic.Constants;
11-
import simplexity.simplepms.paper.saving.Cache;
11+
import com.simplexity.simplepms.common.database.Cache;
1212
import com.simplexity.simplepms.common.database.objects.PlayerSettings;
1313

1414
import java.util.UUID;
@@ -40,12 +40,12 @@ private static int execute(CommandContext<CommandSourceStack> ctx) {
4040
if (settings == null || settings.isSocialSpyEnabled()) {
4141
Cache.updateSocialSpySettings(uuid, false);
4242
player.sendRichMessage(LocaleMessage.SOCIAL_SPY_DISABLED.getMessage());
43-
Cache.getSpyingPlayers().remove(player);
43+
Cache.getSpyingPlayers().remove(player.getUniqueId());
4444
return Command.SINGLE_SUCCESS;
4545
}
4646
Cache.updateSocialSpySettings(uuid, true);
4747
player.sendRichMessage(LocaleMessage.SOCIAL_SPY_ENABLED.getMessage());
48-
Cache.getSpyingPlayers().add(player);
48+
Cache.getSpyingPlayers().add(player.getUniqueId());
4949
return Command.SINGLE_SUCCESS;
5050
}
5151

0 commit comments

Comments
 (0)