Vassal 3.6.13 Released

VASSAL 3.6.13 Released

The VASSAL Team is happy to announce VASSAL 3.6.13.


  • NEW! 64-bit ARM packages: There are now MacOS and Windows packages for 64-bit ARM processors. If you have a Mac with an Apple Silicon CPU (which is a 64-bit ARM processor), we recommend using the 64-bit ARM build.
  • Code deprecated more than a year ago has been removed. Modules containing custom code using that code MUST be updated if they are to work with 3.6.
  • Things may be broken which worked previously. If you find a new bug, please report it.
  • Modules saved in 3.6 are not openable by earlier versions of VASSAL. We recommend keeping a backup copy of any pre-3.6 modules you plan to modify in 3.6 until you’ve verified that everything works to your satisfaction.


MacOS (64-bit ARM)
MacOS (64-bit x86)
Windows (64-bit ARM)
Windows (64-bit x86)
Windows (32-bit x86)

Changes since 3.6.12

Bug fixes

  • 12042: Fix bug when copying Decks and At-Start Stacks to other maps
  • 12037: Fix concurrent modification exception in Decks
  • 12016: Fix a possible crash scenario in At-Start Stacks
  • 11897: Ensure that deleted extensions don’t crash the Module Manager
  • 11693: Prevent NPE when copying folders containing Mouse-over Stack Viewers
  • 11451: Don’t permit drag-and-drop within PlaceMarker, Replace with Other selection dialogs
  • 11173: Fixed crash in sorting a deck

Other improvements

  • 11995: ActionButtons with reports shouldn’t display them if report is empty
  • 11967: When dragging piece out of face-down deck, use unrotated shape
  • 10877: Added a ‘player joined’ message when playing online
  • 9786: Text Label traits will respond to GameRefresher (unless trait has a manually-change-label hotkey defined)

Changes since 3.6.11

Bug fixes

  • 11994: Deck “send-when-empty” hotkeys no longer create extra undo steps
  • 11993: ActionButtons set to count 0 times don’t spuriously execute 1 time
  • 11982: Fixed multiplayer problems with detach option on Deselect trait
  • 11963: SendToLocation, Can Rotate, and MoveFixedDistance were all unlinking from deck/stack at wrong time, causing buggy behavior in some instances especially involving decks
  • 11961: Clear up mark-when-moved problems for modules which still had a legacy value set
  • 11884: ‘OldMat’ properties now set correctly regardless of order of Mat Cargo and Send-to-Location (etc.) traits
  • 11880: Triggers set to count 0 times don’t spuriously execute 1 time
  • 11714: Deck’s Send-when-Empty key now processes AFTER fully moving last card
  • 11627: ActionButtons with context menu flag no longer trigger context menu when a different ActionButton on same piece (that doesn’t have the flag set) is clicked
  • 11462: Don’t +1 inventory sum if property isn’t even defined
  • 11437: Prevent NPE when right-clicking on a Deck with no menu items
  • 11429: Deck Empty Hotkey no longer repeats per online player instance, nor when stepping forward a log

Other improvements

  • 12013: Reinstate removal of module tile cache when a module is removed from the Module Manager
  • 12007: Update Apple Silicon terminology in preferences and docs
  • 11986: Add missing Section size symbol to NATO markers
  • 11957: Spaces in GKC reports made consistent with all other reports
  • 11935: Allow option for only first Mouseover-stack Viewer that generates a tooltip will be drawn

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

Minimum Requirements

VASSAL 3.6 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 forum.



1 Like

The last item under “Other Improvements” is of interest to me:

"9786: Text Label traits will respond to GameRefresher (unless trait has a manually-change-label hotkey defined) "

Could I get a bit more detail on this - in what way will Text Labels respond to GameRefresher?

My experience at present is that if a Text Label trait on a counter begins with a set value and the text is subsequently deleted, running refresher will restore the default value. However if the default value is replaced by other text, and then refresher is run, the default text is not restored.

Has this behaviour been changed?

I cannot parse the meaning of “manually-change-label hotkey defined”. Could you provide a for example?


The change for 9786 is this: 9786 - Text Label traits will respond to GameRefresher (unless trait has a manually-change-label hotkey defined) by Cattlesquat · Pull Request #12024 · vassalengine/vassal · GitHub

The bug report is here: Refresh Counters fails to update a Text Label trait · Issue #9786 · vassalengine/vassal · GitHub

There’s an example of how to reproduce the problem in the bug report.

This new version is blocked by Norton Anti-Virus for a problem with Java.and i am obligated to uninstall and reinstall 3.6.12 version.

Norton AV is giving you a false positive. There’s nothing we can do about that. There should be a way to ignore the result.

1 Like

The problem is Norton, not Vassal.

AVG Antivirus has been giving me warnings/cautions for the past few iterations of Vassal as well, during the installs, although those warnings/cautions are always resolved within moments, or at most, minutes if I don’t click past them myself.
Nothing to worry about.

Hi Doug – if you have counters where it is possible at all to change the text on a Text Label during the game, then you will be completely unaffected by this change – if anything is filled into the key command field of the Text Label trait.

The time when there is a difference is:
(a) There is NO key command defined on the Text Label trait
(b) Module designer edits the label’s text
(c) Module designer runs refresh

In THAT case, the label text on any existing counters that have that label trait will have their text updated to what the designer changed it to.

Hope that makes it more clear?



Clearly clear.

Thanks very much Brian.

This will not effect me.

BTW, I am trying to work around the restriction on refreshing while extensions are loaded. I am sort of building a custom vasl updater.

I am at the point of trying to adapt the VASSAL code (via inherited classes) to actually refresh counters from extensions. Do you know if anyone else has done this?