SignEdit for Bukkit
1.14.7Enhanced tools to edit existing Bukkit signs. This is a fork of Omel's SignEdit with improved functionality.
1.14.7latestv1.14.7 (2025-11-28)Jan 15, 2026 ### Added */sign cutnow shows the unexpected differences when another plugin overrides the line removals.  ### Fixed * When using/sign setor/sign clear, sign text modifications made by other plugins (viaSignChangeEvent) were not detected due to a state tracking bug. This bug did not affect/sign ui. ### Under the Hood * Removed the Dagger 2 dependency injection framework in favor of simpler manual dependency wiring. This reduces the plugin JAR size by ~98KB (~38%) while maintaining the same separation of concerns through explicit service containers (SignEditPluginServices,SubcommandContext). * Added compile-time annotation processing for@SignSubcommandInfoto validate subcommand metadata and improve tab completion accuracy with argument hints. * Unified allSignEditInteractionconstructors to acceptSubcommandContext, reducing boilerplate through a shared abstract base class with convenience accessors for common services.1.14.6v1.14.6 (2025-06-05)Jan 15, 2026 Fixed
*java.lang.NoSuchMethodException: java.lang.Object.getTileEntity()when opening the native sign editor GUI on Paper 1.21.5 (#44)Under the Hood
* Updated copyright year 2025 * Although unnecessary, the reflection-based sign editor opener now takes into account CraftBukkit 1.21.5's retrieval ofnet.minecraft.block.entity.SignBlockEntity, the new name ofnet.minecraft.tileentity.TileEntitySign. This plugin should be callingorg.bukkit.entity.Player#openSign(org.bukkit.block.Sign,org.bukkit.block.sign.Side)on Bukkit 1.20+.1.14.5v1.14.5 (2024-10-21)Jan 15, 2026 Fixed
* Missing cancelledSignChangeEventvalidation when checking aSignChangeEventemitted by this plugin (#43) Only affectscompatibility.edit-validation: Extra.Under the Hood
* Updated copyright year 2024 * Switched CI provider from CircleCI to GitHub Actions * Fully automated release in CI * Updated Gradle to version 8.10.21.14.4v1.14.4 (2023-07-31)Jan 15, 2026 ### Fixed *java.lang.IllegalStateException: Unable to call method: getSideon Bukkit 1.19.4 due to incomplete sign side support in that version of Bukkit ### Under the Hood *SignHelpers.setEditableOldApi()called the wrong Bukkit method (should beSign.setEditable()instead ofSign.setWaxed()), but this probably has no practical effect. It only affects the correctness of how this plugin interacts with Bukkit 1.13.2 through Bukkit 1.19.4. * The sign side calculation based on the player's relative position from the sign (SideShim.fromRelativePosition) will now say front on Bukkit 1.19.4 and older, as the back side had not yet been added in those versions of Bukkit.1.14.3v1.14.3 (2023-07-25)Jan 15, 2026 ### Fixed */sign uicould be invoked by right-clicking a sign in Minecraft 1.20 when the player did not have thesignedit.sign.uipermission. *java.lang.IllegalArgumentException: Sign must be in same world as Playerin the right-click-on-sign event handler (#42)1.14.2v1.14.2 (2023-07-22)Jan 15, 2026 ### Fixed */sign uiand the equivalent right-click override may incorrectly be hiding issues with the player opening the sign editor. (#42) ### Under the Hood * Remove ProGuard to improve the readability of stack traces * Narrow down potential/sign uiissues by reducing thecatchscopes to just methods and fields that are missing when opening the native sign editor GUI1.14.1v1.14.1 (2023-07-20)Jan 15, 2026 ### Fixed * Dyes could not be used on editable signs due to an overly aggressive override. (#41) * Ink sacs and glow ink sacs could not be used on editable signs due to an overly aggressive override. (#41) * Item usages on signs should be ignored when the player is sneaking. This is the native Minecraft behavior.1.14.0v1.14.0 (2023-07-17)Jan 15, 2026 ### Added * Support for Minecraft 1.20 sign sides (front and back) * Support for Minecraft 1.20 honeycomb wax on signs * On Minecraft 1.20+, opening an editable sign (without honeycomb wax) by right-click will open a sign editor handled by this plugin. * (Minecraft 1.20+ only)/sign waxand/sign unwaxcommands and permissions to apply and remove honeycomb wax from signs, respectively * New locale strings: *unwax_sign–/sign unwaxpending action description *wax_sign–/sign waxpending action description *wax_removed– Completed/sign unwaxaction *wax_applied– Completed/sign waxaction *bypass_wax_cannot_rewax– Warning after a/signtext change that wax was not reapplied because the player lacks permission to/sign wax*forbidden_waxed_sign_edit– Error that a/signtext change was blocked because the target sign is waxed and the player lacks permission to/sign unwax### Changed * The documentation of/sign undoand/sign redohas been clarified to indicate that they affect only the sign text, not the dyes or wax applied to the sign. ### Fixed * Failure and error when editing [hanging signs and wall hanging signs](https://web.archive.org/web/20230615204117/https://minecr… from Minecraft 1.20 when usingcompatibility.edit-validation: Extra(#34)  * Workaround for a Spigot 1.20 bug where using the stable API to have a player open a sign does not make the sign editable ([SPIGOT-7391](https://hub.spigotmc.org/jira/browse/SPIGOT-7391)) * Errorjava.lang.IllegalArgumentException: Invalid page number (1)when usingcompatibility.sign-ui: EditableBookand saving a blank book ### Under the Hood * Tacked on some adapters to make the plugin compatible with Bukkit 1.20 [org.bukkit.block.sign.SignSide](https://web.archive.org/web/20230622054725/https://hub.sp… * Increased the right-click event handling priority to the highest level to avoid interfering with other plugins that take over right-click events on signs (#36) * Permission processing moved fromSignCommand.permitted(Player, String)toInteractionCommand.isPermitted()*SignText.signChanged()renamed toSignText.signTextChanged()as part of clarification that only text changes count in/sign undoand/sign redo* Started pulling [org.bukkit.entity.Player](https://web.archive.org/web/20230622081000/https://hub.sp… out of constructor injections, as various classes are being used in wider scopes. * Gradle 9.0 compatibility: * Replaced Gradle 8.2 deprecations with recommended replacements * Updated Gradle to version 8.2.1 * Added JDK toolchain resolver plugin to download Java 1.8 * Skip ProGuard for development builds * Eliminated the dependency oncommons-lang:commons-lang1.14.0-beta7v1.14.0-beta7 (2023-07-16)Jan 15, 2026 ### Pre-Release Notes #### Since Previous Pre-Release * Added a workaround for a Spigot 1.20 bug where having a player open a sign does not make the sign editable ([SPIGOT-7391](https://hub.spigotmc.org/jira/browse/SPIGOT-7391)) * Preserve the native honeycomb-on-sign action if thesignedit.sign.waxpermission is denied. * Locale changes: *wax_removedandwax_appliedshould just be those and not excessively wordy in what their effects are. * Eliminatedbypass_wax_beforeandbypass_wax_afterto prefer only error messages, as users probably don't care if the implicit de/re-waxing is successful. * Rewordedbypass_wax_cannot_rewaxto make it clear that the wax that was previously on the sign was discarded. #### Known Issues * The new locale strings relating to waxed signs have not been proofread for the localeszh-CN,zh-TW, andzh-HK. ### Added * Support for Minecraft 1.20 sign sides (front and back) * Support for Minecraft 1.20 honeycomb wax on signs * On Minecraft 1.20+, opening an editable sign (sign without honeycomb wax) by right-click will open a sign editor handled by this plugin. * (Minecraft 1.20+ only)/sign waxand/sign unwaxcommands and permissions to apply and remove honeycomb wax from signs, respectively * New locale strings: *wax_removed– Completed/sign unwaxaction *wax_applied– Completed/sign waxaction *bypass_wax_cannot_rewax– Warning after a/signtext change that wax was not reapplied because the player lacks permission to/sign wax*unwax_sign–/sign unwaxpending action description *wax_sign–/sign waxpending action description *forbidden_waxed_sign_edit– Error that a/signtext change was blocked because the target sign is waxed and the player lacks permission to/sign unwax### Changed * The documentation of/sign undoand/sign redohas been clarified to indicate that they affect only the sign text, not the dyes or wax applied to the sign. ### Fixed * Failure and error when editing [hanging signs and wall hanging signs](https://web.archive.org/web/20230615204117/https://minecr… from Minecraft 1.20 when usingcompatibility.edit-validation: Extra(#34)  * Workaround for a Spigot 1.20 bug where having a player open a sign does not make the sign editable ([SPIGOT-7391](https://hub.spigotmc.org/jira/browse/SPIGOT-7391)) *java.lang.IllegalArgumentException: Invalid page number (1)when usingcompatibility.sign-ui: EditableBookand saving a blank book ### Under the Hood * Tacked on some adapters to make the plugin compatible with Bukkit 1.20 [org.bukkit.block.sign.SignSide](https://web.archive.org/web/20230622054725/https://hub.sp… * Decreased the right-click event handling priority to the lowest level to avoid interfering with other plugins that handle right-click events on signs * Permission processing moved fromSignCommand.permitted(Player, String)toInteractionCommand.isPermitted()*SignText.signChanged()renamed toSignText.signTextChanged()as part of clarification that only text changes count in/sign undoand/sign redo* Started pulling [org.bukkit.entity.Player](https://web.archive.org/web/20230622081000/https://hub.sp… out of constructor injections, as various classes are being used in wider scopes. * Gradle 9.0 compatibility: * Replaced Gradle 8.2 deprecations with recommended replacements * Updated Gradle to version 8.2-rc-2 * Added JDK toolchain resolver plugin to download Java 1.8 * Skip ProGuard for development builds * Eliminated the dependency oncommons-lang:commons-lang1.14.0-beta6v1.14.0-beta6 (2023-07-13)Jan 15, 2026 ### Pre-Release Notes #### Since Previous Pre-Release * When usingcompatibility.edit-validation: Extra, SignEdit for Bukkit could have submitted anullrather than an air block for the block next to floating wall hanging signs, causing other plugins to fail to handle theBlockPlaceEvent. Although not possible in normal Minecraft, SignEdit for Bukkit now simulates hanging wall hanging signs in the air for validation purposes. * Hopefully improved the machine translations of the wax-related locale strings #### Known Issues * When using the Spigot server,/sign uiedits are not registered due to a bug ([SPIGOT-7391](https://hub.spigotmc.org/jira/browse/SPIGOT-7391)). Either switch to [PaperMC](https://papermc.io/) or use/sign setas a workaround. * The new locale strings relating to waxed signs have not been proofread for the localesde,nl,zh-CN,zh-TW, andzh-HK. ### Added * Support for Minecraft 1.20 sign sides (front and back) * Support for Minecraft 1.20 honeycomb wax on signs * On Minecraft 1.20+, opening an editable sign (sign without honeycomb wax) by right-click will open a sign editor handled by this plugin. * (Minecraft 1.20+ only)/sign waxand/sign unwaxcommands and permissions to apply and remove honeycomb wax from signs, respectively * New locale strings: *wax_removed– Completed/sign unwaxaction *wax_applied– Completed/sign waxaction *bypass_wax_before– Warning before a/signtext change that wax will be removed *bypass_wax_after– Warning after a/signtext change that wax was reapplied *bypass_wax_cannot_rewax– Warning after a/signtext change that wax was not reapplied because the player lacks permission to/sign wax*unwax_sign–/sign unwaxpending action description *wax_sign–/sign waxpending action description *forbidden_waxed_sign_edit– Error when attempting to edit a waxed sign without permission to run/sign unwax### Changed * The documentation of/sign undoand/sign redohas been clarified to indicate that they affect only the sign text, not the dyes or wax applied to the sign. ### Fixed * Failure and error when editing [hanging signs and wall hanging signs](https://web.archive.org/web/20230615204117/https://minecr… from Minecraft 1.20 when usingcompatibility.edit-validation: Extra(#34)  *java.lang.IllegalArgumentException: Invalid page number (1)when usingcompatibility.sign-ui: EditableBookand saving a blank book ### Under the Hood * Tacked on some adapters to make the plugin compatible with Bukkit 1.20 [org.bukkit.block.sign.SignSide](https://web.archive.org/web/20230622054725/https://hub.sp… * Decreased the right-click event handling priority to the lowest level to avoid interfering with other plugins that handle right-click events on signs * Permission processing moved fromSignCommand.permitted(Player, String)toInteractionCommand.isPermitted()*SignText.signChanged()renamed toSignText.signTextChanged()as part of clarification that only text changes count in/sign undoand/sign redo* Started pulling [org.bukkit.entity.Player](https://web.archive.org/web/20230622081000/https://hub.sp… out of constructor injections, as various classes are being used in wider scopes. * Gradle 9.0 compatibility: * Replaced Gradle 8.2 deprecations with recommended replacements * Updated Gradle to version 8.2-rc-2 * Added JDK toolchain resolver plugin to download Java 1.8 * Skip ProGuard for development builds * Eliminated the dependency oncommons-lang:commons-lang1.14.0-beta5v1.14.0-beta5 (2023-07-13)Jan 15, 2026 ### Pre-Release Notes #### Since Previous Pre-Release * Wax validation has been implemented for the entire plugin now that/sign undoand/sign redohave the wax validation wrapper. * Fixed a regression breaking right-mouse click on a sign when the player's hand is empty #### Known Issues * When using the Spigot server,/sign uiedits are not registered due to a bug ([SPIGOT-7391](https://hub.spigotmc.org/jira/browse/SPIGOT-7391)). Either switch to [PaperMC](https://papermc.io/) or use/sign setas a workaround. * The new locale strings relating to waxed signs have not been proofread for the localesde,nl,zh-CN,zh-TW, andzh-HK. ### Added * Support for Minecraft 1.20 sign sides (front and back) * Support for Minecraft 1.20 honeycomb wax on signs * On Minecraft 1.20+, opening an editable sign (sign without honeycomb wax) by right-click will open a sign editor handled by this plugin. * (Minecraft 1.20+ only)/sign waxand/sign unwaxcommands and permissions to apply and remove honeycomb wax from signs, respectively * New locale strings: *wax_removed– Completed/sign unwaxaction *wax_applied– Completed/sign waxaction *bypass_wax_before– Warning before a/signtext change that wax will be removed *bypass_wax_after– Warning after a/signtext change that wax was reapplied *bypass_wax_cannot_rewax– Warning after a/signtext change that wax was not reapplied because the player lacks permission to/sign wax*unwax_sign–/sign unwaxpending action description *wax_sign–/sign waxpending action description *forbidden_waxed_sign_edit– Error when attempting to edit a waxed sign without permission to run/sign unwax### Changed * The documentation of/sign undoand/sign redohas been clarified to indicate that they affect only the sign text, not the dyes or wax applied to the sign. ### Fixed * Failure and error when editing [hanging signs and wall hanging signs](https://web.archive.org/web/20230615204117/https://minecr… from Minecraft 1.20 when usingcompatibility.edit-validation: Extra(#34)  *java.lang.IllegalArgumentException: Invalid page number (1)when usingcompatibility.sign-ui: EditableBookand saving a blank book ### Under the Hood * Tacked on some adapters to make the plugin compatible with Bukkit 1.20 [org.bukkit.block.sign.SignSide](https://web.archive.org/web/20230622054725/https://hub.sp… * Decreased the right-click event handling priority to the lowest level to avoid interfering with other plugins that handle right-click events on signs * Permission processing moved fromSignCommand.permitted(Player, String)toInteractionCommand.isPermitted()*SignText.signChanged()renamed toSignText.signTextChanged()as part of clarification that only text changes count in/sign undoand/sign redo* Started pulling [org.bukkit.entity.Player](https://web.archive.org/web/20230622081000/https://hub.sp… out of constructor injections, as various classes are being used in wider scopes. * Gradle 9.0 compatibility: * Replaced Gradle 8.2 deprecations with recommended replacements * Updated Gradle to version 8.2-rc-2 * Added JDK toolchain resolver plugin to download Java 1.8 * Skip ProGuard for development builds * Eliminated the dependency oncommons-lang:commons-lang1.14.0-beta4v1.14.0-beta4 (2023-07-13)Jan 15, 2026 ### Pre-Release Notes #### Since Previous Pre-Release * Fixed the server crash when right-clicking a sign (#37) * SignEdit for Bukkit now _properly_ takes over the native Minecraft sign editor for unwaxed signs in Minecraft 1.20+. (#35) * PaperMC no longer causes SignEdit for Bukkit to say "Sign edit forbidden by policy or other plugin" or "Modified by another plugin" on PaperMC when using/sign uiand any existing line begins with a formatting code and there are no other formatting codes on the line. * Fixed compatibility with other plugins that take control of right-click on signs (#36) * Fixed documentation of/sign undoand/sign redoin/? signedit* Added a machine translation for the new locale strings in Hong Kong Cantonese (zh-HK) #### Known Issues */sign undoand/sign redotreat waxed signs as unwaxed signs. * When using the Spigot server,/sign uiedits are not registered due to a bug ([SPIGOT-7391](https://hub.spigotmc.org/jira/browse/SPIGOT-7391)). Either switch to [PaperMC](https://papermc.io/) or use/sign setas a workaround. * The new locale strings relating to waxed signs have not been proofread for the localesde,nl,zh-CN,zh-TW, andzh-HK. ### Added * Support for Minecraft 1.20 sign sides (front and back) * Support for Minecraft 1.20 honeycomb wax on signs * On Minecraft 1.20+, opening an editable sign (sign without honeycomb wax) by right-click will open a sign editor handled by this plugin. * (Minecraft 1.20+ only)/sign waxand/sign unwaxcommands and permissions to apply and remove honeycomb wax from signs, respectively * New locale strings: *wax_removed– Completed/sign unwaxaction *wax_applied– Completed/sign waxaction *bypass_wax_before– Warning before a/signtext change that wax will be removed *bypass_wax_after– Warning after a/signtext change that wax was reapplied *bypass_wax_cannot_rewax– Warning after a/signtext change that wax was not reapplied because the player lacks permission to/sign wax*unwax_sign–/sign unwaxpending action description *wax_sign–/sign waxpending action description *forbidden_waxed_sign_edit– Error when attempting to edit a waxed sign without permission to run/sign unwax### Changed * The documentation of/sign undoand/sign redohas been clarified to indicate that they affect only the sign text, not the dyes or wax applied to the sign. ### Fixed * Failure and error when editing [hanging signs and wall hanging signs](https://web.archive.org/web/20230615204117/https://minecr… from Minecraft 1.20 when usingcompatibility.edit-validation: Extra(#34)  *java.lang.IllegalArgumentException: Invalid page number (1)when usingcompatibility.sign-ui: EditableBookand saving a blank book ### Under the Hood * Tacked on some adapters to make the plugin compatible with Bukkit 1.20 [org.bukkit.block.sign.SignSide](https://web.archive.org/web/20230622054725/https://hub.sp… * Decreased the right-click event handling priority to the lowest level to avoid interfering with other plugins that handle right-click events on signs * Permission processing moved fromSignCommand.permitted(Player, String)toInteractionCommand.isPermitted()*SignText.signChanged()renamed toSignText.signTextChanged()as part of clarification that only text changes count in/sign undoand/sign redo* Started pulling [org.bukkit.entity.Player](https://web.archive.org/web/20230622081000/https://hub.sp… out of constructor injections, as various classes are being used in wider scopes. * Gradle 9.0 compatibility: * Replaced Gradle 8.2 deprecations with recommended replacements * Updated Gradle to version 8.2-rc-2 * Added JDK toolchain resolver plugin to download Java 1.8 * Skip ProGuard for development builds * Eliminated the dependency oncommons-lang:commons-lang1.14.0-beta3v1.14.0-beta3 (2023-07-07)Jan 15, 2026 ### Pre-Release Notes #### Since Previous Pre-Release * Initial support for waxed signs * SignEdit for Bukkit now takes over the native Minecraft sign editor for unwaxed signs in Minecraft 1.20+. * Fixed sending side data when firingSignChangeEventin the validation phase #### Known Issues */sign undoand/sign redotreat waxed signs as unwaxed signs. * When using the Spigot server,/sign uiedits might not be registered. This might be due to a bug in Spigot's [SignChangeEvent](https://web.archive.org/web/20230622080927/https://hub.sp… handling. Either switch to [PaperMC](https://papermc.io/) or use/sign setas a workaround. * When using/sign uiand any existing line begins with a formatting code and there are no other formatting codes on the line, SignEdit for Bukkit may incorrectly say "Sign edit forbidden by policy or other plugin" or "Modified by another plugin". This might be a compatibility issue with PaperMC's mapping of [text components](https://jd.papermc.io/paper/1.20/io/papermc/paper/text/Pa… to formatting codes. ### Added * Support for Minecraft 1.20 sign sides (front and back) * On Minecraft 1.20+, opening an editable sign (sign without honeycomb wax) by right-click will open a sign editor handled by this plugin. * (Minecraft 1.20+ only)/sign waxand/sign unwaxcommands and permissions to apply and remove honeycomb wax from signs, respectively * New locale strings: *wax_removed– Completed/sign unwaxaction *wax_applied– Completed/sign waxaction *bypass_wax_before– Warning before a/signtext change that wax will be removed *bypass_wax_after– Warning after a/signtext change that wax was reapplied *bypass_wax_cannot_rewax– Warning after a/signtext change that wax was not reapplied because the player lacks permission to/sign wax*unwax_sign–/sign unwaxpending action description *wax_sign–/sign waxpending action description *forbidden_waxed_sign_edit– Error when attempting to edit a waxed sign without permission to run/sign unwax### Changed * The documentation of/sign undoand/sign redohas been clarified to indicate that they affect only the sign text, not the dyes or wax applied to the sign. ### Fixed * Failure and error when editing [hanging signs and wall hanging signs](https://web.archive.org/web/20230615204117/https://minecr… from Minecraft 1.20 when usingcompatibility.edit-validation: Extra(#34)  *java.lang.IllegalArgumentException: Invalid page number (1)when usingcompatibility.sign-ui: EditableBookand saving a blank book ### Under the Hood * Tacked on some adapters to make the plugin compatible with Bukkit 1.20 [org.bukkit.block.sign.SignSide](https://web.archive.org/web/20230622054725/https://hub.sp… * Decreased the right-click event handling priority to the lowest level to avoid interfering with other plugins that handle right-click events on signs * Permission processing moved fromSignCommand.permitted(Player, String)toInteractionCommand.isPermitted()*SignText.signChanged()renamed toSignText.signTextChanged()as part of clarification that only text changes count in/sign undoand/sign redo* Gradle 9.0 compatibility: * Replaced Gradle 8.2 deprecations with recommended replacements * Updated Gradle to version 8.2-rc-2 * Added JDK toolchain resolver plugin to download Java 1.8 * Skip ProGuard for development builds * Eliminated the dependency oncommons-lang:commons-lang1.13.9-beta2v1.13.9-beta2 (2023-06-28)Jan 15, 2026 ### Pre-Release Notes #### Since Previous Pre-Release * Restored compatibility with Bukkit 1.8.3 through Bukkit 1.12.2 #### Known Issues * Waxed signs (i.e. signs with honeycomb applied to them) remain editable with/signsubcommands. * Edits made with the Minecraft 1.20 native right-mouse click sign edit action on unwaxed signs are not registered by SignEdit for Bukkit. We might not be able to handle these native edits due to [SPIGOT-7391](https://hub.spigotmc.org/jira/browse/SPIGOT-7391). * When using the Spigot server,/sign uiedits might not be registered. This might be due to a bug in Spigot's [SignChangeEvent](https://web.archive.org/web/20230622080927/https://hub.sp… handling. Either switch to [PaperMC](https://papermc.io/) or use/sign setas a workaround. * When using/sign uiand any existing line begins with a formatting code and there are no other formatting codes on the line, SignEdit for Bukkit may incorrectly say "Sign edit forbidden by policy or other plugin" or "Modified by another plugin". This might be a compatibility issue with PaperMC's mapping of [text components](https://jd.papermc.io/paper/1.20/io/papermc/paper/text/Pa… to formatting codes. ### Added * Support for Minecraft 1.20 sign sides (front and back) ### Fixed * Failure and error when editing [hanging signs and wall hanging signs](https://web.archive.org/web/20230615204117/https://minecr… from Minecraft 1.20 when usingcompatibility.edit-validation: Extra(#34)  *java.lang.IllegalArgumentException: Invalid page number (1)when usingcompatibility.sign-ui: EditableBookand saving a blank book ### Under the Hood * Tacked on some adapters to make the plugin compatible with Bukkit 1.20 [org.bukkit.block.sign.SignSide](https://web.archive.org/web/20230622054725/https://hub.sp… * Gradle 9.0 compatibility: * Replaced Gradle 8.2 deprecations with recommended replacements * Updated Gradle to version 8.2-rc-2 * Added JDK toolchain resolver plugin to download Java 1.81.13.9-beta1v1.13.9-beta1 (2023-06-22)Jan 15, 2026 ### Pre-Release Notes #### Known Issues * Not tested on Bukkit 1.19.1 and earlier * Waxed signs (i.e. signs with honeycomb applied to them) remain editable with/signsubcommands. * Edits made with the Minecraft 1.20 native right-mouse click sign edit action on unwaxed signs are not registered by SignEdit for Bukkit. We might not be able to handle these native edits due to [SPIGOT-7391](https://hub.spigotmc.org/jira/browse/SPIGOT-7391). * When using the Spigot server,/sign uiedits might not be registered. This might be due to a bug in Spigot's [SignChangeEvent](https://web.archive.org/web/20230622080927/https://hub.sp… handling. Either switch to [PaperMC](https://papermc.io/) or use/sign setas a workaround. * When using/sign uiand any existing line begins with a formatting code and there are no other formatting codes on the line, SignEdit for Bukkit may incorrectly say "Sign edit forbidden by policy or other plugin" or "Modified by another plugin". This might be a compatibility issue with PaperMC's mapping of [text components](https://jd.papermc.io/paper/1.20/io/papermc/paper/text/Pa… to formatting codes. ### Added * Support for Minecraft 1.20 sign sides (front and back) ### Fixed * Failure and error when editing [hanging signs and wall hanging signs](https://web.archive.org/web/20230615204117/https://minecr… from Minecraft 1.20 when usingcompatibility.edit-validation: Extra(#34)  *java.lang.IllegalArgumentException: Invalid page number (1)when usingcompatibility.sign-ui: EditableBookand saving a blank book ### Under the Hood * Tacked on some adapters to make the plugin compatible with Bukkit 1.20 [org.bukkit.block.sign.SignSide](https://web.archive.org/web/20230622054725/https://hub.sp… * Gradle 9.0 compatibility: * Replaced Gradle 8.2 deprecations with recommended replacements * Updated Gradle to version 8.2-rc-2 * Added JDK toolchain resolver plugin to download Java 1.81.13.8v1.13.8 (2023-04-02)Jan 15, 2026 ### Fixed * The German (de) locale pluralized 0 incorrectly in thehistory_havestring. Credit to @phpwutz * A minor typo in the file that gets deployed to./plugins/SignEdit/locales/README.txt* A race condition that assumed that a block is still a sign when usingcompatibility.edit-validation: Extra(#33) ### Changed * If the file modification time of./plugins/SignEdit/config.ymlis not changed, the configuration will no longer be reloaded. (#29) This means that merely changing the file's ownership or permissions will not trigger the configuration reload anymore. ### Under the Hood * Updated copyright year 2023 * RestructuredSignSubcommandinheritance to make more sense * Replaced constructor injection ofChatCommswith a factory to avoid nesting assisted dependency injections * Extracted line selection parsing to new classLineSelectorParserto improve separation of concerns * Gradle has been updated from version 7.3.1 to version 8.1-rc-2.1.13.7v1.13.7 (2021-12-18)Jan 15, 2026 ### Fixed * Show the "Operation failed: Sign no longer exists!" error message if another plugin removes the targeted sign during a sign change validation. (#27) Previously, this was an unhandled error.1.13.6v1.13.6 (2021-12-08)Jan 15, 2026 ### Added * Limited support for Bukkit 1.8.3 through 1.12.2 in addition to the existing full support for Bukkit 1.13 through 1.18 ### Fixed * Unhandled JavaErrors are now caught and more gracefully logged. ### Changed * If Bukkit is too old (versions 1.8.3 through 1.11.2), fall back to [the configured default locale](https://github.com/Deltik/SignEdit/blob/v1.13.6/README.md… instead of erroring out and preventing the plugin from being used. * If a JavaErroror any other unhandledExceptionis encountered while validating a/sign uiedit, the sign edit is now cancelled. Previously, the edit would not be cancelled.1.13.5v1.13.5 (2021-12-08)Jan 15, 2026 ### Fixed */sign uicompatibility with Bukkit 1.18 ### Under the Hood * Now that Bukkit 1.18 has introduced a stable API for opening the sign editor ([org.bukkit.entity.Player#openSign(org.bukkit.block.Sign)](https://web.archive.org/web/20211208030659/https://hub.sp… we reap the following benefits: No more dependency on CraftBukkit* –/sign uipreviously tried various reflection workarounds to invoke the sign editor and always assumed that the server was running CraftBukkit without too many changes. SignEdit for Bukkit>= 1.12.7, < 1.13.4settled on a minimally intrusive unstable API call that worked for CraftBukkit 1.8 through CraftBukkit 1.17.1, but CraftBukkit stopped mapping method names starting in CraftBukkit 1.18, which broke/sign ui. `/sign ui` won't break in future versions of Bukkit* – As SignEdit for Bukkit= 1.13.5now prefers to use the stable Bukkit API,/sign uiwill keep working on future major versions of Bukkit. * For improved compatibility, the old reflection-based sign editor open call―now namednet.deltik.mc.signedit.interactions.UiSignEditInteraction.openSignEditorWithReflection()―will try to find the unstable API ("NMS")EntityHumanmethod to open the sign editor based on theTileEntitySignpassed into that method rather than by the nameEntityHuman.openSign(). [CraftBukkit no longer maps the NMS method names.](https://web.archive.org/web/20211206215150/https://www.sp… This fix is moot for Bukkit 1.18 and newer, but it may be less likely to break other CraftBukkit variants. * The plugin will now build on Java 17. CI will continue to build on Java 1.8 for compatibility with Bukkit 1.13 servers. * Gradle will now use Java 1.8 to build the plugin. Redistributors or future versions of this plugin intending to build on newer versions of Java can change the Java toolchain language version in thebuild.gradlefile to override this behavior. * CI now uses a newer Java 17 image for build-time dependencies. The resulting build artifact will remain compatible with Java 1.8.1.13.4v1.13.4 (2021-11-16)Jan 15, 2026 ### Added */sign helpnow tab-completes page numbers when there is more than one help page. ### Changed * A player's pending sign interaction will only be cancelled if they perform a sign edit (SignChangeEvent) outside of this plugin rather than when they place a block. This reverts the change from SignEdit for Bukkit= 1.13.3. This new approach should be less prone to bugs. ### Fixed * When the plugin is configured withcompatibility.edit-validation: Extra,/sign uishould not skip the extra checks. (#26) ### Under the Hood * All mentions ofdeltik.orghave been changed todeltik.net. * The plugin package was renamed fromorg.deltik.mc.signedittonet.deltik.mc.signedit. * Most code inspection warnings have been fixed. * Gradle has been updated from version 7.0.2 to version 7.3. * Version numbers are now generated automatically from Git tags.1.13.3v1.13.3 (2021-09-24)Jan 15, 2026 1.13.2v1.13.2 (2021-09-20)Jan 15, 2026 1.13.1v1.13.1 (2021-07-11)Jan 15, 2026 ### Fixed *org.bukkit.plugin.IllegalPluginAccessExceptionwarning while unloading the plugin ([reported in Spigot forum thread](https://www.spigotmc.org/threads/signedit-for-bukkit.2751… prevents unload-time configuration file validation1.13.0v1.13.0 (2021-07-10)Jan 15, 2026 ### Added * Changes to the configuration file (plugins/SignEdit/config.yml) are now detected and reloaded at runtime, so a CraftBukkit server restart is no longer needed to make the new settings take effect. * New locale strings: *usage_page_heading– Styling for the heading of the redesigned/sign help*usage_page_info– Contents of the heading of/sign help*usage_page_numbering– Shows the page number of the/sign helppage ### Changed * The<lines>argument of/sign clear [<lines>]is now optional. If<lines>is not provided, all lines on the targeted sign will be blanked out. * Reworked/sign helpso that it will only display/signsubcommands to which the player has access. (#23) * Tab completion now will only suggest for/signsubcommands to which the player has access. * Removed locale strings: *usage_section– This string is no longer used due to the rework of/sign help. ### Fixed * If another plugin modified the lines in aSignChangeEvent, SignEdit for Bukkit may ignore the updated lines and apply the staged lines, bypassing other plugins' changes. (#22) This defect is a regression from SignEdit for Bukkit= 1.12.2. The cause of this defect was an incorrect assumption that the sign lines array passed in theSignChangeEventwould be mutated in place by the Bukkit event handler and other listening plugins. */sign undoand/sign redomissing from/sign help(#23) * Internal error while tab-completing and not looking at a sign ### Under the Hood * Added documentation of the arguments in the locale strings * Simplified dependency injection forSignSubcommandsubclasses * Event listeners split up betweenCoreSignEditListener, which is always used, andBookUiSignEditListener, which is only used when the editable book alternative sign editor GUI is enabled * The event listeners pertaining to the editable book alternative sign editor GUI are no longer registered if it is disabled. *SignEditInteractionManagerextracted out ofSignEditListener* SuppressedJavaReflectionMemberAccesswarning inorg.deltik.mc.signedit.commands.SignCommand.getTargetBlockOfPlayer()because we develop against Bukkit 1.13 before they addedorg.bukkit.entity.LivingEntity.getTargetBlockExact()1.12.8v1.12.8 (2021-06-21)Jan 15, 2026 ## Major Bug Notice (#22)
>### Affected Versions
>* v1.12.2
* v1.12.3
* v1.12.4
* v1.12.5
* v1.12.6
* v1.12.7
* v1.12.8
>### Upgrade Paths
>* v1.12.x → v1.13.4
>### Description
>On affected versions, Standard or Extra sign edit permission validation (
>compatibility.edit-validation: Standardorcompatibility.edit-validation: Extra) may ignore the result of changed sign lines by other plugins.This bug bypasses sign content/text restrictions imposed by other plugins for anyone using
>/signsubcommands that change the text of a sign.All users who run affected versions and have enabled sign edit permission validation (this is the default behavior) should upgrade to v1.13.4 immediately to prevent exploitation of this bug.
>### Workaround
>If you are unable to upgrade to v1.13.4, you should downgrade to v1.12.1 or disable SignEdit for Bukkit.
### Fixed */sign uicompatibility with Paper 1.17 (#21)1.12.7 v1.12.7 (2021-06-13)Jan 15, 2026 ## Major Bug Notice (#22)
>### Affected Versions
>* v1.12.2
* v1.12.3
* v1.12.4
* v1.12.5
* v1.12.6
* v1.12.7
* v1.12.8
>### Upgrade Paths
>* v1.12.x → v1.13.4
>### Description
>On affected versions, Standard or Extra sign edit permission validation (
>compatibility.edit-validation: Standardorcompatibility.edit-validation: Extra) may ignore the result of changed sign lines by other plugins.This bug bypasses sign content/text restrictions imposed by other plugins for anyone using
>/signsubcommands that change the text of a sign.All users who run affected versions and have enabled sign edit permission validation (this is the default behavior) should upgrade to v1.13.4 immediately to prevent exploitation of this bug.
>### Workaround
>If you are unable to upgrade to v1.13.4, you should downgrade to v1.12.1 or disable SignEdit for Bukkit.
### Fixed */sign uicompatibility with Minecraft 1.17 ### Under the Hood *UiSignEditInteractionnow uses much less reflection, which should hopefully make it more resistant to breaking changes in the unstable Minecraft server API. *MinecraftReflectorhas been renamed toCraftBukkitReflectorand no longer tries to accessnet.minecraft.…packages by name. This plugin now performs reflection name lookups against CraftBukkit, which is hopefully more stable. * Java 1.8 (bytecode version 52.0) remains the minimum version for broader compatibility, even though Minecraft 1.17 itself requires Java 16. * Gradle has been updated from version 6.5.1 to version 7.0.2.1.12.6v1.12.6 (2020-11-17)Jan 15, 2026 ## Major Bug Notice (#22)
>### Affected Versions
>* v1.12.2
* v1.12.3
* v1.12.4
* v1.12.5
* v1.12.6
* v1.12.7
* v1.12.8
>### Upgrade Paths
>* v1.12.x → v1.13.4
>### Description
>On affected versions, Standard or Extra sign edit permission validation (
>compatibility.edit-validation: Standardorcompatibility.edit-validation: Extra) may ignore the result of changed sign lines by other plugins.This bug bypasses sign content/text restrictions imposed by other plugins for anyone using
>/signsubcommands that change the text of a sign.All users who run affected versions and have enabled sign edit permission validation (this is the default behavior) should upgrade to v1.13.4 immediately to prevent exploitation of this bug.
>### Workaround
>If you are unable to upgrade to v1.13.4, you should downgrade to v1.12.1 or disable SignEdit for Bukkit.
### Fixed * Regression from version= 1.12.5causedUncaught error: java.lang.NullPointerExceptionwhen trying to target air1.12.5v1.12.5 (2020-11-17)Jan 15, 2026 ## Major Bug Notice (#22)
>### Affected Versions
>* v1.12.2
* v1.12.3
* v1.12.4
* v1.12.5
* v1.12.6
* v1.12.7
* v1.12.8
>### Upgrade Paths
>* v1.12.x → v1.13.4
>### Description
>On affected versions, Standard or Extra sign edit permission validation (
>compatibility.edit-validation: Standardorcompatibility.edit-validation: Extra) may ignore the result of changed sign lines by other plugins.This bug bypasses sign content/text restrictions imposed by other plugins for anyone using
>/signsubcommands that change the text of a sign.All users who run affected versions and have enabled sign edit permission validation (this is the default behavior) should upgrade to v1.13.4 immediately to prevent exploitation of this bug.
>### Workaround
>If you are unable to upgrade to v1.13.4, you should downgrade to v1.12.1 or disable SignEdit for Bukkit.
### Changed * Increased sign targeting distance from 10 to 20 ### Fixed * Improved sign targeting precision for Minecraft 1.13.2+ (#20)1.12.4v1.12.4 (2020-09-06)Jan 15, 2026 ## Major Bug Notice (#22)
>### Affected Versions
>* v1.12.2
* v1.12.3
* v1.12.4
* v1.12.5
* v1.12.6
* v1.12.7
* v1.12.8
>### Upgrade Paths
>* v1.12.x → v1.13.4
>### Description
>On affected versions, Standard or Extra sign edit permission validation (
>compatibility.edit-validation: Standardorcompatibility.edit-validation: Extra) may ignore the result of changed sign lines by other plugins.This bug bypasses sign content/text restrictions imposed by other plugins for anyone using
>/signsubcommands that change the text of a sign.All users who run affected versions and have enabled sign edit permission validation (this is the default behavior) should upgrade to v1.13.4 immediately to prevent exploitation of this bug.
>### Workaround
>If you are unable to upgrade to v1.13.4, you should downgrade to v1.12.1 or disable SignEdit for Bukkit.
### Added * Tab completion of existing sign text when using/sign setand looking at a sign (#19)  ### Changed * Undoing and redoing sign text will now only change the sign text. Previously, the sign orientation and dye color would also be modified to what was remembered in the history stack. * Undoing and redoing sign text is now possible even if the sign is replaced with one of a new material (e.g. a spruce sign in place of an oak sign) as long as the new sign is in the same position. */sign redonow puts the current sign text into the history, so undoing the redo will now restore the latest sign text instead of the staged (remembered at the time of the first undo) text in the history. ### Fixed * When undoing and redoing, the "before" section of the comparison now uses the current text/state of the sign rather than the remembered state from when the edit was made, which may be outdated. */sign undoafter using/sign uiwould show "Sign did not change". ### Under the Hood * Migrated tests from JUnit 4 to JUnit 5 *SignText.verifyBlockPlaced()no longer tries to update the block's state to check if the block is placed. It is now calledSignText.reloadTargetSign()and uses the non-invasiveBlockState.isPlaced()method.1.12.3v1.12.3 (2020-08-19)Jan 15, 2026 ## Major Bug Notice (#22)
>### Affected Versions
>* v1.12.2
* v1.12.3
* v1.12.4
* v1.12.5
* v1.12.6
* v1.12.7
* v1.12.8
>### Upgrade Paths
>* v1.12.x → v1.13.4
>### Description
>On affected versions, Standard or Extra sign edit permission validation (
>compatibility.edit-validation: Standardorcompatibility.edit-validation: Extra) may ignore the result of changed sign lines by other plugins.This bug bypasses sign content/text restrictions imposed by other plugins for anyone using
>/signsubcommands that change the text of a sign.All users who run affected versions and have enabled sign edit permission validation (this is the default behavior) should upgrade to v1.13.4 immediately to prevent exploitation of this bug.
>### Workaround
>If you are unable to upgrade to v1.13.4, you should downgrade to v1.12.1 or disable SignEdit for Bukkit.
### Added * Tab completion for multi-line selection (e.g./sign 1,2,…and/sign cut 3-4,1-…) * If another plugin changes the sign text after using this plugin to edit a sign, a warning will be displayed. The example below shows the warning when another plugin strips out formatting codes from the execution of/sign set 3 &b&lSignEdit:  * New locale strings: *modified_by_another_plugin– Warning to the player that another plugin changed their applied sign text *section_decorator– Theme to apply to the text shown at the end ofbefore_sectionandafter_section### Changed */signsubcommands are now case-insensitive. For example,/sign ClEaRis now the same as/sign clear. Previously, capitalized subcommands would not be understood as valid subcommands. */sign uiwith the native sign editor no longer modifies the real sign on the server to present human-editable formatting codes. Only the player who invoked the command will see the reformatted sign. * If a different plugin undoes the sign edit but does not cancel the correspondingSignChangeEvent, this plugin will now tell the player "Sign edit forbidden by policy or other plugin" instead of "Sign did not change". * Changed locale strings: *before_sectionnow takes one argument ({0}) for optional text that may be shown at the end of the same line as the section. *after_sectionnow takes one argument ({0}) for optional text that may be shown at the end of the same line as the section. ### Fixed */sign cutonly put empty lines into the clipboard (#17) */sign uiwith the native sign editor incorrectly puts the de-formatted sign text into the history (regression from= 1.12.2) */sign uion Minecraft 1.16.2+ loses all formatting codes when opening the default (native) sign editor GUI. */sign uiwith the native sign editor would not show the actual "after" sign lines if another plugin modified theSignChangeEventoriginating from the Minecraft client. * Line selection validation for/sign cutand/sign copy* Line selection validation should not accept empty delimiters at the end (e.g./sign set 1,3,,,,)1.12.2v1.12.2 (2020-08-10)Jan 15, 2026 ## Major Bug Notice (#22)
>### Affected Versions
>* v1.12.2
* v1.12.3
* v1.12.4
* v1.12.5
* v1.12.6
* v1.12.7
* v1.12.8
>### Upgrade Paths
>* v1.12.x → v1.13.4
>### Description
>On affected versions, Standard or Extra sign edit permission validation (
>compatibility.edit-validation: Standardorcompatibility.edit-validation: Extra) may ignore the result of changed sign lines by other plugins.This bug bypasses sign content/text restrictions imposed by other plugins for anyone using
>/signsubcommands that change the text of a sign.All users who run affected versions and have enabled sign edit permission validation (this is the default behavior) should upgrade to v1.13.4 immediately to prevent exploitation of this bug.
>### Workaround
>If you are unable to upgrade to v1.13.4, you should downgrade to v1.12.1 or disable SignEdit for Bukkit.
## Major Bug Notice (#17)
>### Affected Versions
>* v1.12.2
>### Upgrade Paths
>* v1.12.2 → v1.12.3
>### Description
>On affected versions,
>/sign cutwill only put empty lines into the clipboard.All affected users are encouraged to upgrade to v1.12.3 or newer to resolve this bug.
>### Workaround
>Run
### Added * Allow the administrator to opt in or out of the alternative sign editor GUI introduced in/sign copyfollowed by/sign 1-4, which is functionally equivalent to the intended behavior of/sign cut.= 1.12.0with the new configuration optioncompatibility.sign-ui: [Auto|EditableBook|Native]* New configuration option to send extra events (BlockBreakEventandBlockPlaceEvent) on sign edit:compatibility.edit-validation: [Standard|Extra|None]### Fixed * If there was an error while editing a sign in two or more steps (e.g. right-mouse click action, sign editor GUI), the error won't be shown to the player, and the server console shows a "Cannot pass event … to SignEdit v…" error and stack trace. (#16) * TheSignChangeEventemitted natively by the native sign editor GUI is no longer sent twice. ### Under the Hood * Removed the confusing concept of "in progress" interactions. These are no different from "pending" interactions. * Cleaned up dependencies passed fromSignSubcommandtoSignEditInteractionby letting Dagger 2 handle them *Configurationgetters now validate their options and return the default if the existing value is invalid. * Builds now use the Bukkit v1.13 library to limit feature development to the minimum version supported1.12.1v1.12.1 (2020-07-23)Jan 15, 2026 ### Changed * The alternative sign editor GUI introduced in= 1.12.0has been restricted to Minecraft 1.16.1 only. Previously, the GUI was present on Minecraft 1.16 and above, but the bug that necessitated it was [fixed in Minecraft 1.16.2](https://minecraft.gamepedia.com/Java_Edition_20w30a). Using this version of the plugin on Minecraft 1.16.2 and higher will open the native sign editor GUI again. ### Under the Hood * Build and test dependencies updated to their latest versions1.12.0v1.12.0 (2020-07-14)Jan 15, 2026 ### Added * Support for Minecraft 1.16 sRGB [text formatting](https://git.io/SignEdit-README#formatting-codes):  * [Alternative sign editor GUI for Minecraft 1.16+](https://git.io/SignEdit-README#minecraft-116-sign-editor-… implemented as a [writable book](https://minecraft.gamepedia.com/Book_and_Quill) to work around [a Minecraft 1.16 sign editor regression](https://web.archive.org/web/20200901000000/https://bugs.m… that [Mojang refused to fix](https://web.archive.org/web/20200714051840/https://bugs.m…  * New locale strings: *sign_editor_item_name– The display name of the ephemeral book and quill used in Minecraft 1.16+ as an alternative for the broken native sign editor *right_click_air_to_open_sign_editor– Tells the player to look away from the targeted sign and right-mouse click to open the sign editor (Minecraft 1.16+) *right_click_air_to_apply_action_hint– Right-mouse click air action hint shown in/sign status, currently only used for/sign uion Minecraft 1.16 ### Changed * Minimum Bukkit version is now v1.13 (was v1.12) due to the usage of Bukkit v1.13 materials for the alternative sign editor GUI * Changed locale strings: *cancelled_pending_right_click_actionhas been renamed tocancelled_pending_actionand no longer explicates the right-mouse click. *no_right_click_action_to_cancelhas been renamed tono_pending_action_to_cancel, and the associated action is now modified by "pending" rather than "right-click". ### Fixed * Translation improvements for the Dutch (nl) locale Credit to SBDeveloper (#14) * Translation improvements for the Simplified Chinese (zh) and Traditional Chinese (zh-TW) locales Credit to Aobi (#15)1.12.0-beta1v1.12.0-beta1 (2020-07-14)Jan 15, 2026 ### Pre-Release Notes * The following locales have not been proofread: *de*nl* The following locales are incomplete: *zh-CN*zh-TW### Added * Support for Minecraft 1.16 sRGB [text formatting](https://git.io/SignEdit-README#formatting-codes):  to work around [a Minecraft 1.16 sign editor regression](https://web.archive.org/web/20200901000000/https://bugs.m… that [Mojang refused to fix](https://web.archive.org/web/20200714051840/https://bugs.m…  *right_click_air_to_apply_action_hint– Right-mouse click air action hint shown in/sign status, currently only used for/sign uion Minecraft 1.16 ### Changed * Minimum Bukkit version is now v1.13 (was v1.12) due to the usage of Bukkit v1.13 materials for the alternative sign editor GUI * Changed locale strings: *cancelled_pending_right_click_actionhas been renamed tocancelled_pending_actionand no longer explicates the right-mouse click. *no_right_click_action_to_cancelhas been renamed tono_pending_action_to_cancel, and the associated action is now modified by "pending" rather than "right-click".1.11.4v1.11.4 (2020-03-05)Jan 15, 2026 ### Added * Intermediate translation for Simplified Chinese (zhandzh-CN) locale replaces the machine translation of Chinese introduced in= 1.10.2. Credit to Aobi for the translation (#13) * Intermediate translation for Traditional Chinese (zh-TW) locale Credit to Aobi for the translation (#13) ### Under the Hood * Gradle has been updated from version 6.1.1 to version 6.2.2.1.11.3v1.11.3 (2020-02-23)Jan 15, 2026 ### Fixed * On Microsoft Windows, SignEdit>= 1.11.0, < 1.11.3could not load if its JAR path contains any spaces or special URL characters. (#12) ### Under the Hood * Prevent potential type coersion of version string inplugin.yml* Resource value replacements inprocessResourcesGradle task now invalidate cached values if they have changed.1.11.2 v1.11.2 (2020-02-23) Jan 15, 2026 ### Fixed * SignEdit>= 1.11.0, < 1.11.2was broken on Microsoft Windows due to a path separator oversight. (#11)1.11.1v1.11.1 (2020-01-28)Jan 15, 2026 ### Added * Native translation for Dutch (nl) locale Credit to SBDeveloper (#10) ### Fixed * In the English (en/default), German (de), and Dutch (nl) locales, if there is a pending sign action and the player runs/sign status, Minecraft 1.15+ displayed a non-breaking space block. This character has been changed to a normal space.1.11.0v1.11.0 (2020-01-28)Jan 15, 2026 ### Added * The theme (colors) and translations of this plugin can now be customized in the locale files! (Fixes #9) ### Fixed * Thelocaleconfiguration option was not working as documented. In= 1.10.2, if the player's locale was not supported, English would always be used as the fallback. This release follows the documented behavior: the fallback language is what is specified in thelocaleconfiguration option, and the fallback for that fallback is English. * Theforce-localeconfiguration option is now sanitized; a boolean value is now enforced. * Concatenation eliminated from localized messages, which increases flexibility for future language translations * Numbers are now correctly localized * Chinese punctuation * Chinese grammar? (Still machine-translated) * The Spigotapi-versionwarning is now suppressed, at least from Spigot 1.13 through Spigot 1.15.2. * The configuration handler may excuse input/output (I/O) errors when it should not be continuing to run the plugin. I/O errors while enabling the plugin now prevent the plugin from starting. * Resolved ajava.lang.NullPointerExceptionin the configuration handler due to some mismanaged state when the./plugins/SignEdit/folder doesn't exist. ### Changed * The configuration fileconfig.ymlis now rendered from a template. The template includes comments to make configuration easier to understand without consulting the online documentation. ### Under the Hood * Builds now use ProGuard to shrink the JAR file size. * Each source code file now contains the proper copyright and license notice. * Replaced various method signatures containing theSignEditPlugintype with thePlugininterface * Gradle now supplies the plugin name to the resource templates.1.10.2v1.10.2 (2019-04-11)Jan 15, 2026 ### Added * Localization for all chat messages * Native translation for English (en) locale  * Native translation for German (de) locale  * Machine translation for Simplified Chinese (zh) locale  ### Under the Hood * All user-facing text has been encapsulated in a call toChatComms.t()for translations. * Translations come from localizedCommsResourceBundles.1.10.1v1.10.1 (2019-04-09)Jan 15, 2026 ### Fixed * Compatibility with PaperMC 1.13.2 #547 and newer * PaperMC patch that broke/sign ui: https://github.com/PaperMC/Paper/commit/906684ff4f9413fda… * Our workaround: https://github.com/Deltik/SignEdit/commit/040cbd0c8005d33…1.10.0v1.10.0 (2019-04-07)Jan 15, 2026 ### Added * Tab completion of/signsubcommands * Ability to manipulate more than one line in a/signcommand * Sign changes now show the full set of changes before and after. * New/signsubcommands: */sign status– Show the player's pending action and what is in their copy buffer. */sign copy– Copy the targeted sign's text. (Fixes #8) */sign cut– Copy the targeted sign's text and remove it from the sign. */sign paste– Paste the lines buffered by the previous/sign copycommand onto the targeted sign. */sign undo– Revert the previous sign change. */sign redo– Restore the most recent sign change that was undone by/sign undo. * Plugin usage help vanity URL * Old URL: https://github.com/Deltik/SignEdit/blob/master/README.md * New URL: https://git.io/SignEdit-README ### Fixed * Permission inheritance of/sign versionwas not defined correctly inplugin.yml* Permission inheritance of/sign cancelwas not defined correctly inplugin.yml* Inclickingmodefalse, some subcommands would spit out usage text if the player wasn't looking at a sign, but this should not happen. * It is now possible to input literal ampersand (&) characters using/signsubcommands thanks to smarter parsing of sign text and an escape sequence (\&). ### Changed * The README should be more readable now. * The single line selector has been replaced with a multiple line selector. * When the plugin is unloading, the configuration file is now reloaded before being rewritten, so changes made while the plugin is loaded will now persist. * Players cannot edit signs that they do not have permission to edit. Every attempted edit is validated through a [SignChangeEvent](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event… and will not succeed if another plugin or policy cancels the SignChangeEvent. ### Under the Hood * Gradle has been updated from version 3.5rc2 to version 5.3. * A concept of "selected lines", which are parsed for multi-line interactions in/signsubcommands * Some dependencies are now injected by [Dagger 2](https://github.com/google/dagger) * Player chat interactions now happen through aChatCommsclass. * Added a set of Exceptions for things that can go wrong in this plugin * Exceptions are centrally reported inChatComms. * New modelSignTexthandles the state of a single sign edit and can import, back up, restore, and change BukkitSignblocks. * New singletonSignTextClipboardManagerfacilitates cut, copy, and paste for each player. * New singletonSignTextHistoryManagermaps players to their undo/redo history and tracks their state globally. *ArgStructhas been replaced with a more extensibleArgParser, including support for multiple absolute selected lines instead of a single relative selected line. * The ["pending right-click"Interactclass](https://github.com/Deltik/SignEdit/blob/v1.3.1/EventHandl… has been renamed toSignEditListenerto be less confusing. *SignEditCommithas been renamed toSignEditInteractionto reduce confusion. Its subclasses have also been renamed correspondingly. * Various other methods and classes have been renamed to make more sense. * Tests have been moved into packages corresponding to the classes that they test. * Tests rewritten to be more unit-y1.9.3v1.9.3 (2018-07-25)Jan 15, 2026 ### Added */sign versionsubcommand shows the version of the plugin currently installed. ### Fixed */sign uinow works in Spigot 1.13. ### Under the Hood * Code readability improvements inUiSignEditCommit*/sign uishould now be more resistant to breaking private API changes at the Bukkit and CraftBukkit level.1.9.2v1.9.2 (2018-06-15)Jan 15, 2026 ### Fixed * Major bug causing the last/sign uiedit to be wiped out when the player disconnects from the server. (Fixes #7)1.9.1v1.9.1 (2018-06-15)Jan 15, 2026 ## Major Bug Notice (#7)
>### Affected Versions
>* v1.8.0
* v1.9.0
* v1.9.1
>### Upgrade Paths
>* v1.8.0 → v1.9.2
* v1.9.0 → v1.9.2
* v1.9.1 → v1.9.2
>### Description
>On affected versions, the last sign edit a player performed with
>/sign uiwill be rolled back when the player disconnects.All affected users are encouraged to upgrade to v1.9.2 or newer to resolve this bug.
>### Workaround
>Invoke
### Fixed */sign uion any sign before logging out./sign uinow works in Spigot 1.8.8, including [Paper](https://github.com/PaperMC/Paper) 1.8.8. (Fixes #6)1.9.0v1.9.0 (2018-06-12)Jan 15, 2026 ## Major Bug Notice (#7)
>### Affected Versions
>* v1.8.0
* v1.9.0
* v1.9.1
>### Upgrade Paths
>* v1.8.0 → v1.9.2
* v1.9.0 → v1.9.2
* v1.9.1 → v1.9.2
>### Description
>On affected versions, the last sign edit a player performed with
>/sign uiwill be rolled back when the player disconnects.All affected users are encouraged to upgrade to v1.9.2 or newer to resolve this bug.
>### Workaround
>Invoke
### Added */sign uion any sign before logging out./sign cancelsubcommand cancels the player's pending right-mouse click action when "clicking" mode is in effect. (Fixes #5) * If the permissions system forbids the player from running a/signcommand or subcommand, the player will see an error message instead of the plugin silently ignoring the command. ### Fixed * When the player types an out-of-bounds line number in/sign set <line>, Bukkit no longer vomits the full plugin usage help. ### Changed * The plugin's general messages to the player were in red, but now they're gold to distinguish them from error messages, which are still red.1.8.0v1.8.0 (2017-12-08)Jan 15, 2026 ## Major Bug Notice (#7)
>### Affected Versions
>* v1.8.0
* v1.9.0
* v1.9.1
>### Upgrade Paths
>* v1.8.0 → v1.9.2
* v1.9.0 → v1.9.2
* v1.9.1 → v1.9.2
>### Description
>On affected versions, the last sign edit a player performed with
>/sign uiwill be rolled back when the player disconnects.All affected users are encouraged to upgrade to v1.9.2 or newer to resolve this bug.
>### Workaround
>Invoke
### Added */sign uion any sign before logging out./sign uicommand opens the native Minecraft sign editor on the target sign. (Fixes #3) * More fine-grained permissions in the format ofsignedit.COMMAND.SUBCOMMAND* Right before editing a sign, SignEdit simulates blanking out the targeted sign to see if another plugin is forbidding the player from editing the sign. SignEdit will no longer edit a sign that the player isn't allowed to edit. ### Fixed * Error messages to the user are now more consistent. ### Under The Hood * The plugin package was renamed fromorg.deltik.mc.SignEdittoorg.deltik.mc.signedit. * The handling of "clicking" mode is now standardized for all sign editing methods. * Somewhat improved variable naming *SignSubcommandis the abstract for/signsubcommands. *plugin.ymlis now much more descriptive * Tests were reorganized, but they're still not that great. * Eliminated some unnecessary injected dependencies1.7.0v1.7.0 (2017-10-10)Jan 15, 2026 ### Added *clicking: automode, which combines the best of theclicking: falseandclicking: truemodes. Now, the player can edit a sign if the player is looking at a sign or SignEdit will prompt for a right-click on a sign if the player is not looking at a sign. (Fixes #2) *clicking: autois now the default mode. Beforev1.7.0, the default wasclicking: false. ### Under The Hood * Minor changes to improve code quality1.6.0v1.6.0 (2017-10-04)Jan 15, 2026 ### Added - The "set" or "clear" part of/sign {set,clear} <line> [<text>]is now optional because behavior can be inferred from<line>. (Fixes #1) ### Fixed - Removed ambiguity from right-click instruction to player inclicking: truemode Before:§cNow right-click a block to set the lineAfter:§cNow right-click a sign to set the line- Before a configuration file is written, it is now checked for sanity. - Possible crash ifclickingconfig option is not properly set - Plugin errors out when running/sign {set,clear} <line> [<text>]and<line>is not an integer ### Under The Hood - [Builds of SignEdit for Bukkit are now tested automatically](https://circleci.com/gh/Deltik/SignEdit), which reduces the possibility of unplanned regressions in future releases. - SignEdit for Bukkit now compiles successfully on Bukkit versions older than v1.12. -Configuration.setClicking()sets clicking mode -Configuration.setLineStartsAt()sets line starts at value1.5.0v1.5.0 (2017-09-26)Jan 15, 2026 ### Added * Configuration optionline-starts-at(fixes #4) * The configuration file is sanitized when the plugin is loaded and unloaded and rewritten when the plugin is unloaded. ### Fixed * When a sign is edited inclicking: truemode, the output is now the same as inclicking: falsemode. * More code cleanup1.4.0v1.4.0 (2017-09-25)Jan 15, 2026 ## Major Bug Notice (#4)
>### Affected Versions
>* v1.4.0
>### Upgrade Paths
>* v1.4.0 → v1.5.0
>### Description
>Affected versions are backwards-incompatible with previous versions due to a change in line selection behavior.
>All affected users are encouraged to upgrade to version v1.5.0 and add the configuration option
>line-starts-at: 0to restore the version< 1.4line selection behavior.### Workaround
>Add 1 to every line selection to select the intended line.
### Added * When a sign edit is committed, the return will indicate whether the line was blanked, changed, or unmodified * When a sign line is changed, the return shows the text before and the text after * Aliases for/sign:/signedit,/editsign, and/se* Usage notes when not enough arguments are passed to/sign### Fixed * Bukkit v1.12 compatibility: Plugin no longer uses deprecated and removedLivingEntity.getTargetBlock(HashSet<Byte>, int)method * Miscellaneous code cleanup * Grammar, spelling, and wording ### Changed * Line numbers now begin with 1 instead of 01.3.1v1.3.1 (2018-06-13)Jan 15, 2026 ## End of Life Notice
>### Affected Versions
>* v1.3.1 and older
>### Upgrade Paths
>* v1.0 → v1.3.1
* v1.1 → v1.3.1
* v1.2 → v1.3.1
* v1.3 → v1.3.1
* v1.3.1 → latest v1.x release
>### Description
>This release is a hotfix applied to Omel's SignEdit v1.3 to make it compatible with Bukkit 1.12.
>Deltik will no longer release any more updates of any kind, including hotfixes, to Omel's SignEdit, so if this release stops working in newer versions of Bukkit, Deltik will not fix it.
>Users who want to use Omel's SignEdit on Bukkit 1.12 must upgrade to v1.3.1.
>All users are encouraged to upgrade from v1.3.1 to the latest v1.x release for improved features and functionality while retaining backwards compatibility with Omel's SignEdit.
### Fixed * The original Omel's SignEdit v1.3 has been updated to be compatible with Bukkit 1.12 and future Bukkit versions in the foreseeable future. ### Changed * Internal plugin version number bumped from 0.2 to 1.3.11.3v1.3 (2016-07-04)Jan 15, 2026 [2016-07-04] [Changelog from upstream](https://web.archive.org/web/20181230132337/https://www.sp…### Sign Text set Updated
Now works with a StringBuilder which deletes the last char.
1.2v1.2 (2016-07-04)Jan 15, 2026 [2016-07-04] [Changelog from upstream](https://web.archive.org/web/20181230132337/https://www.sp…### Console Exception Spam Fix
Fixed Console Spam Exceptions
1.1v1.1 (2016-07-02)Jan 15, 2026 [2016-07-02] [Changelog from upstream](https://web.archive.org/web/20181230132337/https://www.sp…### Added Config
Added Config.
1.0v1.0 (2016-06-26)Jan 15, 2026 [2016-06-26] Initial release No changelog provided from upstream
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta