Navazio — Finalized Thesis Plan (Now with Timeline!!!)

Nina’s at it again with another post about her thesis, but this time there’s more info & weird formatting

this is a required post for homework, i do apologize for all the posts. And wow this one is… uh… it’s got a lotta words.
Don’t worry, there’s another tl;dr at the end

THIS POST IS NOT INTENDED FOR MOBILE VIEWING. This post is intended for desktop / horizontal viewing. It's not a huge deal, but the timeline section gets messed up on mobile. Here is a simplified version as a slideshow for your convenience. 

Above photo found here: https://stocksnap.io/photo/blue-night-4VYCIPZ8QD

TABLE OF ALL THE CONTENTS


gif of a Nether Star from Minecraft. It shimmers.

BACKGROUND

gif of temmie from the game Undertale. Their face moves slightly.

Remember to look up at the stars and not down at your feet.

Stephen Hawking

My project idea is simple: add constellations to Minecraft. This project is my attempt to learn more about the engineering and back-end side of how one of my favorite games works as well as get the chance to learn more about astronomy and the math behind it all. This project is inspired by my love of the stars after visiting Kodachrome Basin State Park in Utah as a kid after a near-death experience on Route 400 (that’s a wild tale). It was the first time I can remember looking up at the sky and seeing real darkness, absolutely no light pollution, and hearing stories about the constellations. It’s also coupled with my love of Minecraft, a game I’ve been playing since, like, Beta. I’ve always wanted to see constellations in Minecraft, so I think it’s high time I add them myself!

This project also plays into my long-standing passion for education: every game of survival Minecraft reflects the troubles and tribulations our ancestors struggled through for survival, moving up through Maslow’s hierarchy until we’re actualized. Prof. Ault pointed out that modding the stars is a logical step in the progression of Minecraft in parallel with our own human history, just as our ancestors looked to the stars for survival and continue to look to the stars for navigation, even today.

I’ll also get experience on the back-end of making a game since I’m usually front-end development for graphic design and content writing. I hope to work in the games industry at some point, so this will be a nice lesson on what my other teammates do in the process of making a game.

Hopefully in April I’ll have a functioning mod that adds constellations to Minecraft. Although my audience is limited to those who play or are interested in Minecraft (or astronomy I guess), I’ll hopefully be able to release my mod for downloads for others to use. This is perfect timing with the Caves & Cliffs update that adds a telescope to the game, so players can look more closely at the stars and constellations if they’d like. See Mendez’s question in the section “Your Questions, Answered” for more talk about the Caves & Cliffs update in Summer 2021 and what it could mean for my mod.

To my knowledge and my preliminary Google searches, there is no ‘light’ mod (i.e. not resource-intensive server-side mod) that adds constellations to Minecraft. All other mods that include constellations or something with the stars are part of bigger, heavier mods that add, in my opinion, too many items to the game, or they only change the aesthetic of the sky, like changing the textures. Since I play almost exclusively Vanilla Minecraft, the only thing I want to add to the game are constellations in the sky– no new blocks, no new mechanics. Later on down the road I may add star maps or custom constellations (see Stretch Goals on my Trello board), but I draw the line at any new systems or major blocks changes. I want vanilla minecraft, but with more interesting stars.

In this way, my project will build off the work of others who have already added constellations to Minecraft, like Astral Sorcery, Stellarium, and Stellar Sky Mod. I’ll work off of others who have already noticed some constellations forming, as well as some who have broken down how the stars function in Minecraft. I’ll also be working with materials on server-side mods (Spigot), since I want my friends to just be able to join a server and see the constellations there, no worries about their vanilla client.

Whew. That’s um… a lot. That’s a lotta words. So I guess then my gameplan is basically to try and respect myself and what I’m trying to learn.

I recognize that this project will be a challenge because…

  • I have minimal experience with modding and ‘real’ coding.
  • There’s almost gauranteed to be some math involved.
  • I’ll be learning two entirely new environments– both Minecraft back-end and Spigot.
  • I’ll also be learning about how servers work. And how mods work.
  • There’s no guarantee this is even possible in Minecraft without reworking the whole sky system.

But I am willing to learn and I will try to keep an open mind throughout the process. I’ll be willing to pivot and change the work I’m doing should I hit roadblocks that I can’t overcome.

