Sackville
Overview
Sackville replaces the default bag interface with virtual bags using customizable filtering and sorting rules. Type /sack help in-game to see available options or just /sack to open the configuration screen.
Latest News
2012-10/25 The plan for this evening is to add a profile management screen so that you can copy a profile from another character. Another feature that I want to add soon is the ability to add per-bag enable/disable and the ability to make a copy of a bag so that you can easily duplicate a player bag to a bank bag.
2012-10-22 New alpha build pushed to integrate with the game Interface menu. Now, any changes are not committed until you click the Okay button, or changes are reverted if you click Cancel. I also added support for equipment sets. You can also reset your profile from the configuration screen. The configuration screenshots are now slightly outdated and I will update them at some point.
Current Features
- Create custom rules to control which sections you want items to appear in. Filtering options include:
- item type, subType, quality, item level, name, item ID, equipment set, and more.
- Bags grow dynamically as items are added to them.
- Multi-level sorting for each section. For example, you can sort your trade goods first by name (ascending) then by stack size (descending).
- Configurable bag order
- Configurable section order
- Bags and sections can be minimized.
- Bag search feature which works the same way as the one in the default UI.
- Configuration and bag state is remembered for each character.
- All empty slots are compressed
- Multi-language support
TO DO
For Beta release
In preparation for a Beta release, there are several objectives that I want to meet.
- Add profile management support
- Add configuration option to set the maximum bag width. This will make it possible for a user to build a one-bag configuration.
- Create a filter for Farming-related items: Tools, Seeds, and Vegetables
- Fix known bugs.
- Code clean up
- Write documentation.
After the beta release has proven itself stable for some time and there are no unresolved bugs, then I will tag the project for Release status. At this time I may record an in-game video demonstrating all available features.
Future development items
- Implement auto-stacking feature and auto-move to put items into special bags (herb bags, inscription bags, etc)
- Implement an "offline mode" for viewing bank/alt inventory and also support searching all characters for items.
- Experiment with support for Void Storage
- Add option to compress items into a virtual stack, so for example you could have one stack of 100 herbs instead of 5 stacks of 20.
- Add a visual flag newly added items and add a button to reset all of the New indicators.
- more to come...
Known Bugs/Problems
- Editing certain configurations options, especially category rules, may cause your game to freeze momentarily. This is because every time you change a setting it causes your bags to fully refresh. In the future, I'll change this behavior so that it only applies changes when you click a button to confirm.
- Sometimes when you open the bags you will see one bag partially overlap with another. This problem goes away if you close the bags and re-open them.
- When a new item is added to a minimized section, the icon is not hidden immediately if the bags are already open.
- Search highlighting should be refreshed when there is an inventory update.
- Tooltips might occasionally overlap the item you are hovering over in rare cases.
- Sometimes an item will appear desaturated.
About Sackville
Why should I use a bag addon?
If you are using the default bag UI, then you've probably noticed that it takes a non-trivial amount of work trying to keep your bags organized so that you can find the items you need. You're forced to plan around the limitation of how many slots are available and every time you move items in and out there's some overhead involved in maintaining order. The purpose of an inventory addon is to remove this limitation and make it easier to stay organized.
Why Sackville and not some other addon?
Some simple inventory addons will just give you a "one bag" interface where graphically all of your inventory slots are combined into one group. This removes your concern about which bags are full or empty and just lets you focus on using your available space, but they don't do anything to help you organize.
Other addons may try to group items automatically for you, but then give you limited flexibility to customize the way that your items are arranged/grouped.
Other addons may have most of the features you want but are too complicated to manage or the code is abandoned/outdated (I'm looking at you, Baggins).
My goal for Sackville is to provide a default user experience that is good for the majority of users, to not overwhelm the user with options, but provide enough flexibility to be able to meet the needs of more advanced users. With that in mind, I've developed Sackville with maintainability and extensibility in mind. I've tried to make the code as modular as I can so that individual components can be updated more easily to add features and and other developers will have an easier time getting involved.
Speaking of development, let's take a moment to talk about licensing. When you see a project with "All Rights Reserved", then you don't have the freedom to fix bugs or add features on your own and then share them with others if the author is unresponsive or unwilling to co-operate. In contrast, I have chosen the GPLv3 license for this addon which basically means that anyone is free to modify and redistribute this addon as long as those freedoms are preserved for others. That means that if I ever became unresponsive to the needs of my users or if another developer wanted to take the project in a different direction, they would be free to copy all of the code and continue work under their own banner. I believe this preservation of freedom leads to a more vibrant development community around a project because contributors can be confident knowing that their work will always be available for others to use and never be locked away behind a proprietary license.
With that in mind, it is my intention to make the most elegant, useful, stable inventory addon in existence. Now's your chance to get on board as an early adopter to help test it and shape the future direction.
yeah id dl bag sync and give it a whirl , i can do a bag search form bagnon , but being able to saee what toons have a specific item how many and where is invaluable to me as I have so many toons with so many items.
@Dohram
I definitely want to provide functionality like Mr. Plow.
Bag Sync functionality is a possibility, but I haven't done any work on custom tooltips yet so that could be a lot of work. What I'm thinking about doing is implementing an "offline mode" for Sackville so that you can open a read-only view of your bags/bank for any character.
Void Storage support makes sense, and I may experiment with this soon.
Guild Bank support is an item for future consideration, but it is not a high priority.
None of the above will be implemented for the first stable release. Right now I'm focused on core functionality and making sure that the configuration screen works properly.
Bagnon - one bag mod for banks and bags , as a side not it has gbank and void storage look up. Mr. Plow - stacking sorting addon also with gbank functionality. Bag Sync - when you con over an item or tooltip from anywhere it shows you what other toons,banks personal or guild have that same item and in what quantity. Not sure if sackville has this. but the first 2 for sure. I just dled the newest alpha ill test it out and report.
@Dohram
Thanks for the message! When I haven't been busy leveling up in Pandaria, I've been working on the configuration interface, which turns out to be a lot of work, and I'm planning to post a new alpha release this weekend.
Could you tell me which 3 or 4 mods you had in mind to replace? I just want to know what kind of features are most important to people.
this is a pretty ambitious and epic mod , it will replace like 3 or 4 other mods im currently using so far I love it , if there is anything I can do to help you test it let me know. I have 11 horde and 11 allies on us realms , ranging from lvl 1-30 on allies and 85-90 on horde
@JoKe0210
Thank you for the report. It is my intention to support the German client through localization, but I don't have that fully implemented yet. I will try to fix this soon so that you can test Sackville in the German client without getting error messages.
Hi, I found the error. It was my fault. I have tried to run Sackville on the german client. This resulted in Lua errors. I've switched to the English client, here it runs perfectly. Sorry for the confusion.
Ok, I've tried your latest Version "r20120915154649 ".
After logging in it occurs an lua error:
________________
Message: Sackville-r20120915154649\Filter-Filter.lua:35: Tried loading non-existant filter with path: Consumable Time: 09/15/12 20:29:42 Count: 5 Stack: Interface\AddOns\Sackville\Filter.lua:35: in function `GetFilter' Interface\AddOns\Sackville\Filter.lua:53: in function `ItemMatchesRules' Interface\AddOns\Sackville\Section.lua:103: in function `MatchItem' Interface\AddOns\Sackville\Sackville.lua:450: in function `GetBagSectionForItem' Interface\AddOns\Sackville\Sackville.lua:408: in function `ProcessScanResult' Interface\AddOns\Sackville\Sackville.lua:257: in function `InitializePlayerBags' Interface\AddOns\Sackville\Sackville.lua:601: in function `ShowPlayerBags' Interface\AddOns\Sackville\Sackville.lua:590: in function <Interface\AddOns\Sackville\Sackville.lua:586> (tail call): ? [string "OPENALLBAGS"]:1: in function <[string "OPENALLBAGS"]:1>
Locals: self = <table> { GetFilter = <function> defined @Interface\AddOns\Sackville\Filter.lua:30 ItemMatchesRules = <function> defined @Interface\AddOns\Sackville\Filter.lua:43 AddFilter = <function> defined @Interface\AddOns\Sackville\Filter.lua:8 } path = "Consumable" tree = <table> { Verbrauchbar = <table> { } Verschiedenes = <table> { } Behälter = <table> { } Equipment = <table> { } Handwerkswaren = <table> { } Edelstein = <table> { } Waffe = <table> { } Rezept = <table> { } Rüstung = <table> { } Quest = <table> { } Quality = <table> { } } debugPath = "Consumable" current = "Consumable" rest = nil allFilters = <table> { Verbrauchbar = <table> { } Verschiedenes = <table> { } Behälter = <table> { } Equipment = <table> { } Handwerkswaren = <table> { } Edelstein = <table> { } Waffe = <table> { } Rezept = <table> { } Rüstung = <table> { } Quest = <table> { } Quality = <table> { } } Sackville = <table> { BANKFRAME_OPENED = <function> defined @Interface\AddOns\Sackville\Sackville.lua:170 SetDefaultModuleLibraries = <function> defined @Interface\AddOns\AtlasLoot_Loader\Libs\AceAddon-3.0\AceAddon-3.0.lua:383 DoNothing = <function> defined @Interface\AddOns\Sackville\Sackville.lua:663 RebuildInventory = <function> defined @Interface\AddOns\Sackville\Sackville.lua:313 EnableModule = <function> defined @Interface\AddOns\AtlasLoot_Loader\Libs\AceAddon-3.0\AceAddon-3.0.lua:348 modules = <table> { } SearchBoxUpdate = <function> defined @Interface\AddOns\Sackville\Sackville.lua:223 IterateEmbeds = <function> defined @Interface\AddOns\AtlasLoot_Loader\Libs\AceAddon-3.0\AceAddon-3.0.lua:458 SecureHookScript = <function> defined @Interface\AddOns\Chatter\Libs\AceHook-3.0\AceHook-3.0.lua:413 RawHookScript = <function> defined @Interface\AddOns\Chatter\Libs\AceHook-3.0\AceHook-3.0.lua:398 Printf = <function> defined @Interface\AddOns\ButtonFacade\Libs\AceConsole-3.0\AceConsole-3.0.lua:69 SetDefaultModulePrototype = <function> defined @Interface\AddOns\AtlasLoot_Loader\Libs\AceAddon-3.0\AceAddon-3.0.lua:425 defaultModuleState = true Filter = <table> { } IsEnabled = <function> defined @Interface\AddOns\AtlasLoot_Loader\Libs\AceAddon-3.0\AceAddon-3.0.lua:467 CloseAllWindows = <function> defined @Interface\AddOns\Sackville\Sackville.lua:573 ShowPlayerBags = <function> defined @Interface\AddOns\Sackville\Sackville.lua:594 DisableModule = <function> defined @Interface\AddOns\AtlasLoot_Loader\Libs\AceAddon-3.0\AceAddon-3.0.lua:366 Bag = <table> { } RegisterMessage = <function> defined @Interface\AddOns\Ara_Broker_Guild_Friends\libs\CallbackHandler-1.0.lua:118 UnregisterMessage = <function> defined @Interface\AddOns\Ara_Broker_Guild_Friends\libs\CallbackHandler-1.0.lua:181 IsHooked = <function> defined @Interface\AddOns\Chatter\Libs\AceHook-3.0\AceHook-3.0.lua:496 InitializePlayerBags = <function> defined @Interface\AddOns\Sackville\Sackville.lua:251 db = <table> { } InitializeVirtualBags = <function> defined @Interface\AddOns\Sackville\Sackville.lua:237 SetEnabledState = <function> defined @Interface\AddOns\AtlasLoot_Loader\Libs\ ________________
When I open the bag, I can see the bags with the different categories, the money, the search-box and the empty slot field, but I have no items in the bags, it's all empty.
In the upper left corner of my monitor it shows a icon with a pink or green border, i think it's one item from my bag. Reload the ui causes unfortunately nothing. The lua error appears again.
@JoKe0210
Which build are you using? Does the problem go away if you /reload your UI? I though that I had squashed that bug a couple of weeks ago. Please try the latest version and tell me if you're still having trouble.
Is something going wrong? I can't see any item in the bags, only the borders and the background. hmm