Category Archives: Uncategorized

VASSAL 3.5.7 Released

The VASSAL Team is happy to announce VASSAL 3.5.7.

IMPORTANT

  • 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.

Download

Changes since 3.5.6

Bug fixes

  • 14540: PgDn stopped scrolling maps downward
  • 14527: NoSuchMethodError when calling ArchiveWriter.save()
  • 14526: IllegalArgumentException when rendering empty labels
  • 14521: NPE in CounterDetailViewer when Stack shapes array is longer than the piece count

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

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.

Cheers,
The VASSAL Team

VASSAL 3.5.6 Released

The VASSAL Team is happy to announce VASSAL 3.5.6.

IMPORTANT

  • 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.

Download

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.

Cheers,
The VASSAL Team

VASSAL 3.5.5 Released

The VASSAL Team is happy to announce VASSAL 3.5.5.

IMPORTANT

  • 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.

Download

Changes since 3.5.4

Bug fixes/h3>

  • 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

Changes since 3.5.3

New features

  • 14228: Chess Clocks can now be manually reset (if manual reset is enabled for them by module designer)
  • 14217: MouseoverStackViewer – $countPieces$ will give the total number of pieces found in the stack (w/o having to create a property)
  • 14207: Improved translation features (Global Translatable Message component, Translatable Message trait, exposing current language/locale as property)
  • 14191: CurrentLanguage and CurrentLanguageName exposed as module properties

Bug fixes

  • 14270: “maximum heap too large” message shown when maximum heap is too small
  • 14269: Poor Editor performance when using Fast Match
  • 14267: Game Refresher: Refresh Predefined Setups should clear any open game in the Player
  • 14256: LOS gets stuck on screen when replayed through logfile
  • 14255: Default autoreport text made -< instead of ->
  • 14246: Fast Match Global Key Commands were “dealing off the bottom of the deck” in certain cases
  • 14245: HTML in Tabbed Panes (charts, widgets): Work around apparent Swing bug in JTabbedPane
  • 14243: Game Piece Layer manipulation commands do not match described effect
  • 14227: Mark When Moved had Vertical offset mislabeled as Horizontal offset
  • 14226: Undo and Server buttons steal focus after being clicked
  • 14222: Editor Search output loses less-than symbols
  • 14219: Do not expand every prototype in a piece before searching it, just match the name of the prototype.
  • 14203: Global Key Commands should exit after displaying report if there is no key command to issue
  • 14200: Scenario names (Predefined Setup) should be displayed in translated language
  • 14199: Inventory text not translated
  • 14198: Translated private windows do not work when changing sides if module is translated
  • 14196: Right-click menu localization is not shown for some elements
  • 14192: Decks from previous saves and logs are retained in memory
  • 14187: Drag Thresholds shouldn’t be violated by “deep legacy” mouse listeners (e.g. accepting double click AND drag from same mouse sequence)
  • 14178: Some weird systems lack awt.font.desktophints but aren’t headless
  • 14168: Fix broken HTML in the ‘not-allowed-in-multiplayer-games’ message
  • 14164: Fast Match change persists despite Cancel
  • 14163: NPE due to File.listFiles() returning null for symlnks on Macs
  • 14159: Fast Search GKC ignores “Within a deck, apply to no pieces”
  • 14156: Loading a log file to continue a game shouldn’t reset the map window
  • 14155: Search was showing duplicate entries for certain items
  • 14154: Search wasn’t finding “Fast Match” fields
  • 14152: .vsav, .vlog should be appended to saves, logs when not present, instead of checking for ‘.’
  • 14149: Windows installer fails to run uninstallers for old versions
  • 14143: First character is ‘eaten’ when typing chat while over map
  • 14138: Turn Tracker mispopulates button tooltip field while running in editor
  • 14136: Module-level GKCs were not honoring fast match
  • 14131: String method calls in Beanshell don’t return proper result unless GetProperty is used
  • 14124: Remove “(Optional)” from Send to Location Board Name hint text
  • 14112: In Dynamic Property List of values, cursor jumps after first character entered
  • 14088: Ensure image is updated on selection of new image with duplicate filename in the Editor
  • 14069: ArrayIndexOutOfBoundsException in StringArrayConfigurer due to race
  • 13796: Stacks after the first are unstacked when multiple stacks dragged to a snap-to map
  • 13793: ArrayIndexOutOfBoundsException in CompoundPieceCollection.indexOf()
  • 13472: “Send to Deck” creates phantom cards in proportion to the number of game starts
  • 13145: Send Hot Key ignored by Deck
  • 12538: Decks report multiple shuffles after loading saved game

Other improvements

  • 14258: “Logging” and “Replaying” should have priority over “Saved” in the title bar
  • 14240: Welcome Wizard: Put “enter your name” screen after the main welcome (so that option to turn off wizard is always on first screen viewed)
  • 14209: Write logs and saves to .part file to forestall copying of partially written files
  • 14205: Allow different images to be loaded based on currrent VASSAL language
  • 14201: Share immutable objects
  • 14193: Expressions should be cached
  • 14185: Distinguish tile loading errors from other image loading errors
  • 14182: Prevent duplication of FormattedString data and Expressions
  • 14167: Inefficient implementation of FilterOutputStream in ZipWriter
  • 14148: Module Editor Labels get truncated with ‘…’
  • 14139: Delete trait to set ‘old…’ properties prior to deleting piece
  • 14133: Better support for Mac Alt and Function keys
  • 14066: Remove Unused Images: Dialog sizing and file size display improvements

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.

Cheers,
The VASSAL Team

VASSAL 3.5.4 Released

The VASSAL Team is happy to announce VASSAL 3.5.4.

IMPORTANT

  • 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.

Download

Changes since 3.5.3

New features

  • 14228: Chess Clocks can now be manually reset (if manual reset is enabled for them by module designer)
  • 14217: MouseoverStackViewer – $countPieces$ will give the total number of pieces found in the stack (w/o having to create a property)
  • 14191: CurrentLanguage and CurrentLanguageName exposed as module properties

