Problem slimming down mod

-Model: Z68X-UDH3-B3

  • Windows 10 64x
  • CPU: INtel i5-3570K @ 3.40GHz
  • Memory 8GB
  • Video Card Geforce GTX 1060 3GB
  • Vassal version. 3.2.17
  • Java version. 1.8.0_144
  • Module: Working mod:
  • Module: Not working slimmed down:

Problem: I’ve been updating a mod i found on the internet for Warhammer Underworlds. The problem is that I’ve managed to bloat it with a lot of pictures and duplicates. So i thought i should slim down the pictures. This is how i got the problem:

I unzipped the mod. Removed all pictures in the images folder and then replaced them with fewer, compressed PNGs.

I rezipped the contents using 7z. And then renamed it from .zip to .vmod.

When i try to load the rezipped, and renamed mod Vassal crashed and gives me this error massage:

2019-05-27 21:59:58,951 [0-main] INFO VASSAL.launch.StartUp - Starting
2019-05-27 21:59:58,953 [0-main] INFO VASSAL.launch.StartUp - OS Windows 10 10.0
2019-05-27 21:59:58,953 [0-main] INFO VASSAL.launch.StartUp - Java version 1.8.0_144
2019-05-27 21:59:58,953 [0-main] INFO VASSAL.launch.StartUp - VASSAL version 3.2.17
2019-05-27 21:59:59,026 [0-AWT-EventQueue-0] INFO VASSAL.launch.ModuleManager - Manager
2019-05-27 22:00:46,534 [0-SwingWorker-pool-23369823-thread-2] INFO VASSAL.launch.AbstractLaunchAction - Loading module file F:\Vassal\WARHAMMER UNDERWORLDS\Crap\UNDERWORLDS MAIN MOD v1.8\UnderworldsMod1.8.vmod
2019-05-27 22:00:46,574 [0-AWT-EventQueue-0] ERROR VASSAL.tools.ErrorDialog -
java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: MALFORMED
at java.util.concurrent.FutureTask.report(Unknown Source) ~[na:1.8.0_144]
at java.util.concurrent.FutureTask.get(Unknown Source) ~[na:1.8.0_144]
at org.jdesktop.swingworker.SwingWorker.get(Unknown Source) ~[swing-worker-1.2.jar:na]
at VASSAL.launch.AbstractLaunchAction$LaunchTask.done(AbstractLaunchAction.java:604) ~[Vengine.jar:na]
at VASSAL.launch.Player$LaunchAction$1.done(Player.java:188) [Vengine.jar:na]
at org.jdesktop.swingworker.SwingWorker$5.run(Unknown Source) [swing-worker-1.2.jar:na]
at org.jdesktop.swingworker.SwingWorker$DoSubmitAccumulativeRunnable.run(Unknown Source) [swing-worker-1.2.jar:na]
at org.jdesktop.swingworker.AccumulativeRunnable.run(Unknown Source) [swing-worker-1.2.jar:na]
at org.jdesktop.swingworker.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(Unknown Source) [swing-worker-1.2.jar:na]
at javax.swing.Timer.fireActionPerformed(Unknown Source) [na:1.8.0_144]
at javax.swing.Timer$DoPostEvent.run(Unknown Source) [na:1.8.0_144]
at java.awt.event.InvocationEvent.dispatch(Unknown Source) [na:1.8.0_144]
at java.awt.EventQueue.dispatchEventImpl(Unknown Source) [na:1.8.0_144]
at java.awt.EventQueue.access$500(Unknown Source) [na:1.8.0_144]
at java.awt.EventQueue$3.run(Unknown Source) [na:1.8.0_144]
at java.awt.EventQueue$3.run(Unknown Source) [na:1.8.0_144]
at java.security.AccessController.doPrivileged(Native Method) [na:1.8.0_144]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) [na:1.8.0_144]
at java.awt.EventQueue.dispatchEvent(Unknown Source) [na:1.8.0_144]
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) [na:1.8.0_144]
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) [na:1.8.0_144]
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) [na:1.8.0_144]
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [na:1.8.0_144]
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [na:1.8.0_144]
at java.awt.EventDispatchThread.run(Unknown Source) [na:1.8.0_144]
Caused by: java.lang.IllegalArgumentException: MALFORMED
at java.util.zip.ZipCoder.toString(Unknown Source) ~[na:1.8.0_144]
at java.util.zip.ZipFile.getZipEntry(Unknown Source) ~[na:1.8.0_144]
at java.util.zip.ZipFile.access$900(Unknown Source) ~[na:1.8.0_144]
at java.util.zip.ZipFile$ZipEntryIterator.next(Unknown Source) ~[na:1.8.0_144]
at java.util.zip.ZipFile$ZipEntryIterator.nextElement(Unknown Source) ~[na:1.8.0_144]
at java.util.zip.ZipFile$ZipEntryIterator.nextElement(Unknown Source) ~[na:1.8.0_144]
at VASSAL.tools.IterableEnumeration.next(IterableEnumeration.java:57) ~[Vengine.jar:na]
at VASSAL.tools.io.ZipArchive.readEntries(ZipArchive.java:622) ~[Vengine.jar:na]
at VASSAL.tools.io.ZipArchive.openIfClosed(ZipArchive.java:631) ~[Vengine.jar:na]
at VASSAL.tools.io.ZipArchive.getFiles(ZipArchive.java:594) ~[Vengine.jar:na]
at VASSAL.tools.DataArchive.getLocalImageNames(DataArchive.java:366) ~[Vengine.jar:na]
at VASSAL.tools.DataArchive.getImageNamesRecursively(DataArchive.java:352) ~[Vengine.jar:na]
at VASSAL.tools.DataArchive.getImageNameSet(DataArchive.java:347) ~[Vengine.jar:na]
at VASSAL.launch.TilingHandler.findImages(TilingHandler.java:133) ~[Vengine.jar:na]
at VASSAL.launch.TilingHandler.sliceTiles(TilingHandler.java:347) ~[Vengine.jar:na]
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:281) ~[Vengine.jar:na]
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:244) ~[Vengine.jar:na]
at org.jdesktop.swingworker.SwingWorker$1.call(Unknown Source) ~[swing-worker-1.2.jar:na]
at java.util.concurrent.FutureTask.run(Unknown Source) ~[na:1.8.0_144]
at org.jdesktop.swingworker.SwingWorker.run(Unknown Source) ~[swing-worker-1.2.jar:na]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:1.8.0_144]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:1.8.0_144]
at java.lang.Thread.run(Unknown Source) ~[na:1.8.0_144]

Am I doing something wrong in the slimming down process?

Thanks in advance / Tom

I use 7zip, it allows you to add/remove files without unzipping a file. have a copy of the module opened in edit mode. before deleting a file check to ensure that its not currently the one being used.

Another thing I do. when I update a .png, .jpeg ect. copy the new picture over the old one (same name).

  1. Then in vassal editor go to the link to that picture.
  2. link to a different graphic already in use, say ok.
  3. reopen and re-link to original name.

As long an you use same graphic names, vassal doesn’t include new files to the VMOD.
HOWEVER be careful I use multiple folders for organization when making a module.
Nothing will destroy a module quicker than calling 2 (two) identically named files into a VMOD.

Thanks for your reply!

So if i understand you correctly? I can’t just replace one .png file with another (using the exact same name) and then expect it to work. I need to re-link each picture through vassal even though they have the same name? I’m hoping this is not the case because i have 1500 pictures i need to re-link in that case. I think it will be easier to redo the whole mod in that case.

Replacing image files will work if they have the same name and dimensions. If they do not have the same dimensions, you may find that predefined setups and saved scenarios are a bit odd.