Minutes 2025-11-13: Difference between revisions
Jump to navigation
Jump to search
(Created page with "# 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 c...") |
No edit summary |
||
| Line 16: | Line 16: | ||
##### Minecraft is singlethreaded |
##### Minecraft is singlethreaded |
||
###### Java moment? |
###### Java moment? |
||
###### More like Minecraft moment, Java supports multithreading but they just didn't support it because it's more difficult |
###### More like Minecraft moment, Java supports multithreading, but they just didn't support it because it's more difficult |
||
##### Memory |
##### Memory |
||
###### MC Club went with 32GB/ram |
###### MC Club went with 32GB/ram |
||
##### Storage/Networking |
##### Storage/Networking |
||
###### |
###### Low-latency storage |
||
###### NVME is best, SATA SSD is fine |
###### NVME is best, SATA SSD is fine |
||
###### just avoid HDDs |
###### just avoid HDDs |
||
| Line 40: | Line 40: | ||
###### MC Club is using Azul Zing because it benchmarked the best |
###### MC Club is using Azul Zing because it benchmarked the best |
||
##### Improve garbage collection via launch arguments |
##### Improve garbage collection via launch arguments |
||
#### Can setup SRV |
#### Can setup SRV records on domain for different servers on the same host so users don't need to specify a different port |
||
### Configuration |
### Configuration |
||
#### server.properties is the main config file |
#### <code>server.properties</code> is the main config file |
||
##### All your standard settings, and.... |
##### All your standard settings, and.... |
||
##### Can configure server to auto-freeze when server is inactive |
##### Can configure server to auto-freeze when server is inactive |
||
| Line 48: | Line 48: | ||
#### Mods |
#### Mods |
||
##### NoChatReports |
##### NoChatReports |
||
###### |
###### Removes users being able to submit other user's messages back to Microsoft and potentially get them permanently banned from Multiplayer |
||
##### GeyserMC + Floodgate |
##### GeyserMC + Floodgate |
||
###### Allow bedrock players to join a Java server |
###### Allow bedrock players to join a Java server |
||
| Line 54: | Line 54: | ||
###### In-game proximity voice chat |
###### In-game proximity voice chat |
||
###### Improves social experience |
###### Improves social experience |
||
##### Distant |
##### Distant Horizons |
||
###### 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 |
###### 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) |
####### However, eats a lot of storage (~70GB) |
||
| Line 65: | Line 65: | ||
#### Lag |
#### Lag |
||
##### Every 1/20th of a second game 'ticks' entire world (IE updates everything) |
##### Every 1/20th of a second game 'ticks' entire world (IE updates everything) |
||
##### Ticks must be <50ms or eating is |
##### Ticks must be <50ms or eating is noticeable, you get teleported back, and a lot of other annoying things |
||
##### Spawning/Entities is very laggy |
##### Spawning/Entities is very laggy |
||
##### Block updates usually not so much, barring massive |
##### Block updates usually not so much, barring massive Redstone contraptions |
||
##### World generation can be a major lag producer if you are generating chunks |
##### World generation can be a major lag producer if you are generating chunks |
||
##### Easiest fix is decreasing simulation distance |
##### Easiest fix is decreasing simulation distance |
||
##### You can also |
##### You can also pre-generate large parts of the world before people first join |
||
##### Change region file compression algorithm |
##### Change region file compression algorithm |
||
###### Switch from DEFLATE to LZ4 (faster), prevents lag spikes during autosave |
###### Switch from DEFLATE to LZ4 (faster), prevents lag spikes during autosave |
||
| Line 91: | Line 91: | ||
#### As an admin, be transparent with the playerbase |
#### As an admin, be transparent with the playerbase |
||
#### Allow people to talk about changes before changing things |
#### Allow people to talk about changes before changing things |
||
#### Don't abuse admin perms to |
#### Don't abuse admin perms to benefit 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 |
##### 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 |
#### Keep rules short and sweet, otherwise no one will read them |
||
##### Outline what rules and |
##### Outline what rules and environment you want for the server |
||
##### Swift bans for people openly breaking rules (e.g. x-ray) |
##### 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 |
#### 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! |
### And most importantly of all, have fun! |
||
## Live demo! |
## Live demo! |
||
### Can configure sudo to not prompt for a password when logged in via ssh private key |
### Can configure <code>sudo</code> to not prompt for a password when logged in via ssh private key |
||
### World backup every hour, keeps for last 6 hours |
### World backup every hour, keeps for last 6 hours |
||
#### |
#### <code>cat banned-players.json</code> |
||
##### |
##### That one person who was obviously using x-ray |
||
##### |
##### For shame! |
||
#### Live chat preview |
#### Live chat preview |
||
##### |
##### <code>[Server] i am watching you</code> |
||
##### |
##### <code><Sting1> D: 1984</code> |
||
#### Get to see the (in)famous pen of 1000+ chickens that's eating 80% of each server tick |
#### Get to see the (in)famous pen of 1000+ chickens that's eating 80% of each server tick |
||
### That was the server! |
### That was the server! |
||
| Line 112: | Line 112: | ||
#### Minecraft club is also hosting a world for East Hall |
#### Minecraft club is also hosting a world for East Hall |
||
##### Paid $300 for indefinite hosting |
##### Paid $300 for indefinite hosting |
||
##### Remains to be seen if East Hall |
##### Remains to be seen if East Hall Association will still exist as an entity after the building inevitably collapses |
||
# After talk discussion |
# After talk discussion |
||
## MC Java technically does have multithreaded word generation, but it's very poorly multithreaded so not much better than single-threaded |
## MC Java technically does have multithreaded word generation, but it's very poorly multithreaded so not much better than single-threaded |
||
| Line 118: | Line 118: | ||
### "not-java" brings a lot of performance advantages |
### "not-java" brings a lot of performance advantages |
||
## Good transparency on the part of 2B2T |
## Good transparency on the part of 2B2T |
||
### |
### Page for all custom mods/software [https://www.2b2t.org/mods/] |
||
### 2B2T uses Folia (regioned-threading), from the PaperMC project |
### 2B2T uses Folia (regioned-threading), from the PaperMC project |
||
### Breaks even more than regular Paper |
### Breaks even more vanilla mechanics than regular Paper |
||
## For most servers, an admin would probably not want Paper or Folia |
## For most servers, an admin would probably not want Paper or Folia |
||
[[Category:Meeting Minutes]] |
|||
Latest revision as of 15:45, 14 November 2025
- 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 records on domain for different servers on the same host so users don't need to specify a different port
- Configuration
server.propertiesis 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 Horizons
- 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
- Optimization
- Lag
- Every 1/20th of a second game 'ticks' entire world (IE updates everything)
- Ticks must be <50ms or eating is noticeable, 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 pre-generate 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 benefit 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 environment 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
sudoto 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
- 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 Association will still exist as an entity after the building inevitably collapses
- Minecraft club is also hosting a world for East Hall
- Can configure
- 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 [1]
- 2B2T uses Folia (regioned-threading), from the PaperMC project
- Breaks even more vanilla mechanics than regular Paper
- For most servers, an admin would probably not want Paper or Folia