SkyLink: sunny outside, sunny inside

Walk In a Park Can Change Everything

One day, when I was walking in a park by our school with my friends, right before our IT class, we were brainstorming ideas for a new project. We’ve already completed most of our mandatory work. We wanted to create something new. An idea popped up for one of my friends - What if we made something in Minecraft? We instantly rushed to another friend, who was a Minecraft enthusiast, and asked him if he could help us finish brainstorming. And he, without hesitation, said: Let’s make a weather plugin.

Over the course of next week I gathered all the resources necessary, made a presentation about our development foundation, made a GitHub organization and a repository for SkyLink, and we started working on it. Source code is accessible here.

Later we found out that another class was building a Minecraft replica of our school, and our IT teachers suggested we collaborate with them. One of my best decisions within the lifetime of this project was to accept this offer.

In this post I’ll talk entirely about the development process of SkyLink, as map development was offloaded to a newly formed group of people, mixed from both classes, where I didn’t have much input.

The Development Process

To ensure a smooth flow of development, I instantly thought of using GitHub because of many conveniences it offers:

  • Collaboration tools: It was very easy to provision a repsonsibility system with great separation of concerns.
  • GitHub Codespaces: I was afraid it would be hard to ensure code commits and safety across school’s computers. Web-based code editing was a great solution to this problem.
  • Easy building and deployment: GitHub Actions allowed us to easily build and deploy our plugin to a test server and later transform it into a production-ready version.

Teamwork

The development started by us assigning ourselves to different groups. The groups were distributed based on responsibilities:

  • API implementation: The project was a server-server application and it needed both a Python server to provide Java plugin with data and the plugin itself. More about the architecture can be found in the architecture section.
  • Java plugin: The plugin was the main part of the project. It was responsible for receiving data from the API and updating the Minecraft world accordingly.
  • Rain data parsing: This team’s job was to convert the data from weather API into a format that could be used by the Java plugin.
  • Sun position translation: Project didn’t rely on time, it instead relied on real-world sun position. This team’s effort was pure math.
  • Weather API integration: This team was responsible for fetching data from OpenMeteo for other teams to use.

Teams consisted of around 5 people. Each had their own leadership, heads of code implementation and communication.

Architecture

Every group had their own branch and could only work with a dedicated folder. After some work was done, leaders would create a pull request to the main branch, which was reviewed by me.

Having every part of the project depend on others solved the problem of going out of sync, by explicitly forcing to work together. Everything is well documented and connected to form a single project. The architecture of the project is as follows:

skylink/
├── api/                        # Combined mega-API service
├── weather_api_integration/    # Shared weather utilities
├── rain_data_parsing/          # Precipitation endpoint service
├── sun_position_translation/   # Time/ticks endpoint service
├── papermc-mod/                # Minecraft plugin (Java)
└── scripts/                    # Deployment automation

Work Ethics

By encorporating Agile methodics our work turned out to not only be mordern, but also very effective. Each lesson we had a clear agenda of what was needed to be done, and we even finished works earlier than expected. That’s a total win from any perspective.

Deployment And Achievements

Our IT teacher was also super friendly to the idea and even provided us with a server. At first out thought was to use a PC on school’s network, but we couldn’t fulfill it. A cheap hosting solution helped us out and we hosted both the API and Minecraft server with SkyLink plugin on it.

One of ways people could join in to an official open door day event was through this Minecraft server. I was very proud to see people from across the town I live in play in the server, even if they weren’t masses.

Conclusion

From my eyes, SkyLink was and still is a totally outstanding project. Not only is it something with a working concept, but also built by a big community, and helped promote my school, together with the people who worked on SkyLink + Minecraft.

I hope to have more achievements like this in the future, with similar success and impact. Both for me and for the people I work with and make projects for.