
22.5K
147
✨ 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
- Fixed InteractiveChat raw tags in Discord #360
- Fixed player head validation logic: check playername first, then UUID and textures (object) #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
New Contributors
- @Ghost-t1 made their first contribution in https://github.com/Flectone/FlectonePulse/pull/360
✨ 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
- Fixed InteractiveChat raw tags in Discord #360
- Fixed player head validation logic: check playername first, then UUID and textures (object) #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
New Contributors
- @Ghost-t1 made their first contribution in https://github.com/Flectone/FlectonePulse/pull/360
Version 1.10.0
✨ 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
- 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
Version 1.10.0
✨ 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
- 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 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 messages sent to all platform players on disable (quit)
🔧 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 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 messages sent to all platform players on disable (quit)
🔧 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
Full Changelog
✨ 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
Full Changelog
✨ 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=valueand-Dflectonepulse.debug=trueJava 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
Full Changelog
✨ 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=valueand-Dflectonepulse.debug=trueJava 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
Full Changelog
✨ 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
Full Changelog
✨ 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
Full Changelog
✨ 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
📖 Documentation
- Updated year to 2026 in files
- Added Hytale README files with documentation
Full Changelog
✨ 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
📖 Documentation
- Updated year to 2026 in files
- Added Hytale README files with documentation
Full Changelog
✨ 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
Full Changelog: https://github.com/Flectone/FlectonePulse/compare/v1.7.3...v1.7.4
✨ 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
Full Changelog: https://github.com/Flectone/FlectonePulse/compare/v1.7.3...v1.7.4
✨ 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
Full Changelog: https://github.com/Flectone/FlectonePulse/compare/v1.7.2...v1.7.3
✨ 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
Full Changelog: https://github.com/Flectone/FlectonePulse/compare/v1.7.2...v1.7.3
1
...
