Skip to content

v1.12.4 (2020-09-06)

Compare
Choose a tag to compare
@Deltik Deltik released this 06 Sep 07:48
· 117 commits to main since this release
v1.12.4
f8f6b2e

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: Standard or compatibility.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 /sign subcommands 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 set and looking at a sign (#19)
    /sign set 1-4 <tab>

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 redo now 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 undo after using /sign ui would 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 called SignText.reloadTargetSign() and uses the non-invasive BlockState.isPlaced() method.