[Tool] GD Stash

Thanks for the new version! But I have a problem now. The shared stash can be loaded without any problem. But when I click ‘Save Stash’, the shared stash is not updated. Is it a bug?

Welcome to the forum. :slightly_smiling_face:

If you close the programme you should see a message asking if you want to save any changes. This is because the Save Stash button isn’t working properly far as I can see.

Thanks

But I did not have a player loaded, also if I searched for “assault” under all armor it showed a level, I’m assuming item level? (1.7.7 and latest java)

that’s irrelevant
GDstash shows player level requirement, since commons have no player requirement it shows as 0 because they only have ilvl
GrimTools shows item level aside from player level; but on items without player level, like commons it only shows item level
image

see the difference?

Got this error importing GD database…

Repair your GD files

Good Day I trust you are all doing well.

I actually only tried a stasher once and that was in the early stages of Titan Quest and it did not end well as I lost all my items :grin: One thing I want to find out. First I am not a programmer I can just read code. This seems to point to the games original Database file. Would it give problems when I point the File to a mod database? I think it might give problems as the items won’t be loaded on gdstash.

No, there are no problems, you can also import a mod and its items, you will need to make sure to only give mod items to mod stashes / characters however, as they would be deleted / not recognized by vanilla GD

Ya thanks

Does it only apply to common or all item?

mainly commons,
i think there is a few other low level items without player level and only item level, like lowest version of francis gun iirc

I’m using Microsoft’s Java JDK version 17.0.4+8 and am getting the same error that jadite did above.
I also tried using version 21.0.3+9. It does save when you exit GDStash and it prompts you to save the file like jadite.

I even changed the paramater -Xmx1024 to -Xmx2048 and that didn’t make a difference (I didn’t think it would, but nothing to lose).

The 17.0.4 version of Java worked in previous versions (it’s been about 9 months since I played, maybe a year).

I also tried the Oracle JDK 22.0.1 and this failed with the same issue.

I did re-import the GD database and GDStash does see the characters and what’s currently in the stash.

I just play vanilla GD.

C:\Users<USERNAME>\Documents\My Games\GDStash>C:\Users<USERNAME>\Documents\Java\Microsoft\jdk\17.0.4+8\bin\java.exe -Xms1024m -Xmx1024m -jar GDStash.jar
Exception in thread “AWT-EventQueue-0” java.lang.StringIndexOutOfBoundsException: begin 47, end 46, length 46
at java.base/java.lang.String.checkBoundsBeginEnd(String.java:4604)
at java.base/java.lang.String.substring(String.java:2707)
at java.base/java.lang.String.substring(String.java:2680)
at org.gdstash.ui.GDCraftPane.updateStashFile(GDCraftPane.java:610)
at org.gdstash.ui.GDCraftPane$FileSaveActionListener.actionPerformed(GDCraftPane.java:118)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
at java.desktop/java.awt.Component.processEvent(Component.java:6391)
at java.desktop/java.awt.Container.processEvent(Container.java:2266)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Exception in thread “AWT-EventQueue-0” java.lang.StringIndexOutOfBoundsException: begin 47, end 46, length 46
at java.base/java.lang.String.checkBoundsBeginEnd(String.java:4604)
at java.base/java.lang.String.substring(String.java:2707)
at java.base/java.lang.String.substring(String.java:2680)
at org.gdstash.ui.GDCraftPane.updateStashFile(GDCraftPane.java:610)
at org.gdstash.ui.GDCraftPane$FileSaveActionListener.actionPerformed(GDCraftPane.java:118)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
at java.desktop/java.awt.Component.processEvent(Component.java:6391)
at java.desktop/java.awt.Container.processEvent(Container.java:2266)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Is there any way to specify the location for the db if we want to move it out of C:\Users?

GDStash v. 1.7.7 does not save changes to the chest. If you exit the program, it will offer to save changes.

3 Likes

I am having trouble understanding the functionality of the tool and also saving changes to my stash.

  • Crafting Issue: I craft an item in the “Crafting” tab, but when I save the stash and reload, the item disappears.
  • Transfer Issue: Using “Stash Transfer” also doesn’t work. I search for the item, move the item to the stash, save, and reload, but it vanishes. However, I can still find it through search.

I am running the tool as Admin.

Combining Item Files for Efficiency:
Is there a way to combine the files from “load items from dir” and “load item assistant file” into a single DB Stash file? If so, how? This is my current process but doesn’t seem to work:
1. Load “items from dir” > “select valid only” > “import items”
2. Load “load item assistant file” > “select valid only” > “import items”
What happens after that? What should be done? When I do “Export DB Stash” and then “load gd stash file” it only shows the latter (#2) items that were imported.

Import Items Function:
Finally, I’m unsure about the “Import Items” function in the Im/Export tab. What does it do? Does it create a new file? What does it import? I set the “import directory,” but I haven’t seen any DB files generated by GD Stash.

Version 1.7.7a released

Fixes the stash save issue

6 Likes

download the 1.7.7a version and try again

after that the items from both sets should be in the GD Stash database

that should not happen. After the first step, when you search for the items in GD Stash, do you find them?

it is reading the items from that dir and its subdirs, i.e. the dir to read should be the GD save dir, so it can import the stash and characters. The import stores them in the GD Stash database, no file will be created in the dir.

Export creates a file with the items in the GD Stash DB

1 Like

Still doesn’t save.

Works for me. Just installed 1.7.7a now and tried it.

Does not work. For the saves to take effect, you need to close the program, then the changes are saved.

Chinese localization text for 1.7.7a
GDStash_v177a_Chinese.zip (16.9 KB)