f4e3b4e439
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 5b680f0b Note maximum objective score length in documentation CraftBukkit Changes: 5932f8a7 Load default world spawn areas in consistent order 3a5dc78f Fix confusing migration message appearing on fresh server 516a408f Remove redundant CraftBukkit change for secondary world data 73a2c749 Process conversation input on the main thread. 100c3f07 Cap Objective Score Length 6e842759 Cross World Entity Teleportation 7deba1c6 Check for blank OfflinePlayer Names f2746a5e Descriptive kick reasons instead of Nope! b0212308 Cap Channel Registrations a610dcd8 Identify CraftScheduler threads with useful names Spigot Changes: 19c3c5a5 Rebuild patches
45 lines
2.6 KiB
Diff
45 lines
2.6 KiB
Diff
From 73b95e741441136bd840b8242fdf0dc56b405046 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Fri, 2 Nov 2018 23:11:51 -0400
|
|
Subject: [PATCH] Optimize World Time Updates
|
|
|
|
Splits time updates into incremental updates as well as does
|
|
the updates per world, so that we can re-use the same packet
|
|
object for every player unless they have per-player time enabled.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
index 1dbb03a9a..4e648ee73 100644
|
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
@@ -1033,12 +1033,24 @@ public abstract class MinecraftServer implements IAsyncTaskHandler, IMojangStati
|
|
|
|
MinecraftTimings.timeUpdateTimer.startTiming(); // Spigot
|
|
// Send time updates to everyone, it will get the right time from the world the player is in.
|
|
- if (this.ticks % 20 == 0) {
|
|
- for (int i = 0; i < this.getPlayerList().players.size(); ++i) {
|
|
- EntityPlayer entityplayer = (EntityPlayer) this.getPlayerList().players.get(i);
|
|
- entityplayer.playerConnection.sendPacket(new PacketPlayOutUpdateTime(entityplayer.world.getTime(), entityplayer.getPlayerTime(), entityplayer.world.getGameRules().getBoolean("doDaylightCycle"))); // Add support for per player time
|
|
+ // Paper start - optimize time updates
|
|
+ for (final WorldServer world : this.getWorlds()) {
|
|
+ final boolean doDaylight = world.getGameRules().getBoolean("doDaylightCycle");
|
|
+ final long dayTime = world.getDayTime();
|
|
+ long worldTime = world.getTime();
|
|
+ final PacketPlayOutUpdateTime worldPacket = new PacketPlayOutUpdateTime(worldTime, dayTime, doDaylight);
|
|
+ for (EntityHuman entityhuman : world.players) {
|
|
+ if (!(entityhuman instanceof EntityPlayer) || (ticks + entityhuman.getId()) % 20 != 0) {
|
|
+ continue;
|
|
+ }
|
|
+ EntityPlayer entityplayer = (EntityPlayer) entityhuman;
|
|
+ long playerTime = entityplayer.getPlayerTime();
|
|
+ PacketPlayOutUpdateTime packet = (playerTime == dayTime) ? worldPacket :
|
|
+ new PacketPlayOutUpdateTime(worldTime, playerTime, doDaylight);
|
|
+ entityplayer.playerConnection.sendPacket(packet); // Add support for per player time
|
|
}
|
|
}
|
|
+ // Paper end
|
|
MinecraftTimings.timeUpdateTimer.stopTiming(); // Spigot
|
|
|
|
// WorldServer worldserver; // CraftBukkit - dropped down
|
|
--
|
|
2.20.1
|
|
|