Bug fixes

  • 14270: “maximum heap too large” message shown when maximum heap is too small
  • 14269: Poor Editor performance when using Fast Match
  • 14267: Game Refresher: Refresh Predefined Setups should clear any open game in the Player
  • 14256: LOS gets stuck on screen when replayed through logfile
  • 14255: Default autoreport text made -< instead of ->
  • 14246: Fast Match Global Key Commands were “dealing off the bottom of the deck” in certain cases
  • 14245: HTML in Tabbed Panes (charts, widgets): Work around apparent Swing bug in JTabbedPane
  • 14243: Game Piece Layer manipulation commands do not match described effect
  • 14227: Mark When Moved had Vertical offset mislabeled as Horizontal offset
  • 14226: Undo and Server buttons steal focus after being clicked
  • 14222: Editor Search output loses less-than symbols
  • 14219: Do not expand every prototype in a piece before searching it, just match the name of the prototype.
  • 14203: Global Key Commands should exit after displaying report if there is no key command to issue
  • 14200: Scenario names (Predefined Setup) should be displayed in translated language
  • 14199: Inventory text not translated
  • 14198: Translated private windows do not work when changing sides if module is translated
  • 14196: Right-click menu localization is not shown for some elements
  • 14192: Decks from previous saves and logs are retained in memory
  • 14187: Drag Thresholds shouldn’t be violated by “deep legacy” mouse listeners (e.g. accepting double click AND drag from same mouse sequence)
  • 14178: Some weird systems lack awt.font.desktophints but aren’t headless
  • 14168: Fix broken HTML in the ‘not-allowed-in-multiplayer-games’ message
  • 14164: Fast Match change persists despite Cancel
  • 14163: NPE due to File.listFiles() returning null for symlnks on Macs
  • 14159: Fast Search GKC ignores “Within a deck, apply to no pieces”
  • 14156: Loading a log file to continue a game shouldn’t reset the map window
  • 14155: Search was showing duplicate entries for certain items
  • 14154: Search wasn’t finding “Fast Match” fields
  • 14152: .vsav, .vlog should be appended to saves, logs when not present, instead of checking for ‘.’
  • 14149: Windows installer fails to run uninstallers for old versions
  • 14143: First character is ‘eaten’ when typing chat while over map
  • 14138: Turn Tracker mispopulates button tooltip field while running in editor
  • 14136: Module-level GKCs were not honoring fast match
  • 14131: String method calls in Beanshell don’t return proper result unless GetProperty is used
  • 14124: Remove “(Optional)” from Send to Location Board Name hint text
  • 14112: In Dynamic Property List of values, cursor jumps after first character entered
  • 14088: Ensure image is updated on selection of new image with duplicate filename in the Editor
  • 14069: ArrayIndexOutOfBoundsException in StringArrayConfigurer due to race
  • 13796: Stacks after the first are unstacked when multiple stacks dragged to a snap-to map
  • 13793: ArrayIndexOutOfBoundsException in CompoundPieceCollection.indexOf()
  • 13472: “Send to Deck” creates phantom cards in proportion to the number of game starts
  • 13145: Send Hot Key ignored by Deck
  • 12538: Decks report multiple shuffles after loading saved game

Other improvements

  • 14258: “Logging” and “Replaying” should have priority over “Saved” in the title bar
  • 14240: Welcome Wizard: Put “enter your name” screen after the main welcome (so that option to turn off wizard is always on first screen viewed)
  • 14209: Write logs and saves to .part file to forestall copying of partially written files
  • 14205: Allow different images to be loaded based on currrent VASSAL language
  • 14201: Share immutable objects
  • 14193: Expressions should be cached
  • 14185: Distinguish tile loading errors from other image loading errors
  • 14182: Prevent duplication of FormattedString data and Expressions
  • 14167: Inefficient implementation of FilterOutputStream in ZipWriter
  • 14148: Module Editor Labels get truncated with ‘…’
  • 14139: Delete trait to set ‘old…’ properties prior to deleting piece
  • 14133: Better support for Mac Alt and Function keys
  • 14066: Remove Unused Images: Dialog sizing and file size display improvements

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.

Cheers,
The VASSAL Team

VASSAL 3.5.3 Released

The VASSAL Team is happy to announce VASSAL 3.5.3.

IMPORTANT

  • 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.

Download

Changes since 3.5.2

Bug fixes

  • 14122: IllegalArgumentException when Action Button is armed on one map but released on another
  • 14078: Undo causes standard counter to become unstacked

Other improvements

  • 14121: Editor shows Global Property descriptions next to the names in the main list

Changes since 3.5.1

Bug fixes

  • 14117: Action Button fails to respond on a stacked counter (except at top)
  • 14116: Incorrect module sort order in Module Manager
  • 14111: Incorrect description for Dynamic Property initial value
  • 14104: Removing Image from BasicPiece stores image name as ‘(No Image)’
  • 14086: Fix Alt key for selecting on maps
  • 14078: Undo causes standard counter to become unstacked
  • 14076: SetGlobalProperty editor has incorrect label for maximum value field
  • 14075: BoardPicker and LOS_Thread could sometimes intercept commands for wrong objects
  • 14074: Flares sometimes not appearing on opponent’s map (in log replay, or online)
  • 14065: Show OS Specific cut/paste key descriptions in Piece Definer
  • 14061: ArrayIndexOutOfBoundsException in StringArrayConfigurer.entryChanged()
  • 14047: Prevent versions <= 3.2 from clobbering the 3.5 module list
  • 14046: Nested ExecutionException when cancelling a screenshot
  • 14043: Help button on Flare, Chess Clock, Deselect had broken link
  • 14041: Prevent race when creating GlobalPrefs

Other improvements

  • 14098: Player includes module version number in window title
  • 14077: Include ‘(pixels)’ in Turn Counter Label Display Length Label
  • 14070: Array Configurers: Add button moves focus to newly created entry
  • 14068: Key Command editor: Change return arrow icon to Tango undo icon
  • 14064: Add Refresh Predefined Setups in ExtensionEditor + (remove warning on pieces without parent)
  • 14059: Show better descriptions for Marker traits in Piece Definer
  • 14057: Piece Definer should give piece image a little breathing space on left and right by default
  • 14056: Search now covers initial/min/max values in property traits
  • 14053: Canceling Welcome Wizard closes the Player (unless “show wizard at startup” has been unchecked)
  • 14055: Set Global Property: include name/expression of property in trait list

Changes since 3.5.0

Bug fixes

  • 14035: Multi Action Button and Toolbar Menu lose last item in Menu Entry list
  • 14034: Prevent concurrent updates to preferences
  • 14033: Fast Match forgets fields when added to Maps and Module
  • 14032: Fast Match was picking wrong number of cards from decks
  • 14026: GameRefresher incorrectly deletes off map pieces
  • 14024: NumberFormatException when private server port is empty
  • 14023: Advanced Search displays “hit lists” properly for names/types of prototypes & configurables
  • 14018: Refresh Predefined Setup incorrectly clones at start stacks
  • 14012: Die Roll ‘Prompt for values when button pushed’ dialog is broken
  • 14008: Unused Images Tool was suggesting some in-use GIFs for deletion
  • 14007: NPE when adding dockable PieceWindow from module extension
  • 14000: OverlappingFileLockException when attempting to write preferences
  • 13999: Fast-Match wasn’t working for “Moved” property
  • 13997: Chat log should start display on bottom line even with larger monitors
  • 13996: Sanitize temp file basenames to escape illegal characters
  • 13995: Don’t try to write a logfile without having started one
  • 13993: IllegalBuildException on gpIdChecker when using GameRefresher
  • 13992: NPE in Embellishment.addLocalImageNames()
  • 13991: NPE when using Game Refresher on predefined setups
  • 13988: ExecutionException when opening a moved or renamed module file
  • 13987: ChessClock buttons with icons had inappropriate height/width
  • 13984: NPE in BugUtils when involved from the Module Manager
  • 13981: NoSuchElementException using Edit All Contained Pieces
  • 13975: ArrayIndexOutOfBoundsException using Edit All Contained Pieces
  • 13973: Missing message for failure to write file
  • 13971: Cannot create new module extensions
  • 13970: DiceButton icons and Mask images incorrectly suggested for removal by unneeded-file-remover
  • 13968: NPE in HelpFile.addLocalImageNames()
  • 13967: Search wasn’t searching into PieceSlots (“Single Piece” items in Setup Stacks, etc.)
  • 13965: MouseoverStackViewer should not show face-down cards in decks, should not unnecessarily clip underneath text, and should not run off left edge of screen in an overzealous attempt to center-on-cursor
  • 13964: Module extension file extension incorrectly listed as .vext instead of .vmdx
  • 13960: MouseoverStackViewer mis-centering if “draw pieces” wasn’t selected
  • 13959: Loads from wizard should add filename to window title
  • 13958: ExecutionException when cancelling a screenshot
  • 13954: Alt-click, Shift+Ctrl-click should not change selection
  • 13944: NPE when loading second game in modules using deprecated Map.mainWindowDock

