Minutes 2025-11-13
- How to run a Minecraft Server that doesn't suck by Max!
- Why should you listen to me?
- Head of the Minecraft Club on campus
- Playing Minecraft most of my life
- 5 Main aspects of running a Minecraft server
- Hardware
- Two methods
- Pay someone else to host it
- A good server would cost ~100-300/month
- or host it yourself
- Initial cost a lot higher
- Operating cost much lower (basically just electricity)
- MC Club's desktop cost $830 and can run into the future
- Pay someone else to host it
- CPU
- Go for big single-core performance CPUs
- Minecraft is singlethreaded
- Java moment?
- More like Minecraft moment, Java supports multithreading but they just didn't support it because it's more difficult
- Memory
- MC Club went with 32GB/ram
- Storage/Networking
- low-latency storage
- NVME is best, SATA SSD is fine
- just avoid HDDs
- Worlds aren't very big (MC club is currently at 50GB)
- Try to have low latency and a stable network so players don't hate you
- Two methods
- Software
- Considering either Windows 11 or Windows Server 2025
- Of course, went with Linux (Debian)
- Server options
- Vanilla
- Fabric
- Mods usually try to avoid impacting vanilla game mechanics
- Paper
- Server admins tend to like it
- Power players, not so much
- Unavoidably breaks some game mechanics players rely on
- However, grants access to a huge library of Spigot plugins and improves performance a ton even on crappy hardware
- Using a different JVM to increase performance
- MC Club is using Azul Zing because it benchmarked the best
- Improve garbage collection via launch arguments
- Can setup SRV record for different servers on the same host so users don't need to specify a different port
- Configuration
- server.properties is the main config file
- All your standard settings, and....
- Can configure server to auto-freeze when server is inactive
- And can specify region chunk compression algorithm (more on this later)
- Mods
- NoChatReports
- removes users being able to submit other user's messages back to Microsoft and potentially get them permanently banned from Multiplayer
- GeyserMC + Floodgate
- Allow bedrock players to join a Java server
- Simple Voice Chat
- In-game proximity voice chat
- Improves social experience
- Distant Horizens
- Allows the server to send less-detailed chunks to the client, so it allows the client to see super far without a massive performance penalty
- However, eats a lot of storage (~70GB)
- Allows the server to send less-detailed chunks to the client, so it allows the client to see super far without a massive performance penalty
- NoChatReports
- Other Stuff
- Chat bridge to mirror Minecraft chat to another chat (usually a Discord server)
- Auto whitelisting
- You don't want to have a public minecraft server, in case someone port scans the entire IPv4 space and finds+griefs your world
- Worked pretty good so far, one incident in 2 months
- server.properties is the main config file
- Optimization
- Lag
- Every 1/20th of a second game 'ticks' entire world (IE updates everything)
- Ticks must be <50ms or eating is noticable, you get teleported back, and a lot of other annoying things
- Spawning/Entities is very laggy
- Block updates usually not so much, barring massive redstone contraptions
- World generation can be a major lag producer if you are generating chunks
- Easiest fix is decreasing simulation distance
- You can also pregenerate large parts of the world before people first join
- Change region file compression algorithm
- Switch from DEFLATE to LZ4 (faster), prevents lag spikes during autosave
- World files will be ~20-30% larger though
- Optimization mods
- All are only performance-based and do not change how the game operates
- Lithium: General optimizations
- ScalableLux: better lighting engine
- Krypton improves network performance
- Very Many Players: caching and other technology to improve performance with very high player counts
- OptimizedTNT: nice for players that allegedly build TNT-orbital-strike-cannons that otherwise would crash the server
- In fairness, this should probably be expected considering Tech is an engineering school
- In-game lag reduction
- Avoid high entity counts in small areas
- Animal pens are a frequent offender
- MC club server had one person with a chicken pen with 1000+ chickens in it that was responsible for ~80% of the in-game lag
- Apparently Chickens used to be immune to entity cramming damage.
- Spark is essentially a java profiler that shows what methods Minecraft spends most of its CPU time on
- Avoid high entity counts in small areas
- Lag
- Management
- As an admin, be transparent with the playerbase
- Allow people to talk about changes before changing things
- Don't abuse admin perms to benifit yourself, players typically don't like this
- Yaoi bribed have been alleged to work for some admins in return for Elytras when servers are out
- Keep rules short and sweet, otherwise no one will read them
- Outline what rules and enviornment you want for the server
- Swift bans for people openly breaking rules (e.g. x-ray)
- Minecraft Club actually disabled the Nether for the first day of the server to allow people to prepare
- And most importantly of all, have fun!
- Hardware
- Live demo!
- Can configure sudo to not prompt for a password when logged in via ssh private key
- World backup every hour, keeps for last 6 hours
- `cat banned-players.json`
- that one person who was obviously using x-ray
- for shame!
- Live chat preview
- "[Server] i am watching you"
- "<Sting1> D: 1984"
- Get to see the (in)famous pen of 1000+ chickens that's eating 80% of each server tick
- `cat banned-players.json`
- That was the server!
- Obligatory plug for Minecraft Club Discord Server
- Minecraft club is also hosting a world for East Hall
- Paid $300 for indefinite hosting
- Remains to be seen if East Hall Accociation will still exist as an entity after the building inevitably collapses
- Minecraft club is also hosting a world for East Hall
- Why should you listen to me?
- After talk discussion
- MC Java technically does have multithreaded word generation, but it's very poorly multithreaded so not much better than single-threaded
- Bedrock has some advantages in this regard
- "not-java" brings a lot of performance advantages
- Good transparency on the part of 2B2T
- page for all custom mods/software
- 2B2T uses Folia (regioned-threading), from the PaperMC project
- Breaks even more than regular Paper
- For most servers, an admin would probably not want Paper or Folia