VASSAL 3.5.6 Released

The VASSAL Team is happy to announce VASSAL 3.5.6.


  • Things may be broken which worked previously. If you find a new bug, please report it.
  • Modules saved in 3.5 are not openable by earlier versions of VASSAL. We recommend keeping a backup copy of any pre-3.5 modules you plan to modify in 3.5 until you've verified that everything works to your satisfaction.


Changes since 3.5.5

Bug fixes

  • 14518: Zoomer hotkeys should take effect only if their map is focused
  • 14506: NPE in PieceWindow.launchButtonPressed()
  • 14505: Edit Extension menu item should be disabled when the extension is already being edited
  • 14504: Improved results for users who started with no password and then set one later
  • 14503: Set errorLog encoding explicitly to UTF-8
  • 14502: Tailer misdecodes errorLog
  • 14484: Module editing permanently disabled after editing associated Extension
  • 14469: Java's ProcessBuilder misencodes Unicode outside Latin1 on Windows
  • 14468: MouseoverStackViewer: corrected text centering problem with "extra space between" setting
  • 14461: NPE in TableInfo.getExpressionList()
  • 14460: StackOverflowError when referencing _Level property in layer-following expression
  • 14456: ConcurrentModificationException in GameState.setup() when component setup() adds components
  • 14452: Catch PatternSyntaxException on user-provided regexes
  • 14440: Counter refresh function sometimes changes stacking order of pieces
  • 14422: ArrayIndexOutOfBoundsException in Embellishment.getProperty()
  • 14418: MassPieceLoader: Copy/Paste of Modified Layer trait generates Standard Layer on Paste
  • 14401: Cancelling a predefined-setup load during setup wizard shouldn't show "Loaded..." message
  • 14393: Don't show that sending bug reports failed when they've succeeded
  • 14386: Editor was reporting module saved when the "confirm overwrite" dialog cancelled
  • 14370: NPE in BasicLogger.write() when there is no game state to write
  • 14368: Using String functions on property names containing double quotes in value causes Bad Module Data errors
  • 14351: NPE when Player Roster deleted from module
  • 14337: Show/Hide Palette Hotkey shows but does not hide
  • 14325: TileNotFoundException after second copy of a module in use is removed
  • 14311: Cancelling edit where a Hotkey name was changed does not cancel changes
  • 14308: Bad encoding in errorLog, bug reports
  • 14286: Prevent bad expressions from returning null
  • 14271: Chat & Notes input panel(s) treat Hotkeys differently
  • 14261: StackOverflowError: Infinite loop caused by Text Label wasn't being caught properly
  • 10755: Infinite loop in RecursionLimiter.infiniteLoop()
  • 10114: ArrayIndexOutOfBoundsException in SecretNotesController.setup()
  • 2623: FreeRotator does not update masked image if sides change

Other improvements

  • 14477: MouseoverStackViewer: Show a single card when used in a PlayerHand window
  • 14453: Improved error message on failure to load a deck
  • 14408: Lock logs and saves during writes to preempt locking by programs like Dropbox

Changes since 3.5.4

Bug fixes

  • 14348: Invisible Trait UI conflated opacity with transparency
  • 14336: MouseoverStackViewer improperly excludes does-not-move pieces when "include move-when-selected" is unchecked
  • 14332: NullPointerException in Expression.resetCachedExpressions()
  • 14331: Additional Selection Highlighter fails to offset images
  • 14327: IllegalComponentStateException in ToolbarMenu.launch()
  • 14322: IllegalComponentStateException in TableInfo.myKeyEvent()
  • 14321: IllegalComponentStateException in PropertySheet.myKeyEvent()
  • 14317: NPE in ReturnToDeck.getDeckName()
  • 14310: Property Sheet options not saved
  • 14309: Missing Deck.deck translation key
  • 14301: GKC/GHK trigger actions out of order at remote end in online play
  • 14296: IndexOutOfBoundsException in BasicLogger.step() when holding down step key
  • 14291: IllegalArgumentException in PlayerRoster.resetListeners()
  • 14290: Online multi-player game is subject to a race condition that ends with corrupt decks
  • 14288: Deck Hotkey ignored from keyboard and Global Hotkey Trait in preset scenarios
  • 14285: IllegalArgumentException in PlayerRoster when moving items in Editor
  • 14284: Chess Clocks: fixed problem where "allow reset" option selection wouldn't "stick"
  • 14262: Missing Editor.GridEditor.command_arrow_keys translation key
  • 14225: Send Hotkey action corrupts target deck
  • 13837: Creating a Global Property with Null name causes NPE on Load Game
  • 13203: Refresh Counters causes Pieces within Decks to expand

Other improvements

  • 14282: Upgrade to Java 16 for Windows, Mac packages

See the Release Notes for descriptions of the changes in 3.5.

Minimum Requirements

VASSAL requires Java 11 or later.

The Windows and MacOS packages have an appropriate version of Java bundled with them, so there is no need to install Java separately on those operating systems. On Linux, use your package manager to install Java 11 or later.

Help us test

Please report bugs in the Technical Support & Bugs category at the VASSAL forums.