Other improvements

  • 14040: Reference Manual cleanup
  • 14039: Improved/Repaired some tables in online docs
  • 14022: Upgrade bundled Java to 15.0.2+7
  • 14019: Remove confusing Vassal Version column from MM, show based on preference
  • 14015: Added infinite loop protection to PlaceMarker
  • 14011: Search now pre-selects contents of search field when restoring/remembering the previous contents
  • 14009: Standardize remaining dialogs
  • 13977: Alt+Shift now an option for band selection of Does Not Stack pieces
  • 13974: Better window title bars (filename-first like most apps)
  • 13930: Added infinite loop protection to TurnTracker
  • 13742: Action Button trait should arm when pressed, fire on release

Changes since 3.4.13

New features

  • 13706: Console, for entering commands to affect errorlog, properties, etc.
  • 13522: Performance improvements for Global Key Commands
  • 13504: Simpler way to display PDF files from Help menu
  • 13494: Expose version numbers and module strings to module as properties
  • 13432: MouseOverStackViewer can show > 1 piece of a deck
  • 13417: Editor’s search function can now search piece traits and component attributes
  • 13415: MouseoverStackViewer has HTML support and additional formatting options
  • 13414: “Help” button (and help information) added to Preferences dialog
  • 13368: Added preference to control drag-at-edge-of-map width
  • 13355: Threshold for centering on opponent’s move is now configurable
  • 13352: Title Bar of module should always show most recent Save/Load/Log
  • 13297: Ability to Deselect a piece with a Key Command (also remove it from its stack)
  • 13296: Flare feature for map
  • 13219: Added KeyNamer for overriding key names
  • 1868: Method for removing unused images from modules
  • 1826: Aesthetic improvements to dialogs
  • 1807: Chess clocks
  • 1804: Added Preference for turning off sounds

Bug fixes

  • 13950: Level name in Layer trait is not being saved
  • 13900: MassPieceLoader trait editor shows standard Embellishment trait editor instead of MPL-specific one
  • 13886: Reinstate removed TilingHandler ctor for VASL 6.6.1
  • 13879: NPE in DieManager ctor
  • 13876: NPE in AbstractMetaData.getVassalVersion()
  • 13868: Added description field to (nearly) all traits
  • 13853: Toolbars missing from non-dockable windows
  • 13825: “Module from older version” check is too strict
  • 13823: Map/Module Global Key Command Description not being saved
  • 13821: SendToLocation does not create Movement Trail points
  • 13811: NPE in DiceButton.setAttribute()
  • 13810: Find all parentless Dialogs and JOptionPanes and give them a parent
  • 13783: Non-rectangular trait should remember name of image that created it
  • 13782: Suffix/Prefix fields in Layer trait are not displayed correctly
  • 13781: Bad parameter in Editor.UniqueIdManager.more_than_one message
  • 13771: NPE after cutting/pasting piece palettes in Editor
  • 13755: Chess clock help file is misnamed
  • 13741: DataArchive.getImageNames() incorrectly returns an empty string if images/ has an entry in the ZIP archive
  • 13675: Piece Slots shouldn’t be allowed at very top level of Piece Palette
  • 13660: Replaced ComponentSplitter with SplitPane for better splitter positioning
  • 13659: “Remember window size” preference is no longer ignored
  • 13593: Global preferences are written when changed
  • 13509: Save As in Editor, if it fails, complains the new filename
  • 13495: Wizard should set the initial value for next save/load dialog
  • 13336: Fixed incorrect date format in SecretNotesController
  • 12946: Prevent top level required components from being deleted in Editor
  • 4779: Comparison operator >= no longer incorrectly documented as =>
  • 4324: Antialiasing RenderingHints not set properly for drawing game components

Other improvements

  • 13952: Make Flare animation disableable
  • 13947: File > Import Module moved to Tools > Convert Module
  • 13813: Simplified communication between Module Manager, Player, Editor
  • 13792: Combined save and log loading; Load Continuation moved from File to Tools menu
  • 13777: Improved workflow of zone editor
  • 13761: Refer to MacOS instead of MacOS X now that MacOS 11 is out
  • 13661: Simplified ZIP archive writing and error reporting
  • 13450: Improve look of Auto Configured editor dialogs
  • 13437: Improve visibility of Logging status – Help people to remember to start logs
  • 13363: buildFile renamed to buildFile.xml
  • 13354: Add a chatter message when starting to write a logfile
  • 13353: Use native file chooser on Linux
  • 13333: Better handling of logfile/savefile comments
  • 13326: Saving a module will default to .vmod, an extension to .vext
  • 13323: Player switching sides now reported in Chat Log
  • 13098: Move Compatibility related preferences on the General tab to a new Compatibility tab
  • 1907: Suggest default filename extensions

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.

Cheers,
The VASSAL Team

VASSAL 3.5.2 Released

The VASSAL Team is happy to announce VASSAL 3.5.2.

IMPORTANT

  • 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.

Download

Changes since 3.5.1

Bug fixes

  • 14117: Action Button fails to respond on a stacked counter (except at top)
  • 14116: Incorrect module sort order in Module Manager
  • 14111: Incorrect description for Dynamic Property initial value
  • 14104: Removing Image from BasicPiece stores image name as ‘(No Image)’
  • 14086: Fix Alt key for selecting on maps
  • 14078: Undo causes standard counter to become unstacked
  • 14076: SetGlobalProperty editor has incorrect label for maximum value field
  • 14075: BoardPicker and LOS_Thread could sometimes intercept commands for wrong objects
  • 14074: Flares sometimes not appearing on opponent’s map (in log replay, or online)
  • 14065: Show OS Specific cut/paste key descriptions in Piece Definer
  • 14061: ArrayIndexOutOfBoundsException in StringArrayConfigurer.entryChanged()
  • 14047: Prevent versions <= 3.2 from clobbering the 3.5 module list
  • 14046: Nested ExecutionException when cancelling a screenshot
  • 14043: Help button on Flare, Chess Clock, Deselect had broken link
  • 14041: Prevent race when creating GlobalPrefs

Other improvements

  • 14098: Player includes module version number in window title
  • 14077: Include ‘(pixels)’ in Turn Counter Label Display Length Label
  • 14070: Array Configurers: Add button moves focus to newly created entry
  • 14068: Key Command editor: Change return arrow icon to Tango undo icon
  • 14064: Add Refresh Predefined Setups in ExtensionEditor + (remove warning on pieces without parent)
  • 14059: Show better descriptions for Marker traits in Piece Definer
  • 14057: Piece Definer should give piece image a little breathing space on left and right by default
  • 14056: Search now covers initial/min/max values in property traits
  • 14053: Canceling Welcome Wizard closes the Player (unless “show wizard at startup” has been unchecked)
  • 14055: Set Global Property: include name/expression of property in trait list

Changes since 3.5.0