I will take time during this process to read books about stars and constellations (which is why the entire process gets a hefty 9 weeks during winter break and like 8 weeks of ‘flex’ time at the end right before the showcase– it’s all breathing room so I don’t ever have to feel like I’m ‘cramming’). See the section “Inspiration & Motivation” below for my list of inspirational sources that I’ll use to stay motivated.

Let’s do this.


TIMELINE

Learn about Spigot servers and set up the environment

3 weeks, ends Nov 5

Spend a few weeks setting up my environment and understanding the basics of Spigot since I know literally nothing.

Hash it out

9 weeks (with 1 week break), ends Feb 4

01100011 01101111 01100100 0110010 code code playtest code code 01100011 01101111 01100100 0110010

Chill vibes only

4 weeks (with 1 week break), ends April 1

This is the time I’ve budgeted to realizing I’m a senior and I’ll be graduating in about 30 days. Spend time with family, friends, at Tea Time, helping out others with their projects, etc. (Also playing Minecraft with my friends)

Make some mods!!!

4 weeks, ends Dec 3

Play around, make some goofy mods on Spigot to see what I can do. Try and draw lines in the air at specific points, between two objects, etc, and see if they appear. Get friends on the server to try and break it.

Polish those stars shiny

4 weeks, ends March 4

See what works and what doesn’t at the end of the last sprint and salvage what I can to be ready for the showcase. Work on Minecraft world I’ll be using for Showcase, decide how I’ll present my project.

Party on my server

??? weeks, ends on Showcase night

What time is it??? Showcase time!!


THE WORK SO FAR & MY RESEARCH PLAN

So if you want to change the arrangement of the stars, you should code the star rendering code on your own in the custom sky renderer.

Abastro, 2015

Ah, no wiser words ever spoken that I wanted to hear less.

I spent all of Friday (10/09) setting up my environment (shout out to my brother for helping me through the first 2 hours). Who knew Eclipse would be so difficult???????????????????? (i did, i knew)

October 9, 2020: I spend 2 hours setting up my environment, going through 3 different Java Project setups until I finally get 2 commands that say: “PLUGIN IS WORKING!!” and “PLUGIN HAS TURNED OFF!!”. That is all the plugin is coded to do at the time.

Anywho, here’s a list of what I’ve got up and running:

✓ Eclipse opens and runs on my computer
✓ Spigot servers runs and stops on my computer
✓ I can locally connect to the spigot server
✓ Coded text to appear when plugins are running
✓ Coded some basic commands I made by follow this tutorial (https://www.youtube.com/watch?v=lJyTEuqLQfU)
✓ Commands load, run, and stop correctly
✓ Successfully duplicated / made more plugin folders that also run correctly
✓ Retrieved the direction the player is looking as a vector

What I don’t have up and running:

✗ Any kind of visual mod on the server (i.e. anything *not* displayed in chat or cmd)
✗ Anything that doesn't do what the game can do itself (i.e. i've only spawned in items that already exist or just alter text)
✗ New sky renderer lol
✗ a mod i made myself without watching a tutorial

I tried to find a way to share my bookmark folder where I have all my references, but I eventually broken down and just made a Trello board. That way my project will hopefully live on if anyone else tries to go on this quest too.

If you’re a student or modder reading this, best of luck. Wise words from another space explorer: Be curious on your journey. And if I’m future me looking back on this blogpost… I have no idea how to mod Minecraft, I hope you made it okay!

Anywho, on my Trello board, you’ll see the following card groups:

  • Mods & References : Mods I’ve found through many, many Google searches. Also tagged with the year, since anything before ~2019 is unhelpful while making a 1.16 mod, but still helpful to see the structure they use and what they’re actually coding.
  • Help Forums : Others have been on similar quests. These are their stories.
  • Ideas & References : Things to keep in mind while designing and coding.
  • Questions : Like the Help Forums, but these are just my questions I’m trying to answer.
  • Action items : Things I can do, like, right now.
  • Vibes : Chill only. Music to listen to while coding / researching. Taking suggestions!
  • Mod Name Ideas – Vote! : I added a Trello plugin so you can vote on which name you think I should use!
  • Google Slides & Blogposts : A place to keep all my Slides and Blogposts.

