So I'm writing a Minecraft Server in C#, and the current status is... Kinda mostly functional.

Let me share some screenshots! 🧵

At first there was a LOT of this.

(Leaving a note here: Yes, they're all in folders in my Downloads folder, it's because I'm doing the development remotely but running locally. I should switch to git, but I'm not yet.)

Eventually though, I got there - Two accounts! Of course, they couldn't see or interact with each other in anyway, and in fact at this stage, it was touchy as hell.
The very first time I saw another account. Uh... At this point I was still spawning deep underground, I had to dig stairs to the surface - I had some math wrong in my world gen.
At this point I noted to a friend that it's actually incredibly lightweight - To be fair, it's not actually doing that much yet. But still! If I get 2 accounts flying in opposite directions, the memory usage caps out at like, 100MB.
Finally! Breaking Blocks Syncronizes! Up until this point they didn't, at all! Getting block breaking and placing to work properly on the client that is doing the actions is actually way more of a pain than doing it for other players, somehow.
At this point I realized that I'd done nothing to synchronize time across clients. They ran on their own clocks!
I'll be the first to admit that this is incredibly wasteful... But it's also ridiculously easy. (It wastes 3kb per chunk on a modern storage device)
At this point I had some extra debugging printing going on, but the important bit is that I added some commands! AND ALSO it now evicts distant chunks from memory!
At this point I started implementing Mobs, so they could spawn. Messed up the ID's, made players into Zombie Villagers. Oops.
Let it be known that I spawned a Zombie, and got a Wolf instead.
Of course, I then accidentally turned players into Wolves, and realized I'd never actually checked to see what happens when you kill a player. Turns out, death. Never ending, with no respawn. Gotta send that packet!

So that's still broken, but I decided to tackle some GUI stuff. Chests don't work, anything put into them is immediately deleted... Or clicked on in your inventory, if you have it's interface open actually.

With that said, (this is the end of the thread for now), I have to admit: It took me a moment to realize what was wrong with the crafting table. The furnace was a bit more obvious.

@krutonium
holy all this is so cool!!!!

@peritia Since I posted this, crafting at tables, and the furnace, now work :3

I also switched to using Region files, which slows down loading and saving, and increases memory usage (sad face), but does significantly save on disk space.

@krutonium You sure about that 3kb number? IIRC, block sizes vary, but I think they default to 4kb.
@rallias 929 bytes is about 1kb of 4kb leaving 3kb of slack