Bug fixes

  • 14035: Multi Action Button and Toolbar Menu lose last item in Menu Entry list
  • 14034: Prevent concurrent updates to preferences
  • 14033: Fast Match forgets fields when added to Maps and Module
  • 14032: Fast Match was picking wrong number of cards from decks
  • 14026: GameRefresher incorrectly deletes off map pieces
  • 14024: NumberFormatException when private server port is empty
  • 14023: Advanced Search displays “hit lists” properly for names/types of prototypes & configurables
  • 14018: Refresh Predefined Setup incorrectly clones at start stacks
  • 14012: Die Roll ‘Prompt for values when button pushed’ dialog is broken
  • 14008: Unused Images Tool was suggesting some in-use GIFs for deletion
  • 14007: NPE when adding dockable PieceWindow from module extension
  • 14000: OverlappingFileLockException when attempting to write preferences
  • 13999: Fast-Match wasn’t working for “Moved” property
  • 13997: Chat log should start display on bottom line even with larger monitors
  • 13996: Sanitize temp file basenames to escape illegal characters
  • 13995: Don’t try to write a logfile without having started one
  • 13993: IllegalBuildException on gpIdChecker when using GameRefresher
  • 13992: NPE in Embellishment.addLocalImageNames()
  • 13991: NPE when using Game Refresher on predefined setups
  • 13988: ExecutionException when opening a moved or renamed module file
  • 13987: ChessClock buttons with icons had inappropriate height/width
  • 13984: NPE in BugUtils when involved from the Module Manager
  • 13981: NoSuchElementException using Edit All Contained Pieces
  • 13975: ArrayIndexOutOfBoundsException using Edit All Contained Pieces
  • 13973: Missing message for failure to write file
  • 13971: Cannot create new module extensions
  • 13970: DiceButton icons and Mask images incorrectly suggested for removal by unneeded-file-remover
  • 13968: NPE in HelpFile.addLocalImageNames()
  • 13967: Search wasn’t searching into PieceSlots (“Single Piece” items in Setup Stacks, etc.)
  • 13965: MouseoverStackViewer should not show face-down cards in decks, should not unnecessarily clip underneath text, and should not run off left edge of screen in an overzealous attempt to center-on-cursor
  • 13964: Module extension file extension incorrectly listed as .vext instead of .vmdx
  • 13960: MouseoverStackViewer mis-centering if “draw pieces” wasn’t selected
  • 13959: Loads from wizard should add filename to window title
  • 13958: ExecutionException when cancelling a screenshot
  • 13954: Alt-click, Shift+Ctrl-click should not change selection
  • 13944: NPE when loading second game in modules using deprecated Map.mainWindowDock

Other improvements

  • 14040: Reference Manual cleanup
  • 14039: Improved/Repaired some tables in online docs
  • 14022: Upgrade bundled Java to 15.0.2+7
  • 14019: Remove confusing Vassal Version column from MM, show based on preference
  • 14015: Added infinite loop protection to PlaceMarker
  • 14011: Search now pre-selects contents of search field when restoring/remembering the previous contents
  • 14009: Standardize remaining dialogs
  • 13977: Alt+Shift now an option for band selection of Does Not Stack pieces
  • 13974: Better window title bars (filename-first like most apps)
  • 13930: Added infinite loop protection to TurnTracker
  • 13742: Action Button trait should arm when pressed, fire on release

Changes since 3.4.13

New features

  • 13706: Console, for entering commands to affect errorlog, properties, etc.
  • 13522: Performance improvements for Global Key Commands
  • 13504: Simpler way to display PDF files from Help menu
  • 13494: Expose version numbers and module strings to module as properties
  • 13432: MouseOverStackViewer can show > 1 piece of a deck
  • 13417: Editor’s search function can now search piece traits and component attributes
  • 13415: MouseoverStackViewer has HTML support and additional formatting options
  • 13414: “Help” button (and help information) added to Preferences dialog
  • 13368: Added preference to control drag-at-edge-of-map width
  • 13355: Threshold for centering on opponent’s move is now configurable
  • 13352: Title Bar of module should always show most recent Save/Load/Log
  • 13297: Ability to Deselect a piece with a Key Command (also remove it from its stack)
  • 13296: Flare feature for map
  • 13219: Added KeyNamer for overriding key names
  • 1868: Method for removing unused images from modules
  • 1826: Aesthetic improvements to dialogs
  • 1807: Chess clocks
  • 1804: Added Preference for turning off sounds

Bug fixes

  • 13950: Level name in Layer trait is not being saved
  • 13900: MassPieceLoader trait editor shows standard Embellishment trait editor instead of MPL-specific one
  • 13886: Reinstate removed TilingHandler ctor for VASL 6.6.1
  • 13879: NPE in DieManager ctor
  • 13876: NPE in AbstractMetaData.getVassalVersion()
  • 13868: Added description field to (nearly) all traits
  • 13853: Toolbars missing from non-dockable windows
  • 13825: “Module from older version” check is too strict
  • 13823: Map/Module Global Key Command Description not being saved
  • 13821: SendToLocation does not create Movement Trail points
  • 13811: NPE in DiceButton.setAttribute()
  • 13810: Find all parentless Dialogs and JOptionPanes and give them a parent
  • 13783: Non-rectangular trait should remember name of image that created it
  • 13782: Suffix/Prefix fields in Layer trait are not displayed correctly
  • 13781: Bad parameter in Editor.UniqueIdManager.more_than_one message
  • 13771: NPE after cutting/pasting piece palettes in Editor
  • 13755: Chess clock help file is misnamed
  • 13741: DataArchive.getImageNames() incorrectly returns an empty string if images/ has an entry in the ZIP archive
  • 13675: Piece Slots shouldn’t be allowed at very top level of Piece Palette
  • 13660: Replaced ComponentSplitter with SplitPane for better splitter positioning
  • 13659: “Remember window size” preference is no longer ignored
  • 13593: Global preferences are written when changed
  • 13509: Save As in Editor, if it fails, complains the new filename
  • 13495: Wizard should set the initial value for next save/load dialog
  • 13336: Fixed incorrect date format in SecretNotesController
  • 12946: Prevent top level required components from being deleted in Editor
  • 4779: Comparison operator >= no longer incorrectly documented as =>
  • 4324: Antialiasing RenderingHints not set properly for drawing game components

Other improvements

  • 13952: Make Flare animation disableable
  • 13947: File > Import Module moved to Tools > Convert Module
  • 13813: Simplified communication between Module Manager, Player, Editor
  • 13792: Combined save and log loading; Load Continuation moved from File to Tools menu
  • 13777: Improved workflow of zone editor
  • 13761: Refer to MacOS instead of MacOS X now that MacOS 11 is out
  • 13661: Simplified ZIP archive writing and error reporting
  • 13450: Improve look of Auto Configured editor dialogs
  • 13437: Improve visibility of Logging status – Help people to remember to start logs
  • 13363: buildFile renamed to buildFile.xml
  • 13354: Add a chatter message when starting to write a logfile
  • 13353: Use native file chooser on Linux
  • 13333: Better handling of logfile/savefile comments
  • 13326: Saving a module will default to .vmod, an extension to .vext
  • 13323: Player switching sides now reported in Chat Log
  • 13098: Move Compatibility related preferences on the General tab to a new Compatibility tab
  • 1907: Suggest default filename extensions

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.

Cheers,
The VASSAL Team

VASSAL 3.5.1 Released

The VASSAL Team is happy to announce VASSAL 3.5.1.

IMPORTANT

  • 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.

Download

Changes since 3.5.0

