From 708c5a7107aafa0344548073eab625de7d504002 Mon Sep 17 00:00:00 2001 From: Peashooter101 Date: Mon, 17 Nov 2025 09:08:00 -0600 Subject: [PATCH 1/3] Setup for Multi-Platform Created modules for paper and fabric platforms Paper is functional on maven package Code is not refactored to common yet, common empty --- .gitignore | 2 +- common/pom.xml | 27 ++++ fabric/pom.xml | 35 ++++++ paper/pom.xml | 118 ++++++++++++++++++ .../simplepms/paper}/SimplePMs.java | 30 ++--- .../simplepms/paper}/commands/Block.java | 12 +- .../simplepms/paper}/commands/Blocklist.java | 12 +- .../paper}/commands/MessageToggle.java | 10 +- .../paper}/commands/PrivateMessage.java | 12 +- .../simplepms/paper}/commands/Reload.java | 10 +- .../simplepms/paper}/commands/Reply.java | 10 +- .../simplepms/paper}/commands/SocialSpy.java | 10 +- .../simplepms/paper}/commands/Unblock.java | 14 +-- .../arguments/OfflinePlayerArgument.java | 6 +- .../paper}/commands/arguments/Target.java | 2 +- .../commands/arguments/TargetArgument.java | 8 +- .../paper}/commands/util/Exceptions.java | 6 +- .../paper}/commands/util/MessageChecks.java | 12 +- .../paper}/config/ConfigHandler.java | 4 +- .../paper}/config/LocaleHandler.java | 4 +- .../paper}/config/LocaleMessage.java | 2 +- .../paper}/events/BlockUserEvent.java | 2 +- .../paper}/events/PrivateMessageEvent.java | 2 +- .../paper}/events/UnblockUserEvent.java | 2 +- .../paper}/listeners/JoinListener.java | 6 +- .../paper}/listeners/PreCommandListener.java | 6 +- .../paper}/listeners/QuitListener.java | 4 +- .../simplepms/paper}/logic/BlockHandler.java | 10 +- .../simplepms/paper}/logic/Constants.java | 2 +- .../simplepms/paper}/logic/MessageUtils.java | 8 +- .../simplepms/paper}/logic/PMHandler.java | 12 +- .../simplepms/paper}/logic/SpyHandler.java | 12 +- .../paper}/logic/UnblockHandler.java | 10 +- .../simplepms/paper}/saving/Cache.java | 10 +- .../simplepms/paper}/saving/SqlHandler.java | 10 +- .../paper}/saving/objects/PlayerBlock.java | 2 +- .../paper}/saving/objects/PlayerSettings.java | 2 +- {src => paper/src}/main/resources/config.yml | 0 .../src}/main/resources/paper-plugin.yml | 2 +- pom.xml | 94 ++------------ 40 files changed, 324 insertions(+), 218 deletions(-) create mode 100644 common/pom.xml create mode 100644 fabric/pom.xml create mode 100644 paper/pom.xml rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/SimplePMs.java (82%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/commands/Block.java (89%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/commands/Blocklist.java (88%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/commands/MessageToggle.java (85%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/commands/PrivateMessage.java (88%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/commands/Reload.java (77%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/commands/Reply.java (87%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/commands/SocialSpy.java (87%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/commands/Unblock.java (89%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/commands/arguments/OfflinePlayerArgument.java (95%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/commands/arguments/Target.java (66%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/commands/arguments/TargetArgument.java (93%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/commands/util/Exceptions.java (95%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/commands/util/MessageChecks.java (91%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/config/ConfigHandler.java (98%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/config/LocaleHandler.java (96%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/config/LocaleMessage.java (99%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/events/BlockUserEvent.java (99%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/events/PrivateMessageEvent.java (98%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/events/UnblockUserEvent.java (98%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/listeners/JoinListener.java (77%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/listeners/PreCommandListener.java (83%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/listeners/QuitListener.java (82%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/logic/BlockHandler.java (84%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/logic/Constants.java (98%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/logic/MessageUtils.java (95%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/logic/PMHandler.java (90%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/logic/SpyHandler.java (91%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/logic/UnblockHandler.java (84%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/saving/Cache.java (95%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/saving/SqlHandler.java (97%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/saving/objects/PlayerBlock.java (96%) rename {src/main/java/simplexity/simplepms => paper/src/main/java/simplexity/simplepms/paper}/saving/objects/PlayerSettings.java (96%) rename {src => paper/src}/main/resources/config.yml (100%) rename {src => paper/src}/main/resources/paper-plugin.yml (82%) diff --git a/.gitignore b/.gitignore index 0f3c7ae..4ab004f 100644 --- a/.gitignore +++ b/.gitignore @@ -26,4 +26,4 @@ target/ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* replay_pid* -SimplePMs.iml +*.iml diff --git a/common/pom.xml b/common/pom.xml new file mode 100644 index 0000000..28512a5 --- /dev/null +++ b/common/pom.xml @@ -0,0 +1,27 @@ + + + 4.0.0 + + simplexity.simplepms + common + 2.4.2 + + + simplexity + SimplePMs + 2.4.2 + + + + ${project.parent.artifactId}-${project.artifactId}-${project.version} + + + + 21 + 21 + UTF-8 + + + \ No newline at end of file diff --git a/fabric/pom.xml b/fabric/pom.xml new file mode 100644 index 0000000..737d5ce --- /dev/null +++ b/fabric/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + simplexity.simplepms + fabric + 2.4.2 + + + simplexity + SimplePMs + 2.4.2 + + + + ${project.parent.artifactId}-${project.artifactId}-${project.version} + + + + 21 + 21 + UTF-8 + + + + + simplexity.simplepms + common + ${project.parent.version} + + + + \ No newline at end of file diff --git a/paper/pom.xml b/paper/pom.xml new file mode 100644 index 0000000..643646a --- /dev/null +++ b/paper/pom.xml @@ -0,0 +1,118 @@ + + + 4.0.0 + + simplexity.simplepms + paper + 2.4.2 + jar + SimplePMs + + Plugin focused on simple private messaging. + + 17 + UTF-8 + + + + simplexity + SimplePMs + 2.4.2 + + + + ${project.parent.artifactId}-${project.artifactId}-${project.version} + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 21 + 21 + --enable-preview + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + package + + shade + + + false + + + + mojang + + + + + + *:* + + META-INF/MANIFEST.MF + + + + + + + + + + + src/main/resources + true + + + + + + + placeholderapi + https://repo.extendedclip.com/content/repositories/placeholderapi/ + + + papermc-repo + https://repo.papermc.io/repository/maven-public/ + + + sonatype + https://oss.sonatype.org/content/groups/public/ + + + + + + simplexity.simplepms + common + ${project.parent.version} + + + io.papermc.paper + paper-api + 1.21.10-R0.1-SNAPSHOT + provided + + + me.clip + placeholderapi + 2.11.6 + provided + + + com.zaxxer + HikariCP + 6.3.0 + + + diff --git a/src/main/java/simplexity/simplepms/SimplePMs.java b/paper/src/main/java/simplexity/simplepms/paper/SimplePMs.java similarity index 82% rename from src/main/java/simplexity/simplepms/SimplePMs.java rename to paper/src/main/java/simplexity/simplepms/paper/SimplePMs.java index 0d89f7a..2bde9f1 100644 --- a/src/main/java/simplexity/simplepms/SimplePMs.java +++ b/paper/src/main/java/simplexity/simplepms/paper/SimplePMs.java @@ -1,24 +1,24 @@ -package simplexity.simplepms; +package simplexity.simplepms.paper; import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents; import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.command.ConsoleCommandSender; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; -import simplexity.simplepms.commands.Block; -import simplexity.simplepms.commands.Blocklist; -import simplexity.simplepms.commands.MessageToggle; -import simplexity.simplepms.commands.PrivateMessage; -import simplexity.simplepms.commands.Reload; -import simplexity.simplepms.commands.Reply; -import simplexity.simplepms.commands.SocialSpy; -import simplexity.simplepms.commands.Unblock; -import simplexity.simplepms.config.ConfigHandler; -import simplexity.simplepms.listeners.JoinListener; -import simplexity.simplepms.listeners.PreCommandListener; -import simplexity.simplepms.listeners.QuitListener; -import simplexity.simplepms.logic.Constants; -import simplexity.simplepms.saving.SqlHandler; +import simplexity.simplepms.paper.commands.Block; +import simplexity.simplepms.paper.commands.Blocklist; +import simplexity.simplepms.paper.commands.MessageToggle; +import simplexity.simplepms.paper.commands.PrivateMessage; +import simplexity.simplepms.paper.commands.Reload; +import simplexity.simplepms.paper.commands.Reply; +import simplexity.simplepms.paper.commands.SocialSpy; +import simplexity.simplepms.paper.commands.Unblock; +import simplexity.simplepms.paper.config.ConfigHandler; +import simplexity.simplepms.paper.listeners.JoinListener; +import simplexity.simplepms.paper.listeners.PreCommandListener; +import simplexity.simplepms.paper.listeners.QuitListener; +import simplexity.simplepms.paper.logic.Constants; +import simplexity.simplepms.paper.saving.SqlHandler; @SuppressWarnings("UnstableApiUsage") public final class SimplePMs extends JavaPlugin { diff --git a/src/main/java/simplexity/simplepms/commands/Block.java b/paper/src/main/java/simplexity/simplepms/paper/commands/Block.java similarity index 89% rename from src/main/java/simplexity/simplepms/commands/Block.java rename to paper/src/main/java/simplexity/simplepms/paper/commands/Block.java index 6cd3c3a..f5f6279 100644 --- a/src/main/java/simplexity/simplepms/commands/Block.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/Block.java @@ -1,4 +1,4 @@ -package simplexity.simplepms.commands; +package simplexity.simplepms.paper.commands; import com.mojang.brigadier.Command; import com.mojang.brigadier.arguments.StringArgumentType; @@ -12,11 +12,11 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; -import simplexity.simplepms.commands.arguments.OfflinePlayerArgument; -import simplexity.simplepms.commands.util.Exceptions; -import simplexity.simplepms.config.LocaleMessage; -import simplexity.simplepms.logic.BlockHandler; -import simplexity.simplepms.logic.Constants; +import simplexity.simplepms.paper.commands.arguments.OfflinePlayerArgument; +import simplexity.simplepms.paper.commands.util.Exceptions; +import simplexity.simplepms.paper.config.LocaleMessage; +import simplexity.simplepms.paper.logic.BlockHandler; +import simplexity.simplepms.paper.logic.Constants; @SuppressWarnings("UnstableApiUsage") public class Block { diff --git a/src/main/java/simplexity/simplepms/commands/Blocklist.java b/paper/src/main/java/simplexity/simplepms/paper/commands/Blocklist.java similarity index 88% rename from src/main/java/simplexity/simplepms/commands/Blocklist.java rename to paper/src/main/java/simplexity/simplepms/paper/commands/Blocklist.java index de8f826..3502a76 100644 --- a/src/main/java/simplexity/simplepms/commands/Blocklist.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/Blocklist.java @@ -1,4 +1,4 @@ -package simplexity.simplepms.commands; +package simplexity.simplepms.paper.commands; import com.mojang.brigadier.Command; import com.mojang.brigadier.tree.LiteralCommandNode; @@ -8,11 +8,11 @@ import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.entity.Player; -import simplexity.simplepms.SimplePMs; -import simplexity.simplepms.config.LocaleMessage; -import simplexity.simplepms.logic.Constants; -import simplexity.simplepms.saving.Cache; -import simplexity.simplepms.saving.objects.PlayerBlock; +import simplexity.simplepms.paper.SimplePMs; +import simplexity.simplepms.paper.config.LocaleMessage; +import simplexity.simplepms.paper.logic.Constants; +import simplexity.simplepms.paper.saving.Cache; +import simplexity.simplepms.paper.saving.objects.PlayerBlock; import java.util.List; import java.util.UUID; diff --git a/src/main/java/simplexity/simplepms/commands/MessageToggle.java b/paper/src/main/java/simplexity/simplepms/paper/commands/MessageToggle.java similarity index 85% rename from src/main/java/simplexity/simplepms/commands/MessageToggle.java rename to paper/src/main/java/simplexity/simplepms/paper/commands/MessageToggle.java index 381d0d8..a20153b 100644 --- a/src/main/java/simplexity/simplepms/commands/MessageToggle.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/MessageToggle.java @@ -1,14 +1,14 @@ -package simplexity.simplepms.commands; +package simplexity.simplepms.paper.commands; import com.mojang.brigadier.Command; import com.mojang.brigadier.tree.LiteralCommandNode; import io.papermc.paper.command.brigadier.CommandSourceStack; import io.papermc.paper.command.brigadier.Commands; import org.bukkit.entity.Player; -import simplexity.simplepms.config.LocaleMessage; -import simplexity.simplepms.logic.Constants; -import simplexity.simplepms.saving.Cache; -import simplexity.simplepms.saving.objects.PlayerSettings; +import simplexity.simplepms.paper.config.LocaleMessage; +import simplexity.simplepms.paper.logic.Constants; +import simplexity.simplepms.paper.saving.Cache; +import simplexity.simplepms.paper.saving.objects.PlayerSettings; import java.util.UUID; diff --git a/src/main/java/simplexity/simplepms/commands/PrivateMessage.java b/paper/src/main/java/simplexity/simplepms/paper/commands/PrivateMessage.java similarity index 88% rename from src/main/java/simplexity/simplepms/commands/PrivateMessage.java rename to paper/src/main/java/simplexity/simplepms/paper/commands/PrivateMessage.java index 977de2a..04c6208 100644 --- a/src/main/java/simplexity/simplepms/commands/PrivateMessage.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/PrivateMessage.java @@ -1,4 +1,4 @@ -package simplexity.simplepms.commands; +package simplexity.simplepms.paper.commands; import com.mojang.brigadier.Command; import com.mojang.brigadier.arguments.StringArgumentType; @@ -9,11 +9,11 @@ import io.papermc.paper.command.brigadier.CommandSourceStack; import io.papermc.paper.command.brigadier.Commands; import org.bukkit.command.CommandSender; -import simplexity.simplepms.commands.arguments.Target; -import simplexity.simplepms.commands.arguments.TargetArgument; -import simplexity.simplepms.commands.util.MessageChecks; -import simplexity.simplepms.logic.Constants; -import simplexity.simplepms.logic.PMHandler; +import simplexity.simplepms.paper.commands.arguments.Target; +import simplexity.simplepms.paper.commands.arguments.TargetArgument; +import simplexity.simplepms.paper.commands.util.MessageChecks; +import simplexity.simplepms.paper.logic.Constants; +import simplexity.simplepms.paper.logic.PMHandler; @SuppressWarnings("UnstableApiUsage") public class PrivateMessage { diff --git a/src/main/java/simplexity/simplepms/commands/Reload.java b/paper/src/main/java/simplexity/simplepms/paper/commands/Reload.java similarity index 77% rename from src/main/java/simplexity/simplepms/commands/Reload.java rename to paper/src/main/java/simplexity/simplepms/paper/commands/Reload.java index 9cc8677..7d5b591 100644 --- a/src/main/java/simplexity/simplepms/commands/Reload.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/Reload.java @@ -1,14 +1,14 @@ -package simplexity.simplepms.commands; +package simplexity.simplepms.paper.commands; import com.mojang.brigadier.Command; import com.mojang.brigadier.tree.LiteralCommandNode; import io.papermc.paper.command.brigadier.CommandSourceStack; import io.papermc.paper.command.brigadier.Commands; import org.bukkit.command.CommandSender; -import simplexity.simplepms.config.ConfigHandler; -import simplexity.simplepms.config.LocaleMessage; -import simplexity.simplepms.logic.Constants; -import simplexity.simplepms.saving.SqlHandler; +import simplexity.simplepms.paper.config.ConfigHandler; +import simplexity.simplepms.paper.config.LocaleMessage; +import simplexity.simplepms.paper.logic.Constants; +import simplexity.simplepms.paper.saving.SqlHandler; @SuppressWarnings("UnstableApiUsage") public class Reload { diff --git a/src/main/java/simplexity/simplepms/commands/Reply.java b/paper/src/main/java/simplexity/simplepms/paper/commands/Reply.java similarity index 87% rename from src/main/java/simplexity/simplepms/commands/Reply.java rename to paper/src/main/java/simplexity/simplepms/paper/commands/Reply.java index 4b386d2..8da6936 100644 --- a/src/main/java/simplexity/simplepms/commands/Reply.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/Reply.java @@ -1,4 +1,4 @@ -package simplexity.simplepms.commands; +package simplexity.simplepms.paper.commands; import com.mojang.brigadier.Command; import com.mojang.brigadier.arguments.StringArgumentType; @@ -9,10 +9,10 @@ import io.papermc.paper.command.brigadier.CommandSourceStack; import io.papermc.paper.command.brigadier.Commands; import org.bukkit.command.CommandSender; -import simplexity.simplepms.commands.util.Exceptions; -import simplexity.simplepms.commands.util.MessageChecks; -import simplexity.simplepms.logic.Constants; -import simplexity.simplepms.logic.PMHandler; +import simplexity.simplepms.paper.commands.util.Exceptions; +import simplexity.simplepms.paper.commands.util.MessageChecks; +import simplexity.simplepms.paper.logic.Constants; +import simplexity.simplepms.paper.logic.PMHandler; @SuppressWarnings("UnstableApiUsage") public class Reply { diff --git a/src/main/java/simplexity/simplepms/commands/SocialSpy.java b/paper/src/main/java/simplexity/simplepms/paper/commands/SocialSpy.java similarity index 87% rename from src/main/java/simplexity/simplepms/commands/SocialSpy.java rename to paper/src/main/java/simplexity/simplepms/paper/commands/SocialSpy.java index 8e805a7..72fe0a6 100644 --- a/src/main/java/simplexity/simplepms/commands/SocialSpy.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/SocialSpy.java @@ -1,4 +1,4 @@ -package simplexity.simplepms.commands; +package simplexity.simplepms.paper.commands; import com.mojang.brigadier.Command; import com.mojang.brigadier.context.CommandContext; @@ -6,10 +6,10 @@ import io.papermc.paper.command.brigadier.CommandSourceStack; import io.papermc.paper.command.brigadier.Commands; import org.bukkit.entity.Player; -import simplexity.simplepms.config.LocaleMessage; -import simplexity.simplepms.logic.Constants; -import simplexity.simplepms.saving.Cache; -import simplexity.simplepms.saving.objects.PlayerSettings; +import simplexity.simplepms.paper.config.LocaleMessage; +import simplexity.simplepms.paper.logic.Constants; +import simplexity.simplepms.paper.saving.Cache; +import simplexity.simplepms.paper.saving.objects.PlayerSettings; import java.util.UUID; diff --git a/src/main/java/simplexity/simplepms/commands/Unblock.java b/paper/src/main/java/simplexity/simplepms/paper/commands/Unblock.java similarity index 89% rename from src/main/java/simplexity/simplepms/commands/Unblock.java rename to paper/src/main/java/simplexity/simplepms/paper/commands/Unblock.java index 783c7a5..44089df 100644 --- a/src/main/java/simplexity/simplepms/commands/Unblock.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/Unblock.java @@ -1,4 +1,4 @@ -package simplexity.simplepms.commands; +package simplexity.simplepms.paper.commands; import com.mojang.brigadier.Command; import com.mojang.brigadier.arguments.StringArgumentType; @@ -14,12 +14,12 @@ import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import simplexity.simplepms.commands.util.Exceptions; -import simplexity.simplepms.config.LocaleMessage; -import simplexity.simplepms.logic.Constants; -import simplexity.simplepms.logic.UnblockHandler; -import simplexity.simplepms.saving.Cache; -import simplexity.simplepms.saving.objects.PlayerBlock; +import simplexity.simplepms.paper.commands.util.Exceptions; +import simplexity.simplepms.paper.config.LocaleMessage; +import simplexity.simplepms.paper.logic.Constants; +import simplexity.simplepms.paper.logic.UnblockHandler; +import simplexity.simplepms.paper.saving.Cache; +import simplexity.simplepms.paper.saving.objects.PlayerBlock; import java.util.List; import java.util.concurrent.CompletableFuture; diff --git a/src/main/java/simplexity/simplepms/commands/arguments/OfflinePlayerArgument.java b/paper/src/main/java/simplexity/simplepms/paper/commands/arguments/OfflinePlayerArgument.java similarity index 95% rename from src/main/java/simplexity/simplepms/commands/arguments/OfflinePlayerArgument.java rename to paper/src/main/java/simplexity/simplepms/paper/commands/arguments/OfflinePlayerArgument.java index 46c783b..856cbbd 100644 --- a/src/main/java/simplexity/simplepms/commands/arguments/OfflinePlayerArgument.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/arguments/OfflinePlayerArgument.java @@ -1,4 +1,4 @@ -package simplexity.simplepms.commands.arguments; +package simplexity.simplepms.paper.commands.arguments; import com.mojang.brigadier.StringReader; import com.mojang.brigadier.arguments.ArgumentType; @@ -15,8 +15,8 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; -import simplexity.simplepms.commands.util.Exceptions; -import simplexity.simplepms.config.ConfigHandler; +import simplexity.simplepms.paper.commands.util.Exceptions; +import simplexity.simplepms.paper.config.ConfigHandler; import java.util.concurrent.CompletableFuture; diff --git a/src/main/java/simplexity/simplepms/commands/arguments/Target.java b/paper/src/main/java/simplexity/simplepms/paper/commands/arguments/Target.java similarity index 66% rename from src/main/java/simplexity/simplepms/commands/arguments/Target.java rename to paper/src/main/java/simplexity/simplepms/paper/commands/arguments/Target.java index 52d6abd..2635176 100644 --- a/src/main/java/simplexity/simplepms/commands/arguments/Target.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/arguments/Target.java @@ -1,4 +1,4 @@ -package simplexity.simplepms.commands.arguments; +package simplexity.simplepms.paper.commands.arguments; import org.bukkit.command.CommandSender; diff --git a/src/main/java/simplexity/simplepms/commands/arguments/TargetArgument.java b/paper/src/main/java/simplexity/simplepms/paper/commands/arguments/TargetArgument.java similarity index 93% rename from src/main/java/simplexity/simplepms/commands/arguments/TargetArgument.java rename to paper/src/main/java/simplexity/simplepms/paper/commands/arguments/TargetArgument.java index 1f48525..7de36ba 100644 --- a/src/main/java/simplexity/simplepms/commands/arguments/TargetArgument.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/arguments/TargetArgument.java @@ -1,4 +1,4 @@ -package simplexity.simplepms.commands.arguments; +package simplexity.simplepms.paper.commands.arguments; import com.mojang.brigadier.StringReader; import com.mojang.brigadier.arguments.ArgumentType; @@ -14,9 +14,9 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; -import simplexity.simplepms.SimplePMs; -import simplexity.simplepms.commands.util.Exceptions; -import simplexity.simplepms.config.ConfigHandler; +import simplexity.simplepms.paper.SimplePMs; +import simplexity.simplepms.paper.commands.util.Exceptions; +import simplexity.simplepms.paper.config.ConfigHandler; import java.util.concurrent.CompletableFuture; diff --git a/src/main/java/simplexity/simplepms/commands/util/Exceptions.java b/paper/src/main/java/simplexity/simplepms/paper/commands/util/Exceptions.java similarity index 95% rename from src/main/java/simplexity/simplepms/commands/util/Exceptions.java rename to paper/src/main/java/simplexity/simplepms/paper/commands/util/Exceptions.java index e696907..f307ec1 100644 --- a/src/main/java/simplexity/simplepms/commands/util/Exceptions.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/util/Exceptions.java @@ -1,12 +1,12 @@ -package simplexity.simplepms.commands.util; +package simplexity.simplepms.paper.commands.util; import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; import io.papermc.paper.command.brigadier.MessageComponentSerializer; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; -import simplexity.simplepms.SimplePMs; -import simplexity.simplepms.config.LocaleMessage; +import simplexity.simplepms.paper.SimplePMs; +import simplexity.simplepms.paper.config.LocaleMessage; @SuppressWarnings("UnstableApiUsage") public class Exceptions { diff --git a/src/main/java/simplexity/simplepms/commands/util/MessageChecks.java b/paper/src/main/java/simplexity/simplepms/paper/commands/util/MessageChecks.java similarity index 91% rename from src/main/java/simplexity/simplepms/commands/util/MessageChecks.java rename to paper/src/main/java/simplexity/simplepms/paper/commands/util/MessageChecks.java index 48b191e..9943cf4 100644 --- a/src/main/java/simplexity/simplepms/commands/util/MessageChecks.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/util/MessageChecks.java @@ -1,13 +1,13 @@ -package simplexity.simplepms.commands.util; +package simplexity.simplepms.paper.commands.util; import com.mojang.brigadier.exceptions.CommandSyntaxException; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import simplexity.simplepms.config.ConfigHandler; -import simplexity.simplepms.logic.Constants; -import simplexity.simplepms.saving.Cache; -import simplexity.simplepms.saving.objects.PlayerBlock; -import simplexity.simplepms.saving.objects.PlayerSettings; +import simplexity.simplepms.paper.config.ConfigHandler; +import simplexity.simplepms.paper.logic.Constants; +import simplexity.simplepms.paper.saving.Cache; +import simplexity.simplepms.paper.saving.objects.PlayerBlock; +import simplexity.simplepms.paper.saving.objects.PlayerSettings; import java.util.List; diff --git a/src/main/java/simplexity/simplepms/config/ConfigHandler.java b/paper/src/main/java/simplexity/simplepms/paper/config/ConfigHandler.java similarity index 98% rename from src/main/java/simplexity/simplepms/config/ConfigHandler.java rename to paper/src/main/java/simplexity/simplepms/paper/config/ConfigHandler.java index 8940e2d..6df3836 100644 --- a/src/main/java/simplexity/simplepms/config/ConfigHandler.java +++ b/paper/src/main/java/simplexity/simplepms/paper/config/ConfigHandler.java @@ -1,11 +1,11 @@ -package simplexity.simplepms.config; +package simplexity.simplepms.paper.config; import org.bukkit.NamespacedKey; import org.bukkit.Registry; import org.bukkit.Sound; import org.bukkit.configuration.file.FileConfiguration; import org.jetbrains.annotations.NotNull; -import simplexity.simplepms.SimplePMs; +import simplexity.simplepms.paper.SimplePMs; import java.util.ArrayList; import java.util.HashSet; diff --git a/src/main/java/simplexity/simplepms/config/LocaleHandler.java b/paper/src/main/java/simplexity/simplepms/paper/config/LocaleHandler.java similarity index 96% rename from src/main/java/simplexity/simplepms/config/LocaleHandler.java rename to paper/src/main/java/simplexity/simplepms/paper/config/LocaleHandler.java index 2d6363e..8f92060 100644 --- a/src/main/java/simplexity/simplepms/config/LocaleHandler.java +++ b/paper/src/main/java/simplexity/simplepms/paper/config/LocaleHandler.java @@ -1,9 +1,9 @@ -package simplexity.simplepms.config; +package simplexity.simplepms.paper.config; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; -import simplexity.simplepms.SimplePMs; +import simplexity.simplepms.paper.SimplePMs; import java.io.File; import java.io.IOException; diff --git a/src/main/java/simplexity/simplepms/config/LocaleMessage.java b/paper/src/main/java/simplexity/simplepms/paper/config/LocaleMessage.java similarity index 99% rename from src/main/java/simplexity/simplepms/config/LocaleMessage.java rename to paper/src/main/java/simplexity/simplepms/paper/config/LocaleMessage.java index 6499972..396bbb5 100644 --- a/src/main/java/simplexity/simplepms/config/LocaleMessage.java +++ b/paper/src/main/java/simplexity/simplepms/paper/config/LocaleMessage.java @@ -1,4 +1,4 @@ -package simplexity.simplepms.config; +package simplexity.simplepms.paper.config; public enum LocaleMessage { CONSOLE_SENDER_NAME("console.name", "[Server]"), diff --git a/src/main/java/simplexity/simplepms/events/BlockUserEvent.java b/paper/src/main/java/simplexity/simplepms/paper/events/BlockUserEvent.java similarity index 99% rename from src/main/java/simplexity/simplepms/events/BlockUserEvent.java rename to paper/src/main/java/simplexity/simplepms/paper/events/BlockUserEvent.java index d2ddf64..b78aa5d 100644 --- a/src/main/java/simplexity/simplepms/events/BlockUserEvent.java +++ b/paper/src/main/java/simplexity/simplepms/paper/events/BlockUserEvent.java @@ -1,4 +1,4 @@ -package simplexity.simplepms.events; +package simplexity.simplepms.paper.events; import org.bukkit.event.Cancellable; import org.bukkit.event.Event; diff --git a/src/main/java/simplexity/simplepms/events/PrivateMessageEvent.java b/paper/src/main/java/simplexity/simplepms/paper/events/PrivateMessageEvent.java similarity index 98% rename from src/main/java/simplexity/simplepms/events/PrivateMessageEvent.java rename to paper/src/main/java/simplexity/simplepms/paper/events/PrivateMessageEvent.java index 498a913..6b80c44 100644 --- a/src/main/java/simplexity/simplepms/events/PrivateMessageEvent.java +++ b/paper/src/main/java/simplexity/simplepms/paper/events/PrivateMessageEvent.java @@ -1,4 +1,4 @@ -package simplexity.simplepms.events; +package simplexity.simplepms.paper.events; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/src/main/java/simplexity/simplepms/events/UnblockUserEvent.java b/paper/src/main/java/simplexity/simplepms/paper/events/UnblockUserEvent.java similarity index 98% rename from src/main/java/simplexity/simplepms/events/UnblockUserEvent.java rename to paper/src/main/java/simplexity/simplepms/paper/events/UnblockUserEvent.java index fc91969..a62abc7 100644 --- a/src/main/java/simplexity/simplepms/events/UnblockUserEvent.java +++ b/paper/src/main/java/simplexity/simplepms/paper/events/UnblockUserEvent.java @@ -1,4 +1,4 @@ -package simplexity.simplepms.events; +package simplexity.simplepms.paper.events; import org.bukkit.event.Cancellable; import org.bukkit.event.Event; diff --git a/src/main/java/simplexity/simplepms/listeners/JoinListener.java b/paper/src/main/java/simplexity/simplepms/paper/listeners/JoinListener.java similarity index 77% rename from src/main/java/simplexity/simplepms/listeners/JoinListener.java rename to paper/src/main/java/simplexity/simplepms/paper/listeners/JoinListener.java index f168329..cb58378 100644 --- a/src/main/java/simplexity/simplepms/listeners/JoinListener.java +++ b/paper/src/main/java/simplexity/simplepms/paper/listeners/JoinListener.java @@ -1,11 +1,11 @@ -package simplexity.simplepms.listeners; +package simplexity.simplepms.paper.listeners; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; -import simplexity.simplepms.logic.Constants; -import simplexity.simplepms.saving.Cache; +import simplexity.simplepms.paper.logic.Constants; +import simplexity.simplepms.paper.saving.Cache; import java.util.UUID; diff --git a/src/main/java/simplexity/simplepms/listeners/PreCommandListener.java b/paper/src/main/java/simplexity/simplepms/paper/listeners/PreCommandListener.java similarity index 83% rename from src/main/java/simplexity/simplepms/listeners/PreCommandListener.java rename to paper/src/main/java/simplexity/simplepms/paper/listeners/PreCommandListener.java index 3fb8efa..5282d12 100644 --- a/src/main/java/simplexity/simplepms/listeners/PreCommandListener.java +++ b/paper/src/main/java/simplexity/simplepms/paper/listeners/PreCommandListener.java @@ -1,11 +1,11 @@ -package simplexity.simplepms.listeners; +package simplexity.simplepms.paper.listeners; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerCommandPreprocessEvent; -import simplexity.simplepms.config.ConfigHandler; -import simplexity.simplepms.logic.SpyHandler; +import simplexity.simplepms.paper.config.ConfigHandler; +import simplexity.simplepms.paper.logic.SpyHandler; public class PreCommandListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) diff --git a/src/main/java/simplexity/simplepms/listeners/QuitListener.java b/paper/src/main/java/simplexity/simplepms/paper/listeners/QuitListener.java similarity index 82% rename from src/main/java/simplexity/simplepms/listeners/QuitListener.java rename to paper/src/main/java/simplexity/simplepms/paper/listeners/QuitListener.java index a7b552c..4ba307d 100644 --- a/src/main/java/simplexity/simplepms/listeners/QuitListener.java +++ b/paper/src/main/java/simplexity/simplepms/paper/listeners/QuitListener.java @@ -1,9 +1,9 @@ -package simplexity.simplepms.listeners; +package simplexity.simplepms.paper.listeners; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerQuitEvent; -import simplexity.simplepms.saving.Cache; +import simplexity.simplepms.paper.saving.Cache; public class QuitListener implements Listener { @EventHandler diff --git a/src/main/java/simplexity/simplepms/logic/BlockHandler.java b/paper/src/main/java/simplexity/simplepms/paper/logic/BlockHandler.java similarity index 84% rename from src/main/java/simplexity/simplepms/logic/BlockHandler.java rename to paper/src/main/java/simplexity/simplepms/paper/logic/BlockHandler.java index d8349c5..5191390 100644 --- a/src/main/java/simplexity/simplepms/logic/BlockHandler.java +++ b/paper/src/main/java/simplexity/simplepms/paper/logic/BlockHandler.java @@ -1,12 +1,12 @@ -package simplexity.simplepms.logic; +package simplexity.simplepms.paper.logic; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; -import simplexity.simplepms.SimplePMs; -import simplexity.simplepms.events.BlockUserEvent; -import simplexity.simplepms.saving.Cache; -import simplexity.simplepms.saving.objects.PlayerBlock; +import simplexity.simplepms.paper.SimplePMs; +import simplexity.simplepms.paper.events.BlockUserEvent; +import simplexity.simplepms.paper.saving.Cache; +import simplexity.simplepms.paper.saving.objects.PlayerBlock; import javax.annotation.Nullable; diff --git a/src/main/java/simplexity/simplepms/logic/Constants.java b/paper/src/main/java/simplexity/simplepms/paper/logic/Constants.java similarity index 98% rename from src/main/java/simplexity/simplepms/logic/Constants.java rename to paper/src/main/java/simplexity/simplepms/paper/logic/Constants.java index c89439e..d7d4850 100644 --- a/src/main/java/simplexity/simplepms/logic/Constants.java +++ b/paper/src/main/java/simplexity/simplepms/paper/logic/Constants.java @@ -1,4 +1,4 @@ -package simplexity.simplepms.logic; +package simplexity.simplepms.paper.logic; import org.bukkit.permissions.Permission; import org.bukkit.permissions.PermissionDefault; diff --git a/src/main/java/simplexity/simplepms/logic/MessageUtils.java b/paper/src/main/java/simplexity/simplepms/paper/logic/MessageUtils.java similarity index 95% rename from src/main/java/simplexity/simplepms/logic/MessageUtils.java rename to paper/src/main/java/simplexity/simplepms/paper/logic/MessageUtils.java index eb5466c..c0708f6 100644 --- a/src/main/java/simplexity/simplepms/logic/MessageUtils.java +++ b/paper/src/main/java/simplexity/simplepms/paper/logic/MessageUtils.java @@ -1,4 +1,4 @@ -package simplexity.simplepms.logic; +package simplexity.simplepms.paper.logic; import me.clip.placeholderapi.PlaceholderAPI; import net.kyori.adventure.text.Component; @@ -10,9 +10,9 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; -import simplexity.simplepms.SimplePMs; -import simplexity.simplepms.config.ConfigHandler; -import simplexity.simplepms.config.LocaleMessage; +import simplexity.simplepms.paper.SimplePMs; +import simplexity.simplepms.paper.config.ConfigHandler; +import simplexity.simplepms.paper.config.LocaleMessage; public class MessageUtils { private static MessageUtils instance; diff --git a/src/main/java/simplexity/simplepms/logic/PMHandler.java b/paper/src/main/java/simplexity/simplepms/paper/logic/PMHandler.java similarity index 90% rename from src/main/java/simplexity/simplepms/logic/PMHandler.java rename to paper/src/main/java/simplexity/simplepms/paper/logic/PMHandler.java index ca17c7b..e2f8db4 100644 --- a/src/main/java/simplexity/simplepms/logic/PMHandler.java +++ b/paper/src/main/java/simplexity/simplepms/paper/logic/PMHandler.java @@ -1,14 +1,14 @@ -package simplexity.simplepms.logic; +package simplexity.simplepms.paper.logic; import org.bukkit.Registry; import org.bukkit.Sound; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import simplexity.simplepms.SimplePMs; -import simplexity.simplepms.config.ConfigHandler; -import simplexity.simplepms.config.LocaleMessage; -import simplexity.simplepms.events.PrivateMessageEvent; -import simplexity.simplepms.saving.Cache; +import simplexity.simplepms.paper.SimplePMs; +import simplexity.simplepms.paper.config.ConfigHandler; +import simplexity.simplepms.paper.config.LocaleMessage; +import simplexity.simplepms.paper.events.PrivateMessageEvent; +import simplexity.simplepms.paper.saving.Cache; import java.util.HashMap; diff --git a/src/main/java/simplexity/simplepms/logic/SpyHandler.java b/paper/src/main/java/simplexity/simplepms/paper/logic/SpyHandler.java similarity index 91% rename from src/main/java/simplexity/simplepms/logic/SpyHandler.java rename to paper/src/main/java/simplexity/simplepms/paper/logic/SpyHandler.java index 5847f8f..c43d759 100644 --- a/src/main/java/simplexity/simplepms/logic/SpyHandler.java +++ b/paper/src/main/java/simplexity/simplepms/paper/logic/SpyHandler.java @@ -1,15 +1,15 @@ -package simplexity.simplepms.logic; +package simplexity.simplepms.paper.logic; import net.kyori.adventure.text.Component; import org.bukkit.Registry; import org.bukkit.Sound; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import simplexity.simplepms.SimplePMs; -import simplexity.simplepms.config.ConfigHandler; -import simplexity.simplepms.config.LocaleMessage; -import simplexity.simplepms.events.PrivateMessageEvent; -import simplexity.simplepms.saving.Cache; +import simplexity.simplepms.paper.SimplePMs; +import simplexity.simplepms.paper.config.ConfigHandler; +import simplexity.simplepms.paper.config.LocaleMessage; +import simplexity.simplepms.paper.events.PrivateMessageEvent; +import simplexity.simplepms.paper.saving.Cache; public class SpyHandler { diff --git a/src/main/java/simplexity/simplepms/logic/UnblockHandler.java b/paper/src/main/java/simplexity/simplepms/paper/logic/UnblockHandler.java similarity index 84% rename from src/main/java/simplexity/simplepms/logic/UnblockHandler.java rename to paper/src/main/java/simplexity/simplepms/paper/logic/UnblockHandler.java index 4b71693..ff2e0e0 100644 --- a/src/main/java/simplexity/simplepms/logic/UnblockHandler.java +++ b/paper/src/main/java/simplexity/simplepms/paper/logic/UnblockHandler.java @@ -1,13 +1,13 @@ -package simplexity.simplepms.logic; +package simplexity.simplepms.paper.logic; import com.mojang.brigadier.exceptions.CommandSyntaxException; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; -import simplexity.simplepms.commands.util.Exceptions; -import simplexity.simplepms.events.UnblockUserEvent; -import simplexity.simplepms.saving.Cache; -import simplexity.simplepms.saving.objects.PlayerBlock; +import simplexity.simplepms.paper.commands.util.Exceptions; +import simplexity.simplepms.paper.events.UnblockUserEvent; +import simplexity.simplepms.paper.saving.Cache; +import simplexity.simplepms.paper.saving.objects.PlayerBlock; import java.util.List; import java.util.UUID; diff --git a/src/main/java/simplexity/simplepms/saving/Cache.java b/paper/src/main/java/simplexity/simplepms/paper/saving/Cache.java similarity index 95% rename from src/main/java/simplexity/simplepms/saving/Cache.java rename to paper/src/main/java/simplexity/simplepms/paper/saving/Cache.java index f686fd8..02d13a7 100644 --- a/src/main/java/simplexity/simplepms/saving/Cache.java +++ b/paper/src/main/java/simplexity/simplepms/paper/saving/Cache.java @@ -1,11 +1,11 @@ -package simplexity.simplepms.saving; +package simplexity.simplepms.paper.saving; import org.bukkit.Bukkit; import org.bukkit.entity.Player; -import simplexity.simplepms.SimplePMs; -import simplexity.simplepms.config.LocaleMessage; -import simplexity.simplepms.saving.objects.PlayerBlock; -import simplexity.simplepms.saving.objects.PlayerSettings; +import simplexity.simplepms.paper.SimplePMs; +import simplexity.simplepms.paper.config.LocaleMessage; +import simplexity.simplepms.paper.saving.objects.PlayerBlock; +import simplexity.simplepms.paper.saving.objects.PlayerSettings; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/simplexity/simplepms/saving/SqlHandler.java b/paper/src/main/java/simplexity/simplepms/paper/saving/SqlHandler.java similarity index 97% rename from src/main/java/simplexity/simplepms/saving/SqlHandler.java rename to paper/src/main/java/simplexity/simplepms/paper/saving/SqlHandler.java index d498c9e..9d73cb9 100644 --- a/src/main/java/simplexity/simplepms/saving/SqlHandler.java +++ b/paper/src/main/java/simplexity/simplepms/paper/saving/SqlHandler.java @@ -1,14 +1,14 @@ -package simplexity.simplepms.saving; +package simplexity.simplepms.paper.saving; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import org.bukkit.Bukkit; import org.bukkit.plugin.Plugin; import org.slf4j.Logger; -import simplexity.simplepms.SimplePMs; -import simplexity.simplepms.config.ConfigHandler; -import simplexity.simplepms.saving.objects.PlayerBlock; -import simplexity.simplepms.saving.objects.PlayerSettings; +import simplexity.simplepms.paper.SimplePMs; +import simplexity.simplepms.paper.config.ConfigHandler; +import simplexity.simplepms.paper.saving.objects.PlayerBlock; +import simplexity.simplepms.paper.saving.objects.PlayerSettings; import java.sql.Connection; import java.sql.DatabaseMetaData; diff --git a/src/main/java/simplexity/simplepms/saving/objects/PlayerBlock.java b/paper/src/main/java/simplexity/simplepms/paper/saving/objects/PlayerBlock.java similarity index 96% rename from src/main/java/simplexity/simplepms/saving/objects/PlayerBlock.java rename to paper/src/main/java/simplexity/simplepms/paper/saving/objects/PlayerBlock.java index c68cc50..af6ea3c 100644 --- a/src/main/java/simplexity/simplepms/saving/objects/PlayerBlock.java +++ b/paper/src/main/java/simplexity/simplepms/paper/saving/objects/PlayerBlock.java @@ -1,4 +1,4 @@ -package simplexity.simplepms.saving.objects; +package simplexity.simplepms.paper.saving.objects; import java.util.UUID; diff --git a/src/main/java/simplexity/simplepms/saving/objects/PlayerSettings.java b/paper/src/main/java/simplexity/simplepms/paper/saving/objects/PlayerSettings.java similarity index 96% rename from src/main/java/simplexity/simplepms/saving/objects/PlayerSettings.java rename to paper/src/main/java/simplexity/simplepms/paper/saving/objects/PlayerSettings.java index 7edb289..374077b 100644 --- a/src/main/java/simplexity/simplepms/saving/objects/PlayerSettings.java +++ b/paper/src/main/java/simplexity/simplepms/paper/saving/objects/PlayerSettings.java @@ -1,4 +1,4 @@ -package simplexity.simplepms.saving.objects; +package simplexity.simplepms.paper.saving.objects; import java.util.UUID; diff --git a/src/main/resources/config.yml b/paper/src/main/resources/config.yml similarity index 100% rename from src/main/resources/config.yml rename to paper/src/main/resources/config.yml diff --git a/src/main/resources/paper-plugin.yml b/paper/src/main/resources/paper-plugin.yml similarity index 82% rename from src/main/resources/paper-plugin.yml rename to paper/src/main/resources/paper-plugin.yml index b7235b7..b35855c 100644 --- a/src/main/resources/paper-plugin.yml +++ b/paper/src/main/resources/paper-plugin.yml @@ -1,6 +1,6 @@ name: SimplePMs version: '${project.version}' -main: simplexity.simplepms.SimplePMs +main: simplexity.simplepms.paper.SimplePMs api-version: 1.20.6 description: Plugin focused on simple private messaging. dependencies: diff --git a/pom.xml b/pom.xml index a5f29eb..076f882 100644 --- a/pom.xml +++ b/pom.xml @@ -1,99 +1,25 @@ - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 + http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 simplexity SimplePMs 2.4.3 - jar + pom - SimplePMs + + common + paper + fabric + + SimplePMs Plugin focused on simple private messaging. + 17 UTF-8 - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.1 - - 21 - 21 - --enable-preview - - - - org.apache.maven.plugins - maven-shade-plugin - 3.2.4 - - - package - - shade - - - false - - - - mojang - - - - - - - - - - - src/main/resources - true - - - - - - - placeholderapi - https://repo.extendedclip.com/content/repositories/placeholderapi/ - - - papermc-repo - https://repo.papermc.io/repository/maven-public/ - - - sonatype - https://oss.sonatype.org/content/groups/public/ - - - - - - io.papermc.paper - paper-api - 1.20.6-R0.1-SNAPSHOT - provided - - - me.clip - placeholderapi - 2.11.6 - provided - - - com.zaxxer - HikariCP - 6.3.0 - - From 8fba1d55f58f58630d2f274f76da4ccaa6eda9a6 Mon Sep 17 00:00:00 2001 From: Peashooter101 Date: Mon, 17 Nov 2025 15:01:55 -0600 Subject: [PATCH 2/3] Refactor SQLHandler to common --- common/pom.xml | 8 + .../simplepms/common/database/SQLHandler.java | 241 ++++++++++++++++ .../common/database}/objects/PlayerBlock.java | 2 +- .../database}/objects/PlayerSettings.java | 2 +- .../simplepms/common/logger/Logger.java | 18 ++ paper/pom.xml | 5 - .../simplexity/simplepms/paper/SimplePMs.java | 9 +- .../simplepms/paper/commands/Blocklist.java | 2 +- .../paper/commands/MessageToggle.java | 2 +- .../simplepms/paper/commands/Reload.java | 4 +- .../simplepms/paper/commands/SocialSpy.java | 2 +- .../simplepms/paper/commands/Unblock.java | 2 +- .../paper/commands/util/MessageChecks.java | 4 +- .../simplepms/paper/config/ConfigHandler.java | 2 +- .../simplepms/paper/logic/BlockHandler.java | 2 +- .../simplepms/paper/logic/UnblockHandler.java | 2 +- .../simplepms/paper/saving/Cache.java | 16 +- .../paper/saving/DatabaseHandler.java | 81 ++++++ .../simplepms/paper/saving/SqlHandler.java | 262 ------------------ 19 files changed, 374 insertions(+), 292 deletions(-) create mode 100644 common/src/main/java/com/simplexity/simplepms/common/database/SQLHandler.java rename {paper/src/main/java/simplexity/simplepms/paper/saving => common/src/main/java/com/simplexity/simplepms/common/database}/objects/PlayerBlock.java (95%) rename {paper/src/main/java/simplexity/simplepms/paper/saving => common/src/main/java/com/simplexity/simplepms/common/database}/objects/PlayerSettings.java (95%) create mode 100644 common/src/main/java/com/simplexity/simplepms/common/logger/Logger.java create mode 100644 paper/src/main/java/simplexity/simplepms/paper/saving/DatabaseHandler.java delete mode 100644 paper/src/main/java/simplexity/simplepms/paper/saving/SqlHandler.java diff --git a/common/pom.xml b/common/pom.xml index 28512a5..b549e34 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -23,5 +23,13 @@ 21 UTF-8 + + + + com.zaxxer + HikariCP + 6.3.0 + + \ No newline at end of file diff --git a/common/src/main/java/com/simplexity/simplepms/common/database/SQLHandler.java b/common/src/main/java/com/simplexity/simplepms/common/database/SQLHandler.java new file mode 100644 index 0000000..13c0e7b --- /dev/null +++ b/common/src/main/java/com/simplexity/simplepms/common/database/SQLHandler.java @@ -0,0 +1,241 @@ +package com.simplexity.simplepms.common.database; + +import com.simplexity.simplepms.common.database.objects.PlayerBlock; +import com.simplexity.simplepms.common.database.objects.PlayerSettings; +import com.simplexity.simplepms.common.logger.Logger; +import com.zaxxer.hikari.HikariConfig; +import com.zaxxer.hikari.HikariDataSource; + +import java.sql.*; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +public class SQLHandler { + + private SQLHandler() { } + + private static SQLHandler instance; + private static boolean usingMySQL; + + public static SQLHandler getInstance() { + if (instance == null) { + instance = new SQLHandler(); + } + return instance; + } + + private static HikariDataSource dataSource; + private static final HikariConfig hikariConfig = new HikariConfig(); + + public void init() { + if (dataSource == null) { + // TODO: Logger error, need to call setupConfig first + return; + } + try (Connection connection = getConnection()) { + PreparedStatement blocklistInitStatement = connection.prepareStatement(""" + CREATE TABLE IF NOT EXISTS blocklist ( + player_uuid VARCHAR (36) NOT NULL, + blocked_player_uuid VARCHAR(36) NOT NULL, + blocked_player_name VARCHAR(256), + block_reason VARCHAR(256), + PRIMARY KEY (player_uuid, blocked_player_uuid) + );"""); + blocklistInitStatement.execute(); + PreparedStatement playerSettingsInitStatement = connection.prepareStatement(""" + CREATE TABLE IF NOT EXISTS settings ( + player_uuid VARCHAR (36) NOT NULL PRIMARY KEY, + socialspy_enabled BOOLEAN NOT NULL, + messages_disabled BOOLEAN NOT NULL + );"""); + playerSettingsInitStatement.execute(); + updateDatabaseColumns(); + } catch (SQLException e) { + Logger.getLogger().warn("Failed to connect to database: {}", e.getMessage(), e); + } + } + + public void reloadDatabase(String jdbcUrl, String username, String password) { + Logger.getLogger().info("Reconnecting to SimplePMs database..."); + shutdownConnection(); + setupConfig(jdbcUrl, username, password); + Logger.getLogger().info("Database reloaded successfully"); + } + + + public PlayerSettings getSettings(UUID playerUUID) { + String queryString = "SELECT socialspy_enabled, messages_disabled FROM settings WHERE player_uuid = ?;"; + PlayerSettings settings = null; + try (Connection connection = getConnection()) { + PreparedStatement statement = connection.prepareStatement(queryString); + statement.setString(1, String.valueOf(playerUUID)); + try (ResultSet resultSet = statement.executeQuery()) { + if (!resultSet.next()) { + settings = new PlayerSettings(playerUUID); + updateSettings(playerUUID, settings.isSocialSpyEnabled(), settings.areMessagesDisabled()); + } else { + boolean socialSpy = resultSet.getBoolean("socialspy_enabled"); + boolean messagesDisabled = resultSet.getBoolean("messages_disabled"); + settings = new PlayerSettings(playerUUID, socialSpy, messagesDisabled); + } + } + } catch (SQLException e) { + Logger.getLogger().warn("Failed to retrieve settings from database: {}", e.getMessage(), e); + } + return settings; + } + + public List getBlockedPlayers(UUID playerUUID) { + String queryString = "SELECT blocked_player_uuid, block_reason, blocked_player_name from blocklist WHERE player_uuid = ?;"; + List blockedPlayers = new ArrayList<>(); + try (Connection connection = getConnection()) { + PreparedStatement statement = connection.prepareStatement(queryString); + statement.setString(1, String.valueOf(playerUUID)); + try (ResultSet resultSet = statement.executeQuery()) { + while (resultSet.next()) { + UUID blockedPlayerUUID = UUID.fromString(resultSet.getString("blocked_player_uuid")); + String blockedPlayerName = resultSet.getString("blocked_player_name"); + String reason = resultSet.getString("block_reason"); + PlayerBlock block = new PlayerBlock(playerUUID, blockedPlayerName, blockedPlayerUUID, reason); + blockedPlayers.add(block); + } + } + } catch (SQLException e) { + Logger.getLogger().warn("Failed to get blocked players: {}", e.getMessage(), e); + } + return blockedPlayers; + } + + public void addBlockedPlayer(UUID playerUUID, UUID blockedPlayerUUID, String blockedPlayerName, String reason) { + String queryString = "REPLACE INTO blocklist (player_uuid, blocked_player_uuid, blocked_player_name, block_reason) VALUES (?, ?, ?, ?);"; + try (Connection connection = getConnection()) { + PreparedStatement statement = connection.prepareStatement(queryString); + statement.setString(1, String.valueOf(playerUUID)); + statement.setString(2, String.valueOf(blockedPlayerUUID)); + statement.setString(3, blockedPlayerName); + statement.setString(4, reason); + statement.executeUpdate(); + } catch (SQLException e) { + Logger.getLogger().warn("Failed to add blocked player: {}", e.getMessage(), e); + e.printStackTrace(); + } + } + + public void removeBlockedPlayer(UUID playerUUID, UUID blockedPlayerUUID) { + String queryString = "DELETE FROM blocklist WHERE player_uuid = ? and blocked_player_uuid = ?;"; + try (Connection connection = getConnection()) { + PreparedStatement statement = connection.prepareStatement(queryString); + statement.setString(1, String.valueOf(playerUUID)); + statement.setString(2, String.valueOf(blockedPlayerUUID)); + statement.executeUpdate(); + } catch (SQLException e) { + Logger.getLogger().warn("Failed to remove blocked player: {}", e.getMessage(), e); + } + } + + public void updateSettings(UUID playerUUID, boolean socialSpyEnabled, boolean messagesDisabled) { + String queryString = "REPLACE INTO settings (player_uuid, socialspy_enabled, messages_disabled) VALUES (?, ?, ?);"; + try (Connection connection = getConnection()) { + PreparedStatement statement = connection.prepareStatement(queryString); + statement.setString(1, String.valueOf(playerUUID)); + statement.setBoolean(2, socialSpyEnabled); + statement.setBoolean(3, messagesDisabled); + statement.executeUpdate(); + } catch (SQLException e) { + Logger.getLogger().warn("Failed to update settings to database: {}", e.getMessage(), e); + } + + } + + public void updateDatabaseColumns() { + String tableName = "blocklist"; + String columnName = "blocked_player_name"; + boolean columnExists; + try { + if (usingMySQL) { + columnExists = doesMysqlColumnExist(tableName, columnName); + } else { + columnExists = doesSqliteColumnExist(tableName, columnName); + } + if (!columnExists) { + addColumn(tableName, columnName, "VARCHAR(256)", ""); + } + } catch (Exception e) { + Logger.getLogger().warn("Unable to update database table: {} column: {}, error: {}", tableName, columnName, e.getMessage(), e); + } + } + + private Boolean doesSqliteColumnExist(String tableName, String columnName) { + String query = "PRAGMA table_info(" + tableName + ")"; + try (Connection connection = getConnection()) { + PreparedStatement statement = connection.prepareStatement(query); + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + if (columnName.equalsIgnoreCase(resultSet.getString("name"))) { + return true; + } + } + } catch (SQLException e) { + Logger.getLogger().warn("Failed to to check for column {} in table {}: {}", columnName, tableName, e.getMessage(), e); + } + return false; + } + + private Boolean doesMysqlColumnExist(String tableName, String columnName) { + try (Connection connection = getConnection()) { + DatabaseMetaData metaData = connection.getMetaData(); + ResultSet resultSet = metaData.getColumns(null, null, tableName, columnName); + return resultSet.next(); + } catch (SQLException e) { + Logger.getLogger().warn("Failed to check for column {} in table {}: {}", columnName, tableName, e.getMessage(), e); + } + return false; + } + + // Possibly extremely cursed way to do this :cackle: + + public void addColumn(String tableName, String columnName, String dataType, String constraints) { + String query = String.format("ALTER TABLE %s ADD COLUMN %s %s %s;", tableName, columnName, dataType, constraints); + try (Connection connection = getConnection()) { + PreparedStatement statement = connection.prepareStatement(query); + statement.executeUpdate(); + Logger.getLogger().info("Added new column '{}' to table '{}'", columnName, tableName); + } catch (SQLException e) { + Logger.getLogger().warn("Failed to add new column {} to table {}: {}", columnName, tableName, e.getMessage(), e); + } + } + + private static void loadHikariDataSource() { + if (hikariConfig == null) return; // TODO: Logger for missing hikariConfig + dataSource = new HikariDataSource(hikariConfig); + } + + public void setupConfig(String jdbcUrl, String username, String password) { + if (!usingMySQL) { + hikariConfig.setJdbcUrl(jdbcUrl); + hikariConfig.setConnectionTestQuery("PRAGMA journal_mode = WAL;"); + loadHikariDataSource(); + return; + } + hikariConfig.setJdbcUrl(jdbcUrl); + hikariConfig.setUsername(username); + hikariConfig.setPassword(password); + loadHikariDataSource(); + } + + public static void setUsingMySQL(boolean usingMySQL) { + SQLHandler.usingMySQL = usingMySQL; + } + + public static Connection getConnection() throws SQLException { + return dataSource.getConnection(); + } + + public void shutdownConnection() { + if (dataSource == null || dataSource.isClosed()) return; + dataSource.close(); + dataSource = null; + Logger.getLogger().info("Closed existing database connection"); + } +} \ No newline at end of file diff --git a/paper/src/main/java/simplexity/simplepms/paper/saving/objects/PlayerBlock.java b/common/src/main/java/com/simplexity/simplepms/common/database/objects/PlayerBlock.java similarity index 95% rename from paper/src/main/java/simplexity/simplepms/paper/saving/objects/PlayerBlock.java rename to common/src/main/java/com/simplexity/simplepms/common/database/objects/PlayerBlock.java index af6ea3c..b371628 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/saving/objects/PlayerBlock.java +++ b/common/src/main/java/com/simplexity/simplepms/common/database/objects/PlayerBlock.java @@ -1,4 +1,4 @@ -package simplexity.simplepms.paper.saving.objects; +package com.simplexity.simplepms.common.database.objects; import java.util.UUID; diff --git a/paper/src/main/java/simplexity/simplepms/paper/saving/objects/PlayerSettings.java b/common/src/main/java/com/simplexity/simplepms/common/database/objects/PlayerSettings.java similarity index 95% rename from paper/src/main/java/simplexity/simplepms/paper/saving/objects/PlayerSettings.java rename to common/src/main/java/com/simplexity/simplepms/common/database/objects/PlayerSettings.java index 374077b..b21568a 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/saving/objects/PlayerSettings.java +++ b/common/src/main/java/com/simplexity/simplepms/common/database/objects/PlayerSettings.java @@ -1,4 +1,4 @@ -package simplexity.simplepms.paper.saving.objects; +package com.simplexity.simplepms.common.database.objects; import java.util.UUID; diff --git a/common/src/main/java/com/simplexity/simplepms/common/logger/Logger.java b/common/src/main/java/com/simplexity/simplepms/common/logger/Logger.java new file mode 100644 index 0000000..b35fac6 --- /dev/null +++ b/common/src/main/java/com/simplexity/simplepms/common/logger/Logger.java @@ -0,0 +1,18 @@ +package com.simplexity.simplepms.common.logger; + +import org.slf4j.LoggerFactory; + +public class Logger { + + private static org.slf4j.Logger logger; + + public static org.slf4j.Logger getLogger() { + if (logger == null) logger = LoggerFactory.getLogger("SimplePMs.common"); + return logger; + } + + public static void setLogger(org.slf4j.Logger logger) { + Logger.logger = logger; + } + +} diff --git a/paper/pom.xml b/paper/pom.xml index 643646a..4aaf83a 100644 --- a/paper/pom.xml +++ b/paper/pom.xml @@ -109,10 +109,5 @@ 2.11.6 provided - - com.zaxxer - HikariCP - 6.3.0 - diff --git a/paper/src/main/java/simplexity/simplepms/paper/SimplePMs.java b/paper/src/main/java/simplexity/simplepms/paper/SimplePMs.java index 2bde9f1..cbd472a 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/SimplePMs.java +++ b/paper/src/main/java/simplexity/simplepms/paper/SimplePMs.java @@ -1,5 +1,6 @@ package simplexity.simplepms.paper; +import com.simplexity.simplepms.common.logger.Logger; import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents; import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.command.ConsoleCommandSender; @@ -18,7 +19,7 @@ import simplexity.simplepms.paper.listeners.PreCommandListener; import simplexity.simplepms.paper.listeners.QuitListener; import simplexity.simplepms.paper.logic.Constants; -import simplexity.simplepms.paper.saving.SqlHandler; +import simplexity.simplepms.paper.saving.DatabaseHandler; @SuppressWarnings("UnstableApiUsage") public final class SimplePMs extends JavaPlugin { @@ -28,7 +29,6 @@ public final class SimplePMs extends JavaPlugin { private static boolean papiEnabled = false; private static ConsoleCommandSender consoleSender; - @Override public void onEnable() { instance = this; @@ -37,10 +37,11 @@ public void onEnable() { papiEnabled = true; } loadConfigStuff(); - SqlHandler.getInstance().init(); + DatabaseHandler.getInstance().init(); registerListeners(); registerCommands(); registerPermissions(); + Logger.setLogger(this.getSLF4JLogger()); } private void registerListeners() { @@ -90,7 +91,7 @@ private void registerPermissions() { @Override public void onDisable() { - SqlHandler.getInstance().shutdownConnection(); + DatabaseHandler.getInstance().shutdownConnection(); } public static MiniMessage getMiniMessage() { diff --git a/paper/src/main/java/simplexity/simplepms/paper/commands/Blocklist.java b/paper/src/main/java/simplexity/simplepms/paper/commands/Blocklist.java index 3502a76..1afd18e 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/commands/Blocklist.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/Blocklist.java @@ -12,7 +12,7 @@ import simplexity.simplepms.paper.config.LocaleMessage; import simplexity.simplepms.paper.logic.Constants; import simplexity.simplepms.paper.saving.Cache; -import simplexity.simplepms.paper.saving.objects.PlayerBlock; +import com.simplexity.simplepms.common.database.objects.PlayerBlock; import java.util.List; import java.util.UUID; diff --git a/paper/src/main/java/simplexity/simplepms/paper/commands/MessageToggle.java b/paper/src/main/java/simplexity/simplepms/paper/commands/MessageToggle.java index a20153b..22e8c95 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/commands/MessageToggle.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/MessageToggle.java @@ -8,7 +8,7 @@ import simplexity.simplepms.paper.config.LocaleMessage; import simplexity.simplepms.paper.logic.Constants; import simplexity.simplepms.paper.saving.Cache; -import simplexity.simplepms.paper.saving.objects.PlayerSettings; +import com.simplexity.simplepms.common.database.objects.PlayerSettings; import java.util.UUID; diff --git a/paper/src/main/java/simplexity/simplepms/paper/commands/Reload.java b/paper/src/main/java/simplexity/simplepms/paper/commands/Reload.java index 7d5b591..23e9201 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/commands/Reload.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/Reload.java @@ -8,7 +8,7 @@ import simplexity.simplepms.paper.config.ConfigHandler; import simplexity.simplepms.paper.config.LocaleMessage; import simplexity.simplepms.paper.logic.Constants; -import simplexity.simplepms.paper.saving.SqlHandler; +import simplexity.simplepms.paper.saving.DatabaseHandler; @SuppressWarnings("UnstableApiUsage") public class Reload { @@ -19,7 +19,7 @@ public static LiteralCommandNode createCommand() { .executes(ctx -> { CommandSender sender = ctx.getSource().getSender(); ConfigHandler.getInstance().loadConfigValues(); - SqlHandler.getInstance().reloadDatabase(); + DatabaseHandler.getInstance().reloadDatabase(); sender.sendRichMessage(LocaleMessage.RELOADED.getMessage()); return Command.SINGLE_SUCCESS; }).build(); diff --git a/paper/src/main/java/simplexity/simplepms/paper/commands/SocialSpy.java b/paper/src/main/java/simplexity/simplepms/paper/commands/SocialSpy.java index 72fe0a6..915a59f 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/commands/SocialSpy.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/SocialSpy.java @@ -9,7 +9,7 @@ import simplexity.simplepms.paper.config.LocaleMessage; import simplexity.simplepms.paper.logic.Constants; import simplexity.simplepms.paper.saving.Cache; -import simplexity.simplepms.paper.saving.objects.PlayerSettings; +import com.simplexity.simplepms.common.database.objects.PlayerSettings; import java.util.UUID; diff --git a/paper/src/main/java/simplexity/simplepms/paper/commands/Unblock.java b/paper/src/main/java/simplexity/simplepms/paper/commands/Unblock.java index 44089df..cfb85ce 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/commands/Unblock.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/Unblock.java @@ -19,7 +19,7 @@ import simplexity.simplepms.paper.logic.Constants; import simplexity.simplepms.paper.logic.UnblockHandler; import simplexity.simplepms.paper.saving.Cache; -import simplexity.simplepms.paper.saving.objects.PlayerBlock; +import com.simplexity.simplepms.common.database.objects.PlayerBlock; import java.util.List; import java.util.concurrent.CompletableFuture; diff --git a/paper/src/main/java/simplexity/simplepms/paper/commands/util/MessageChecks.java b/paper/src/main/java/simplexity/simplepms/paper/commands/util/MessageChecks.java index 9943cf4..43be108 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/commands/util/MessageChecks.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/util/MessageChecks.java @@ -6,8 +6,8 @@ import simplexity.simplepms.paper.config.ConfigHandler; import simplexity.simplepms.paper.logic.Constants; import simplexity.simplepms.paper.saving.Cache; -import simplexity.simplepms.paper.saving.objects.PlayerBlock; -import simplexity.simplepms.paper.saving.objects.PlayerSettings; +import com.simplexity.simplepms.common.database.objects.PlayerBlock; +import com.simplexity.simplepms.common.database.objects.PlayerSettings; import java.util.List; diff --git a/paper/src/main/java/simplexity/simplepms/paper/config/ConfigHandler.java b/paper/src/main/java/simplexity/simplepms/paper/config/ConfigHandler.java index 6df3836..d99d350 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/config/ConfigHandler.java +++ b/paper/src/main/java/simplexity/simplepms/paper/config/ConfigHandler.java @@ -6,6 +6,7 @@ import org.bukkit.configuration.file.FileConfiguration; import org.jetbrains.annotations.NotNull; import simplexity.simplepms.paper.SimplePMs; +import simplexity.simplepms.paper.saving.DatabaseHandler; import java.util.ArrayList; import java.util.HashSet; @@ -112,7 +113,6 @@ private void validateConsoleNames(List list) { } } - public boolean isMysqlEnabled() { return mysqlEnabled; } diff --git a/paper/src/main/java/simplexity/simplepms/paper/logic/BlockHandler.java b/paper/src/main/java/simplexity/simplepms/paper/logic/BlockHandler.java index 5191390..a7021f9 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/logic/BlockHandler.java +++ b/paper/src/main/java/simplexity/simplepms/paper/logic/BlockHandler.java @@ -6,7 +6,7 @@ import simplexity.simplepms.paper.SimplePMs; import simplexity.simplepms.paper.events.BlockUserEvent; import simplexity.simplepms.paper.saving.Cache; -import simplexity.simplepms.paper.saving.objects.PlayerBlock; +import com.simplexity.simplepms.common.database.objects.PlayerBlock; import javax.annotation.Nullable; diff --git a/paper/src/main/java/simplexity/simplepms/paper/logic/UnblockHandler.java b/paper/src/main/java/simplexity/simplepms/paper/logic/UnblockHandler.java index ff2e0e0..391f1d7 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/logic/UnblockHandler.java +++ b/paper/src/main/java/simplexity/simplepms/paper/logic/UnblockHandler.java @@ -7,7 +7,7 @@ import simplexity.simplepms.paper.commands.util.Exceptions; import simplexity.simplepms.paper.events.UnblockUserEvent; import simplexity.simplepms.paper.saving.Cache; -import simplexity.simplepms.paper.saving.objects.PlayerBlock; +import com.simplexity.simplepms.common.database.objects.PlayerBlock; import java.util.List; import java.util.UUID; diff --git a/paper/src/main/java/simplexity/simplepms/paper/saving/Cache.java b/paper/src/main/java/simplexity/simplepms/paper/saving/Cache.java index 02d13a7..fc09ac1 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/saving/Cache.java +++ b/paper/src/main/java/simplexity/simplepms/paper/saving/Cache.java @@ -4,8 +4,8 @@ import org.bukkit.entity.Player; import simplexity.simplepms.paper.SimplePMs; import simplexity.simplepms.paper.config.LocaleMessage; -import simplexity.simplepms.paper.saving.objects.PlayerBlock; -import simplexity.simplepms.paper.saving.objects.PlayerSettings; +import com.simplexity.simplepms.common.database.objects.PlayerBlock; +import com.simplexity.simplepms.common.database.objects.PlayerSettings; import java.util.ArrayList; import java.util.HashMap; @@ -30,11 +30,11 @@ public static PlayerSettings getPlayerSettings(UUID uuid) { public static void populateCache(UUID uuid, Player player, boolean hasSpyPerms) { Bukkit.getScheduler().runTaskAsynchronously(SimplePMs.getInstance(), () -> { - SqlHandler.getInstance().getBlockedPlayers(uuid).thenAccept(blocklist -> { + DatabaseHandler.getInstance().getBlockedPlayers(uuid).thenAccept(blocklist -> { blockList.put(uuid, blocklist); populateNullNames(uuid); }); - SqlHandler.getInstance().getSettings(uuid).thenAccept(settings -> { + DatabaseHandler.getInstance().getSettings(uuid).thenAccept(settings -> { playerSettings.put(uuid, settings); if (hasSpyPerms && settings.isSocialSpyEnabled()) { spyingPlayers.add(player); @@ -71,7 +71,7 @@ public static void updateSocialSpySettings(UUID uuid, boolean socialSpy) { PlayerSettings settings = playerSettings.get(uuid); settings.setSocialSpyEnabled(socialSpy); playerSettings.put(uuid, settings); - SqlHandler.getInstance().updateSettings(uuid, settings.isSocialSpyEnabled(), settings.areMessagesDisabled()); + DatabaseHandler.getInstance().updateSettings(uuid, settings.isSocialSpyEnabled(), settings.areMessagesDisabled()); } /** @@ -84,7 +84,7 @@ public static void updateMessageSettings(UUID uuid, boolean messageDisabled) { PlayerSettings settings = playerSettings.get(uuid); settings.setMessagesDisabled(messageDisabled); playerSettings.put(uuid, settings); - SqlHandler.getInstance().updateSettings(uuid, settings.isSocialSpyEnabled(), settings.areMessagesDisabled()); + DatabaseHandler.getInstance().updateSettings(uuid, settings.isSocialSpyEnabled(), settings.areMessagesDisabled()); } /** @@ -99,7 +99,7 @@ public static void addBlockedUser(UUID uuid, PlayerBlock playerBlock) { List blockedPlayers = blockList.get(uuid); blockedPlayers.add(playerBlock); blockList.put(uuid, blockedPlayers); - SqlHandler.getInstance().addBlockedPlayer(uuid, playerBlock.getBlockedPlayerUUID(), playerBlock.getBlockedPlayerName(), playerBlock.getBlockReason()); + DatabaseHandler.getInstance().addBlockedPlayer(uuid, playerBlock.getBlockedPlayerUUID(), playerBlock.getBlockedPlayerName(), playerBlock.getBlockReason()); } /** @@ -117,7 +117,7 @@ public static void removeBlockedUser(UUID uuid, UUID blockedPlayerUuid) { } } blockList.put(uuid, userBlockList); - SqlHandler.getInstance().removeBlockedPlayer(uuid, blockedPlayerUuid); + DatabaseHandler.getInstance().removeBlockedPlayer(uuid, blockedPlayerUuid); } private static void removeCachedDuplicates(UUID blockingUuid, UUID blockedUuid) { diff --git a/paper/src/main/java/simplexity/simplepms/paper/saving/DatabaseHandler.java b/paper/src/main/java/simplexity/simplepms/paper/saving/DatabaseHandler.java new file mode 100644 index 0000000..aa318f1 --- /dev/null +++ b/paper/src/main/java/simplexity/simplepms/paper/saving/DatabaseHandler.java @@ -0,0 +1,81 @@ +package simplexity.simplepms.paper.saving; + +import com.simplexity.simplepms.common.database.SQLHandler; +import org.bukkit.Bukkit; +import org.bukkit.plugin.Plugin; +import simplexity.simplepms.paper.SimplePMs; +import simplexity.simplepms.paper.config.ConfigHandler; +import com.simplexity.simplepms.common.database.objects.PlayerBlock; +import com.simplexity.simplepms.common.database.objects.PlayerSettings; + +import java.util.List; +import java.util.UUID; +import java.util.concurrent.CompletableFuture; + +@SuppressWarnings({"SqlResolve", "StringTemplateMigration", "SameParameterValue"}) +public class DatabaseHandler { + + private DatabaseHandler() { } + + private static DatabaseHandler instance; + + public static DatabaseHandler getInstance() { + if (instance == null) instance = new DatabaseHandler(); + return instance; + } + + private static final Plugin plugin = SimplePMs.getInstance(); + + public void init() { + setupConfig(); + SQLHandler.setUsingMySQL(ConfigHandler.getInstance().isMysqlEnabled()); + SQLHandler.getInstance().init(); + } + + public void reloadDatabase() { + shutdownConnection(); + setupConfig(); + } + + public CompletableFuture getSettings(UUID playerUUID) { + return CompletableFuture.supplyAsync(() -> SQLHandler.getInstance().getSettings(playerUUID)); + } + + public CompletableFuture> getBlockedPlayers(UUID playerUUID) { + return CompletableFuture.supplyAsync(() -> SQLHandler.getInstance().getBlockedPlayers(playerUUID)); + } + + public void addBlockedPlayer(UUID playerUUID, UUID blockedPlayerUUID, String blockedPlayerName, String reason) { + Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> SQLHandler.getInstance().addBlockedPlayer(playerUUID, blockedPlayerUUID, blockedPlayerName, reason)); + } + + public void removeBlockedPlayer(UUID playerUUID, UUID blockedPlayerUUID) { + Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> SQLHandler.getInstance().removeBlockedPlayer(playerUUID, blockedPlayerUUID)); + } + + public void updateSettings(UUID playerUUID, boolean socialSpyEnabled, boolean messagesDisabled) { + Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> SQLHandler.getInstance().updateSettings(playerUUID, socialSpyEnabled, messagesDisabled)); + + } + + private void setupConfig() { + if (ConfigHandler.getInstance().isMysqlEnabled()) { + SQLHandler.getInstance().setupConfig( + "jdbc:mysql://" + ConfigHandler.getInstance().getMysqlIp() + "/" + ConfigHandler.getInstance().getMysqlName(), + ConfigHandler.getInstance().getMysqlUsername(), + ConfigHandler.getInstance().getMysqlPassword() + ); + } + else { + SQLHandler.getInstance().setupConfig( + "jdbc:sqlite:" + SimplePMs.getInstance().getDataFolder() + "/simple-pms.db", + null, + null + ); + } + } + + public void shutdownConnection() { + SQLHandler.getInstance().shutdownConnection(); + } +} diff --git a/paper/src/main/java/simplexity/simplepms/paper/saving/SqlHandler.java b/paper/src/main/java/simplexity/simplepms/paper/saving/SqlHandler.java deleted file mode 100644 index 9d73cb9..0000000 --- a/paper/src/main/java/simplexity/simplepms/paper/saving/SqlHandler.java +++ /dev/null @@ -1,262 +0,0 @@ -package simplexity.simplepms.paper.saving; - -import com.zaxxer.hikari.HikariConfig; -import com.zaxxer.hikari.HikariDataSource; -import org.bukkit.Bukkit; -import org.bukkit.plugin.Plugin; -import org.slf4j.Logger; -import simplexity.simplepms.paper.SimplePMs; -import simplexity.simplepms.paper.config.ConfigHandler; -import simplexity.simplepms.paper.saving.objects.PlayerBlock; -import simplexity.simplepms.paper.saving.objects.PlayerSettings; - -import java.sql.Connection; -import java.sql.DatabaseMetaData; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; -import java.util.concurrent.CompletableFuture; - -@SuppressWarnings({"CallToPrintStackTrace", "SqlResolve", "StringTemplateMigration", "SameParameterValue"}) -public class SqlHandler { - - private SqlHandler() { - } - - private static SqlHandler instance; - - public static SqlHandler getInstance() { - if (instance == null) { - instance = new SqlHandler(); - } - return instance; - } - - - private static final HikariConfig hikariConfig = new HikariConfig(); - private static HikariDataSource dataSource; - private static final Plugin plugin = SimplePMs.getInstance(); - private final Logger logger = SimplePMs.getInstance().getSLF4JLogger(); - - - public void init() { - setupConfig(); - try (Connection connection = getConnection()) { - PreparedStatement blocklistInitStatement = connection.prepareStatement(""" - CREATE TABLE IF NOT EXISTS blocklist ( - player_uuid VARCHAR (36) NOT NULL, - blocked_player_uuid VARCHAR(36) NOT NULL, - blocked_player_name VARCHAR(256), - block_reason VARCHAR(256), - PRIMARY KEY (player_uuid, blocked_player_uuid) - );"""); - blocklistInitStatement.execute(); - PreparedStatement playerSettingsInitStatement = connection.prepareStatement(""" - CREATE TABLE IF NOT EXISTS settings ( - player_uuid VARCHAR (36) NOT NULL PRIMARY KEY, - socialspy_enabled BOOLEAN NOT NULL, - messages_disabled BOOLEAN NOT NULL - );"""); - playerSettingsInitStatement.execute(); - updateDatabaseColumns().join(); - } catch (SQLException e) { - logger.warn("Failed to connect to database: {}", e.getMessage(), e); - } - } - - public void reloadDatabase() { - logger.info("Reconnecting to SimplePMs database..."); - shutdownConnection(); - setupConfig(); - logger.info("Database reloaded successfully"); - } - - - public CompletableFuture getSettings(UUID playerUUID) { - return CompletableFuture.supplyAsync(() -> { - String queryString = "SELECT socialspy_enabled, messages_disabled FROM settings WHERE player_uuid = ?;"; - PlayerSettings settings = null; - try (Connection connection = getConnection()) { - PreparedStatement statement = connection.prepareStatement(queryString); - statement.setString(1, String.valueOf(playerUUID)); - try (ResultSet resultSet = statement.executeQuery()) { - if (!resultSet.next()) { - settings = new PlayerSettings(playerUUID); - updateSettings(playerUUID, settings.isSocialSpyEnabled(), settings.areMessagesDisabled()); - } else { - boolean socialSpy = resultSet.getBoolean("socialspy_enabled"); - boolean messagesDisabled = resultSet.getBoolean("messages_disabled"); - settings = new PlayerSettings(playerUUID, socialSpy, messagesDisabled); - } - } - } catch (SQLException e) { - logger.warn("Failed to retrieve settings from database: {}", e.getMessage(), e); - } - return settings; - }); - } - - public CompletableFuture> getBlockedPlayers(UUID playerUUID) { - return CompletableFuture.supplyAsync(() -> { - String queryString = "SELECT blocked_player_uuid, block_reason, blocked_player_name from blocklist WHERE player_uuid = ?;"; - List blockedPlayers = new ArrayList<>(); - try (Connection connection = getConnection()) { - PreparedStatement statement = connection.prepareStatement(queryString); - statement.setString(1, String.valueOf(playerUUID)); - try (ResultSet resultSet = statement.executeQuery()) { - while (resultSet.next()) { - UUID blockedPlayerUUID = UUID.fromString(resultSet.getString("blocked_player_uuid")); - String blockedPlayerName = resultSet.getString("blocked_player_name"); - String reason = resultSet.getString("block_reason"); - PlayerBlock block = new PlayerBlock(playerUUID, blockedPlayerName, blockedPlayerUUID, reason); - blockedPlayers.add(block); - } - } - } catch (SQLException e) { - logger.warn("Failed to get blocked players: {}", e.getMessage(), e); - } - return blockedPlayers; - }); - } - - public void addBlockedPlayer(UUID playerUUID, UUID blockedPlayerUUID, String blockedPlayerName, String reason) { - Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { - String queryString = "REPLACE INTO blocklist (player_uuid, blocked_player_uuid, blocked_player_name, block_reason) VALUES (?, ?, ?, ?);"; - try (Connection connection = getConnection()) { - PreparedStatement statement = connection.prepareStatement(queryString); - statement.setString(1, String.valueOf(playerUUID)); - statement.setString(2, String.valueOf(blockedPlayerUUID)); - statement.setString(3, blockedPlayerName); - statement.setString(4, reason); - statement.executeUpdate(); - } catch (SQLException e) { - logger.warn("Failed to add blocked player: {}", e.getMessage(), e); - e.printStackTrace(); - } - }); - } - - public void removeBlockedPlayer(UUID playerUUID, UUID blockedPlayerUUID) { - Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { - String queryString = "DELETE FROM blocklist WHERE player_uuid = ? and blocked_player_uuid = ?;"; - try (Connection connection = getConnection()) { - PreparedStatement statement = connection.prepareStatement(queryString); - statement.setString(1, String.valueOf(playerUUID)); - statement.setString(2, String.valueOf(blockedPlayerUUID)); - statement.executeUpdate(); - } catch (SQLException e) { - logger.warn("Failed to remove blocked player: {}", e.getMessage(), e); - } - }); - } - - public void updateSettings(UUID playerUUID, boolean socialSpyEnabled, boolean messagesDisabled) { - Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { - String queryString = "REPLACE INTO settings (player_uuid, socialspy_enabled, messages_disabled) VALUES (?, ?, ?);"; - try (Connection connection = getConnection()) { - PreparedStatement statement = connection.prepareStatement(queryString); - statement.setString(1, String.valueOf(playerUUID)); - statement.setBoolean(2, socialSpyEnabled); - statement.setBoolean(3, messagesDisabled); - statement.executeUpdate(); - } catch (SQLException e) { - logger.warn("Failed to update settings to database: {}", e.getMessage(), e); - } - }); - - } - - private CompletableFuture updateDatabaseColumns() { - return CompletableFuture.supplyAsync(() -> { - String tableName = "blocklist"; - String columnName = "blocked_player_name"; - boolean columnExists; - try { - if (ConfigHandler.getInstance().isMysqlEnabled()) { - columnExists = doesMysqlColumnExist(tableName, columnName).get(); - } else { - columnExists = doesSqliteColumnExist(tableName, columnName).get(); - } - if (!columnExists) { - addColumn(tableName, columnName, "VARCHAR(256)", ""); - } - } catch (Exception e) { - logger.warn("Unable to update database table: {} column: {}, error: {}", tableName, columnName, e.getMessage(), e); - return false; - } - return true; - }); - } - - private CompletableFuture doesSqliteColumnExist(String tableName, String columnName) { - return CompletableFuture.supplyAsync(() -> { - String query = "PRAGMA table_info(" + tableName + ")"; - try (Connection connection = getConnection()) { - PreparedStatement statement = connection.prepareStatement(query); - ResultSet resultSet = statement.executeQuery(); - while (resultSet.next()) { - if (columnName.equalsIgnoreCase(resultSet.getString("name"))) { - return true; - } - } - } catch (SQLException e) { - logger.warn("Failed to to check for column {} in table {}: {}", columnName, tableName, e.getMessage(), e); - } - return false; - }); - } - - private CompletableFuture doesMysqlColumnExist(String tableName, String columnName) { - return CompletableFuture.supplyAsync(() -> { - try (Connection connection = getConnection()) { - DatabaseMetaData metaData = connection.getMetaData(); - ResultSet resultSet = metaData.getColumns(null, null, tableName, columnName); - return resultSet.next(); - } catch (SQLException e) { - logger.warn("Failed to check for column {} in table {}: {}", columnName, tableName, e.getMessage(), e); - } - return false; - }); - } - - // Possibly extremely cursed way to do this :cackle: - - private void addColumn(String tableName, String columnName, String dataType, String constraints) { - String query = String.format("ALTER TABLE %s ADD COLUMN %s %s %s;", tableName, columnName, dataType, constraints); - try (Connection connection = getConnection()) { - PreparedStatement statement = connection.prepareStatement(query); - statement.executeUpdate(); - logger.info("Added new column '{}' to table '{}'", columnName, tableName); - } catch (SQLException e) { - logger.warn("Failed to add new column {} to table {}: {}", columnName, tableName, e.getMessage(), e); - } - } - - - private void setupConfig() { - if (!ConfigHandler.getInstance().isMysqlEnabled()) { - hikariConfig.setJdbcUrl("jdbc:sqlite:" + SimplePMs.getInstance().getDataFolder() + "/simple-pms.db"); - hikariConfig.setConnectionTestQuery("PRAGMA journal_mode = WAL;"); - dataSource = new HikariDataSource(hikariConfig); - return; - } - hikariConfig.setJdbcUrl("jdbc:mysql://" + ConfigHandler.getInstance().getMysqlIp() + "/" + ConfigHandler.getInstance().getMysqlName()); - hikariConfig.setUsername(ConfigHandler.getInstance().getMysqlUsername()); - hikariConfig.setPassword(ConfigHandler.getInstance().getMysqlPassword()); - dataSource = new HikariDataSource(hikariConfig); - } - - private static Connection getConnection() throws SQLException { - return dataSource.getConnection(); - } - - public void shutdownConnection() { - if (dataSource == null || dataSource.isClosed()) return; - dataSource.close(); - dataSource = null; - logger.info("Closed existing database connection"); - } -} From 2502ede5d993f7def0e2cb10e3aa6a2a6746676d Mon Sep 17 00:00:00 2001 From: Peashooter101 Date: Tue, 18 Nov 2025 21:53:47 -0600 Subject: [PATCH 3/3] Refactor Cache (DRAFT) --- common/pom.xml | 6 +++ .../simplepms/common/database}/Cache.java | 46 ++++++++----------- .../simplepms/common/logic/LocaleKey.java | 7 +++ .../common/logic/PlatformAdapter.java | 23 ++++++++++ .../common/logic/PlatformBridge.java | 33 +++++++++++++ paper/pom.xml | 1 + .../simplexity/simplepms/paper/SimplePMs.java | 3 ++ .../simplepms/paper/commands/Blocklist.java | 2 +- .../paper/commands/MessageToggle.java | 2 +- .../simplepms/paper/commands/SocialSpy.java | 6 +-- .../simplepms/paper/commands/Unblock.java | 2 +- .../paper/commands/util/MessageChecks.java | 2 +- .../paper/listeners/JoinListener.java | 4 +- .../paper/listeners/QuitListener.java | 2 +- .../simplepms/paper/logic/BlockHandler.java | 2 +- .../simplepms/paper/logic/PMHandler.java | 8 +++- .../paper/logic/PaperPlatformAdapter.java | 27 +++++++++++ .../simplepms/paper/logic/SpyHandler.java | 9 +++- .../simplepms/paper/logic/UnblockHandler.java | 2 +- 19 files changed, 145 insertions(+), 42 deletions(-) rename {paper/src/main/java/simplexity/simplepms/paper/saving => common/src/main/java/com/simplexity/simplepms/common/database}/Cache.java (70%) create mode 100644 common/src/main/java/com/simplexity/simplepms/common/logic/LocaleKey.java create mode 100644 common/src/main/java/com/simplexity/simplepms/common/logic/PlatformAdapter.java create mode 100644 common/src/main/java/com/simplexity/simplepms/common/logic/PlatformBridge.java create mode 100644 paper/src/main/java/simplexity/simplepms/paper/logic/PaperPlatformAdapter.java diff --git a/common/pom.xml b/common/pom.xml index b549e34..9ca69c6 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -30,6 +30,12 @@ HikariCP 6.3.0 + + org.jetbrains + annotations + 26.0.2 + compile + \ No newline at end of file diff --git a/paper/src/main/java/simplexity/simplepms/paper/saving/Cache.java b/common/src/main/java/com/simplexity/simplepms/common/database/Cache.java similarity index 70% rename from paper/src/main/java/simplexity/simplepms/paper/saving/Cache.java rename to common/src/main/java/com/simplexity/simplepms/common/database/Cache.java index fc09ac1..778cd13 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/saving/Cache.java +++ b/common/src/main/java/com/simplexity/simplepms/common/database/Cache.java @@ -1,9 +1,7 @@ -package simplexity.simplepms.paper.saving; +package com.simplexity.simplepms.common.database; -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; -import simplexity.simplepms.paper.SimplePMs; -import simplexity.simplepms.paper.config.LocaleMessage; +import com.simplexity.simplepms.common.logic.LocaleKey; +import com.simplexity.simplepms.common.logic.PlatformBridge; import com.simplexity.simplepms.common.database.objects.PlayerBlock; import com.simplexity.simplepms.common.database.objects.PlayerSettings; @@ -17,7 +15,7 @@ public class Cache { public static final HashMap> blockList = new HashMap<>(); public static final HashMap playerSettings = new HashMap<>(); - public static final HashSet spyingPlayers = new HashSet<>(); + public static final HashSet spyingPlayers = new HashSet<>(); public static List getBlockList(UUID uuid) { return blockList.get(uuid); @@ -27,20 +25,16 @@ public static PlayerSettings getPlayerSettings(UUID uuid) { return playerSettings.get(uuid); } + public static void populateCache(UUID uuid, boolean hasSpyPerms) { + List blocklist = SQLHandler.getInstance().getBlockedPlayers(uuid); + blockList.put(uuid, blocklist); + populateNullNames(uuid); - public static void populateCache(UUID uuid, Player player, boolean hasSpyPerms) { - Bukkit.getScheduler().runTaskAsynchronously(SimplePMs.getInstance(), () -> { - DatabaseHandler.getInstance().getBlockedPlayers(uuid).thenAccept(blocklist -> { - blockList.put(uuid, blocklist); - populateNullNames(uuid); - }); - DatabaseHandler.getInstance().getSettings(uuid).thenAccept(settings -> { - playerSettings.put(uuid, settings); - if (hasSpyPerms && settings.isSocialSpyEnabled()) { - spyingPlayers.add(player); - } - }); - }); + PlayerSettings settings = SQLHandler.getInstance().getSettings(uuid); + playerSettings.put(uuid, settings); + if (hasSpyPerms && settings.isSocialSpyEnabled()) { + spyingPlayers.add(uuid); + } } /** @@ -71,7 +65,7 @@ public static void updateSocialSpySettings(UUID uuid, boolean socialSpy) { PlayerSettings settings = playerSettings.get(uuid); settings.setSocialSpyEnabled(socialSpy); playerSettings.put(uuid, settings); - DatabaseHandler.getInstance().updateSettings(uuid, settings.isSocialSpyEnabled(), settings.areMessagesDisabled()); + SQLHandler.getInstance().updateSettings(uuid, settings.isSocialSpyEnabled(), settings.areMessagesDisabled()); } /** @@ -84,7 +78,7 @@ public static void updateMessageSettings(UUID uuid, boolean messageDisabled) { PlayerSettings settings = playerSettings.get(uuid); settings.setMessagesDisabled(messageDisabled); playerSettings.put(uuid, settings); - DatabaseHandler.getInstance().updateSettings(uuid, settings.isSocialSpyEnabled(), settings.areMessagesDisabled()); + SQLHandler.getInstance().updateSettings(uuid, settings.isSocialSpyEnabled(), settings.areMessagesDisabled()); } /** @@ -99,7 +93,7 @@ public static void addBlockedUser(UUID uuid, PlayerBlock playerBlock) { List blockedPlayers = blockList.get(uuid); blockedPlayers.add(playerBlock); blockList.put(uuid, blockedPlayers); - DatabaseHandler.getInstance().addBlockedPlayer(uuid, playerBlock.getBlockedPlayerUUID(), playerBlock.getBlockedPlayerName(), playerBlock.getBlockReason()); + SQLHandler.getInstance().addBlockedPlayer(uuid, playerBlock.getBlockedPlayerUUID(), playerBlock.getBlockedPlayerName(), playerBlock.getBlockReason()); } /** @@ -117,7 +111,7 @@ public static void removeBlockedUser(UUID uuid, UUID blockedPlayerUuid) { } } blockList.put(uuid, userBlockList); - DatabaseHandler.getInstance().removeBlockedPlayer(uuid, blockedPlayerUuid); + SQLHandler.getInstance().removeBlockedPlayer(uuid, blockedPlayerUuid); } private static void removeCachedDuplicates(UUID blockingUuid, UUID blockedUuid) { @@ -132,15 +126,15 @@ private static void populateNullNames(UUID uuidToCheck) { if (playerBlocks == null || playerBlocks.isEmpty()) return; for (PlayerBlock block : playerBlocks) { if (block.getBlockedPlayerName() == null || block.getBlockedPlayerName().isEmpty()) { - String newName = Bukkit.getOfflinePlayer(block.getBlockedPlayerUUID()).getName(); - if (newName == null) newName = LocaleMessage.ERROR_NAME_NOT_FOUND.getMessage(); + String newName = PlatformBridge.getPlatformAdapter().getPlayerName(block.getBlockedPlayerUUID()); + if (newName == null) newName = PlatformBridge.getPlatformAdapter().getLocaleString(LocaleKey.ERROR_NAME_NOT_FOUND); block.setBlockedPlayerName(newName); } } blockList.put(uuidToCheck, playerBlocks); } - public static Set getSpyingPlayers() { + public static Set getSpyingPlayers() { return spyingPlayers; } } diff --git a/common/src/main/java/com/simplexity/simplepms/common/logic/LocaleKey.java b/common/src/main/java/com/simplexity/simplepms/common/logic/LocaleKey.java new file mode 100644 index 0000000..3c02a16 --- /dev/null +++ b/common/src/main/java/com/simplexity/simplepms/common/logic/LocaleKey.java @@ -0,0 +1,7 @@ +package com.simplexity.simplepms.common.logic; + +public enum LocaleKey { + + ERROR_NAME_NOT_FOUND + +} diff --git a/common/src/main/java/com/simplexity/simplepms/common/logic/PlatformAdapter.java b/common/src/main/java/com/simplexity/simplepms/common/logic/PlatformAdapter.java new file mode 100644 index 0000000..4b397cd --- /dev/null +++ b/common/src/main/java/com/simplexity/simplepms/common/logic/PlatformAdapter.java @@ -0,0 +1,23 @@ +package com.simplexity.simplepms.common.logic; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.UUID; + +public interface PlatformAdapter { + + /** + * Retrieve the player name based on the player's UUID. + * @param playerUUID Player's UUID + * @return Player's name + */ + @Nullable String getPlayerName(@NotNull UUID playerUUID); + + /** + * Retrieve a locale String from a given {@link LocaleKey} + * @return String defined by the {@link LocaleKey}, null if not found. + */ + @Nullable String getLocaleString(@NotNull LocaleKey key); + +} diff --git a/common/src/main/java/com/simplexity/simplepms/common/logic/PlatformBridge.java b/common/src/main/java/com/simplexity/simplepms/common/logic/PlatformBridge.java new file mode 100644 index 0000000..540f9b6 --- /dev/null +++ b/common/src/main/java/com/simplexity/simplepms/common/logic/PlatformBridge.java @@ -0,0 +1,33 @@ +package com.simplexity.simplepms.common.logic; + +import org.jetbrains.annotations.NotNull; + +public class PlatformBridge { + + private static PlatformAdapter adapter; + + /** + * Sets the platform adapter. + *
+ * Any platform should implement their own version of {@link PlatformAdapter} + * and then call this method. + * @param adapter PlatformAdapter implemented by the platform. + */ + public static void setPlatformAdapter(@NotNull PlatformAdapter adapter) { + PlatformBridge.adapter = adapter; + } + + /** + * Retrieves the platform adapter for use in the common module. + *
+ * {@link #setPlatformAdapter(PlatformAdapter)} should be called + * in the enable step of whatever platform is being used. + * @return PlatformAdapter + * @throws IllegalStateException If the platform adapter was never set before calling any PlatformAdapter methods. + */ + public static @NotNull PlatformAdapter getPlatformAdapter() { + if (adapter == null) throw new IllegalStateException("PlatformAdapter was not initialized."); + return adapter; + } + +} diff --git a/paper/pom.xml b/paper/pom.xml index 4aaf83a..d59f7dd 100644 --- a/paper/pom.xml +++ b/paper/pom.xml @@ -60,6 +60,7 @@ *:* META-INF/MANIFEST.MF + META-INF/versions/9/module-info.class diff --git a/paper/src/main/java/simplexity/simplepms/paper/SimplePMs.java b/paper/src/main/java/simplexity/simplepms/paper/SimplePMs.java index cbd472a..6a21d47 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/SimplePMs.java +++ b/paper/src/main/java/simplexity/simplepms/paper/SimplePMs.java @@ -1,6 +1,7 @@ package simplexity.simplepms.paper; import com.simplexity.simplepms.common.logger.Logger; +import com.simplexity.simplepms.common.logic.PlatformBridge; import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents; import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.command.ConsoleCommandSender; @@ -19,6 +20,7 @@ import simplexity.simplepms.paper.listeners.PreCommandListener; import simplexity.simplepms.paper.listeners.QuitListener; import simplexity.simplepms.paper.logic.Constants; +import simplexity.simplepms.paper.logic.PaperPlatformAdapter; import simplexity.simplepms.paper.saving.DatabaseHandler; @SuppressWarnings("UnstableApiUsage") @@ -42,6 +44,7 @@ public void onEnable() { registerCommands(); registerPermissions(); Logger.setLogger(this.getSLF4JLogger()); + PlatformBridge.setPlatformAdapter(new PaperPlatformAdapter()); } private void registerListeners() { diff --git a/paper/src/main/java/simplexity/simplepms/paper/commands/Blocklist.java b/paper/src/main/java/simplexity/simplepms/paper/commands/Blocklist.java index 1afd18e..ebcb985 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/commands/Blocklist.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/Blocklist.java @@ -11,7 +11,7 @@ import simplexity.simplepms.paper.SimplePMs; import simplexity.simplepms.paper.config.LocaleMessage; import simplexity.simplepms.paper.logic.Constants; -import simplexity.simplepms.paper.saving.Cache; +import com.simplexity.simplepms.common.database.Cache; import com.simplexity.simplepms.common.database.objects.PlayerBlock; import java.util.List; diff --git a/paper/src/main/java/simplexity/simplepms/paper/commands/MessageToggle.java b/paper/src/main/java/simplexity/simplepms/paper/commands/MessageToggle.java index 22e8c95..f7a38d3 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/commands/MessageToggle.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/MessageToggle.java @@ -7,7 +7,7 @@ import org.bukkit.entity.Player; import simplexity.simplepms.paper.config.LocaleMessage; import simplexity.simplepms.paper.logic.Constants; -import simplexity.simplepms.paper.saving.Cache; +import com.simplexity.simplepms.common.database.Cache; import com.simplexity.simplepms.common.database.objects.PlayerSettings; import java.util.UUID; diff --git a/paper/src/main/java/simplexity/simplepms/paper/commands/SocialSpy.java b/paper/src/main/java/simplexity/simplepms/paper/commands/SocialSpy.java index 915a59f..3c12922 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/commands/SocialSpy.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/SocialSpy.java @@ -8,7 +8,7 @@ import org.bukkit.entity.Player; import simplexity.simplepms.paper.config.LocaleMessage; import simplexity.simplepms.paper.logic.Constants; -import simplexity.simplepms.paper.saving.Cache; +import com.simplexity.simplepms.common.database.Cache; import com.simplexity.simplepms.common.database.objects.PlayerSettings; import java.util.UUID; @@ -40,12 +40,12 @@ private static int execute(CommandContext ctx) { if (settings == null || settings.isSocialSpyEnabled()) { Cache.updateSocialSpySettings(uuid, false); player.sendRichMessage(LocaleMessage.SOCIAL_SPY_DISABLED.getMessage()); - Cache.getSpyingPlayers().remove(player); + Cache.getSpyingPlayers().remove(player.getUniqueId()); return Command.SINGLE_SUCCESS; } Cache.updateSocialSpySettings(uuid, true); player.sendRichMessage(LocaleMessage.SOCIAL_SPY_ENABLED.getMessage()); - Cache.getSpyingPlayers().add(player); + Cache.getSpyingPlayers().add(player.getUniqueId()); return Command.SINGLE_SUCCESS; } diff --git a/paper/src/main/java/simplexity/simplepms/paper/commands/Unblock.java b/paper/src/main/java/simplexity/simplepms/paper/commands/Unblock.java index cfb85ce..11f1609 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/commands/Unblock.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/Unblock.java @@ -18,7 +18,7 @@ import simplexity.simplepms.paper.config.LocaleMessage; import simplexity.simplepms.paper.logic.Constants; import simplexity.simplepms.paper.logic.UnblockHandler; -import simplexity.simplepms.paper.saving.Cache; +import com.simplexity.simplepms.common.database.Cache; import com.simplexity.simplepms.common.database.objects.PlayerBlock; import java.util.List; diff --git a/paper/src/main/java/simplexity/simplepms/paper/commands/util/MessageChecks.java b/paper/src/main/java/simplexity/simplepms/paper/commands/util/MessageChecks.java index 43be108..e4d95f6 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/commands/util/MessageChecks.java +++ b/paper/src/main/java/simplexity/simplepms/paper/commands/util/MessageChecks.java @@ -5,7 +5,7 @@ import org.bukkit.entity.Player; import simplexity.simplepms.paper.config.ConfigHandler; import simplexity.simplepms.paper.logic.Constants; -import simplexity.simplepms.paper.saving.Cache; +import com.simplexity.simplepms.common.database.Cache; import com.simplexity.simplepms.common.database.objects.PlayerBlock; import com.simplexity.simplepms.common.database.objects.PlayerSettings; diff --git a/paper/src/main/java/simplexity/simplepms/paper/listeners/JoinListener.java b/paper/src/main/java/simplexity/simplepms/paper/listeners/JoinListener.java index cb58378..178246f 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/listeners/JoinListener.java +++ b/paper/src/main/java/simplexity/simplepms/paper/listeners/JoinListener.java @@ -5,7 +5,7 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import simplexity.simplepms.paper.logic.Constants; -import simplexity.simplepms.paper.saving.Cache; +import com.simplexity.simplepms.common.database.Cache; import java.util.UUID; @@ -15,6 +15,6 @@ public class JoinListener implements Listener { public void onLogin(PlayerJoinEvent joinEvent) { Player player = joinEvent.getPlayer(); UUID playerUuid = player.getUniqueId(); - Cache.populateCache(playerUuid, player, player.hasPermission(Constants.ADMIN_SOCIAL_SPY)); + Cache.populateCache(playerUuid, player.hasPermission(Constants.ADMIN_SOCIAL_SPY)); } } diff --git a/paper/src/main/java/simplexity/simplepms/paper/listeners/QuitListener.java b/paper/src/main/java/simplexity/simplepms/paper/listeners/QuitListener.java index 4ba307d..4e5da54 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/listeners/QuitListener.java +++ b/paper/src/main/java/simplexity/simplepms/paper/listeners/QuitListener.java @@ -3,7 +3,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerQuitEvent; -import simplexity.simplepms.paper.saving.Cache; +import com.simplexity.simplepms.common.database.Cache; public class QuitListener implements Listener { @EventHandler diff --git a/paper/src/main/java/simplexity/simplepms/paper/logic/BlockHandler.java b/paper/src/main/java/simplexity/simplepms/paper/logic/BlockHandler.java index a7021f9..684525e 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/logic/BlockHandler.java +++ b/paper/src/main/java/simplexity/simplepms/paper/logic/BlockHandler.java @@ -5,7 +5,7 @@ import org.jetbrains.annotations.NotNull; import simplexity.simplepms.paper.SimplePMs; import simplexity.simplepms.paper.events.BlockUserEvent; -import simplexity.simplepms.paper.saving.Cache; +import com.simplexity.simplepms.common.database.Cache; import com.simplexity.simplepms.common.database.objects.PlayerBlock; import javax.annotation.Nullable; diff --git a/paper/src/main/java/simplexity/simplepms/paper/logic/PMHandler.java b/paper/src/main/java/simplexity/simplepms/paper/logic/PMHandler.java index e2f8db4..5f841b0 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/logic/PMHandler.java +++ b/paper/src/main/java/simplexity/simplepms/paper/logic/PMHandler.java @@ -1,5 +1,6 @@ package simplexity.simplepms.paper.logic; +import org.bukkit.Bukkit; import org.bukkit.Registry; import org.bukkit.Sound; import org.bukkit.command.CommandSender; @@ -8,9 +9,11 @@ import simplexity.simplepms.paper.config.ConfigHandler; import simplexity.simplepms.paper.config.LocaleMessage; import simplexity.simplepms.paper.events.PrivateMessageEvent; -import simplexity.simplepms.paper.saving.Cache; +import com.simplexity.simplepms.common.database.Cache; import java.util.HashMap; +import java.util.Set; +import java.util.stream.Collectors; public class PMHandler { public static final HashMap lastMessaged = new HashMap<>(); @@ -60,7 +63,8 @@ private static void handleMessageReceive(CommandSender initiator, CommandSender private static PrivateMessageEvent callPMEvent(CommandSender initiator, CommandSender target, String messageContent) { - PrivateMessageEvent messageEvent = new PrivateMessageEvent(initiator, target, messageContent, Cache.getSpyingPlayers()); + Set spyingPlayers = Cache.getSpyingPlayers().stream().map(Bukkit::getPlayer).collect(Collectors.toSet()); + PrivateMessageEvent messageEvent = new PrivateMessageEvent(initiator, target, messageContent, spyingPlayers); SimplePMs.getInstance().getServer().getPluginManager().callEvent(messageEvent); return messageEvent; } diff --git a/paper/src/main/java/simplexity/simplepms/paper/logic/PaperPlatformAdapter.java b/paper/src/main/java/simplexity/simplepms/paper/logic/PaperPlatformAdapter.java new file mode 100644 index 0000000..e7ad11f --- /dev/null +++ b/paper/src/main/java/simplexity/simplepms/paper/logic/PaperPlatformAdapter.java @@ -0,0 +1,27 @@ +package simplexity.simplepms.paper.logic; + +import com.simplexity.simplepms.common.logic.LocaleKey; +import com.simplexity.simplepms.common.logic.PlatformAdapter; +import org.bukkit.Bukkit; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import simplexity.simplepms.paper.config.LocaleMessage; + +import java.util.UUID; + +public class PaperPlatformAdapter implements PlatformAdapter { + @Override + public String getPlayerName(@NotNull UUID playerUUID) { + return Bukkit.getOfflinePlayer(playerUUID).getName(); + } + + @Override + public @Nullable String getLocaleString(@NotNull LocaleKey key) { + return switch (key) { + case ERROR_NAME_NOT_FOUND -> LocaleMessage.ERROR_NAME_NOT_FOUND.getMessage(); + default -> null; + }; + } + + +} diff --git a/paper/src/main/java/simplexity/simplepms/paper/logic/SpyHandler.java b/paper/src/main/java/simplexity/simplepms/paper/logic/SpyHandler.java index c43d759..4e524e9 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/logic/SpyHandler.java +++ b/paper/src/main/java/simplexity/simplepms/paper/logic/SpyHandler.java @@ -1,6 +1,7 @@ package simplexity.simplepms.paper.logic; import net.kyori.adventure.text.Component; +import org.bukkit.Bukkit; import org.bukkit.Registry; import org.bukkit.Sound; import org.bukkit.command.CommandSender; @@ -9,7 +10,10 @@ import simplexity.simplepms.paper.config.ConfigHandler; import simplexity.simplepms.paper.config.LocaleMessage; import simplexity.simplepms.paper.events.PrivateMessageEvent; -import simplexity.simplepms.paper.saving.Cache; +import com.simplexity.simplepms.common.database.Cache; + +import java.util.Set; +import java.util.stream.Collectors; public class SpyHandler { @@ -23,7 +27,8 @@ public static void sendCommandSpy(CommandSender initiator, String command, Strin console.sendMessage(parsedMessage); } if (initiator.hasPermission(Constants.BYPASS_COMMAND_SPY)) return; - for (Player spyingPlayer : Cache.getSpyingPlayers()) { + Set spyingPlayers = Cache.getSpyingPlayers().stream().map(Bukkit::getPlayer).collect(Collectors.toSet()); + for (Player spyingPlayer : spyingPlayers) { if (initiator.equals(spyingPlayer)) continue; if (!spyingPlayer.hasPermission(Constants.ADMIN_SOCIAL_SPY)) continue; spyingPlayer.sendMessage(parsedMessage); diff --git a/paper/src/main/java/simplexity/simplepms/paper/logic/UnblockHandler.java b/paper/src/main/java/simplexity/simplepms/paper/logic/UnblockHandler.java index 391f1d7..eabf2db 100644 --- a/paper/src/main/java/simplexity/simplepms/paper/logic/UnblockHandler.java +++ b/paper/src/main/java/simplexity/simplepms/paper/logic/UnblockHandler.java @@ -6,7 +6,7 @@ import org.jetbrains.annotations.NotNull; import simplexity.simplepms.paper.commands.util.Exceptions; import simplexity.simplepms.paper.events.UnblockUserEvent; -import simplexity.simplepms.paper.saving.Cache; +import com.simplexity.simplepms.common.database.Cache; import com.simplexity.simplepms.common.database.objects.PlayerBlock; import java.util.List;