Tags
Creators
Details
3.0
Compatibility
Changes
PokePlugin v3 - The Ultimate Player Interaction & Privacy Update
π§© Platform Support
Release Date: 20 October 2025
Maintained by: AlanTheDev
Public Brand Name: PokeNotify
π Version Overview
PokePlugin v3 is a major technical refinement release focused on performance, thread safety, and reliability.
This version rebuilds the plugin core for faster initialization, platform-accurate scheduling, stronger privacy enforcement, and better cross-platform support β all while remaining lightweight and stable across Folia, Paper, Spigot, Purpur, and Bukkit servers.
πΉ Core System Changes
β‘ Database Initialization
- Converted async initialization to synchronous during plugin startup.
- Prevents server hang and ensures faster boot times (<1 second).
- Auto-disables the plugin if database creation or connection fails.
- Enhanced error reporting and recovery handling.
π§ Scheduler System
- Implemented Platform-Aware Execution Model:
- Folia: Uses
player.getScheduler().run()(region-safe). - Others: Uses
Bukkit.getScheduler().runTask().
- Folia: Uses
- Database operations remain fully async-safe.
- GUI operations are automatically routed to the correct scheduler.
- Centralized utility ensures uniform task dispatching across all server types.
π Privacy & Interaction Enhancements
β Poke Validation Improvements
- Verifies targetβs privacy mode before sending a poke.
- Prevents poking blocked players or those who disabled pokes.
- Improved error messages for blocked/disabled targets.
- Admin command
/poke @abypasses all restrictions for announcements.
π§© Enhanced Command System
- Added context-aware tab completion for:
/poke settings/poke allow/poke disable/poke block <player>/poke unblock <player>
- Autocompletes @a for admins.
- Sorted alphabetically for cleaner UX.
π¨ GUI & Event System
πͺ GUI Click Handling
- GUI interactions now use platform-specific thread handling.
- Fixed async inventory creation causing GUI not to open.
- Improved color code stripping for reliable item title detection.
- Separated logic paths for Folia vs Bukkit-based servers.
- Optional debug logs for developer builds.
π§ Player GUI Experience
- Smooth transitions between settings and blocked players list.
- Dynamic sizing (auto-resizes up to 54 players).
- Fully thread-safe GUI operations.
π§± Technical Stability Fixes
π Server Hang on Startup
- Eliminated blocking
.join()calls. - Database operations no longer freeze the main thread.
- Startup initialization time: under 1 second on Folia.
βοΈ Cross-Platform Compatibility
- Fixed Folia scheduler conflicts and Paper async issues.
- Corrected Bukkit main-thread violations.
- Fully tested on 1.20.x β 1.21.4 versions.
πΎ Database Thread Safety
- All SQLite calls are fully asynchronous.
- Prevents concurrent modification and threading issues.
- Uses PreparedStatements for SQL injection protection.
- UUID validation and malformed data filtering added.
β¨ Message & Localization Updates
- Fixed placeholder replacements (
%poke_status%,%poke_privacy%) across all message contexts. - Corrected color formatting (now supports
&andΒ§codes). - Added multi-line message support for cleaner formatting.
- Hot-reload compatible with
/poke reload.
π Security & Permissions
- Players can now block unwanted pokes with full privacy enforcement.
- Blocked players cannot detect their status (hidden protection).
- Permission validation for all commands:
pokeplugin.settingsβ Access to player settings GUI (default: true)pokeplugin.adminβ Use/poke @a(default: op)
- Database hardened with safe query execution and data filtering.
π Performance & Metrics
- Fully integrated bStats (Plugin ID: 27606).
- Tracks installations, Minecraft versions, and platforms.
- Automatically relocates metrics package to
com.alan.pokePlugin.metrics. - Lightweight β adds <5KB overhead to plugin size.
π§© Configuration Overview
privacy:
default-mode: ALLOW_ALL # Default privacy for new players
database:
type: sqlite
file: data/pokedata.db
placeholders:
enabled: true
gui:
enabled: true
title: "&aPoke Settings"
size: 27
metrics:
enabled: true
debug: false # Enable detailed debug logging
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:YgKbtwn5:V2weRVqF"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:YgKbtwn5:V2weRVqF"
}

