Changelog
All changes for each version of FlectonePulse
Features
- Reason keys now carry a time, it is set by
reason_timesin the settings ofban,mute,warn,maintenanceandwhitelist. If no time is entered in the command, it is taken by the reason, anddefaultis used when the reason is not listed - Added
group_orderto the LuckPerms integration, to sort TAB by your own group order instead of the group weight - Added
check_group_weightto the/whoiscommand, a player with the same or higher permissions cannot be viewed and is hidden from the list - The punishment lists got the
line_not_activeformat, the list of a player now also shows the inactive punishments - The
conditiontag now works in sidebar messages with string list - Added sequential execution of the async tasks of one module, they no longer overtake each other
Refactors
- TAB, scoreboard and objectives send packets only when something has changed, what was sent is remembered
- The name updates in TAB now go player by player instead of everyone at once
- Name constants are updated always, not only in proxy mode
- The signature is removed from the
player_headtextures - Database queries and indexes are optimized,
/whoisnow makes one query instead of two - The punishment cache is reworked
- The
runAsyncwithindependentis removed from the scheduler - Vanish handling is simplified, a separate SuperVanish check is no longer needed
- The priorities of the join and quit events on Bukkit are changed
Bug Fixes
player_headtakes the head byuuidinstead of the name, which crashed the client of the players- Join and quit messages no longer reach the integrations several times in proxy mode
- Discord, Telegram and Twitch no longer connect several times on a fast
/flectonepulse reload - A player who is not in the database yet no longer gets into the online cache, which broke saving their settings
- Broken yaml no longer stays on disk after saving through the editor, the file is restored to the previous one
- The dump is validated before the import, an empty file no longer wipes the database
- A busy editor port no longer shuts the server down
- The stuck queue detection no longer clears it, because of this the async tasks of a module stopped forever
- The executor overload warning no longer appears on shutdown
- A permanent mute is detected in CMI
- The online status of a player is updated correctly in the database
- Negative time is no longer shown
- Updated the metrics link in config.yml
Dependencies
- Hytale Server updated to 0.6.3
- Velocity API updated to v4.1.0
- Fabric Loader updated to v0.19.5
- Fabric Loom updated to v1.17.20
- Discord4J updated to v3.3.3
- TelegramBots updated to v10.2.1
- PlasmoVoice updated to v2.1.16
- Lettuce updated to v7.7.0
- SQLite driver updated to v3.53.4.0
- Gradle updated to v9.7.1
Warning
Migrations from versions
1.4.3 to 1.11.0 are removed, as promised in 1.12.2. If you are updating from one of them, install 1.12.2 first, let it start once, and only then install 1.13.0Features
- Added NeoForge platform support
- The core is split into the
apiandcommonmodules, so addons now depend onapialone - Added the
fadingmodule for fading a message with distance and thetag - Added a cache for the punishments the integrations with other punishment plugins report, so every punishment is no longer asked about on every lookup
- Added database export and import to the
/flectonepulsecommand, along with file suggestions forimportanddatabase_import - Added H2 database migration from legacy store formats
- Added database connection pool settings
- Added notification and content protection options to the Telegram integration
- Added an allowed mentions option to the Discord integration
- Added a name pattern regex to the
mentionmodule - Added a maintenance placeholder to PlaceholderAPI and MiniPlaceholders
- Added multiline support to
motd - Added stall detection and recovery for the task queue
- Added async task awaiting with a timeout
- Added caching and lazy loading for tag resolvers
- Improved error handling and type conversion when reading yml
Refactors
- Name constants are now worked out on the player's own server and kept in the database, so they also work in the player list across a proxy. How often to work them out again is set by the new
tickerin thenamesmodule settings - Player settings storage is unified, and
getSetting,isSettingandsaveSettingnow also take the key a setting is stored under ExternalMuteServicerenamed toExternalModerationService- Caches moved from Guava to Caffeine
- PacketEvents replaced with packeteventsmodern
- Every platform is now built with Jar in Jar
- The fastutil library is dropped in favour of the standard collections
- Logging moved to platform adapters
- The Vault integration is disabled by default
- A mention is now always formatted, but the sound only reaches those who are not vanished
randreplyare added tospyby default- The reload events are merged into a single
ReloadEventwith a type - Adjusted the default cache sizes
- Simplified the CMI integration logic
- Added timeouts for https requests
- The database backup is now taken with DatabaseExporter
Bug Fixes
- The vanish state of SuperVanish is now handled, so it changes along with the plugin
- Added timeouts for Discord, Telegram and Twitch, so a stuck integration no longer holds up the startup
- A failed H2 database migration no longer breaks the startup
- The Bukkit scheduler now validates an entity before processing it
- Bubbles are no longer rendered for dead players and are cleaned up on teleport
- The player's world is only updated on a real teleport
- Fixed duplicate objectives being created for the scoreboard
- The plugin no longer forwards its own messages to clients on Velocity and proxies
- Fixed command suggestions and parsers
tictactoenow handles empty input and validates move coordinates- A rock paper scissors game is cleaned up when a player disconnects
swearnow handles an empty trigger and no longer allows apostrophe injection- The sidebar drops the leftover line when the new content is shorter
Dependencies
- Hytale Server updated to 0.5.8
- Fabric Loom updated to v1.17.19
- TelegramBots updated to v10.2.0
- DeepL updated to v1.17.0
- Jackson updated to v3.2.2
- Log4j API updated to v2.26.1
- Netty updated to v4.2.17
- MariaDB driver updated to v3.5.10
- Commons IO updated to v2.22.0
- JSpecify updated to v1.0.1
- CodeMirror updated to v5.65.21
- Gradle updated to v9.7.0
Warning
This is the last version that supports migration from versions
1.4.3 to 1.11.0. In future updates, migrations from old versions will be removedBug Fixes
- Reverted message placeholders in integrations
Warning
This is the last version that supports migration from versions
1.4.3 to 1.11.0. In future updates, migrations from old versions will be removedFeatures
- Classes that inherited from
EventMetadatahave been removed and replaced withMessageContextcomposition. This allows creating cache keys that depend on context, fixing message duplication caused by formatting cache
Refactors
- Localization modules no longer contain generics
- Added duplicate game check in minesweeper
- VanishMetadata replaced with VanishMessageContext
- IntegrationMetadata replaced with IntegrationMessageFormat
- Some dependencies changed from compileOnly to compileOnlyApi for proper FlectonePulse API functionality
- Whois command is now disabled by default in Hytale
Bug Fixes
- Unknown UUID no longer breaks login state tracking on proxy
- Minesweeper game is now properly removed after win or loss
- Handled vanish status initialization for players
- Player synchronization between cache and database fixed
- Prevented world update for unknown players
- Overhead messages no longer render during plugin shutdown
- Unknown players are now properly handled in proxy messages
- Nickname is now sent via proxy
/chatcoloris now sent locally if proxy is not enabled- Added user message indicator in overhead messages to distinguish cache (fix for duplicates)
- Legacy color conversion in
/streamreplaced with new tag resolver approach
Dependencies
- TelegramBots updated to v10.1.1
Features
- Added whois module for searching players by IP
- Added Minesweeper game with flag mode
- Added padding module for centering and aligning text with characters
- Added message context cache with expireAfterWrite option
- Added duplicate check setting for bans and mutes
- Added offline event handling in Twitch integration
- Added timeout setting for main executor threads
Refactors
- Player inventory on Hytale now uses hotbar component
- Task queue changed from SYNCHRONOUS to LINKED_BLOCKING executor
- Player head placeholder replaced with optional format
- Simplified translation argument handling in ComponentDecorator
- Added flag to control message caching
Bug Fixes
- Fixed UUID and nickname mismatch on login in whitelist module
- Added disconnect check in proxy mode in quit module
- Disabled legacy color conversion and removed query parameters from URLs in stream module
- Fixed message sending in Twitch (replaced telegram with twitch sender)
- Player tag no longer auto-resolves in usage messages
- Fixed hints in mutelist and dice
- Online status now correctly updates in cache without race conditions in proxy mode
- Unknown server on proxy is now handled
- getPacketVersion replaced with getClientVersion for version checks
- Added old client version check in object
- Added NPE handling in PlaceholderAPI placeholders
- Backslashes are now escaped in moderation reasons
- Exception when getting ping in player adapters is now handled
Dependencies
- Hytale Server updated to 0.5.7, HyUI to 0.9.8
- SkinsRestorer API updated to v15.12.5
- Cloud libraries updated to v2.0.0-beta.17
- Fabric Loom updated to v1.17.16
- Vanish updated to v1.6.15
- LibertyBans updated to v1.1.4
- Velocity API updated to v4
- PlaceholderAPI updated to v2.12.3
- Jackson updated to v3.2.1
- Log4j updated to v2.26.1
- PostgreSQL updated to v42.7.13
- Netty updated to v4.2.16
- JDBI updated to v3.54.0
- Triton API updated to v4.1.0
- SQLite updated to v3.53.2.1
- TelegramBots updated to v10.1.0
- fastutil updated to v8.5.19
- Gradle updated to v9.6.1, Shadow plugin to v9.6.1
Features
- Added support for Minecraft version 26.2
- Started NeoForge support (in development)
- Completely reworked the command system in the scoreboard. Added per-player visibility control and support for name display distance
- Added distance-based text rendering in belowname
- The spy module has been rewritten using packet monitoring (so it works on Fabric too)
Refactors
- In FPlayer, improved ID generation and type handling; now uses a constant for the console
- The bubble module uses its own ExecutorService with error handling
- Objective name generation has been extracted into a separate method
- In FColor, added comments for SEE and OUT types
Bug Fixes
- Optimized database connection pool
- Handled concurrent player updates in FPlayerDAO
- Added client version check in ServerLink
- Console excluded from offline player suggestions
- Added color context control in objective
- getFirst replaced with getInt for compatibility with JVM downgrader
- Fixed argument order in sulfur cube death messages
Dependencies
- PacketEvents updated to 2.13.0
- VoiceChat API updated to v2.6.20
- Fabric updated to 26.2
- Fabric Loom updated to v1.17.12
- Vanish updated to v1.6.14
- Cloud Fabric updated to v2.0.0-beta.17
- Cloud Paper updated to v2.0.0-beta.16
- Gradle updated to v9.6.0
- maven.publish plugin updated to v0.37.0
Features
- Implemented unified task scheduler
- Added SuperVanish state synchronization across servers via proxy
- On server start and reload, all players in the database are marked as offline
Refactors
- Proxy message listeners extracted into separate classes
- Player cache invalidation on the proxy optimized
- Proxy initialization moved to the correct loading phase
- Library com.alessiodp.libby replaced with internal Flectone dependencies
- Player nickname validation extracted to a separate validator class
- ArtifactId API is now dynamic (common -> minecraft-common, bukkit -> minecraft-bukkit, etc.)
- Updated log color scheme and thread prefix
- Incendo Cloud Pair replaced with Apache Commons Lang3 Pair
- Removed unused BiPredicate and imports from ModuleController
Bug Fixes
- Fixed race condition in online status handling
- Player removed from scoreboard on server leave
- Locale update occurs only for online players
- Proxy no longer sends messages on plugin shutdown
- Added valid range check to proxy listeners
- Vanilla commands are no longer removed in Bukkit with default config
- Added Folia compatibility for entity passenger handling
- Fixed error message formatting in logs
- Direct page number input in moderation is handled correctly
- Fake join/leave messages while vanished displayed with correct visibility
- Fixed main class name in bungee.yml
- Cache for unknown players updates correctly
- Improved player name validation in whitelist
- Proxy moderation filtered by server
Dependencies
- Updated Hytale Server to 0.5.5
- Updated SkinsRestorer API to v15.12.3
- Updated LibertyBans to v1.1.3
- Updated Vanish to v1.6.11
- Updated HikariCP to v7.1.0
- Updated Plasmovoice API to v2.1.10
- Updated Fabric Loom to v1.17.11
- Updated MariaDB Java Client to v3.5.9
- Updated Jackson to v3.2.0
Features
- Added vanilla command removal functionality (bukkit)
- Added import functionality to whitelist (whitelist)
- Added player login and connection event handling for Fabric
Refactors
- !!! Separated FPlayer and settings, ignores, colors into SocialService (BREAKING CHANGE API: FPlayer no longer contains these fields) !!!
- Added proxy message listeners for all modules (api)
- Moved proxy registry enable call to correct position
- Streamlined cache invalidation process
- Removed player name parameter from pre-login processing
- Moved playtime repository from social to dedicated repository
- Removed settings loading from player queries (database)
- Separated FPlayerService into PlaytimeService and ModerationService, added new cache for SocialRepository
- Restructured listeners
Bug Fixes
- Replaced direct IntegrationModule dependency with provider injection
- Removed explicit field selection from database queries
- Removed default AFK from message ignore (afk)
- Checked AFK suffix before removal and fixed double message (afk)
- Replaced login session tracking with online status validation [#359](https://github.com/Flectone/FlectonePulse/issues/359)
- Fixed InteractiveChat raw tags in Discord [#360](https://github.com/Flectone/FlectonePulse/pull/360)
- Fixed player head validation logic: check playername first, then UUID and textures (object) [#362](https://github.com/Flectone/FlectonePulse/pull/362)
- Handled additional database migration error cases
- Bound component extractor (platform)
- Excluded console from range filtering (filter)
- Delayed player online invalidation on proxy (proxy)
Dependencies
- Updated Fabric Loom to v1.17.3
- Updated Hytale server version dependency
- Updated SkinsRestorer API to v15.12.2
Features
- Added serverlink module (serverlink)
- Added whitelist command
- Added support for formatting books, anvil names, and sign events with components for Paper (book, anvil, sign)
- Added reasons field for unban, unmute, and unwarn (moderation)
- Added server UUID configuration and server-side filtering for bans, mutes, and warns (ban, mute, warn)
- Added subcommand configuration (command)
- Added extended maintenance command capabilities: start/stop, support for time and reason (maintenance)
- Added asynchronous texture loading with MineSkin integration (texture)
- Added integration with MiniPlaceholders API for Fabric (miniplaceholders)
- Added console name formatting (names)
- Added radius parsing for clearchat and emit commands (clearchat, emit)
- Added always_send_silent_packet option
- Added detection of Bedrock players via UUID version check
- Added additional integration placeholders (COMMAND_MAINTENANCE_FALSE/TRUE, MESSAGE_AFK_FALSE/TRUE, etc.)
- Added Type enum with INIT and READY values in EnableEvent (api)
- Added controls for fake join/leave messages (supervanish)
- Added option to cancel default death screen (vanilla)
- Added death messages for magma cube (minecraft)
- Added radius configuration for playerlistname (playerlistname)
- Added Mojang skins loading option (skinsrestorer)
- Added avatar and body skin support for Hytale (hytale)
- Added player indexing system for fast lookup by UUID, name, and IP (player)
- Added violation tracking system with caps, flood, and profanity limits (moderation)
- Added mode selection support for newbie message triggers (newbie)
Refactors
- Simplified task scheduling API, runRegion used only when necessary (scheduler)
- Enabled server-side filtering by default (moderation)
- Updated moderation system to properly handle unmoderation events
- Replaced Collections with immutable collection factory methods
- Replaced deprecated Optional-based formatting with Paper component serialization
- MessageContext migrated to builder pattern
- Split PreLoginEvent listeners for Bukkit and Paper compatibility (bukkit)
- Replaced direct component serialization methods with unified ComponentSerializer
- Optimized bubble message splitting logic (bubble)
- Added ComponentDecorator for consistent text formatting (platform)
- Set default has_shadow: true and see_through: false for bubble messages (bubble)
- Moved scoreboard module to correct package (scoreboard)
- Moved DAO implementations to database-specific interfaces (database)
- Replaced individual moderation command implementations with centralized ModerationListSender (moderation)
- Extracted UUID parsing logic into dedicated parser class
- Reworked message dispatcher with improved API and documentation (api)
- Changed moderation field type from int to string (moderation)
- Separated Twitch, Telegram, and Discord integration classes
- Optimized bubble message queue management with minimum display time (bubble)
- Animation time applied to all modern bubble messages (bubble)
- Updated Discord client creation with presence handling (discord)
- Performed general refactoring and code optimization
Bug Fixes
- Fixed login session management and player collection operations in async tasks (minecraft)
- Implemented persist method for integration modules (placeholderapi)
- Updated equals and hashCode methods for FPlayer entity
- Players are always kicked to the proxy via the server (maintenance)
- Added check for empty full word before calling isIgnored (swear)
- Fixed double command suggestions (hytale)
- Player data always saved after login event
- Use event player instead of original fPlayer when processing PreLoginEvent
- Fixed webhook creator ID comparison (discord)
- Optimized message sending with async execution (greeting)
- Replaced StringUtils.chop with Strings.CS.removeEnd, fixes [#341](https://github.com/Flectone/FlectonePulse/issues/341)
- Generate random UUID for unknown players in DAO methods (database)
- Added console player handling and caching logic (player)
- Prevented sidebar from being sent if player disabled the setting (sidebar)
- Added boundary check to prevent array out of bounds error (bubble)
- Added zero ID error messages for unban, unmute, and unwarn (moderation)
- Fixed AFK delay condition during migration
- Use different player instead of sender for proxy sending (proxy)
- Handled chest atlas naming mismatch (sprite)
- Fixed initial maxNumber value and default key skip (condition)
- Resolved proxy player online status synchronization issue
- Fixed simple message sending method in ProxySender (proxy)
- Updated version compatibility warnings (minecraft)
Dependencies
- Updated SQLite JDBC to v3.53.2.0
- Updated BuildConfig plugin to v6.0.10
- Updated Hytale server version to 0.5.3
- Updated PacketEvents Spigot to v2.12.2, transitioned to own Maven repository
- Updated Netty Buffer to v4.2.15.Final
- Updated Fabric Loader to v0.19.3 and Fabric Loom to v1.16.3
- Updated TelegramBots to v10
- Updated Vanish to v1.6.9+26.1.2
- Updated MineSkin Java Client to v3.2.6
- Updated Jackson YAML to v3.1.4
- Updated Lettuce Core to v7.6.0.RELEASE
- Updated Shadow plugin to v9.4.2
- Updated Gradle to v9.5.1
- Updated Log4j Core to v2.26.0
- Updated PostgreSQL to v42.7.11
- Updated Triton API to v4.0.1
- Updated JDBI Core to v3.53.0
Features
- Added disallowed input pattern filtering for bubble messages (bubble)
Refactors
- Renamed eventMessage parameter to rawString for clarity (chat)
- Changed AFK delay from seconds to ticks (afk)
- Updated AFK delay value from 3000 to 36000 ticks (afk)
- Separated TOTAL and TOTAL_DYNAMIC time types (online)
- Replaced hardcoded library relocation patterns with BuildConfig constant
- Streamlined library resolution with dynamic artifact handling
- Moved LoginStatus to shared constant utility
- Simplified chat type lookup (proxy)
- Replaced visibility filter method with direct stream filtering (playerlistname)
- Optimized HTTP client configuration for Discord and Telegram integrations
Bug Fixes
- Fixed Fabric SimpleVoice chat integration class name
- Added Velocity login state tracking for player connection management
- Added null check for sound object in sound players
- Added system skin handling with proxy cache updates (skinsrestorer)
- Added fallback mechanism using MojangSkinDataResult when primary skin lookup fails (skinsrestorer)
- Fixed signature inclusion in profile property (object)
- Changed online players to platform players in cleanup process
- Fixed object module to always use local textures when MineSkin is not hooked
- Fixed object client version check
- Fixed LuckPerms user loading when player is not unknown
- Fixed tick multiplier usage
Dependencies
- Downgraded Adventure API dependency to 4.x (temp)
- Updated cloud dependencies to org.incendo namespace
Features
- Added toponline player placeholder (toponline)
- Added online time placeholders and integration support (online)
- Added AFK playtime tracking disabling option (#322)
- Added warning method overload for object parameter (logging)
- Added quit message sending to all platform players on disable
Refactors
- Renamed classes with platform prefix
- Moved integration message handling to async tasks
- Updated player join/quit event handling with cancellation support (api)
Bug Fixes
- Fixed AFK disable event handling (afk)
- Fixed AFK player quit handler to return modified event with updated player data
- Fixed Minecraft event cancellation to only occur when messageReceiveEvent is cancelled
- Fixed chatcolor player parser to support offline players
- Fixed player loading order (load after modules)
Dependencies
- Updated Lombok to v1.18.46
- Updated Lombok plugin to v9.4.0
Features
- Added ICU library integration for advanced text processing
- Added BlazeandCave integration support
- Added proxy support for Discord, Telegram and Twitch integrations
- Added IP lookup support for geolocation module
- Added coordinate distance checking for AFK detection
- Added default nickname fallback when no custom nickname is set
- Added proxy integration support for join/quit modules
Refactors
- Renamed ReloadEvent to EndReloadEvent and added StartReloadEvent
- Replaced org.incendo group id for cloud libraries
- Replaced direct disabled field access with isDisabled method
- Extracted database player retrieval method
- Enhanced proxy data validation and consumer support
- Simplified Discord gateway client configuration
- Restructured module controller with improved hierarchy management
- Updated task scheduler implementation
- Added 1.9.1 migration
Bug Fixes
- Fixed duplicate player join/quit events
- Fixed playerlist cache logic with online status check
- Fixed playerlistname player settings loading
- Fixed nickname module placeholder when disabled
- Fixed scoreboard team removal before creating new team
- Fixed quit message sending for empty receivers
- Fixed texture processing for filenames without extensions
- Fixed object receiver tag checking with version compatibility
- Fixed Bukkit datapack compatibility for older server versions
- Fixed Vault permission check null pointer exception
- Fixed library download failures with better error messaging
- Fixed resource saving when resource does not exist
- Fixed player persistence logic with API disabling check
- Fixed URL pattern to allow colon character
- Fixed chatsetting to use localized chat type names
- Fixed bubble waiting queue clearing when max count reached
- Fixed Fabric reload method renamed to onDisable
Dependencies
- Updated Adventure API to v5
- Updated PacketEvents to v2.12.1
- Updated Fabric Loader to v0.19.2
- Updated PlasmoVoice API to v2.1.9
- Updated MineSkin Java Client to v3.2.5
- Updated Maintenance API to v5
- Updated SkinsRestorer API to v15.12.0
- Updated Jackson YAML to v3.1.2
- Updated SQLite JDBC to v3.53.0.0
- Updated JDBI to v3.52.1
- Updated DeepL Java to v1.16.0
- Updated Triton API to v4
- Updated Placeholder API to v3.0.0+26.1
- Updated CMI API to v9.8.6.4
Features
- Added support for Minecraft 26.1, 26.1.1 and last Hytale version server
- Added condition format module
- Added animation format module
- Added nickname command
- Added dump subcommand for diagnostics
- Added base64 player_head support and texture tag with MineSkin integration (object)
- Added player playtime tracking system with AFK duration placeholders (#76, #261)
- Added Discord embed, poll, forward message and webhook filtering support
- Added LuckPerms alwaysHaveTrue permission option
- Added MiniPlaceholders advanced placeholder expansion system
- Added spectator list order and hide name when sneaking options (playerlistname, scoreboard)
- Added Telegram option to ignore all bots
- Added configurable length parameter (clearchat)
- Added bukkit pre login listener option (#242)
- Added -Dload.asm.jar=value and -Dflectonepulse.debug=true Java flags
Refactors
- Replaced getClientVersion with getPacketVersion (fix ViaVersion #278)
- Replaced ImmutableList with ImmutableSet
- Replaced individual setting placeholders with single 'setting' placeholder (placeholderapi)
- Replaced direct command registration, module state checks and sendMessage calls with controllers and dispatcher
- Replaced MessageType with ModuleName
- Replaced generic map implementations with FastUtil specialized maps
- Migrated to immutable FPlayer entity pattern
- Migrated translate flag to translation flag
- Removed deprecated spoiler and image permissions
- Renamed RandomUtil, IconUtil, message flags, base module names and ModuleCommandController
- Changed animation configuration structure from list to map
- Changed mute message rendering and integration channel naming convention (integration)
- Updated permission checker to use isConsole instead of isUnknown
- Updated FLogger to record with improved ANSI support (logging)
- Updated dependency injection patterns with Guice Stage.PRODUCTION
- Updated message formatting logic, flag handling and MessageFlag enum documentation
- Optimized file saving logic, color processing, spy module logic and mention replacement
- Simplified player login processing, receiver tag checking, env var substitution and AFK suffix processing
- Separated metrics creation from sending logic and platform configurations
- Moved quit message handling to platform-specific modules and target tag resolvers to pipeline
- Converted event listener classes and AbstractModuleListLocalization to interfaces
- Converted EventMetadata from abstract class to interface with record implementation
- Replaced flat objects with nested tag records (playerheadTag, spriteTag) (object)
- Replaced reflection resolver with direct library loading (object)
- Replaced GsonComponentSerializer with injected Gson instance (pipeline)
- Injected HttpClient as singleton
- Standardized logging format and integration interface
- Added composite unique constraint to fp_player table (#249)
- Added TagResolver support for moderator tag
- Replaced unused lambda parameters with underscore notation
Bug Fixes
- Fixed MiniMessage tag deserialization issue (#243)
- Fixed Discord privileged intents (#294)
- Fixed toponline player time calculation
- Fixed reply message handling and localization context in integrations
- Fixed legacy color code handling in message deserialization
- Fixed chat color name overflow (chatcolor)
- Fixed MySQL 8 support and fcolor table column type (database)
- Fixed ItemsAdder font image formatting
- Fixed Gson deserialization on proxy with concrete implementation classes
- Fixed server icon initialization and non-existent icon file handling (fabric)
- Fixed Hytale permission checking logic, PlaceholderAPI async thread issues and enabled online/toponline commands by default
- Fixed quit task scheduler execution methods (#270) and quit message sending with delayed dispatch
- Fixed condition base permission and object client version handling
- Fixed sprite tag config reference and flectonepulse message placeholder (object)
- Fixed SimpleVoice event handler with Object parameter and instanceof checks
- Fixed player disconnect event handling
- Fixed empty symbol handling in Minecraft object module
- Fixed file path resolution in editor controller
- Fixed port availability check timing in flectonepulse command
- Fixed user message flag addition to bubble rendering and message pipeline
- Fixed player UUID serialization and FPlayer instance checking in proxy module
- Fixed hasFPlayerPermission to check module enable state before permission checks
- Fixed conditional build logic for Paper, Fabric and Velocity
- Fixed forward slash usage instead of File.separator
- Fixed Gson library relocation to avoid conflicts
- Fixed getPlatformFPlayers usage instead of getOnlineFPlayers
- Fixed database player object reference in loop
- Fixed chomp to chop for proper trailing character removal
- Fixed Minecraft localization file existence check
- Fixed player list order support and scoreboard team update logic for name changes (playerlist, scoreboard)
- Fixed MOTD client version check
- Fixed database trailing commas
- Fixed receiver tag handling for newer versions
- Fixed null user handling (object)
- Fixed AFK timestamp when setting suffix
- Fixed command prompt retrieval logic (#259) (command)
- Fixed predicate logic in module controller
- Fixed IllegalPluginAccessException in Bukkit (scheduler)
- Fixed Hytale Level.parse with explicit log level mapping (#240)
- Fixed integration URL processing (#266)
- Fixed player synchronization issue and nickname placeholder (afk, nickname)
- Fixed duplicate ignore entries with unique constraint
- Fixed database method name in ColorsDAO
- Fixed Hytale message pipeline with locale translation support
- Fixed tell createFilter to exclude receiver players from spy notifications
- Fixed database SQL integrity constraint violations and LIMIT 1 in queries
- Fixed PlaceholderAPI boolean value conversion
- Fixed Fabric permission registry
- Fixed build packetevents dependency to common version
Dependencies
- Updated Fabric Loader to v0.19.0
- Updated Fabric Loom to v1.16.1
- Updated MariaDB JDBC to v3.5.8
- Updated Yandex Cloud SDK to v2.14.0
- Updated SkinsRestorer API to v15.11.1
- Updated Log4j Core to v2.25.4
- Updated Jackson YAML to v3.1.1
- Updated VoiceChat API to v2.6.13
- Updated MiniPlaceholders API to v3.2.0
- Updated PlaceholderAPI-Hytale to v1.0.8
- Updated DeepL Java to v1.15.0
- Updated Shadow plugin to v9.4.1
- Updated Gradle to v9.4.1
- Updated JDBI to v3.52.0
- Updated Gradle Actions to v6
- Updated Lettuce Core to v7.5.1.RELEASE
- Updated Discord4J to v3.3.2
- Updated Vanish to v1.6.8+26.1
- Updated PostgreSQL to v42.7.10
- Updated Velocity to v3.5.0-SNAPSHOT
- Updated TelegramBots to v9.5.0
- Updated SQLite JDBC to v3.51.3.0
- Updated MineSkin client to v3.2.2
Features
- Added vanished player visibility check in vanilla message filtering
- Added PlaceholderAPI integration for Hytale server
Refactors
- Enhanced plugin identifier parsing in Hytale server adapter
- Updated Hytale server initialization to server-only environment
- Migrated Gson component serializer binding to platform-specific modules
- Updated Russian localization for better accuracy
- Refactored Fabric initialization process
Bug Fixes
- Prevented duplicate command manager initialization in Fabric
- Improved null safety in Fabric modules
- Fixed potential null reference in scoreboard module
- Prevented sending data when no enabled proxy exists
- Formatted FlectonePulse placeholders (afk_suffix, stream_prefix, mute_suffix, world_prefix) correctly
Dependencies
- Updated Lettuce Core to v7.4.0
- Updated PlaceholderAPI to v2.12.1
- Updated Hytale UI version
Features
- Added full Hytale platform support with dedicated modules and configurations
- Added CMI integration support for enhanced compatibility
- Added geolocation enhancement with current time display (#226)
- Added configurable swear word display formatting
- Added option to hide invisible player heads in object module
- Added support for multiple display names with index selection in names module
- Added toast notification subtext support
- Added sender name configuration for integrations with custom Discord webhook support
- Added distributed cooldown system with proxy synchronization and cache management
- Added cache invalidation on reload configuration
- Added export/import operations to flectonepulse command
- Added escaped ampersand handling in legacy color conversion
Refactors
- Updated dependency injection patterns with Guice Stage.PRODUCTION
- Replaced static date format with injected dependency
- Updated MessageSender interface to use string-based console output
- Optimized message processing in MessagePipeline
- Removed core PacketEvents dependency and updated module architecture
- Separated platform configurations for better organization
- Migrated EventMetadata from abstract class to interface with record implementation
- Improved potion effect handling with extracted invisibility constant
- Replaced manual containsChild/isEnable checks with containsEnabledChild calls
- Moved LogFilter to separate package and made it injectable
- Removed objective mode enum and updated score handling
- Changed constant field from single string to list of components
- Replaced <display_name> placeholders with in target modules
Bug Fixes
- Fixed player disconnect event handling
- Fixed empty symbol handling in Minecraft object module
- Fixed file path resolution in editor controller
- Fixed port availability check timing in flectonepulse command
- Fixed user message flag addition to bubble rendering and message pipeline
- Fixed player UUID serialization in proxy module
- Fixed FPlayer instance checking in proxy module
- Fixed hasFPlayerPermission to check module enable state before permission checks
- Fixed conditional build logic for Paper, Fabric and Velocity
- Fixed forward slash usage instead of File.separator
- Fixed Gson library relocation to avoid conflicts
- Fixed client version usage instead of packet version in object module
- Fixed metrics documentation link and Russian README paths
- Fixed getPlatformFPlayers usage instead of getOnlineFPlayers
Dependencies
- Updated HyUI library dependency with version variable
- Updated PlaceholderAPI to v2.8.2+1.21.10
- Updated SkinsRestorer API to v15.10.0
- Updated Gradle to v9.3.1
- Updated Fabric Loom to v1.15.3
- Updated JDowngrader plugin to v1.3.6
- Updated Jackson YAML to v3.0.4
- Updated PacketEvents to v2.11.2
- Updated Maven Publish plugin to v0.36.0
- Updated Lombok plugin to v9.2.0
- Updated PostgreSQL to v42.7.9
- Updated Vanish to v1.6.6+1.21.11
- Updated GitHub Actions: setup-java digest
Features
- Added bot filtering configuration for Discord integration
- Added visibility and ticker configuration for bubble chat
- Added group weight check for kick command
- Added async playerlist update for SkinsRestorer integration
- Added NOT_VALID_BED packet listener for vanilla messages
Refactors
- Renamed display and format fields to displayFormat and scoreFormat in objective module
- Replaced single messageName with specific message names for all name variants support in integrations
- Replaced withFlag with addFlag methods in message pipeline
- Updated console sender detection logic
- Moved MiniMOTD module registration to core
- Optimized skin profile property retrieval order
- Removed trailing slashes from documentation URLs
- Removed tag presence checks in message processing modules
- Skipped building empty messages in message pipeline
- Implemented equals method for bubble comparison
- Improved Discord embed validation
- Updated Ender Dragon sprite icon in bossbar module
- Renamed tick parameter to delay in scheduler
Bug Fixes
- Fixed localization fallback logic
- Fixed passenger updates to prevent bubble persistence issues
- Resolved Folia compatibility issue for quit messages
- Fixed message flag configuration in bubble module
- Fixed chat color configuration with null color values handling
- Fixed Discord and Telegram timer scheduling and async operations
- Fixed Discord message content handling with attachments
- Fixed swear module permission check placement in message processing
- Fixed chat color saving to store only non-empty fcolors
- Fixed playerlist module to check its own enable status
- Fixed bubble removal logic with text screen integration
- Fixed SkinsRestorer integration by removing specific DataRequestException for legacy API
- Fixed replacement regex patterns for image and URL matching
- Relocated io.lettuce dependencies to avoid conflicts
- Ensured all context creation methods properly inherit message context flags
- Skipped unknown players in tab list processing
- Fixed permission documentation link
- Removed unused message placeholders in integrations
- Fixed message flag default value in integrations
Dependencies
- Updated TelegramBots to v9.2.1
- Updated SkinsRestorer API to v15.9.2
- Updated Fabric Yarn to v1.21.11+build.4
- Updated Shadow plugin to v9.3.1
- Updated JDowngrader plugin to v1.3.5
Features
- Added scoreformat support in tabname module
- Added sync option to runRegion method in scheduler (replacing async and sync annotations)
- Added Javadocs for API
Refactors
- Converted CommandRegistry from abstract class to interface
- Moved brigadier setup to abstract registry
- Replaced lombok and jetbrains annotations with jspecify
- Replaced Random with ThreadLocalRandom in RandomUtil
- Updated platform adapter interfaces and implementations
- Updated player adapter interface and implementations
- Moved command removal logic to main mod class (Fabric)
- Removed deprecated chatType and chatName fields from ChatMetadata
Bug Fixes
- Fixed brigadier setup in Fabric
- Fixed player localization in tabname module
- Fixed player invalidation on login rejection
- Fixed proxy chat sound (#202)
- Fixed exception handling in PlaceholderAPI processing
Features
- Added paginated symbol command with category navigation
- Added sprite command to view all available sprites
- Added customizable default symbol and "or" tags in object module
Refactors
- Updated Minecraft translation path configuration
- Modified exception logging to capture stack traces properly
Bug Fixes
- Fixed sound effects for integration messages
Features
- Added see_through configuration for text screen and modern bubbles
- Added Floodgate integration for Bedrock player support
- Added database indexes for performance improvement
Refactors
- Migrated message pipeline to use MessageContext
- Converted classes to immutable records: MessageContext, Ticker, Range, Moderation, FImage, Destination, BossBar, MetricsDTO, Cooldown, Sound
- Migrated configurations to immutable state
- Optimized HikariCP configuration and driver setup
- Optimized translation service
- Restructured permission registration
- Replaced mutable collections with immutable builders in module system
- Replaced default destination constants with empty variants
- Replaced list with set for entity storage in vanilla module
- Updated event handling system to use immutability
- Removed metrics sending on shutdown
Bug Fixes
- Fixed MySQL driver with updated class name
- Fixed switch statements for MYSQL and MARIADB
- Fixed mention sound by updating default category from NEUTRAL to BLOCK
- Fixed missing spear death for integrations
Dependencies
- Updated PacketEvents to v2.11.1
- Updated Fabric Loom to v1.14.10
- Updated BuildConfig plugin to v6.0.7
- Updated Vanish to v1.6.5+1.21.11
- Updated Fabric Loader to v0.18.4
- Updated MariaDB Java Client to v3.5.7
- Updated PlasmoVoice API to v2.1.8
- Updated Adventure API to v4.26.1
- Updated Lettuce Core to v7.2.1
Features
- Added support for Minecraft 1.21.11
- Added bossbar message module for enhanced notifications
- Added text screen rendering system for dynamic displays
- Added server lifecycle events for integrations and better process control
- Added emit command for event management with improved suggestions
- Added permanent listener registration mechanism (#148)
- Added time limits for moderation commands
- Added custom command execution for Twitch, Discord and Telegram integrations
- Added reply support and formatting for Discord, Telegram and Twitch messages
- Added mute suffix with placeholder integration
- Added Markdown and HTML support for Telegram messages (#166)
- Added player list command and spear death messages to localization
- Added config flag to control automatic database driver downloading
- Added multiple Discord channels support
- Added Paper-specific item messaging with PacketEvents (#173)
- Added extra space configuration in object module
- Added advanced argument parsing for vanilla messages
Refactors
- Simplified permission checking logic and extracted operator check
- Replaced regex parsing with tag processor in fcolor module
- Optimized replacement tag processing
- Refactored vanilla tag resolver logic
- Optimized player list version check logic
- Improved destination initialization and parsing logic
- Replaced random entity id generation with platform-specific implementation in bubble module
- Refactored Sound class to use SoundCategory enum and Sound packet
Bug Fixes
- Fixed console message delivery
- Fixed single active ban handling
- Fixed UUID version check for offline client detection (playerlistname)
- Fixed symbol command to use input tag resolver
- Fixed target player in saveSetting method (chatsetting)
- Fixed PacketEvents termination handling on startup failures
- Fixed bubble chat elevation rendering logic
- Fixed Spigot command (un)registration
- Fixed mention and replacement checks for unknown senders
- Fixed player online status checks for mentions
- Fixed bubble module viewers for base bubble builder
- Fixed reload to affect only console and online players
- Fixed Twitch integration with Jackson library relocation
- Fixed empty message sending in integrations
- Removed deprecated placeholder tags
Dependencies
- Updated PacketEvents to v2.11.0
- Updated Fabric Loom to v1.14.6
- Updated Jackson YAML to v3.0.3
- Updated BuildConfig plugin to v6.0.6
- Updated Gradle to v9.2.1
- Updated SkinsRestorer API to v15.9.1
- Updated DeepL Java to v1.14.0
- Updated Cloud Framework (Paper, Fabric, Minecraft Extras) to beta.15
- Updated PlasmoVoice API to v2.1.7
- Updated Fabric Loader to v0.18.2
- Updated Fabric Yarn to v1.21.11+build.3
- Updated JDBI3 Core to v3.51.0
- Updated Lettuce Core to v7.2.0
- Updated Commons Text to v1.15.0
- Updated Shadow plugin to v9.3.0
- Updated Vanish to v1.6.2+1.21.10
- Updated SQLite JDBC to v3.51.1.0
- Updated Maven Publish plugin to v0.35.0
- Updated JDowngrader plugin to v1.3.4
- Updated GitHub Actions: checkout to v6, upload-artifact to v6, setup-java
Features
- Added LibertyBans integration for advanced punishment handling
- Added mention-all tag support for mass notifications
- Added support for multiple usernames in Discord and Telegram integrations
- Added option to suggest invisible players in command suggestions
Refactors
- Improved localization loading and translation initialization
- Enhanced mention handling logic and caching
Bug Fixes
- Fixed player online status checks for mentions
- Fixed URL formatting with better exception handling
- Fixed object component validation for player head arguments
- Excluded user messages from disabled tag replacement
- Relocated Netty and FasterXML dependencies for Discord
Dependencies
- Updated PacketEvents dependency to v2.10.1
- Updated Fabric Loom to v1.13.3
- Updated PlaceholderAPI to v2.11.7
- Updated BuildConfig plugin to v5.7.1
- Updated Gradle to v9.2.0
Features
- Added Geyser integration for Bedrock player support
- Added configurable database table prefix
- Added Telegram channel info support
- Added option to hide name when player is invisible (right-click)
Refactors
- Refactored chat message sending to use async methods
- Simplified Bedrock gradient tag support
- Optimized profile property caching logic
- Changed Fabric async executor from cached to fixed thread pool
Bug Fixes
- Fixed object component building for Bedrock players
- Fixed RockPaperScissors localization tags in Russian locale
- Fixed mute cache cleanup reversion
- Fixed stream prefix management logic
Dependencies
- Updated Placeholder API to v2.8.1+1.21.10
- Updated Jackson YAML to v3.0.1
- Updated Discord4J to v3.3.0
- Updated Lettuce Core to v7
- Updated Upload Artifact action to v5
Features
- Added support for Minecraft 1.21.9 and 1.21.10
- Added 30+ new message types with unified vanilla module
- Added object module for player head and sprite support
- Added proxy mode support for online player count and player list names
- Added Minecraft translation service and global translations
- Added backup functionality for config and database files
- Added MariaDB database support
- Added Discord embed fields support
- Added console message handling for all destinations
- Added centralized cache management
Refactors
- Updated to Java 17
- Changed default database from SQLite to H2
- Migrated from Elytrium Serializer to Jackson YAML
- Refactored player settings management
- Replaced module predicates with event-based listeners
- Optimized chat message handling
- Improved entity name handling and localization
Bug Fixes
- Fixed double ampersand escaping in URLs (#77)
- Fixed colors in toponline footer
- Fixed TPS retrieval for modern Bukkit
- Fixed swear word detection logic
- Fixed player UUID validation
- Fixed bubble chat for older versions
- Fixed action bar colors for legacy versions
- Fixed null values during deserialization
Features
- Added modern GUI for poll creation
- Added nullHelper option to helper
Refactors
- Refactored IntegrationSender to handle message replacing
Bug Fixes
- Fixed null issue by using MessageType.name() instead of MessageType directly in integration
- Added delay to async process join event for Fabric
Features
- Implemented dynamic message naming based on chat type and source
- Added EventMetadata and updated API
- Added configurable skin API URLs
- Added MiniPlaceholders integration for Fabric
- Added support for Clearchat command for proxy
Refactors
- Changed default chat mode to BUKKIT
- Improved async task handling for restricted threads
- Added async annotation to sendMessage and IntegrationSender methods
- Renamed SenderToReceiverMessageEvent to MessageSendEvent
- Implemented PreMessageSendEvent
- Rebuilt message sending logic
- Simplified item handling in death messages
- Moved logger reload operation to before database connection
- Registered EnumSerializer for Newbie.Mode
- Updated log filter to include Hikari messages
Bug Fixes
- Removed unnecessary check in player name for clearchat
- Increased NBT max size limit in packetevents
- Updated regex patterns to support HTTP and HTTPS in replacement
- Added module disabled check for HeaderModule and FooterModule
- Updated spoiler formatting logic to use '.' instead of '\' for raw text representation
- Validated info channel IDs before processing in Discord
- Fixed skin image insertion in chat
- Improved game field colors in TicTacToe
- Corrected poll message formatting
- Removed redundant symbol in ping
- Correctly checked if module is enabled and added range in helper
- Added user agent for image URL connection
- Improved player data handling and IP management
- Replaced outdated GitHub link with current SkinsRestorer documentation URL
Features
- Added BungeeCord and Velocity support for Fabric
Refactors
- Improved AFK status handling for players who quit
- Enhanced SuperVanish integration for offline players
- Added shutdown() method to TaskScheduler and improved FabricTaskScheduler
Bug Fixes
- Fixed invalid key in advancement messages
- Removed break statement in mention handling
- Updated permission name for versions < 1.4.3
- Improved SuperVanish integration check
- Updated FPlayer in database with delay
- Added MySQL connector dependency
Features
- Added sender color flag to control color in messages (API)
Refactors
- Moved legacy color convertor to FormatModule and renamed permission
- Moved message formatting logic from listeners to modules
- Improved game logic in tictactoe
- Optimized log record creation and handling
- Renamed isInitialized to isReady
- Created common Extractor class and added support for extra target format
- Reverted try-catch for numeric validation
Bug Fixes
- Removed redundant receiver permission check in PlaceholderAPI
- Added version check and disabled bubble module for Minecraft versions below 1.9
- Replaced StringUtils.isEmpty() with manual check, fixing #20
Features
- Added support for specific fcolor types (fcolor_out, fcolor_see) for PlaceholderAPI
Refactors
- Created addDefaultPredicates() method to centralize predicate logic
- Replaced reloadWithChildren with reload
- Replaced repetitive code with new getFColors method
- Separated load() and enable() methods for better separation of concerns
Bug Fixes
- Fixed predicates loading
Features
- Created and uploaded API to Maven Central
- Added minecraft dialogs for /chatsetting
- Added support for Paper chat event (#17)
- Added support for legacy and named colors in chatcolor, with flexible input for admins
- Implemented Maintenance integration support (#16)
Refactors
- Registered EnumSerializer for Range.Type
- Added onLoad method and modified module loading logic
- Implemented get() method for dependency injection
- Implemented message caching to improve performance
- Changed default chat mode to PACKET and optimized chat handling
- Moved replacement logic to ReplacementModule and removed duplicated modules
- Optimized distance calculation between players in PlayerAdapter
- Optimized player-related operations and vanish checks
- Optimized scoreboard packets and added reload functionality
- Optimized async and sync method execution
- Optimized Bukkit chat listener performance
- Updated permissions for /chatcolor and fcolor modules
- Replaced String ".replace" with Strings and StringUtils
- Replaced manual string checks with StringUtils
- Replaced try-catch with StringUtils.isNumeric()
Bug Fixes
- Fixed UpdateModule permission
- Inverted condition in hasClassOrElse method
- Corrected URL operator formatting and ampersand escaping
- Ensured valid color for scoreboard team
- Corrected color code conversion in LegacyMiniConvertorPulseListener
- Handled null values in style settings for SQL
Features
- New fcolors for improved visual customization
- Improved /chatsetting command and new functionality for setting/removing player settings
- Added replacement module and removed emoji module for more efficient text processing
- Added ANSI serializer for Adventure to enhance logging output
- Added new localization prompt for value to improve user interaction
- Optimized replacement processing with regex for faster performance
Refactors
- Reintroduced InteractiveChat integration with conflict check for Delete module
- Introduced MessageReceiveEvent for all messages, replacing TranslatableMessageReceiveEvent
- Set default message channel IDs for Telegram and Twitch integrations
- Updated default messages for /chatsetting and /chatcolor commands
- Implemented fcolor see/out support and refactored chat color system
- Changed chatcolor permission type to TRUE
- Migrated player styles to new fcolor system and removed style modules
Bug Fixes
- Corrected permission check for mentioned players
- Removed closed tag to prevent formatting errors
- Fixed delete module and InteractiveChat integration compatibility
- Replaced getArgument with getPrompt in chatcolor for consistency
- Improved VoiceChat integration compatibility
- Updated 'PacketEvents' to 'packetevents' in plugin.yml for consistency
Features
- Updated PacketSender to support silent packet sending for more discreet message handling
Refactors
- Moved PacketEvents.getAPI().load() to after injector creation to improve initialization
- Removed InteractiveChat integration (very bad API)
- Removed unused PacketProvider class to clean up codebase
- Improved item stack serialization for Paper servers
- Implemented onRequest method in PlaceholderAPIIntegration to support OfflinePlayer
Bug Fixes
- Improved item name translation and hover
- Fixed PlaceholderAPI to save formatted messages for offline players
- Replaced getDeclaredMethods() with getMethods() for broader method access
Features
- Added DeleteModule to handle message deletion
- Added UpdateModule to check for new versions
- Added SenderToReceiverMessageEvent (API)
- Added new SenderToReceiverMessageEvent constructors
- Added SimpleVoice and PlasmoVoice support for Fabric
Refactors
- Switched to event-driven architecture
- Moved URL formatting logic to a separate class
- Added ReflectionResolver for class and method resolution
- Removed unused fields and optimized imports
- Split sleep, setblock, seed, op, deop, gamemode, clear, spawn, kill, enchant, and advancement logic into separate classes
- Renamed checkModulePredicates to isModuleDisabledFor
- Renamed disable() method to terminate()
- Replaced PacketEvents API calls with PacketProvider
- Removed unused FabricProxySender, PlatformPlayerAdapter
- Renamed ChatListener to ChatPacketListener and ChatBukkitListener for Bukkit
- Replaced MessagePulseListener with EventDispatcher and MessageSender
- Added prompt system for commands and updated command registration
- Used FPlayer for receiver in message processing
- Renamed translatable message receive event type
- Added MessageFlag enum and updated message processing
- Optimized tag resolver in MessageContext
- Moved AdventureTag to constant package
- Added common onEnable, onDisable, and reload methods
- Added replacement tags for message formatting
- Added generic enum serializer and moved enums
- Added unique message UUID to pipeline
- Updated MessageContext to use userMessage instead of messageToTranslate
- Removed cancelPacket() from TranslatableMessageReceiveEvent
- Renamed onMessageProcessingEvent to onMessageFormattingEvent
- Improved BLOCKS range retrieval exception message
- Replaced custom Pair with org.incendo.cloud.type.tuple.Pair
- Replaced emoji with checkbox in delete message format
Bug Fixes
- Fixed permission check logic without LuckPerms
- Changed Q&A messages to [Answer] format
- Fixed prompt index checking logic
- Fixed old player name update in database
- Added enable flag to voice integrations
- Replaced non-threadsafe collections with concurrent ones
- Relocated cloud libraries
Features
- Added ignore list for swear words in core
- Implemented ticker functionality for world module
Refactors
- Updated total RAM calculation in metrics
Bug Fixes
- Improved URL and image handling and formatting
- Improved trigger tag handling in FormatModule
- Added region-specific sync task execution, fixing #10
- Enhanced Telegram integration initialization
Features
- Added FULL support for Minecraft 1.8.8 - 1.21.8 versions
- Added support for Fabric 1.21.8
- Introduced H2 and PostgreSQL database support
- Implemented Text Placeholder API for Fabric
- Implemented Vanish API for Fabric
- Implemented SkinsRestorer API for Fabric
- Implemented LuckPerms API for Fabric
- Added packet-based chat listener
- Enhanced editor with cursor position saving/restoring when switching files
Refactors
- Optimized code by removing unused imports, classes, methods, and version checking
- Updated TimeFormatter to use Apache Commons Lang 3
- Removed database type-specific methods
- Replaced Javalin with Spark Java for web handling
- Improved exception handling and logging in handler
- Reduced join message delay to 5 seconds
- Consolidated packet sending logic in scoreboard
- Replaced direct player.getPing() call with packetProvider.getPing(player)
- Updated method to handle status response packet
- Replaced Component tree dump with JSON serialization
- Added support for legacy versions in scoreboard and inventory
Bug Fixes
- Prevented duplicate sidebar creation
- Improved URL handling in stream
- Removed unknown player check in insertOrIgnore method for Console inserting
- Improved handling for advancements
- Removed delay for join messages in older versions
Bug Fixes
- Fixed login event compatibility for Minecraft 1.20.1 and older versions
Features
- Added support for 1.21.8 minecraft
- Web-based configuration editor for simplified plugin management
- Redis support for efficient proxy communication
- Enhanced messaging with <translateto> support, online player notifications in mail, and custom belowname messages
- Player visibility improvements with invisibility potion effect in name formatting and /anon command for spy
- Delayed update() in playerlistname for smoother operation
Refactors
- Optimized MessageProcessRegistry, plugin lifecycle, and module reloading for better performance
- Cleaned up code by removing unused methods, deprecated code, and redundant error handling
- Improved modularity with LinkedHashSet for order preservation, Registry interface, and refactored module constructors to use enable()/disable()
- Enhanced scoreboard, sidebar, and objective modules with PacketEvents integration
- Reworked ProxySender to support multiple proxy types and removed unnecessary proxy send logic
Bug Fixes
- Fixed IPv6 support and IP handling
- Improved vanished player filtering and visibility for CMI permission holders
- Optimized version comparison logic and database operations
- Resolved join message execution and history clearing issues after file loading
Features
- Added support for 1.21.6 and 1.21.7 minecraft
- Added /anon command
- Added /toponline command module
- Introduced new chat style module /chatstyle
- Implemented kill message module
- Added support for all FPlayer settings in PlaceholderAPI
- Implemented native toast notifications using PacketEvents
- Added ticker functionality for scoreboards
Refactors
- Optimized player data loading and login process
- Improved join message handling
- Enhanced moderation cache system
- Optimized database operations with JDBI
- Improved chat color processing and message formatting
- Simplified ItemStack building process in Bukkit
- Optimized bubble message sending
- Implemented menu-based settings
- Deleted migration for 0.1.0 and 0.6.0 versions
Bug Fixes
- Fixed handling of color/gradient tags
- Improved offline player checks for null names
- Corrected typos in moderator messages
- Fixed advancement description handling
- Fixed synchronous command reload for Spigot servers
- Improved PlaceholderAPI integration for offline players
Refactors
- Rename height to elevation for bubble
Bug Fixes
- Fixed upgrade from 0.8.2 version
Features
- Added billboard option for bubble messages
- Implemented animations for modern bubbles
- Improved bubble height rendering for better visual positioning
- Enhanced bubble message breaking logic
Refactors
- Implemented Builder pattern for Bubble classes
- Optimized integration sending performance
- Improved version comparison in FileManager
- Replaced GSON component serializer imports
Bug Fixes
- Fixed null message channel handling in Telegram integration
- Simplified messenger detection in BukkitIntegration
- Resolved scheduler enable/disable errors
Features
- Added mode selection for Newbie message triggers
Refactors
- Implemented @async/@sync annotations for method scheduling
- Removed legacy Async annotations
- Improved exception interceptor logging
- Enhanced metrics collection on server shutdown
Bug Fixes
- Fixed playtime calculation in online modules
- Corrected online status checks for /tell command range
Bug Fixes
- Fixed handling of cancelled MicrophonePacketEvent in SimpleVoice
- Fixed resolveLibrary method implementation
Features
- Added AdvancedBan and LiteBans integration for moderation system
- Implemented new ScoreboardModule with real scoreboard system
- Added Newbie module for new players
- MiniPlaceholders support for advanced formatting
- ItemsAdder integration for custom items
- Added Paper item serialization support
- Added range limitation for private messages (/tell)
Refactors
- Complete Bubble system rewrite with modern entities
- Optimized LuckPerms integration for better performance
- Replaced bStats with custom metrics solution
- Refactored moderation system with caching
- Improved message processing via MessagePipeline
- Moved prefixes/suffixes to ScoreboardModule
Bug Fixes
- Fixed player online status checks on specific servers
- Fixed HEX color handling in MiniPlaceholders
- Fixed Afk module functionality
- Optimized permission checks
- Fixed proxy quit message handling
Features
- Added TAB integration
Refactors
- Refactored mutes collection
- Set tabSort to true by default
- Reloaded all child modules even if the parent module is disabled
- Initialized child modules in the constructor
- Disabled team by default in the Name module
- Replaced double quotes with single quotes
Bug Fixes
- Fixed null recipient messages in BukkitChatModule
- Disabled join/quit messages on Bukkit/Spigot servers
- Fixed TAB integration and added settings for TAB-dependent modules
- Injected IntegrationModule at runtime
- Replaced grammatical typo in ru_ru localization
- Fixed null user checks in PlayerlistnameModule
Features
- Added SleepModule for sleep messages
- Added BedModule for bed messages
- Added WORLD_NAME (-3) and WORLD_TYPE (-4) range
- Added filter for Paper 1.16.5 warnings to clean up logs
Refactors
- Merged SET_SPAWN, CHANGE_GAME_STATE, and SPAWNPOINT messages
- Created MinecraftTranslationKeys for better localization management
- Optimized chat filter in BukkitChatModule
- Optimized metadata retrieval in LuckPermsIntegration
- Checked recipients asynchronously in BukkitChatModule
- Updated FLogger to use a log consumer for better logging
Bug Fixes
- Replaced legacy paragraph symbols with ampersands
Refactors
- Simplified logging warnings for cleaner logs
- Used Bukkit player's IP address
- Saved player IP to the database
- Renamed basic methods for creating and saving a player
Bug Fixes
- Fixed text length check in the FloodModule to prevent errors
- Corrected vanish boolean check
- Added exception handling in the BanModule to catch IllegalArgumentException
- Fixed player IP check to improve accuracy
Features
- Added support for all plugins vanish to improve compatibility
- Added spying for a specific chat type for enhanced moderation
Bug Fixes
- Changed mention destination to ACTION_BAR
- Optimized swear regex for better performance
- Optimized TOAST creation for better performance
- Fixed color standalone checking
- Fixed not closing the first tag
- Fixed message formatting by sender
Refactors
- Added permission removing logic for better permission management
- Improved database update for offline players
- Removed async annotation for insertOrIgnore
- Optimized fPlayer getting
Bug Fixes
- Added chat permission checking to ensure proper access control
- Fixed fPlayer settings loading to correctly load player settings
- Added ignore check to handle ignored players appropriately
- Improved fPlayer saving when removing players to prevent data loss
Features
- Added a flood module
Refactors
- Removed swear sound
- Separated the setting table and optimized DAO classes for better performance
- Removed the contact submodule
- Disabled anvil, book, and sign modules by default
- Deleted the spit, knock, sign, and unsign modules
- Changed the italic trigger logic for better usability
- Switched to using a fork of MiniTranslator
Bug Fixes
- Changed the URL to the maintenance documentation
- Added "§" replacement to handle special characters correctly
- Trimmed dice messages
Features
- Added FixationModule (end dot and first letter uppercase)
Bug Fixes
- Fixed PLAY_ONE_MINUTE calculation by multiplying it by 60
- Updated chat event message for other plugins
- Fixed next message in the rockpaperscissors module
- Corrected player value checks in the tictactoe module
- Removed visual spawn display in the bubble module
Features
- Added support for stay ticks in action bar messages to control display duration
Refactors
- Major codebase reorganization: Renamed multiple classes, packages, and interfaces (e.g., ILocalization → Localization, moved interceptors to dedicated packages)
- Removed deprecated/unused code: DebugInterceptor, ModuleManager, DatabaseThread, and ticker classes
- Optimized SQLite integration using HikariCP for better performance
- Split database logic into DAO (Data Access Object) layers for modularity
- Updated user login and maintenance-checking logic for reliability
- Integrated the latest version of MiniTranslator
Bug Fixes
- Fixed action bar message compatibility for Minecraft 1.18 and older versions
- Improved emoji escaping to prevent formatting issues
- Added null checks for channels in BukkitProxyConnector to avoid unexpected errors
- Removed duplicate Sync matcher to prevent conflicts
- Added null player checks in the spit module for safer execution
- Fixed player data (fPlayer) not updating when inventory settings were closed
- Corrected maintenance mode logic to properly kick players when enabled
- Ignored null connections to prevent crashes during network handling
Bug Fixes
- Updated regex to allow uppercase in HEX colors (e.g. #AAAAAA)
- Fixed disabling format tags
- Fixed calculating next message for lists modules
Features
- Added lists to auto module
Bug Fixes
- Removed legacy color map
- Fixed legacy color support for &#amp;#
- Fixed deop module
Features
- Added full support legacy colors (gradients too)
- Added translateto tag for messages
- Added YandexSDK integration for /translateto
- Added Deepl integration for /translateto
- Added Triton integration
- Refactored /poll and added repeat time
- Refactored /mark and added modern version mark
Features
- Added InteractiveChat support
- Added Q&A module
- Added ping module
- Added modern bubble system
- Updated symbols
- Updated README and Added README-RU
Bug Fixes
- Fixed knock module
- Fixed folia support
- Fixed double mention
Features
- Added TOAST destination
- Added bubble distance setting
- Added subtext for TITLE and SUBTITLE
- Added /flectonepulse reload text, for text reloading
- Added /id command for telegram bot
- Added support for environment variables
- Added clusters for proxy
Refactors
- Refactored ban, mute, warn, kick, unban, unmute, unwarn and lists
- Refactored mention
- Removed InteractiveChat integration
Bug Fixes
- Fixed Velocity and BungeeCord startup
- Fixed chat on proxy
- Fixed null PAPI on disable
- Fixed double message check
Features
- Added setting range for unban, unwarn, unmute
Refactors
- Changed sound
- Removed legacy printStackTrace
Bug Fixes
- Fixed distance to show
- Fixed prefix and suffix for offline player
- Fixed name formatting
Features
- Added full support for 1.16.5-1.19.4, currently is 1.16.5-1.21.4
- Added ScoreBoard settings (SideBar)
- Added Destination
- Added pride, shadow_color tags
- Added version check
- Added legacy chat message support
Refactors
- Changed Sound, Cooldown, Ticker configuration
- Changed tab header and tab footer format
- Changed brand serialize
Bug Fixes
- Fixed tictactoe
- Fixed name formatting
- Fixed status icon
- Fixed documentation urls
- Fixed replacing placeholders
- Fixed null world prefix
- Fixed async integration messages
- Fixed supervanish integration
Features
- Added ability to disable messages to and from Discord/Twitch/Telegram in /chatsetting
Refactors
- Partial refactoring of the entire project
- Decoupled from BukkitAPI, the project can now run on any platform
- New project structure: icons folder renamed to images
- messages folder renamed to localizations
- config.yml is now only for project settings
- Three main modules extracted into separate files: command.yml, integration.yml, and message.yml
- Improved appearance of settings in files
- Reworked /tictactoe command
Bug Fixes
- Fixed integration with legacy PlasmoVoice version
- Fixed integration with SuperVanish
Features
- Added Minecraft 1.21.4 support
- Added new status section, including server description, icon, players, and version
- Added server name change for /maintenance
- Added quit, join, and afk message support for proxy
- Added Text Display support for bubble messages (1.19.4 and above)
Refactors
- Reworked time formatting
- Reworked bubble message system and changed duration formula
- Reworked GUI system using PacketEvents
- Removed GUIs for /ignorelist, /warnlist, /banlist, /mutelist
- Removed motd, icon, player-count modules
- /unban command now only suggests banned players
Bug Fixes
- Fixed formatting of links with images
- Fixed sending of quit messages when the quit module is disabled
Features
- Completely reworked configuration system with splitting into different subfiles
- Added ability to edit advancement display range
- Added ability to edit death display range
- Added player ignore support in SimpleVoice and PlasmoVoice via /ignore
- Added configuration link for each module in every file
- Added final_clear_message placeholder for integrations
Refactors
- Completely reworked documentation to reflect new changes
- Removed separate url tag
- Removed separate hover for emoji
Bug Fixes
- Fixed thread handling
- Fixed database operation when switching from offline to online mode
Features
- Added Minecraft 1.21.2 and 1.21.3 support
- Added Telegram integration
- Added ability to subscribe to Twitch stream start
- Added ability to customize /gamemode messages
- Added ability to customize /advancement messages
- Added ability to customize /clear messages
- Added ability to customize /op messages
- Added ability to customize /deop messages
- Added ability to customize /enchant messages
- Added ability to customize /seed messages
- Added ability to customize /setblock messages
- Added ability to customize /spawnpoint messages
- Added information output on Velocity and BungeeCord
- Merged /firstonline and /lastonline into /online with new last, first, and total modes
Refactors
- Merged bukkit and paper plugin builds into a single bukkit build
- Advancement and death messages migrated to PacketEvents
Bug Fixes
- Fixed table creation on legacy MySQL servers
Features
- Added status setting for Discord bot
- Added info channel settings in Discord
- Added support for custom ban, mute, and warn reasons
- Added Anti-Caps system
- Added check that SkinsRestorer is not initialized
Refactors
- Documentation translated to English
- Removed permission from world tag
- Removed prefix, suffix, display, tab tags from player
Bug Fixes
- Fixed message for right-clicking on unknown players
- Fixed inaccuracies in Russian documentation
Features
- Implemented full plugin documentation in Russian
- Added bukkit support, base file renamed to flectonepulse-bukkit.jar
- Added new tags for PlaceholderAPI %flectonepulse_fcolor_number%
- Added validation for correct time in warn and mute commands
- Added webhook support in Discord integration
Refactors
- Reworked message sending and formatting system
- Below-name disabled by default
- Changed advancement settings structure
- Moved disable to chatsetting
- Moved right-click to interaction
- Moved player-list-name format to messages
- Renamed permission flectonepulse.module.server.icon
- Removed range from commands that didn't need it
- Removed dimension-based chat setting
- Removed listener from objective
- Removed listener from brand
Bug Fixes
- Fixed operation on spigot
- Fixed mention functionality
- Fixed /tell notes functionality
- Fixed message sending from mail
- Fixed incorrect sender for mail
- Fixed %item% behavior with empty item
- Fixed duplicate reason on moderation
- Fixed color conversion after placeholders
- Fixed player online status update in database
- Fixed color clearing for other players
- Fixed Russian localization messages
- Fixed null in chatcolor
Features
- Created separate secrets.yml file for storing sensitive data
- Added Discord and Twitch integration
- Added /rockpaperscissors command (rock-paper-scissors mini-game) with custom value support
- Added vault_prefix and vault_suffix placeholder replacement
- Added console name setting
- Added ability to disable messages from /afk, /poll, /spit, and greeting in /chatsetting
Refactors
- Reworked message sending system
Bug Fixes
- Fixed bug with player ban check
- Fixed bugs when sending messages
Features
- Entire plugin switched to asynchronous mode
- Added Folia core support
- Added player message duplication to console
- Added message localization support based on player language with use-player-locale option
- Added ability to create custom localizations and specify them in config.yml
- Added plugin sound functionality
- Added integration with PlaceholderAPI, LuckPerms, Vault, SimpleVoice, PlasmoVoice, SuperVanish, PremiumVanish, SkinsRestorer, InteractiveChat
- Implemented radius system (range = -2 for proxy and servers, range = -1 for server, range = 0 for sender, range > 0 for radius)
- Added /maintenance command for technical work
- Added /tictactoe command (tic-tac-toe) with hard mode
- Added /mail and /clearmail commands for offline letters
- Added /symbol command to search for available unicode characters
- Added built-in %tps% and %online% tags
- Added death message display with text upon player death
Refactors
- /tempban command removed and merged with /ban
- Rewritten bubble message system, added display speed configuration parameter
- Config messages organized
Bug Fixes
- Fixed display of advancements without translation
Features
- Added BungeeCord and Velocity support
- Added Console command support
- Added tab name color dependency on /chatcolor
- Added instant bubble message display when possible
Refactors
- Removed EntityLib support, Mark and Chat Bubble methods written from scratch
- Reworked databases (MySQL, SQLite) for independent operation
Bug Fixes
- Fixed threading issues
- Fixed many known bugs
Features
- Initial release of FlectonePulse plugin
- MiniMessage (Adventure API) and legacy Minecraft color support
- MySQL and SQLite support
- Fully asynchronous plugin operation
- Elytrium Serializer used for configuration
- PacketEvents used for creating artificial entities at packet level
- CommandAPI used for creating vanilla plugin commands
- Support for all versions from 1.16.5 to 1.21.1