No, I just recall you saying that you had changes made that weren't published to the repo yet at some point. I saw that it got recently updated.
Sorry there was some confusion. That was going to be for the Java MPQ library but I discarded them mostly in an attempt to rewrite the entire thing to use Asynchronous IO. That attempt has currently stalled for a variety of reasons.
I also did not make my BLP editor GUI open source because frankly the code is a huge joke. The thing even slightly broke with Java 9.
There are not and have never been outstanding changes for the BLP IIO library. I push them out pretty much the instant I have made them.
And no, importing a static jar defies the concept of using a Dependency manager in the first place. I would instead copy your code into wc3libs to use it. But having yours as a dependency available would of course be Ideal. If you want i can even PR a gradlefication of the repo
IIO uses the service provider interface. To read BLP images one does not even need to import a single class from the implementation. One could even place it in the class path and existing applications will suddenly support reading BLP images.
In my opinion it warrants being a separate library simply because it is a stand alone IIO plugin. Its use cases might not overlap with WC3 map components or models, so coupling it to them potentially results in dependency bloat.
I do want it to be a maven/gradle package just currently I am unsure how one goes about publishing them to be automatically linkable (so the build system fetches them automatically, similar to LWJGL). Eclipse can easily turn the project into Maven or Gradle and supports both via mature plugins, however turning that into a public resource is not too clear.
I also would suggest not making your project Java 9 dependant just yet, because it is hardly adopted so far and support is still lacking.
So when do you expect people to move to it? Java 10 is already scheduled for release in less than 2 months and Java 11 will be out in under 8 months. Oracle/Sun have moved Java to a bi-yearly major release schedule.
Many libraries such as LWJGL are already Java 9 compatible. I am not even sure if Java 9 compatibility breaks backwards compatibility unless explicit Java 9 features are used.
t least I would like to have uniformity in this monolithic library and going to another language would probably mean a different implementation, anyway.
But your library is Java and the IIO plugin is Java... What different language?
Game versions are somewhat problematic to cover, yes, since the logic could actually be totally different. I think the library and tools should focus on the most recent version of the game because it would be even more cumbersome to test, account and fork the knowledge bases for multiple versions while the game is expected to be patched by everyone either way. But otherwise it makes sense to solve this via state machine, like setting some global library variable.
Technically the BLP1 spec has not changed, just Blizzard changed their implementation of it in the 2016 patches so it is more robust. This includes the ability for it to load images larger than 512*512 pixels, which acted as an error condition before then. As far as I can see the current library treats BLP1 files larger than 512*512 as an error condition even though WC3 can still load them. You do not have to care about BLP0 as that is only used by the WC3 RoC beta which outside of researchers no one really cares about.
The resulting decoded image behaviour should be as close to the game as possible. Only differences should be where the game is clearly doing something stupid such as buffer overrun errors or choosing not to use mipmap levels with a dimension larger than 512. If the latest version of WC3 can load an image, the API should also be able to load it and the image should appear as close as possible the same.
The breakdown is already in. I do not think it's used correctly at the moment, however.
The code I saw decoded the alpha bits field as an "has alpha" boolean. I did glance over it so maybe I misread.