Adds support for 1.21.2-1.21.4.
- Fix blocking non-cache itemstack is not cancelling packet
- Use nbt for comparing modified itemstack
- Register global command permission
- Fix trying to cache itemstack two times
- Fix cache lastAccessTime not updating
- Fix carried item in window is not handled on 1.17.1+
- Update dependencies
- Fix resetConsoleColor not working on linux
- Various improvements on itemstack handling:
- Fix Placeholders is not set on first replace(caching) of a item
- Improve config replaced nbt error handling
- Optimize user item restore cache efficiency
- Optimize itemstack cache accessing efficiency (Tested on 1.20.5+: 1x times on regular items, over 5x times on items with components)
- Fix capture on items
- (Many things else I forget, feel free to check sources)
- Support 1.21.1
- Try fallback to previous NMS verison if current version is not supported.
- Fix itemstack amount is displayed wrongly by rework on cache system.
- Fix empty line after a warn/error log on paper.
- Rework on NMS packages.
- Fix Hanging signs are not handled on 1.19.3-1.19.4 .
- Fix errors
- Re-Add support for book contents handling.
- Optimize NMS cache
Here comes the 3.0.0 release! For the requirements to support Spigot/Paper 1.20.5-1.21, we made much internal changes. However, there's no much end-point users changes.
Changelogs:
- Support 1.20.5-1.21.
- ItemStack:
- - Completely Rework. Improved performance and added featrures.
- - Now, you can edit Item Type, Item Count with [Nbt Json].
- - Removed [Display Json], instead of, use [Lore Json]
- - Replace Config: `Handle-Nbt-Display-Compound` is removed, and `Handle-Nbt-Lore-List` added.
- Use FieldAccessor to access fields in record classes.
- Add `protocolstringreplacer.feature.parsepapi` permission.
- Added `resetConsoleColor` config entry.
- Update Locale files.
etc...
Internal changes:
- Migrate Maven to Gradle.
- Packages and Classes renamed.
- Use Kotlin Language for later codes.
- Rewrite bunch of things.
- Imported NMS.
- Init 1.20.3/1.20.4 support.
- Fix ScoreBoardObjective may not replace.
Please remind to install the latest **development version** of ProtocolLib on 1.20.2 servers.
- Fix: Team name in player chat being wrapped multiple times.
- Fix: Update missing NMS mapping in 1.19.3 and above.
- Fix: Error when parsing client language settings on 1.20.2.
- Support 1.20.2.
- Adjust the minimum version requirement of ProtocolLib to v4.4.0.
- Separate ActionBar type from the Chat/Title type to alleviate the problem of using too many resources caused by actionbar messages on main thread.
- Update example replacer config.
- Fix some issues with using /psr edit command to edit Regex type configuration.
- Fix the error loading configuration on Spigot 1.8.8.
- Added: Support Folia server.
- Added: A simple tip for the usage of the Capture command.
- Fixed: Villager/Wandering Trader trade packets throw errors on 1.18-1.19.1 servers.
- Fixed: Player may be kicked out when a sign is placed on 1.8-1.17.1 server.
- Fixed: UpdateTeam packets may cause error with some plugins.
- Fixed: Capture command would merge packets with different NBT contents.
- Improvement: Rewrite the EntityMeta packet logic, and reduce the overall time consumption by 75%.
- Improved: Updated to latest version of ProtocolLib wrappers.
- Various code improvements.
- Code cleanup.
- Fixed an error when using the development version of PlaceholderAPI.
- Fixed an issue where surrounding players might be kicked out and an error would be thrown when placing a sign.
- Fixed the issue that the sign replacement may be affected by other players.
- Support checking resolved attribute of the book to determine whether the content of the book is Json or plain text.
- Fixed `/psr capture list` command error on 1.8-1.11.2 servers.
- Added support for Spigot 1.20 .
- Added support for hanging signs and 1.20+ double-sided signs.
- Added refactored item processing mechanism, which supports replacement for single or multiple item types. (Refer to the latest example configuration)
- Improvement Disable PAPI function if the server-side PlaceholderAPI version is not supported.
- Improved Rename Log4j2 injected class names to fit naming conventions.
- Improved internal optimization replacement config list handling.
- Improved item replacement cache cleanup mechanism.
- Fix console replacement may report ConcurrentModificationException when reloading configuration file.
- Fixed an issue where an item's PlaceholderAPI replacement might report an error.
- Added support for 1.19.4 .
- Added support for handling Disguised_Chat packets.
- Added support for handling the fallback property of the Translate component.
- Add `Max-Capture-Records` configuration item.
- Improved to send warning message if `Options.Enabled` is not defined in override configuration.
- Fixed the problem that the Bungee-Chat Component customized by other plugins could not be processed.
- Fix the problem that the capture command cannot open the clipboard when the monitor type contains `-` characters.
- Fixed an issue where entity names could not be handled on some servers.
- Fix bugs in some example replacement configurations.
- Fix bugs in plugin events API.
- Other code improvements and cleanups.
- Add: `Options.Features.Placeholder.Placeholder-Enabled` option, allowing to disable PAPI placeholder parsing feature.
- Improve: PlaceholderAPI is no longer a required dependency.
- Improve: Display player information and packet type when unable to get user instance.
- Fix: Example replacer configs may not be generated when runtime encoding is not UTF-8.
- Dev: Security improvements and performance improvements.
- Improve: Rework example replacer configs related mechanism. Built-in more example replacer configs.
- Improve: `/psr reload` now supports reloading locale files.
- Fix: Exception when loading the plugin for the first time.
- Add: `Command-Typing-Sound-Enabled` option in global config, which can turn off in-game command sound.
- Improve: Correctly handle ProtocolLib TemporaryPlayer errors.
- Improve: Default value strategy when global config file fails to load.
- Improve: In-game update notify can ignore some messages.
- Improve: Configs update strategy.
- Fix: When replacer config has errors it may break plugin loading.
- Fix: Exceptions when there is a null element in Sign on some legacy servers.
- Fix: Sign's NBT modification does not clear removed elements.
- Improve: In-game updater notification receiving logic.
- Improve: Jndi fixer when no fix is needed.
- Fix: v2.17.0 will update the configuration file when plugin starts for the first time.
- Fix: Chinese ConsoleColor example config format is not standardized.
- Fix: Spigot Chat Component to Json may throw exceptions on legacy servers.
- Dev: Fix bStats statistics format, some code improvements.
- IMPORTANT: Configuration schema changed, will be upgraded automatically after installing new version.
- Add: Automatically save a backup when upgrading configuration files.
- Add: Support disabling unneeded listen types in the config.
- Add: Support modifying the complete NBT of ItemStack (can be used to add NBT tags such as enchantments).
- Add: Support modifying the complete display compound of ItemStack (can be used to add or delete Lore lines).
- Add: Support modifying ItemStack without display compound (can be used to add information for items without NBT).
- Add: Support modifying the complete NBT of Sign (can be used to modify text highlight, color, add or delete lines).
- Improve: Html escaping is now disabled when converting Spigot components to Json.
- Improve: Correctly handle exceptions when hooking packets.
- Improve: Add color to console warning and error messages.
- Improve: Update example replacer config file.
- Improve: Add complete translation for Capture commands.
- Fix: Update_Team packet may throw NPE.
- Fix: `Options.Enabled` in replacer config has no effect.
- Fix: N/A in capture info displayed abnormally.
- Fix: The formats of the capture info clipboard is displayed abnormally. Fix the wrong color and no longer add color in Json contents.
- Dev: Code quality improvements, internal optimizations. API changes.
- Add: Example configuration file ConsoleColor.yml . If you have enabled the plugin, it can be found in the plugin jar.
- Add: Support for handling Update_Team packets (scoreboard).
- Improve: PsrMessage class is only initialized when console messages handling fallback.
- Improve: OP no longer has permission for user item cache in survival mode by default.
- Improve: Method of getting language files, partially rewritten.
- Improve: Handle errors when loading alternate config files.
- Improve: Support negative permissions.
- Fix: Can't handle scoreboard title on 1.8-1.12.
- Fix: OP always has filter permission specified in replacer config.
- Fix: Error when replacer config file does not define `Original` or `Replacement`.
- Fix: Error when replacing Json when `Skip-When-Direct-Replaced` is `false`.
- Dev: Use new Nbt-API methods.
- Dev: Code improvement and optimization.
- Fix the issue that legacy Paper server may throw a exception.
- Fix the formatting issues caused by Direct on ItemStack replacing (italics are now removed by default).
- Fix the display issue caused by using uppercase letters in the HEX format code.
- Fix the bug that the 1.19.3 player chat to system chat feature throws a exception when using the chat plugin.
- Fix Parse command doesn't work with Equal match-mode.
- Improve standalone version checker, added in-game notify.
- Improve comment description accuracy in Config.yml.
- Internal code cleanup.
- Fix the issue that legacy servers will throw a exception when executing `/psr parse`.
- Fix ItemStack doesn't set papi in certain cases.
- Add a new replace mode: Direct. This mode will convert the text to the style you can see in game, suitable for users who don't know Json. For more information, please read the new version of the example replacer config and the general config file.
- Add client locale filtering. The replacer config can only handle for the specified client locales to achieve multi-language.
- Add ItemStack debug.
- Improve Saving configs will no longer add a `#` in the empty line.
- Improve No longer reset player information (capture state, internal state, etc.) when reloading the plugin.
- Fix the issue that converting Player_Chat to System_Chat packet after the chat format is modified by other plugins only displays the message , without the player name.
- Fix the issue that the capture information will break the format if there is no Json.
- Fixed the issue that the message format of the capture command is weird and clicking may not copy the entry.
- Fixed the issue that the Papi placeholder could not be replaced when modifying an ItemStack for the first time.
- Fix the issue that ItemStack does not support Json replace.
- Fix the issue that the key of the Chinese language translation does not match.
- API changes; code improvements and optimizations.
- Add capture info count.
- Improve refactoring entity handling; fix the issue that the entity name on some servers is not modified.
- Improve TabComplete - use lowercase for proper autocomplete on the client side.
- Fix loading error when ProtocolLib is not installed.
- Update NBT-API dependency.
- Other code optimizations and improvements.
- Support 1.19.3.
- Support converting 1.19.3 player_chat packet to system_chat packet.
- Support console message handling after updating Log4j2 library in 1.19.3.
- Support 1.19.3 entity metadata packet handling. (Need to update ProtocolLib)
- Removed 1.19.3 chat preview packet handling.
- Optimize the Contain replacement algorithm. It can increase the efficiency by up to three times.
- Added show debug information when the Json format is wrong after replacing.
- Fix the error that replacing the Common with empty text.
- Fix `WRITABLE_BOOK` related errors.
- Fix possible NPE when reloading the plugin.
- Improve use ProtocolLib -> NBTAPI to process sign data to improve efficiency.
- Improve Jndi restore when plugin is closed.
- Improve check if the replacer config yml file is loaded successfully.
- Update dependencies.
- Code cleanup.
- Fixed missing demand and specialPrice for villager trade list due to a CraftBukkit issue.
- Rework on anvil type window detect.
- Added `Config-Load-LifeCycle` config to allow plugins to load config at an earlier LifeCycle.
- Added `Max-Length` replacer configuration to skip processing strings exceed specified length.
- Completely rewrite ItemStack handling and caching mechanism, optimized speed.
- Reworked `Player_Chat` packet handling when `Convert-Chat` is not enabled in 1.19.1/2.
- Reworked the packet content capture (`/psr capture`) function, improved message format, supports copying any content.
- Improve Disable reload again during reloading.
- Improve Migrated to NBT-API (already built-in) to handle NBT data.
- Improve Reworked ItemContent handling in HoverEvent, using NBT-API.
- Improve Reworked ItemStack handling, using NBT-API (to support 1.13+ item name Json handling, 1.14+ item Lore Json handling, 1.8+ book content Json handling).
- Improve Reworked UserMetaCache handling, using NBT-API (1.8-1.12 no longer produces a blank lines in Lore).
- Improve Disable escaping Html characters when converting Paper Component.
- Improve Store optional filter configuration in ReplacerConfig and API is provided.
- Optimize string handling speed.
- Fix `Tab_Complete` packet handling on some servers in 1.8-1.19.
- Fix `Kick_Disconnect` packet not handling.
- Fix debug info provided when modified Json cannot be parsed.
- Fix anvil window detection on older servers.
- Internal code modification and optimization.
- Fix `/psr reload` exception.
- Add some APIs and Events to better support addon development.
- Add check the user's ItemMeta cache null to avoid resetting ItemMeta.
- Add the ability to restore the player's inventory items when the plugin is disabled.
- Add support to use `/psr reload` command to reload some configurations in Config.yml.
- Add full support for processing item packets of villagers/wandering merchants.
- Add debug information to help fix errors when Json parsing fails before/after replacement.
- Add `Remove-Cache-When-Merchant-Trade` Config option to disable user ItemMeta cache feature when trading with villagers/wandering traders to fix possible glitches.
- Add not to add cache NBT to the item in the anvil to prevent over-sending packets when renaming items, resulting in a large amount of bandwidth usage and excessive packet kick.
- Improve allow setting replacer config Permission to blank to ignore permission check.
- Improve optimize replacement item packet handling.
- Improve some tip changes.
- Improve fixed typo in example config.
- Fix `/psr reload` command doesn't save replacer configs changes by non-command causes.
- Fix item packets handling on higher versions.
- Fix sign handling may cause exception.
- Other code changes.
- Updated Minecraft dependencies to `1.19.2`.
- Support 1.19.1+ Player_Chat packet handle/covert to System_Chat.
- Fixed 1.19.1+ ChatPreview packet handle.
- Fixed exceptions on 1.19.1+ when executing commands.
- Fixed 1.19+ not replacing entity names.
- Fixed a bug that naming a named item in an anvil generates a large number of packets.
- Reduced memory usage.
- Improve localization.
- Improve code.
- Improved replace function. Now PSR provides debug info if Json format is wrong.
- New Feature: Convert PLAYER_CHAT packets to SYSTEM_CHAT packets. Used to handle replacements correctly for servers/clients enabled "Only Show Secure Chat", with the side effect that clients cannot detect the player who sent the messages (e.g. cannot report players via chat).
- Better 1.19 Paper support, bug fixes.
- Rewrite Spigot/Paper Component replacement implement.
- Code cleanup.
- Support to replace Spigot/Paper Component in Title/ActionBar.
- Code cleanup.
- Support Spigot 1.19.
- Support to replace Component in 1.19 Chat Preview. (Listen-Type: `Chat-Preview`)
- Support to replace death message in respawn screen on death. (Listen-Type: `Combat-Kill`)
- Support to replace the message displayed on the player client when the player is kicked. (Listen-Type: `Kick-Disconnect`)
- Support to replace all strings in TabComplete. (Listen-Type: `Tab-Complete`)
- Support to replace items in the trade list of wandering merchants/villagers for 1.14+.
- Fix sendFilteredMessage not working on 1.19.
- Fix exception of TabComplete when entering PSR command on 1.8.
- Fix locale key `Variables.Listen-Type.Messages.Invalid-Type` mismatch.
- Moved Chat packet processing package.
- Improve formatting in default config files.
- Fix plugin not working properly with ProtocolLib 5.0 (dev).
- Improve the ability to modify Spigot/Paper Component in Chat packets, theoretically support 100% servers.
- Fixed `/psr capture` command throws exceptions on 1.8-1.15.X.
- Fix filter `Options.Filter.User.Permission` in Replacer Config not working.
- Fix Line 4 on sign is not replaced.
- Fix NPE when replacing the Reader of console Terminal on some servers.
- Fix exception on Legacy servers.
- Fix RemoveAnsi on some servers.
- Fix executing /psr capture list will occur NoSushMethodError on legacy servers.
- Support 1.17-1.18 Boss-Bar edit.
ProtocolStringReplacer v2.6.2
- Fix SplitLines not set in CommentYamlConfiguration, breaking configs.
ProtocolStringReplacer v2.6.1
- Add a config entry to limit the print times of errors caused by ProtocolLib.
- Add a config entry to limit the print times of errors caused by ProtocolLib.
- Fix the problem of the wrong time unit of the cache cleaning Schedule, which may cause memory leaks.
- Clear user cache when updating player inventory to reduce memory use.
- Fix user cache system not working properly.
- Improve blocking method for ProtocolLib errors.
- Internal code modification.
- Fix the problem with TemporaryPlayer.
- Fix NPE of some ItemHoverEvent messages.
- Fix BossBar warn messages on Spigot 1.8.
- Support 1.17-1.18 ActionBar messages editing.
- Fix Console ListenType still replaces when replacer config is disabled.
Just re-update this because the plugin file was broken. No any more does this update contain.
- Optimized RAM usage.
- Remaked console message replacement, now every character can be replaced, blocked, and supports 1.8-1.18 ALL!
- Adapt to Spigot 1.18.1 recently changes.
- Adapt to some Forge/Fabric servers changes.
- Adapt to NachoSpigot 1.8 server changes.
- Improved Console replacement implement.
- Fixed sometimes /psr edit can't edit Replaces and Blocks.
- Fixed JDNI fixer NPE on 1.18.
- Fixed server Log4j 0day CVE vulnerability (for 1.8-1.18)
- Fixed a typo in update checker.
- Fixed NPE on Airplane server and maybe other several servers.
- Defaults UTF-8 charset for updater messages.
- Improved updater.
- Bump to Spigot 1.18.
- Fixed multiple potential NPE, improved plugin compatibility.
- Improved the implementation of plugin Logger prefix modification.
- Improved the updater message function.
- Fixed Ansi escapes in several servers' GUI console.
- Improved updater implement.
- Check if the key is contained in MapChunk packet.
- Save the original MessageFactory to prevent errors when disabling plugin on some servers, improved plugin compatibility.
- Obtain LoggerNamePatternSelector through the Log4j2 plugin registry to prevent plugin from failing to initialize due to class migration on some servers, improved plugin compatibility.
- Renamed some class names to comply with code idioms.
- Optimized plugin to reduce memory usage.
1.18 Support will be released at this weekend, so I can do some tests.
- Fix NPE of fewer console messages.
- Fix exception caused by bug from Legacy Log4j2
- add Options.Git-Raw-Host configuration option, so you can choose your hostname to update checking server.
- Improve the console replacement implement of Spigot 1.12 and above: Now you can modify all the text as you want, and the Ansi codes is no longer displayed in the log files.
- Config.yml adds a option of whether to parse placeholders for Console.
Improve user current window title method.
Typos correction.
Wiki is creating!
Click here to preview. You may need to use machine translation because contents will not be translated into English until I totally finish it.
Switched commons-lang3 to commons-lang
Reduced jar file size
Rename 'Localization' to 'Locale' in Config.yml
Added Replacer Config Filter: User.Permission
Fix NPE of Capture.
Fix en-US lang.
Move User package
Remake Capture system
Optimize ItemStack replacements
Fix NPE of console messages
Current Capture system is not finish at all parts since I decide to post this version for bug fix.
Fix plugin cannot load caused by update checker.