Yay, another Glowstone release, 2017.5! This month was dedicated to squashing bugs and implementing a few missing features. However, even with that being our focus, this is one of our biggest releases yet. In 73 commits, we changed 125 files with 2,040 additions and 1,138 deletions.
Unfortunately, if you were expecting huge advancements on AI this month, as promised by our 2017.4 announcement, we weren’t able to get that done this month :(. I would expect as our dev team has more free time in the coming months that we will get it done very soon :).
Anyway, without further ado, let’s see what we’ve been up to this month.
- Pistons emit smoke on use (Momo)
- Glowstone command for debug info and single line Java REPL (Momo)
- Inventory utility for random inventory slot (Momo)
- Dispense armor to entity behavior (Christian7573)
- Some progress on nether portal creation (mastercoms)
- Initial block breaking animation implementation (satoshinm)
- Use bStats instead of MCStats (mastercoms)
- Use IdleStateHandler for read and write timeouts (louxiu)
- Use assertThat for all tests (mastercoms)
- Generify entity storage better (mastercoms)
- Spawn witches in huts (mastercoms)
- Implemented ender dragon and spawns in the end (mastercoms)
- Respect Entity#setGravity (satoshinm)
- Update bounding boxes on entity movement (mastercoms)
- Dispenser now uses updated utility for getting a random item (Christian7573)
- Signs now behave like a proper attachable block (Momo)
- Use null values where applicable in book meta (Momo)
- Don’t combine items with different metas (Momo)
- Jack O’Lantern correctly faces based on placement (satoshinm)
- Treat Bukkit plugins with Sponge API support as Bukkit plugins (satoshinm)
- Use correct Bukkit2Sponge link when Sponge plugins are detected (mastercoms)
- Place timeout handler at the top of the pipeline (louxiu)
- Fix Javadocs issues (mastercoms)
- Cleanup test code (mastercoms)
- Optimize and fix inner class usage (mastercoms)
- Fix memory leak in HTTP handler (mastercoms)
- Store one instance for zero length arrays in various places (mastercoms)
- Better use and clean up usage of latest Java constructs (mastercoms)
- Simplify various if statements and other boolean logic (mastercoms)
- Optimize String checks in commands (mastercoms)
- Use bitshift where possible (mastercoms)
- Transfer JSON loops and help map to use entry sets (mastercoms)
- Fix physics bounding box check logic (mastercoms)
- Don’t change durability on empty items (mastercoms)
- Fix ice being removed in lakes (mastercoms)
- Resolve infinite recursion in structure builder (mastercoms)
- Fix Sign interaction with hoppers (mastercoms)
- Remove invalid Lombok generated equals, toString and hash code from GlowOfflinePlayer (mastercoms)
- Short circuit powered check for dispensers (mastercoms)
- Properly spawn armor stands and item frames (mastercoms)
- Hook up unused structure populator for superflat generator (mastercoms)
- Fix Score#isScoreSet (mastercoms)
- Clean up repo files (mastercoms)
- Fix attachable null pointer exception (satoshinm)
- Remove non-empty items from crafting manager (satoshinm)
In addition to a big update to the master, we’ve also been working on things on different branches. Here are a few features that are coming to a master branch near you soon!
- JLine 3
Some work has been done to update Glowstone’s console input library JLine to version 3, from 2. The branch includes an advanced console Java code interpreter, improved tab completion and better performance, with more to come. Here’s a preview.
The next version of Minecraft, 1.12, releases on Friday, but we’ve been busy keeping up with snapshots and preview releases so that we can be ready to make 1.12 available on Glowstone as soon as possible.
- Documentation updates
Although not on a branch yet, we’ve been drafting changes to the repository documentation files like our README and contributing file. At the same time, we have also been working on a ReadTheDocs style documentation to replace our current GitHub Wiki, which has proven to be ineffective at sharing information with new and long time users alike.
- New code style and checkstyle rules
We’ve informally changed to Google code style (with a few differences) for about a year now. However, this has not been properly enforced. So, we’ve created a new branch to migrate to this new code style.
- New code of conduct
As announced in May, we are changing our code of conduct so that we may better support a productive and welcoming community, as well as be clear on enforcement of rules across all of our projects and communication channels.
Shine is Glowstone’s plugin database for recording plugin compatibility, voting on plugins you’d like to see be made compatible with Glowstone and submitting Glowstone plugins. We’ve started the project with a Node.js backend and have added authentication and templating support.
After more than two years of no code updates, our Bukkit plugin for adding SpongeAPI support to Bukkit servers has been updated for Sponge 6.0.0. We also updated a few project details to bring it more inline with our organization and project updates. However, there is much work to be done to implement API support and as we’ve mentioned before, people in our dev team aren’t interested at this time to allocate time and resources to Sponge support. If you’re interested in bringing Sponge support to Glowstone, feel free to contribute to Bukkit2Sponge!
In the master branch, we’ve fixed a bug in Sign#getFacing(), thanks to satoshinm. However, most of work has been on 1.12, where we have simplified patches and done a lot of work to get ready for 1.12.
In order to provide useful and accessible realtime GPU code translation and offload support to Glowstone without the need to create OpenCL C code, we have started planning modifications to Graal, a Java compiler written in Java, to add GPU compilation support. However, don’t get too excited. We don’t plan to get any substantial work on this done until a few months from now.
I hope you’re as excited as we are about this release! You can find the release downloads on GitHub, but please note that we only support the latest version of Glowstone.