Bug fixes

  • 14035: Multi Action Button and Toolbar Menu lose last item in Menu Entry list
  • 14034: Prevent concurrent updates to preferences
  • 14033: Fast Match forgets fields when added to Maps and Module
  • 14032: Fast Match was picking wrong number of cards from decks
  • 14026: GameRefresher incorrectly deletes off map pieces
  • 14024: NumberFormatException when private server port is empty
  • 14023: Advanced Search displays “hit lists” properly for names/types of prototypes & configurables
  • 14018: Refresh Predefined Setup incorrectly clones at start stacks
  • 14012: Die Roll ‘Prompt for values when button pushed’ dialog is broken
  • 14008: Unused Images Tool was suggesting some in-use GIFs for deletion
  • 14007: NPE when adding dockable PieceWindow from module extension
  • 14000: OverlappingFileLockException when attempting to write preferences
  • 13999: Fast-Match wasn’t working for “Moved” property
  • 13997: Chat log should start display on bottom line even with larger monitors
  • 13996: Sanitize temp file basenames to escape illegal characters
  • 13995: Don’t try to write a logfile without having started one
  • 13993: IllegalBuildException on gpIdChecker when using GameRefresher
  • 13992: NPE in Embellishment.addLocalImageNames()
  • 13991: NPE when using Game Refresher on predefined setups
  • 13988: ExecutionException when opening a moved or renamed module file
  • 13987: ChessClock buttons with icons had inappropriate height/width
  • 13984: NPE in BugUtils when involved from the Module Manager
  • 13981: NoSuchElementException using Edit All Contained Pieces
  • 13975: ArrayIndexOutOfBoundsException using Edit All Contained Pieces
  • 13973: Missing message for failure to write file
  • 13971: Cannot create new module extensions
  • 13970: DiceButton icons and Mask images incorrectly suggested for removal by unneeded-file-remover
  • 13968: NPE in HelpFile.addLocalImageNames()
  • 13967: Search wasn’t searching into PieceSlots (“Single Piece” items in Setup Stacks, etc.)
  • 13965: MouseoverStackViewer should not show face-down cards in decks, should not unnecessarily clip underneath text, and should not run off left edge of screen in an overzealous attempt to center-on-cursor
  • 13964: Module extension file extension incorrectly listed as .vext instead of .vmdx
  • 13960: MouseoverStackViewer mis-centering if “draw pieces” wasn’t selected
  • 13959: Loads from wizard should add filename to window title
  • 13958: ExecutionException when cancelling a screenshot
  • 13954: Alt-click, Shift+Ctrl-click should not change selection
  • 13944: NPE when loading second game in modules using deprecated Map.mainWindowDock

Other improvements

  • 14040: Reference Manual cleanup
  • 14039: Improved/Repaired some tables in online docs
  • 14022: Upgrade bundled Java to 15.0.2+7
  • 14019: Remove confusing Vassal Version column from MM, show based on preference
  • 14015: Added infinite loop protection to PlaceMarker
  • 14011: Search now pre-selects contents of search field when restoring/remembering the previous contents
  • 14009: Standardize remaining dialogs
  • 13977: Alt+Shift now an option for band selection of Does Not Stack pieces
  • 13974: Better window title bars (filename-first like most apps)
  • 13930: Added infinite loop protection to TurnTracker
  • 13742: Action Button trait should arm when pressed, fire on release

Changes since 3.4.13

New features

  • 13706: Console, for entering commands to affect errorlog, properties, etc.
  • 13522: Performance improvements for Global Key Commands
  • 13504: Simpler way to display PDF files from Help menu
  • 13494: Expose version numbers and module strings to module as properties
  • 13432: MouseOverStackViewer can show > 1 piece of a deck
  • 13417: Editor’s search function can now search piece traits and component attributes
  • 13415: MouseoverStackViewer has HTML support and additional formatting options
  • 13414: “Help” button (and help information) added to Preferences dialog
  • 13368: Added preference to control drag-at-edge-of-map width
  • 13355: Threshold for centering on opponent’s move is now configurable
  • 13352: Title Bar of module should always show most recent Save/Load/Log
  • 13297: Ability to Deselect a piece with a Key Command (also remove it from its stack)
  • 13296: Flare feature for map
  • 13219: Added KeyNamer for overriding key names
  • 1868: Method for removing unused images from modules
  • 1826: Aesthetic improvements to dialogs
  • 1807: Chess clocks
  • 1804: Added Preference for turning off sounds

Bug fixes

  • 13950: Level name in Layer trait is not being saved
  • 13900: MassPieceLoader trait editor shows standard Embellishment trait editor instead of MPL-specific one
  • 13886: Reinstate removed TilingHandler ctor for VASL 6.6.1
  • 13879: NPE in DieManager ctor
  • 13876: NPE in AbstractMetaData.getVassalVersion()
  • 13868: Added description field to (nearly) all traits
  • 13853: Toolbars missing from non-dockable windows
  • 13825: “Module from older version” check is too strict
  • 13823: Map/Module Global Key Command Description not being saved
  • 13821: SendToLocation does not create Movement Trail points
  • 13811: NPE in DiceButton.setAttribute()
  • 13810: Find all parentless Dialogs and JOptionPanes and give them a parent
  • 13783: Non-rectangular trait should remember name of image that created it
  • 13782: Suffix/Prefix fields in Layer trait are not displayed correctly
  • 13781: Bad parameter in Editor.UniqueIdManager.more_than_one message
  • 13771: NPE after cutting/pasting piece palettes in Editor
  • 13755: Chess clock help file is misnamed
  • 13741: DataArchive.getImageNames() incorrectly returns an empty string if images/ has an entry in the ZIP archive
  • 13675: Piece Slots shouldn’t be allowed at very top level of Piece Palette
  • 13660: Replaced ComponentSplitter with SplitPane for better splitter positioning
  • 13659: “Remember window size” preference is no longer ignored
  • 13593: Global preferences are written when changed
  • 13509: Save As in Editor, if it fails, complains the new filename
  • 13495: Wizard should set the initial value for next save/load dialog
  • 13336: Fixed incorrect date format in SecretNotesController
  • 12946: Prevent top level required components from being deleted in Editor
  • 4779: Comparison operator >= no longer incorrectly documented as =>
  • 4324: Antialiasing RenderingHints not set properly for drawing game components

Other improvements

  • 13952: Make Flare animation disableable
  • 13947: File > Import Module moved to Tools > Convert Module
  • 13813: Simplified communication between Module Manager, Player, Editor
  • 13792: Combined save and log loading; Load Continuation moved from File to Tools menu
  • 13777: Improved workflow of zone editor
  • 13761: Refer to MacOS instead of MacOS X now that MacOS 11 is out
  • 13661: Simplified ZIP archive writing and error reporting
  • 13450: Improve look of Auto Configured editor dialogs
  • 13437: Improve visibility of Logging status – Help people to remember to start logs
  • 13363: buildFile renamed to buildFile.xml
  • 13354: Add a chatter message when starting to write a logfile
  • 13353: Use native file chooser on Linux
  • 13333: Better handling of logfile/savefile comments
  • 13326: Saving a module will default to .vmod, an extension to .vext
  • 13323: Player switching sides now reported in Chat Log
  • 13098: Move Compatibility related preferences on the General tab to a new Compatibility tab
  • 1907: Suggest default filename extensions

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.

Cheers,
The VASSAL Team

VASSAL 3.5.0 Released

The VASSAL Team is happy to announce VASSAL 3.5.0.

IMPORTANT

  • 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.

Download

Changes since 3.4.13

New features

  • 13706: Console, for entering commands to affect errorlog, properties, etc.
  • 13522: Performance improvements for Global Key Commands
  • 13504: Simpler way to display PDF files from Help menu
  • 13494: Expose version numbers and module strings to module as properties
  • 13432: MouseOverStackViewer can show > 1 piece of a deck
  • 13417: Editor’s search function can now search piece traits and component attributes
  • 13415: MouseoverStackViewer has HTML support and additional formatting options
  • 13414: “Help” button (and help information) added to Preferences dialog
  • 13368: Added preference to control drag-at-edge-of-map width
  • 13355: Threshold for centering on opponent’s move is now configurable
  • 13352: Title Bar of module should always show most recent Save/Load/Log
  • 13297: Ability to Deselect a piece with a Key Command (also remove it from its stack)
  • 13296: Flare feature for map
  • 13219: Added KeyNamer for overriding key names
  • 1868: Method for removing unused images from modules
  • 1826: Aesthetic improvements to dialogs
  • 1807: Chess clocks
  • 1804: Added Preference for turning off sounds