I’ll update my Trello board with every new resource to keep them all in order since there are so many different things to look for. I’m especially pleased with the Questions section so I can keep track of what I need to learn in order to get this done. The board has basically been filled out within the last two days, so I think I’ve gone a little fast but I’m at a good place right now. I can tell I’m on the adjacent possible here! Lots of related information, but nothing doing exactly what I’m doing. We’ll see where this goes.

SEE MY PROJECT TRELLO BOARD HERE

I’ve also learned that Minecraft mods (or Spigot plugins to be specific to my project) are basically just pieces of code that override (@Override) methods, functions, and classes that are already in the code. They could also potentially make new ones, but they have to be called somewhere in another code. Spigot provides almost like a language for coders to speak to Minecraft with.

Originally, before ~1.7 I think, the sky was easily modded by creating a IRenderingHandler class that would override the current sky renderer. A sky renderer, to my understanding, is something that runs at least when the world is Initialized, initializing the celestial bodies in the code, like the Sun, Moon, and Stars. Once you create your own, you could just make another Star GL list, and do whatever you wanted with the stars (see example here; notice variable ‘starFrequency’). Since then, Minecraft has updated their rendering system (unclear exactly when, but definitely in 1.16), so all of those examples are semi-defunct.

Now to mod the stars, I’ll still have to rewrite the sky renderer. I believe I’ll have to rewrite the renderer to get what I want because the WorldCreator#generator() function exists and I can’t find any variable or function specifically relating to the stars anywhere, but I know it has to be somewhere. Everything is somewhere.

So the current game-plan is to learn about renderers and how to write my own sky renderer for WorldCreator#generator() so I can give the stars whatever aspects I need to give them to be able to track the constellations.

Since it took a lot of research to get to this determination about renderers, I don’t know much about them yet (though this page seems promising about rendering skies). But keep an eye on my Trello board as I go down the many, many rabbit holes ahead.


INSPIRATION & MOTIVATION

These are pieces I plan to read / watch / play to stay motivated and inspired during my process. All are space / time related.

Think there’s something I should add? Let me know!

Read

Astrophysics for People in a Hurry, Neil deGrasse Tyson

Wonderstruck, Brian Selsnick (reread)

A Brief History of Time, Stephen Hawking

2001 Nights, Yukinobu Hoshino (literally impossible to get)

Watch

The Universe, Netflix

John was Trying to Contact Aliens, Netflix

Edge of the universe, Netflix

The Cloverfield Paradox, Netflix

A Year in Space, Netflix

Mars, Netflix

Away, Netflix

Space Force, Netflix (waiting for season 2)

Dark Matter, Amazon Prime

Star Trek, I think we own it??

Play

STARDROP, steam

Oxenfree, Steam

event[0], Steam

The Turing Test, Steam

Portal 1 & 2, Steam (replay)

Tacoma, Steam (replay)

Astroneer, Steam

Observation, Steam

Your questions, answered!!

Yes thank you to all who commented on my last post!! Below are my responses. Want to be included in my inevitable next post? Comment below!!

((and don’t forget to subscribe and SMASH that notification bell to be notified never because it doesn’t work!! Thanks for reading this!!))


You put a scary amount of thought into this. This looks sick.

ben spizuco ( @spizucb1 )

Thanks! Assuming by “this” you mean my post, I’m trying to make my posts both digestible and as insane as possible. I somehow gotta jazz up a project that’s just: I’m modding Minecraft. Also, I have years of experience in WordPress and HTML already (not to mention I’m taking 130 rn) so this is just a fun time for me.

If you mean my thesis project, thanks! Tryin’ my best here.


some further name ideas:

Star Maps, Galileo, North Star, (Some other navigational star such as: Gacrux, Rigel, Acrux, etc.)

keep of the fantastic work!

Patrick O’callaghan ( @ocallap1 )

Great name ideas–I’ll add them to the list, be sure to vote on the Trello board for your favorite. Maybe I’ll ask my mum to pick if there’s a tie. Thanks for the ideas and the support!


I know you were struggling to find a thesis idea, but this one seems solid! Looks like it strikes a nice balance between ambition and feasibility. It’s pretty unfortunate timing that this Minecraft update was revealed when it was though. I’d keep a close eye on any more details they show off about it, you wouldn’t want your thesis to seem “redundant.” But hey, if your idea is similar to what they’re already doing, put a spin on it! This seems like it could be a pretty stellar thesis project (and no, I won’t ask you to forgive the pun).

Anthony Mendez ( @mendeza6 )

