Stardew Valley Modding Adventures

1 minute read

Stardew Valley is the greatest game ever made. Sometimes I write mods to teach others. Stardew mods though? I write those for me.

Stardew is written in C# and runs on the MonoGame framework. Originally, it ran on the XNA framework (still C# though - or at least a .NET language), but it was ported over to MonoGame when they started launching on other platforms - I assume MonoGame runs on all these platforms and so this was an effort to unify their codebase.

C# (or any .NET language) is fun because it doesn’t compile to machine code like C/C++. Instead, it compiles to common intermediate language bytecode (aka CIL or just IL). This is a special ‘assembly’ language, and disassemblers exist for it! Not just disassemblers, but full decompilers as well. And the decompilers are far, far more accurate than x86 assembly decompilers. It’s as if you have access to the game’s source code just by having the game! And of course, this makes modding a much smoother and more pleasant experience. There exists a framework for stardew modding as well, by pathoschild, and it’s quite helpful.

So onto the mod: a schedule planner! Far too many times I’ve forgotten to do something - tend to the greenhouse crops, build a new barn, give an item to one of the villagers, etc. So I made this mod to help keep track of everything. You open the calendar in-game and click on a date. Then, you can add a one-time task or a recurring daily or weekly task. On that date, whatever tasks you had set will show up below the clock.

Here’s the GitHub repo: https://github.com/kotae4/SchedulePlanner
And here’s what it looks like:

stardew planner calendar hover view stardew planner task menu
Left Image: Hovering over calendar dates
Right Image: Setting tasks