Inspiration

Our group loves Minecraft, so we figured what better way to spend a hackathon than to create a Minecraft mod? Beyond being a creative environment to code in, it provides a power visual representation of a difficult abstract computer science concept.

What it does

This mod simulates running a deterministic finite-state automaton (DFA). This is a concept we learned in our first week of theory of computation this semester. This mod can be a powerful tool to help visualize abstract concepts in a way that makes it more simple to understand, as well as a way to experiment with DFA in an easy to use interface that many users across all skill levels would be familiar with.

How we built it

We used IntelliJ, Gradle, and Forge in tandem to build and run our custom Minecraft mod. As Minecraft is a Java based game, we used elements from the standard Java library as well as the Forge modded library. Additionally, we used PiskelApp to create the custom blocks needed to represent the DFA nodes. Once finished, we exported it as its own mod, able to be imported as any Minecraft mod.

Challenges we ran into

Some challenges during early development included creating GUIs in Minecraft's engine, branch migration, and particularly implementing text boxes. Furthermore as we progressed throughout the night, we realized that the functionality we wished to implement could not be assigned to the DFA Node classes. Rather we had to create a separate DFA class that called on functionality from the blocks themselves. Furthermore this class provides the logic that runs the DFA. This took quite some time as we attempted to troubleshoot and implement functions from both the Java and Forge API’s.

Accomplishments that we're proud of

None of us have made a mod in Minecraft before, so this was very much a labor of love for our team. We also implemented a wide variety of skills across the team including graphic design, front end functionality, and back end management.

What we learned

We learned that Minecraft modding is much more complicated than we anticipated! Minecraft relies heavily on polymorphism, and as such many techniques that can be applied in Java had to be modified for use within Minecraft in order to preserve functionality. We gained valuable hands-on experience with IntelliJ, and for some of us, opinions on Java have been completely rewritten.

What's next for the Finite Automata Minecraft Mod?

We plan on continuing development post-hackathon, as this involves concepts from a class that we haven't finished yet! This will transition into a passion project, and because theory of computation is such an interesting yet difficult concept, the DFA mod can provide valuable experience to a variety of users for all skills. We hope to scale the project up by allowing for multiple machines to exist within the same world. We also wish to add more functionality, as well as cleaning up the mod so that it fits even more seamlessly into standard Minecraft.

Built With

Share this project:

Updates