Bug fixes

  • 13950: Level name in Layer trait is not being saved
  • 13900: MassPieceLoader trait editor shows standard Embellishment trait editor instead of MPL-specific one
  • 13886: Reinstate removed TilingHandler ctor for VASL 6.6.1
  • 13879: NPE in DieManager ctor
  • 13876: NPE in AbstractMetaData.getVassalVersion()
  • 13868: Added description field to (nearly) all traits
  • 13853: Toolbars missing from non-dockable windows
  • 13825: “Module from older version” check is too strict
  • 13823: Map/Module Global Key Command Description not being saved
  • 13821: SendToLocation does not create Movement Trail points
  • 13811: NPE in DiceButton.setAttribute()
  • 13810: Find all parentless Dialogs and JOptionPanes and give them a parent
  • 13783: Non-rectangular trait should remember name of image that created it
  • 13782: Suffix/Prefix fields in Layer trait are not displayed correctly
  • 13781: Bad parameter in Editor.UniqueIdManager.more_than_one message
  • 13771: NPE after cutting/pasting piece palettes in Editor
  • 13755: Chess clock help file is misnamed
  • 13741: DataArchive.getImageNames() incorrectly returns an empty string if images/ has an entry in the ZIP archive
  • 13675: Piece Slots shouldn’t be allowed at very top level of Piece Palette
  • 13660: Replaced ComponentSplitter with SplitPane for better splitter positioning
  • 13659: “Remember window size” preference is no longer ignored
  • 13593: Global preferences are written when changed
  • 13509: Save As in Editor, if it fails, complains the new filename
  • 13495: Wizard should set the initial value for next save/load dialog
  • 13336: Fixed incorrect date format in SecretNotesController
  • 12946: Prevent top level required components from being deleted in Editor
  • 4779: Comparison operator >= no longer incorrectly documented as =>
  • 4324: Antialiasing RenderingHints not set properly for drawing game components

Other improvements

  • 13952: Make Flare animation disableable
  • 13947: File > Import Module moved to Tools > Convert Module
  • 13813: Simplified communication between Module Manager, Player, Editor
  • 13792: Combined save and log loading; Load Continuation moved from File to Tools menu
  • 13777: Improved workflow of zone editor
  • 13761: Refer to MacOS instead of MacOS X now that MacOS 11 is out
  • 13661: Simplified ZIP archive writing and error reporting
  • 13450: Improve look of Auto Configured editor dialogs
  • 13437: Improve visibility of Logging status – Help people to remember to start logs
  • 13363: buildFile renamed to buildFile.xml
  • 13354: Add a chatter message when starting to write a logfile
  • 13353: Use native file chooser on Linux
  • 13333: Better handling of logfile/savefile comments
  • 13326: Saving a module will default to .vmod, an extension to .vext
  • 13323: Player switching sides now reported in Chat Log
  • 13098: Move Compatibility related preferences on the General tab to a new Compatibility tab
  • 1907: Suggest default filename extensions

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.

Cheers,
The VASSAL Team

VASSAL 3.4.13 Released

The VASSAL Team is happy to announce the release of VASSAL 3.4.13.

IMPORTANT

  • Things may be broken which worked previously. If you find a new bug, please report it.
  • If you save a module in VASSAL 3.4, you will NOT be able to open it afterwards with VASSAL 3.3 or earlier. We recommend keeping a backup copy of any pre-3.4 modules you plan to modify in 3.4 until you’ve verified that everything works to your satisfaction.
  • Some modules containing custom drawing code may render incorrectly on HiDPI displays, starting with 3.3. If you are the maintainer of such a module, let us know and we can advise you about what needs updating for 3.4 in your code.

Download

Changes since 3.4.12

Bug fixes

  • 13920: CounterDetailViewer should support setting no foreground color
  • 13915: Boards with same source but different grids fail to render distinctly
  • 13903: SVG with viewBox and percentage width, height renders incorrectly
  • 13861: NPE in MassPieceLoader when adding Layer to piece template
  • 13285: Show useful message on AWTError due to bad Java Access Bridge install

Changes since 3.4.11

Bug fixes

  • 13850: Piece rotation fails to apply over masking
  • 13845: Don’t display empty items in context menus
  • 13836: “too new” version check should compare minor version only
  • 13827: Ensure that extensions are loaded in alphabetical order
  • 13826: Restore scrolling in drop-down menus in BeanShell expression builder
  • 13825: “Module from older version” check is too strict
  • 13820: Ensure temp directory hasn’t been deleted before trying to write to it
  • 13819: Move Fixed Distance no longer updating Movement Trail
  • 13808: Don’t prompt to create new logfile before current one is done
  • 13807: SendToLocation does not check outer traits when evaluating expression
  • 13805: CounterDetailViewer incorrectly displayed non-stacking pieces
  • 13795: “too new” version check should apply to all Module Manager items
  • 13786: NPE when Enter hit in Editor component tree with no node selected
  • 13738: IllegalArgumentException because Invisible trait permitted alpha values outside [0,1]
  • 13614: NPE in ZonedGrid due to thread-unsafe caching of Zone clipping
  • 13571: ArrayIndexOutOfBoundsException in Embellishment.getProperty()
  • 13446: Pieces in a stack have the wrong offset while dragging

Other improvements

  • 13829: HexGridNumbering.getRawRow() is now public
  • 13760: Upgrade bundled Java to 15.0.1+9

Changes since 3.4.10

Bug fixes

  • 13728: Translucent solid-colored backgrounds of boards are incorrectly drawn opaque
  • 13679: IndexOutOfBoundsException in AbstractTiledOpImpl.getTile() via GridOp
  • 13677: NullPointerException in AbstractTiledOpImpl.getTileOp() via GridOp

Changes since 3.4.9

Bug fixes

  • 13720: Tiles in last row, column of boards with colored backgrounds and no image render too large
  • 13688: Reversed boards with grids fail to display

Changes since 3.4.8

Bug fixes

  • 13655: Grid caching interferes with drawing zone highlighters
  • 13636: AbstractBuildable.getAllDescendantComponentsOf() does not recurse properly
  • 13631: NPE in Map.placeAt()
  • 13616: Java reports incorrect amount of RAM on Linux ARM systems
  • 13608: Grids fail to display in grid editor
  • 13602: NPE in MassPieceLoader.MassLoaderDialog.load()
  • 13598: IndexOutOfBoundsException when drawing grids over SVG

Changes since 3.4.7

Bug fixes

  • 13577: Stacks properly restore their visual ‘layer’ level when saved/restored
  • 13574: Fix reporting on oldXXXXXX properties in ReportState
  • 13573: Beanshell count function not working with $$ variables in Restrict Commands property match
  • 13567: Put backup in better location when writing to module fails and ensure Editor is not left in a bad state
  • 13560: Don’t register mouse listeners from ActionButton.draw()
  • 13449: Inventory window remains open when the game is closed in the Player
  • 13379: Mass Piece Loader – Decrease key now loads correctly
  • 13379: Mass Piece Loader – Layers are no longer loaded Activated

