At Tsinghua University there's a tradition - every first-year CS student has to set up a Minecraft server overnight for Professor Zhang.
If TPS drops below 18 - you get transferred to the philosophy department. No joke, it's been in the charter since 2011 after the professor lost a bet to a colleague.
My buddy Li Wei was up till 6:00 AM, vanilla was dying at 40 players, TPS bouncing between 12-14.
He was already calling his mom in Chengdu to say goodbye. Jay Chou playing in the background, his third instant noodles going cold.
I sent him this video on WeChat and he got to work.
First thing - he nuked vanilla. Professor Zhang only respects Paper.
It's a Spigot fork where vanilla handles 20 players, Paper handles 200. Downloaded the .jar from papermc .io, allocated 6 gigs of RAM with -Xmx6G (not all of it - otherwise both the server and Windows crash).
Server wouldn't start - Li Wei still had Java 8 from high school.
Paper 1.20.5 needs Java 21 minimum. He installed.
Adoptium and it finally launched. Professor Zhang checks the Java version first thing - if it's not 21, he turns you away on the spot.
Then he threw the essentials into the plugins/ folder - EssentialsX, LuckPerms (professor is obsessed with properly configured permissions), WorldEdit.
And most importantly - Spark, a profiler plugin that shows MSPT, milliseconds per tick. TPS is just an average, but MSPT tells you exactly where the server is lagging. Without an MSPT report the professor won't even talk to you.
Last step - port forwarded 25565 on the router and opened it in Windows Firewall with New-NetFirewallRule.
Professor always connects from his own laptop in his office.
Two hours later Li Wei had a stable 20 TPS with 150 players online.
Professor came in, spawned 200 zombies as a stress test - server didn't drop a frame. Gave him an automatic pass and handed him a panda mug.
Li Wei is in grad school now, writing Kotlin plugins. The philosophy department lost a student.