aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/MinecraftServer.cpp
diff options
context:
space:
mode:
authorKevin <115616336+lag@users.noreply.github.com>2026-03-06 19:23:32 -0600
committerGitHub <noreply@github.com>2026-03-06 19:23:32 -0600
commit13960a93b2a7c114446c109de059db305db4555d (patch)
tree1b681d91fd38f0d2da73024041e968160c22552b /Minecraft.Client/MinecraftServer.cpp
parent16446265d555d21f564b5989611a05918728d643 (diff)
Max players from 8 -> 255 + small connection optimizations (#722)
* Multiplayer 8 to max byte increase. Made-with: Cursor * Server chunk optimizations for large player counts, server full notification fix, added to server.properties.
Diffstat (limited to 'Minecraft.Client/MinecraftServer.cpp')
-rw-r--r--Minecraft.Client/MinecraftServer.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/Minecraft.Client/MinecraftServer.cpp b/Minecraft.Client/MinecraftServer.cpp
index 373a5e33..55b02cb9 100644
--- a/Minecraft.Client/MinecraftServer.cpp
+++ b/Minecraft.Client/MinecraftServer.cpp
@@ -682,6 +682,12 @@ bool MinecraftServer::initServer(int64_t seed, NetworkGameInitData *initData, DW
}
#endif
setPlayers(new PlayerList(this));
+#ifdef _WINDOWS64
+ {
+ int maxP = getPlayerList()->getMaxPlayers();
+ WinsockNetLayer::UpdateAdvertiseMaxPlayers((BYTE)(maxP > 255 ? 255 : maxP));
+ }
+#endif
// 4J-JEV: Need to wait for levelGenerationOptions to load.
while ( app.getLevelGenerationOptions() != NULL && !app.getLevelGenerationOptions()->hasLoadedData() )
@@ -2347,15 +2353,19 @@ void MinecraftServer::chunkPacketManagement_PostTick()
}
#else
-// 4J Added
+// 4J Added - round-robin chunk sends by player index. Compare vs the player at the current queue index,
+// not GetSessionIndex() (smallId), so reused smallIds after many connect/disconnects still get chunk sends.
bool MinecraftServer::chunkPacketManagement_CanSendTo(INetworkPlayer *player)
{
if( player == NULL ) return false;
int time = GetTickCount();
- if( player->GetSessionIndex() == s_slowQueuePlayerIndex && (time - s_slowQueueLastTime) > MINECRAFT_SERVER_SLOW_QUEUE_DELAY )
+ DWORD currentPlayerCount = g_NetworkManager.GetPlayerCount();
+ if( currentPlayerCount == 0 ) return false;
+ int index = s_slowQueuePlayerIndex % (int)currentPlayerCount;
+ INetworkPlayer *queuePlayer = g_NetworkManager.GetPlayerByIndex( index );
+ if( queuePlayer != NULL && (player == queuePlayer || player->IsSameSystem(queuePlayer)) && (time - s_slowQueueLastTime) > MINECRAFT_SERVER_SLOW_QUEUE_DELAY )
{
-// app.DebugPrintf("Slow queue OK for player #%d\n", player->GetSessionIndex());
return true;
}