For information about how to use PackSquash, please check out the getting started guide and the options files documentation.
🔍 Overview
v0.4.1 is a minor (i.e., non-breaking) update to PackSquash, but that doesn't make it any less important: it brings numerous fixes, tweaks, and new features to a wider audience. These improvements were previously only available in unstable PackSquash builds, where they remained for quite some time before making it into this official release. Some user-facing highlights include:
- ✅ Better compatibility with modern packs:
- Packs generated with the
disregardZIP conformance level now work in Minecraft versions using Java 22+. - Newer resource and data pack files are handled correctly instead of being skipped.
- Several shader mis-optimization issues have been fixed with no user workarounds required.
- Packs generated with the
- 🖼️ PNG obfuscation: protect textures from being easily viewed outside Minecraft with the new
png_obfuscationoption. - 💬 ZIP comments: add custom comment strings to generated ZIP files with the new
zip_commentoption. This provides an alternative to embedding text files in your pack for conveying information about it, which you may find better suited for your use case. - 📦 NBT optimization: datapack
.nbtfiles now use a dedicated compression algorithm. - 🔤 JSON key sorting: JSON object keys are now sorted by default for better compression and reproducibility. Control this per file with the
sort_json_object_keysoption. - 🚀 Better performance: static Linux binaries (used by the GitHub Action) are ~5× faster. Zopfli compression is ~15% faster, large textures are optimized up to ~30% faster, and real-world packs have been observed to end up ~25% smaller.
📌 Changelog
For a detailed list of all changes, please see the CHANGELOG.md file in the repository.
⬆️ Upgrading from v0.4.0
Upgrading to PackSquash v0.4.1 should be straightforward: it accepts the same options as v0.4.0 but more, essentially functioning as an improved v0.4.0. If you're running Linux, note that glibc binaries now require glibc 2.36 or newer. However, this shouldn't be a concern if your distribution is up to date or if you're using the PackSquash Docker image.
The PackSquash GitHub action has also been updated to work with this release.
🌟 Hall of fame
Every community contribution matters and is equally valued. That said, we'd like to use this release as an opportunity to give a shout-out to those who, during the development of this version, went beyond the usual level of involvement with concrete actions that had a lasting effect on the project, in no particular order:
- @Spongecade, for submitting PR #256.
- @emmanuel-ferdman, for submitting PR #332.
- @ChenCMD, for submitting PR #366.
- @ZebulanStanphill, for submitting PR #372.
- @MrKinau, for repeatedly helping people on Discord by answering support questions with spot-on guidance, without ever being asked.
- @AmberFrost, for designing the current PackSquash logo and artwork.
Thank you to all of you, including those who contributed more quietly, for making PackSquash better!
📝 An honest maintainer reflection
Click to view
As a matter of fact, this is the first PackSquash release in... two years. A lot has happened in that time, both for me personally and in the wider world. To the most casual external observer, one oblivious to what goes on in our Discord server, to the steady work that happened on the main branch, and to the fact that PackSquash is still mostly a labor of love by a single person with fluctuating interests and availability, this might look like staleness. Or abandonment. Or any number of other uncharitable labels.
I'm not going to take a page out of the usual corporate playbook and stay quiet about it, or try to gloss it over so a superficial appearance of unrealistic, ever-persistent growth and success can be preserved.
Instead, I want to be atypically human and honest.
I already have a full-time job where I've built great working relationships with people who routinely ask me to make some piece of software do X by date Y for project Z. With PackSquash, I've sometimes tried to please people who see it purely as a cost-effective solution to their business problems: people who bring little to the table beyond idle suggestions and "when will X be done?" questions that demand oversimplified answers. By doing that, I found myself giving assurances I would normally reserve for paid work, but with some crucial differences: they don't try to make their intentions less transactional; the steepness of the ask, which effectively expects someone to effectively be overemployed in their free time, indefinitely, is glossed over; and there is absolutely none of the job stability that lets someone pay rent or a mortgage, or social responsibility that lets them sleep well at night. In short: it didn't feel right, nor sustainable.
So to those people, I want to say this plainly: I'm tired of playing "corporate" on precarious foundations just because cool ideas for a game we love. I won't do it anymore.
What keeps pulling me back to PackSquash is, simply put, passion, and (healthy? unreasonable?) stubbornness. I'm happy when I can explore ideas, think deeply, be creative, and share something genuinely useful with the community, free from the expectations of any for-profit endeavor. There is no business to be made here, and that's the point. This is an open-source project in both license and spirit, driven by the ideal of building a community where people get involved, collaborate for the greater good and for human growth, and care about one another. I need that small shed of light in a world where most headlines are painted in darker shades.
So to everyone who submits PRs, sticks around on the Discord server, shares feedback without ulterior motives, is honestly friendly, or even just respects, uses, supports, and promotes the work in good faith: thank you, truly ❤️. You're exactly the kind of people who remind me that I'm not alone in the pursuit a kinder, more hopeful, more advanced world. One that can start, symbolically, with something as simple as building a tool for a block game. And so far, that has been worth far more to me, and I believe to the wider community too, than pretending to reliably shuffle sprint tasks around under some made up deadline, in service of a hollow business goal.
Let's look forward to continuing to be excellent to each other, without letting ourselves get caught up in institutions that feel so tone-deaf to a collective goal of self-actualization.