Inspiration

The idea for our project came right from the core values of the Green Team - promoting Environmental Sustainability to young people. Our idea was to build a Minecraft plugin which emphasizes how important every action we take affects the environment around us. Little things that we usually don't think twice about can have a devastating impact on nature. Our goal is to teach environmental sustainability in a fun and immersive way. By placing the responsibility directly in the players' hands, we hope to inspire them to think critically about their real-world impact and encourage sustainable behaviors.

The Impact

We believe that teaching young people early about the risks of climate change is essential. Our plugin aims to provide a tangible demonstration of how everyday actions contribute to global emissions and environmental degradation.

When players experience the consequences of high emissions firsthand, it fosters a deeper understanding of real-world climate challenges. Through the cause-and-effect system, we hope to shift players' perspectives and encourage sustainable habits both in-game and in real life. By offering a hands-on approach to environmental education, the plugin can serve as a tool for schools, Minecraft education servers, and community awareness programs.

Additionally, the plugin encourages cooperation. Players must work together to reduce emissions and mitigate environmental damage, reinforcing the idea that collective action is key to combating climate change. This collaborative aspect not only makes the gameplay more engaging but also mirrors the teamwork required in real-world sustainability efforts.

What it does

The plugin tracks the actions that players take, and if they would have a real-world environmental impact, it increases a carbon emission counter. As the counter ticks up, players receive various warnings encouraging them to lower their emissions. This mirrors real-life sustainability challenges, where small, cumulative actions can have profound effects.

Environmental consequences begin once the server's carbon footprint hits a certain threshold. Acid rain starts to fall, slowly destroying the world's plant life while slightly damaging players. The only way to bring emissions back down is to plant trees, reinforcing the idea that sustainable choices can reverse environmental harm. This mechanic gives players the agency to repair the world through positive actions, highlighting the balance between cause and effect.

How we built it

Since Minecraft is written in Java, this was the primary language we used. We used Paper, a high-performance fork of Spigot, which is itself a fork of the original Minecraft server software, Bukkit, which is no longer maintained. The Bukkit API allowed us to interact with the Minecraft world, whether that be checking for block updates, tracking player actions, or displaying text to the user.

We used Paper's Persistent Data Containers to store each player's carbon footprint values, ensuring that emissions data is saved across player sessions. This persistence allows the environmental impact to be felt over multiple playthroughs, increasing player engagement.

The plugin follows a modular architecture to improve maintainability and future expansion. We created dedicated Listener classes for each type of interaction—including interacting with animals, burning blocks, using furnaces, and more. These listeners communicate with utility classes, particularly the CarbonFootprintManager, which centralizes all carbon footprint calculations. Additionally, a specialized weather utility class manages the acid rain effect, causing environmental degradation when emissions reach critical levels.

We also utilized the FastBoard library to manage the in-game display of carbon emissions. This simplified the use of Bukkit's scoreboard system and allowed us to show real-time updates without impacting server performance. Our implementation prioritizes efficiency, ensuring that tracking emissions and triggering environmental effects do not cause server lag.

Challenges we ran into

We ran into issues initially when trying to come up with an idea for the challenge. We came up with a flower identifying mobile app, but after realising we were just reskinning an API, we decided to switch directions, and head into the world of Minecraft plugin development. One big challenge we faced was navigating the BUKKIT documentation, since the JavaDocs generated by bukkit is limited in what it tells.

Accomplishments that we're proud of

We are proud of the acid rain, which destroys any leaf blocks which don't have any blocks above, i.e. it destroys trees from the top down. We are also proud of our modular architecture, utilising listener classes, and utility classes, to ensure that as the project increased in scale, we had organised and easy-to-read code.

What we learned

We gained valuable experience in creating Minecraft plugins, utilizing Maven for build automation and efficient dependency management. Through this project, we also deepened our understanding of how carbon emissions are harming the environment. On the technical side, we enhanced our programming skills by implementing modular architecture and designing a cause-and-effect system, which improved both the functionality and scalability of our plugin.

What's next for CarbonCraft?

There are many ways to expand our project! For starters, we need to add more interactions that could cause emissions, as our current range is limited to core mechanics like burning blocks and using furnaces.

Possible Future Enhancements:

  • Expanded Interactions: Incorporate more emission-producing activities, such as vehicle use (e.g., minecarts), animal farming, and smelting rare resources.
  • Dynamic Biome Impact: Make different biomes react uniquely to pollution - deserts could experience droughts while forests degrade faster under acid rain.
  • Carbon Credits System: Implement a reward system where players earn "carbon credits" for positive actions, which can be exchanged for in-game perks or environmental restoration items.
  • Environmental Feedback: Add progressive environmental changes as emissions rise, such as turning the sky grey in the "yellow zone" and increasing rainfall frequency in the "amber zone."
  • API Integration: Integrate real-world climate data via public APIs to adjust in-game conditions dynamically based on global COâ‚‚ levels.
  • Collaborative Challenges: Introduce community-wide sustainability goals where players work together to reduce emissions and unlock eco-friendly in-game benefits.
  • More Environmental Effects: Add new consequences like smog reducing visibility, polluted water harming crops, or reduced animal populations in heavily polluted areas.

By continuing to build on this foundation, we aim to create a comprehensive sustainability simulator that not only entertains but also educates players on the urgency of addressing climate change.

Built With

  • bukkit
  • java
  • paper
  • spigot
Share this project:

Updates