Other improvements

  • 13572: Stop converting preferences last written by 3.2.7 or earlier
  • 13563: Hitting Enter in Editor expands or edits nodes
  • 13431: Cache grid and grid numbering painting for better performance
  • 13379: Mass Piece Loader – Base Image can now be loaded into layers
  • 10063: Hitting Enter on Module Manager opens the module

Changes since 3.4.6

Bug fixes

  • 13547: Don’t raise a bug dialog on failure to read an MP3
  • 13546: Change backup Resource directory from temp folder to base folder
  • 13542: Interaction between Move Fixed Distance and Rotate traits has changed between 3.2.17 and 3.4.6
  • 13540: Macs now use Command as modifier key for grid-resizing, setup-stack-moving in Editor
  • 13525: HFS+ stores filenames in NFD, so must check for that variant when loading
  • 13524: Masked card dragged from Player Hand reports differently between 3.2.17 and 3.4.6
  • 13520: Made Command+Click the select/deselect combo for Macs (and Command+Wheel to zoom)
  • 13489: Pieces scaled incorrectly during drags on HiDPI screens on Windows

Changes since 3.4.5

Bug fixes

  • 13508: NPE in GamePieceOpImpl.getTileIndices()
  • 13505: Dragging a card/piece off the top of a deck should not also band-select
  • 13503: At-Start Stacks and Decks in <Any> board appear in wrong place if map padding specified
  • 13467: Edited modules containing HTML img elements can’t be saved on Windows
  • 13456: At-Start Stack using Grid Location uses Location on first board, not chosen board (additional fix for 12576)

Changes since 3.4.4

Bug fixes

  • 13490: Module Manager “Show Error Log” doesn’t

Changes since 3.4.3

Bug fixes

  • 13486: Backspacing in NamedHotKeyConfigurer will no longer shift focus
  • 13471: Using BeanShell string functions in Calculated Property crashes Editor
  • 13461: Always initialise Deck on New/Load game
  • 13458: Reinstate behavior of floating point expression evaluation
  • 13454: ClassCastException in SetPersistentPropertyCommand.execute()
  • 13426: NegativeArraySizeException when receiving first private message

Changes since 3.4.2

Bug fixes

  • 13452: Bundle Java 15 with Windows and Mac packages
  • 13442: Add button for toggling password visibility
  • 13441: Multiple scaling or rotation of SVG images failed to compound
  • 13438: NPE in BoardPicker.getSelectedBoardNames() when changing owning Board of an At-Start Stack
  • 13436: Allow Module Managers from different versions to run simultaneously
  • 13435: “Bad Module Data” messages with less-than symbols misinterpreted as HTML when HTML turned on in module
  • 13434: Clarify deprecation messages
  • 13433: OBSCURED_BY_OTHERS property now returns null instead of a value in face down decks when tested using GKCs
  • 13430: Pieces move too fast while “Repositioning stack” in HDPI monitors
  • 13427: Cannot add or edit items when editing an Extension on Linux or Macs
  • 13404: Use better color picker on Linux
  • 13342: Player creates saveGame twice in a row when starting a log file
  • 13307: Background transparency in Text Labels not working
  • 2569: Improved error message for NoSuchElementException in Decorator.mergeState()

Changes since 3.4.1

Bug fixes

  • 13425: Legacy property match expressions no longer evaluated == or != correctly
  • 13416: Chatter fails to update
  • 13409: Two units in same hex do not stack when hex overlaps two boards
  • 13405: Piece window appears beside main map and chat pane instead of just the chat pane
  • 13398: Fix piece drag so that pieces can be moved a few pixels
  • 13381: Prevent BeanShell from interpreting 1D, 1F, 1L as numbers
  • 13365: Chatter component does not filter out Alt+Key commands
  • 13300: Remove “Preference” option for HTML for Chatter
  • 13279: Pivot was auto-reporting moves when auto-reporting is turned off

Changes since 3.4.0

Bug fixes

  • 13389: Chatter flickers when updated
  • 13376: NoSuchMethodError due to change of setOldProperties() signature
  • 13374: NPE in ExtensionTree.isEditable()
  • 13373: ArrayIndexOutOfBoundsException in Embellishment.getProperty()

Changes since 3.3.2

New features

  • 13313: Specify VM options for Player via a file
  • 13275: Ctrl+Mousewheel to zoom
  • 13218: Allow a piece get its context menu click location
  • 13191: Add a “Search” command to the editor for searching the nodes/names/descriptions of a module
  • 13174: Pieces in Piece Palettes (PieceSlots) can be given a scale factor
  • 13172: Undo button can now be assigned a hotkey by module designer
  • 13149: “Band Select” Improvements: immobile pieces don’t “eat” band selects, and band-select gets Does-Not-Stack filter
  • 13129: New HTML Chatter with colors, fonts/bold/italic, image tags
  • 12999: Add Beanshell functions to generate Random results
  • 3199: Add separators to menus
  • 1875: Movement Trail Enhancements: add commands to clear, turn on, turn off movement trails

Bug fixes

  • 13358: Prevent units in Zones setting OldLocationName incorrectly
  • 13356: Game refresher should not copy marker state
  • 13351: SequenceEncoder.Decoder.copy() should use start offset from parent
  • 13329: Don’t create new GPIDs for temporary pieceslots
  • 13319: Multiline HTML labels breaks toolbar button alignment
  • 13302: BasicCommandEncoder.DecoratorFactory and BasicPieceFactory should have remained public
  • 13300: HTML-Enable pref for Chatter doesn’t show for pre-3.3.3 modules without GlobalOptions
  • 13291: Fix Beanshell issues with $$ variable processing
  • 13289: Don’t print “Saving game” twice when using Save As
  • 13281: Added inadvertently removed throws declaration for Embellishment0.getCurrentImage()
  • 13280: NPE in KeyStrokeListener.keyPressed()
  • 13236: StackOverflowError: Expressions and Formatted Strings can infinite-loop
  • 13234: Rotation gets stuck due to floating point error
  • 13221: Data race in ConcurrentSoftHashMap.SoftValue.equals() and hashCode()
  • 13217: Editor: Prevent pasting a cut ancestor as its own child
  • 13216: Adding regions to Irregular Grid via GUI editor was broken
  • 13205: NPE when trying to display file write failure dialog
  • 13200: NPE in Map.setup() when attempting to dock main map
  • 13199: MapShader using image throws InternalError on Linux
  • 13196: Ctrl+Click toggles rather than only deselects
  • 13178: Game Refresher does not handle Place Markers or Prototypes correctly
  • 13171: SetGlobalProperty makes menuCommands the wrong type of array
  • 13155: Correct Dutch translations
  • 13153: Consistently ask to start logging when loading a game
  • 13146: Custom classes that are children fail to be culled in PropertiesWindow.initialized (resulting in duplicate buildFile entries)
  • 13137: Drag Threshold was effectively 1 pixel except at 100% zoom, making double-click difficult; also added preference for drag threshold adjustment
  • 13134: Some characters in Text Labels render poorly at 8pt on Windows in 3.3+
  • 13123: “Mark When Moved” trait puts blank line in menu, even if Command field left completely empty
  • 13117: Help & HTML Charts scroll unnecessarily slowly with mouse wheel
  • 13076: NPE in FlowView$FlowStrategy.layoutRow()
  • 13060: Area Of Effect generates NPE if activated when piece is not on a Map
  • 13036: Entire contents of a deck can be inadvertently group-selected and moved
  • 13018: Fix incorrect ExpressionConfigurer in SetGlobalProperty config
  • 12980: Set Global Property: Beanshell incorrectly tries to “simplify” expression and generates incorrect result
  • 12972: Return to Location backMap and backPoint are not sent to clients or undone
  • 12970: Setting values of Old… variables are not encoded in a Command
  • 12952: Evalute $..$ strings in Property Match expressions on source pce
  • 12951: Undo of Send to Deck command does not return cards to hand in same state
  • 12948: Trigger action firing multiple Moved Fixed Distance, piece ends up in incorrect position
  • 12935: NPE in MoveReporter.shouldMarkMoved assuming nonnull map
  • 12888: NPE in BooleanConfigurer.setValue
  • 12798: ClassCastException: NullCommand cannot be cast to AddPiece
  • 12648: Setup stack doesn’t recover from a piece build failure
  • 12576: At-Start stack attaches to first board listed in module, even if that board wasn’t selected by player and is inactive
  • 12554: Undo bug: Do not add the whole Stack to the DragBuffer
  • 12551: Movement Trails: locallyVisible repeatedly “initialized” resulting in buggy trail behavior
  • 12519: GlobalKeyCommand with Matching Properties does not apply ‘Fixed number of pieces’ to a Deck correctly
  • 11827: NPE in SendToLocation.getSendLocation()
  • 11355: NPE in MassPieceLoader$MyTreeTable.getCellRenderer()
  • 10414: SVG with non-px dimensions throws ImageIOException
  • 10314: NPE in GameRefresher if dialog is closed quickly while test is running
  • 3215: Global Options icons do not update themselves properly
  • 2714: NPE in StackMetrics.merge()
  • 2705: NPE in FreeRotator.mouseDragged if piece was moved off-map
  • 2377: NPE in Decorator.getOutermost() caused by PlaceMarker