I was definitely struggling before, but I’ve decided to go for a project that I’m genuinely interested in learning more about and that I have almost no experience in (and something I’ll probably never get to dedicate this much time to once I graduate). It’s really humbling to be so bad at something for once since in my day-to-day doing homework I’m just refining skills I’ve had for years. But when I’m making a Minecraft mod, it’s like… How do I start a mod? What do I put in the Command line? How do I set up a plugin.yml? What are Java packages?????????

To your Update point, I see the Minecraft update timing as nearly perfect, almost proof that I’m moving in the adjacent possible at the same time as the Minecraft team. It appears as though players will only be able to see slightly more far away with the telescope. Also, in the article I mentioned in my previous post, they say:

You’re digging now, but soon you’re going to be excavating.

So if they’re adding lore to the ground, how much longer until they add lore to the sky…?

(Video showing the telescope, Minecraft Wiki article about the telescope)


If you wanted to redo the whole minecraft sky system, you could imitate what they did in Wild World?

I know that minecraft’s terrain is probably more complex than the Animal Crossing cylinder, but I was thinking that the overall idea of having a convex shape with a star texture might work, especially if minecraft currently just uses static textures or scrolling textures.

Miles Cumiskey ( @cumiskm1 )

I had no idea this was a feature in Wild World!!!!! I’ve only played City Folk and New Leaf! I found a wiki article about constellations… Aaaaaand supposedly this was in City Folk??? Here’s a short video of someone making a constellation in City Folk! Not sure how I missed that or blocked it from my memory, but thank you for bringing it to my attention, greatly appreciated! This will definitely be part of my inspiration if I get to the ‘custom constellations’ level (see Ideas & References > Stretch Goals on my Trello board). I’ll also look into how Animal Crossing shows players the constellations in-game, because that might be helpful too. Why isn’t this in New Horizons??

But I hope I don’t have to overhaul the sky to be able to do custom constellations. From my research, the stars in the Minecraft sky appear to be treated like separate entities / objects that are given random coordinates based on a seed (that’s supposed to be based on the world seed but is supposedly broken?) and are saved on a rendering buffer. That buffer then rotates around the Minecraft world, so it’s not really a static / scrolling texture, but I guess it’s a texture that’s generated for every new world. Here’s a post about the celestial model of Minecraft that I’ve been using as a reference, though it’s outdated for 1.16. I think the stars are saved in a MatrixStack now which… I have no idea what that is. I’ll definitely have to do some more mining digging to find out how it works. And if I can’t figure it out.. Maybe I will just overhaul the sky and add this in. Who knows! Anywho, thanks for your comment and thanks for letting me know about constellations in AC!


TL;DR

as promised.

My project in 5 words: Add Constellations to Minecraft (server-side)!!!!!

Since my last post, I’ve thought more about how the timeline will scale out and what I should really be focusing on (in short: making the constellations work). I’ve allotted the majority of winter break to working on this project since it’s gonna be a lot of figuring out how to code and then coding.

My project breaks down into four phases. I have made a high-end graphic here for your convenience:

a bad ms paint drawing that just says Phase 1: Learn, Phase 2: Practice, Phase 3: Code, Phase 4: Polish. PHASE 1 PHASE 2 PHASE 3 PHASE 4

So Phase 1, I’ll learn the basics of setting up an environment to code a mod (Eclipse, Spigot, etc.) and make a server. Phase 2, I’ll just hack around and make whatever mods I can manage. Phase 3 is the marathon, actually figuring out how to mod the stars / constellations and modding them. Phase 4 is basically a buffer in case I have to pivot my project or if I need more time before the showcase, and also time allotted to build the Minecraft world within which I’ll be presenting my project. Also time allotted to just be a flippin’ Spring Semester Senior, something I have never done (not even in HS). Just relax, y’know?

I did a ton of Googling over the last few days to figure out how the stars work in Minecraft, but long story short it looks like I’ll have to write my own sky renderer, or at least some kind of method in the renderer to return the location of the stars / override some of the methods in the sky renderer.

Also, there were some awesome ideas brought up in the comments from my last post, including some new name ideas and some considerations about how to do custom constellations (spoilers: Animal Crossing!).

As per usual, feel free to comment below any questions, comments, concerns, or funny jokes you come across that you feel like posting. Thanks for reading!

Leave a Reply

Your email address will not be published. Required fields are marked *