Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ As part of Leaf: https://github.com/Winds-Studio/Leaf/blob/58a4a9cb7994474e63ba4
Licensed under: https://github.com/Winds-Studio/Leaf/blob/9e1b4ca7bc2e9154bc5620b7a9fef0eab3c7aae5/LICENSE.md

diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
index a811f5e93d94038e497a28ce81272d8db382a044..519620e364dddf14cdfd65a723b620ae2957562a 100644
index 52ac642075df8b1b96f26876857a5a6d3091d90c..9f5b690a490560f381cdbe59db846cd320a1d663 100644
--- a/net/minecraft/world/entity/player/Player.java
+++ b/net/minecraft/world/entity/player/Player.java
@@ -1079,6 +1079,12 @@ public abstract class Player extends Avatar implements ContainerUser {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur Ender Chest 6 Rows Config


diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index 547f95af4bb245477459e0ba09c0c8f03bd9372a..5922bafd0524bf0fe6bcde2aa960f8cd5eac95b7 100644
index aafe05d97b396f6648613813cc25c3449992424a..f0c07f82b00d5e0f9fd3069c96de4cd15a697b9b 100644
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -1038,6 +1038,27 @@ public abstract class PlayerList {
@@ -1047,6 +1047,27 @@ public abstract class PlayerList {
player.getBukkitEntity().recalculatePermissions(); // CraftBukkit
this.server.getCommands().sendCommands(player);
} // Paper - Add sendOpLevel API
Expand Down Expand Up @@ -37,7 +37,7 @@ index 547f95af4bb245477459e0ba09c0c8f03bd9372a..5922bafd0524bf0fe6bcde2aa960f8cd

// Paper start - whitelist verify event / login event
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
index 519620e364dddf14cdfd65a723b620ae2957562a..dc57b2416b783d6af00d158b642980b3ae65199d 100644
index 9f5b690a490560f381cdbe59db846cd320a1d663..c25866c36a5c44c4e29bea68e9a4a7efcbc16a5e 100644
--- a/net/minecraft/world/entity/player/Player.java
+++ b/net/minecraft/world/entity/player/Player.java
@@ -175,6 +175,7 @@ public abstract class Player extends Avatar implements ContainerUser {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -112,7 +_,7 @@
@@ -112,7 +_,12 @@
public static final Component CHAT_FILTERED_FULL = Component.translatable("chat.filtered_full");
public static final Component DUPLICATE_LOGIN_DISCONNECT_MESSAGE = Component.translatable("multiplayer.disconnect.duplicate_login");
private static final Logger LOGGER = LogUtils.getLogger();
- public static final int SEND_PLAYER_INFO_INTERVAL = 600;
+ public static final int SEND_PLAYER_INFO_INTERVAL = io.canvasmc.canvas.GlobalConfiguration.getInstance().networking.playerInfoSendInterval; // Canvas - optimize playerlist tick
+ // Canvas start - send the join player list in several packets
+ // one entry is about 2KB with a signed skin and chat key, so a single packet passes the 2MB frame limit at
+ // roughly 1,000 players and nobody can join anymore. 200 entries stay far below it
+ private static final int PLAYER_INFO_JOIN_BATCH_SIZE = 200;
+ // Canvas end - send the join player list in several packets
private static final ThreadLocal<SimpleDateFormat> BAN_DATE_FORMAT = ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z", Locale.ROOT)); // Folia - region threading - SDF is not thread-safe
private final MinecraftServer server;
private final List<ServerPlayer> players = new java.util.concurrent.CopyOnWriteArrayList(); // CraftBukkit - ArrayList -> CopyOnWriteArrayList: Iterator safety
Expand Down Expand Up @@ -35,6 +40,19 @@
this.playersByName.put(player.getScoreboardName().toLowerCase(java.util.Locale.ROOT), player); // Spigot
this.playersByUUID.put(player.getUUID(), player);
// this.broadcastAll(ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(List.of(player))); // CraftBukkit - replaced with loop below
@@ -358,7 +_,11 @@
}
// Paper start - Use single player info update packet on join
if (!onlinePlayers.isEmpty()) {
- player.connection.send(ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(onlinePlayers, player)); // Paper - Add Listing API for Player
+ // Canvas start - send the join player list in several packets
+ for (int from = 0, size = onlinePlayers.size(); from < size; from += PLAYER_INFO_JOIN_BATCH_SIZE) {
+ player.connection.send(ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(onlinePlayers.subList(from, Math.min(from + PLAYER_INFO_JOIN_BATCH_SIZE, size)), player)); // Paper - Add Listing API for Player
+ }
+ // Canvas end - send the join player list in several packets
}
// Paper end - Use single player info update packet on join
player.sentListPacket = true;
@@ -503,6 +_,7 @@
if (advancements != null) {
advancements.save();
Expand Down