Other improvements

  • 13371: Render text labels directly at the required size rather than rendering at 100% and scaling
  • 13332: Improved save game write time
  • 13325: Specify encoding for String conversion to and from bytes
  • 13301: Don’t rewrite save state when we already have it
  • 13290: Optimized serialization, unserialization
  • 13282: Stop logging debug messages by default
  • 13276: Center on Moves is now a user preference instead of a module setting
  • 13251: Add Module name to Bug summary, extra info to comments
  • 13250: Add implementation of Missing !~ Beanshell operator
  • 13243: Add functionality to methods to be deprecated and removed gracefully
  • 13239: Right-click doesn’t pick up whole stack anymore
  • 13229: Performance: Save property map rather than clone pieces as snapshot
  • 13184: CounterDetailViewer can now display overlapping counters
  • 13164: Upgrade Apache Commons libraries: commons-io 2.7, commons-codec 1.14, commons-lang3 3.10
  • 13124: Removed unused deprecated code
  • 13100: Replace Beanshell If function in Expression Builder with inline If ?:
  • 3042: Improved Retire/Resign/Switch Sides button flow

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

Minimum Requirements

VASSAL 3.4 requires Java 11 or later.

The Windows and Mac 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

Should you find any problems/oddities/bugs, please tell us so that we can fix them for a future release of VASSAL. Please report bugs in the Technical Support & Bugs category at the VASSAL forums.

Cheers,
The VASSAL Team

VASSAL 3.5.0-beta3 Released

The VASSAL Team is happy to announce VASSAL 3.5.0-beta3, which is a preview release.

IMPORTANT

  • 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.
  • Some modules containing custom drawing code may render incorrectly on HiDPI displays, starting with 3.3. If you are the maintainer of such a module, let us know and we can advise you about what needs updating in your code.

Download

Changes since 3.5.0-beta2

Bug fixes

  • 13900: MassPieceLoader trait editor shows standard Embellishment trait editor instead of MPL-specific one
  • 13886: Reinstate removed TilingHandler ctor for VASL 6.6.1
  • 13879: NPE in DieManager ctor
  • 13876: NPE in AbstractMetaData.getVassalVersion()
  • 13868: Added description field to (nearly) all traits
  • 13853: Toolbars missing from non-dockable windows
  • 13811: NPE in DiceButton.setAttribute()
  • 13810: Find all parentless Dialogs and JOptionPanes and give them a parent

Changes since 3.5.0-beta1

Bug fixes

  • 13825: “Module from older version” check is too strict
  • 13823: Map/Module Global Key Command Description not being saved
  • 13821: SendToLocation does not create Movement Trail points
  • 13783: Non-rectangular trait should remember name of image that created it
  • 13782: Suffix/Prefix fields in Layer trait are not displayed correctly
  • 13781: Bad parameter in Editor.UniqueIdManager.more_than_one message
  • 13771: NPE after cutting/pasting piece palettes in Editor
  • 13755: Chess clock help file is misnamed
  • 4324: Antialiasing RenderingHints not set properly for drawing game components

Other improvements

  • 13813: Simplified communication between Module Manager, Player, Editor
  • 13792: Combined save and log loading; Load Continuation moved from File to Tools menu
  • 13777: Improved workflow of zone editor
  • 13761: Refer to MacOS instead of MacOS X now that MacOS 11 is out

Changes since 3.4.12

New features

  • 13706: Console, for entering commands to affect errorlog, properties, etc.
  • 13522: Performance improvements for Global Key Commands
  • 13504: Simpler way to display PDF files from Help menu
  • 13494: Expose version numbers and module strings to module as properties
  • 13432: MouseOverStackViewer can show > 1 piece of a deck
  • 13417: Editor’s search function can now search piece traits and component attributes
  • 13415: MouseoverStackViewer has HTML support and additional formatting options
  • 13414: “Help” button (and help information) added to Preferences dialog
  • 13368: Added preference to control drag-at-edge-of-map width
  • 13355: Threshold for centering on opponent’s move is now configurable
  • 13352: Title Bar of module should always show most recent Save/Load/Log
  • 13297: Ability to Deselect a piece with a Key Command (also remove it from its stack)
  • 13296: Flare feature for map
  • 13219: Added KeyNamer for overriding key names
  • 1868: Method for removing unused images from modules
  • 1826: Aesthetic improvements to dialogs
  • 1807: Chess clocks
  • 1804: Added Preference for turning off sounds

Bug fixes

  • 13741: DataArchive.getImageNames() incorrectly returns an empty string if images/ has an entry in the ZIP archive
  • 13675: Piece Slots shouldn’t be allowed at very top level of Piece Palette
  • 13660: Replaced ComponentSplitter with SplitPane for better splitter positioning
  • 13659: “Remember window size” preference is no longer ignored
  • 13593: Global preferences are written when changed
  • 13509: Save As in Editor, if it fails, complains the new filename
  • 13495: Wizard should set the initial value for next save/load dialog
  • 13336: Fixed incorrect date format in SecretNotesController
  • 12946: Prevent top level required components from being deleted in Editor
  • 4779: Comparison operator >= no longer incorrectly documented as =>

Other improvements

  • 13661: Simplified ZIP archive writing and error reporting
  • 13450: Improve look of Auto Configured editor dialogs
  • 13437: Improve visibility of Logging status – Help people to remember to start logs
  • 13363: buildFile renamed to buildFile.xml
  • 13354: Add a chatter message when starting to write a logfile
  • 13353: Use native file chooser on Linux
  • 13333: Better handling of logfile/savefile comments
  • 13326: Saving a module will default to .vmod, an extension to .vext
  • 13323: Player switching sides now reported in Chat Log
  • 13098: Move Compatibility related preferences on the General tab to a new Compatibility tab
  • 1907: Suggest default filename extensions

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.

Cheers,
The VASSAL Team