From 90bb61fa7c4e2dbccd9164f247616e9734b69221 Mon Sep 17 00:00:00 2001 From: booky10 Date: Fri, 24 Nov 2023 17:41:02 +0100 Subject: [PATCH] Re-apply some dropped paper performance patches --- ...llocation-of-Vec3D-by-entity-tracker.patch | 59 ++++++++++++++ ...02-Optimize-non-flush-packet-sending.patch | 81 +++++++++++++++++++ ...h => 0003-Pufferfish-Server-Patches.patch} | 12 +-- ...nding.patch => 0004-Change-branding.patch} | 0 ...> 0005-Add-CloudPlane-configuration.patch} | 0 ...patch => 0006-Add-allowPvP-gamerule.patch} | 2 +- ...ranslate-custom-item-names-and-lore.patch} | 0 ...> 0008-Add-more-detailed-brand-info.patch} | 0 ...t-for-changing-pufferfish-config-lo.patch} | 6 +- ...ckupArrowEvent-for-creative-players.patch} | 0 ...ent-healing-amplifier-from-breaking.patch} | 0 ...exceptions-caused-by-packet-sending.patch} | 6 +- ...ch => 0013-Save-shulker-box-openers.patch} | 0 ...ure-components-not-being-translated.patch} | 0 ...5-Resend-more-data-on-locale-change.patch} | 2 +- ...around-worldborder-collision-issues.patch} | 0 16 files changed, 154 insertions(+), 14 deletions(-) create mode 100644 patches/server/0001-Reduce-allocation-of-Vec3D-by-entity-tracker.patch create mode 100644 patches/server/0002-Optimize-non-flush-packet-sending.patch rename patches/server/{0001-Pufferfish-Server-Patches.patch => 0003-Pufferfish-Server-Patches.patch} (99%) rename patches/server/{0002-Change-branding.patch => 0004-Change-branding.patch} (100%) rename patches/server/{0003-Add-CloudPlane-configuration.patch => 0005-Add-CloudPlane-configuration.patch} (100%) rename patches/server/{0004-Add-allowPvP-gamerule.patch => 0006-Add-allowPvP-gamerule.patch} (96%) rename patches/server/{0005-Add-option-to-translate-custom-item-names-and-lore.patch => 0007-Add-option-to-translate-custom-item-names-and-lore.patch} (100%) rename patches/server/{0006-Add-more-detailed-brand-info.patch => 0008-Add-more-detailed-brand-info.patch} (100%) rename patches/server/{0007-Add-start-argument-for-changing-pufferfish-config-lo.patch => 0009-Add-start-argument-for-changing-pufferfish-config-lo.patch} (92%) rename patches/server/{0008-Fire-PlayerPickupArrowEvent-for-creative-players.patch => 0010-Fire-PlayerPickupArrowEvent-for-creative-players.patch} (100%) rename patches/server/{0009-Prevent-healing-amplifier-from-breaking.patch => 0011-Prevent-healing-amplifier-from-breaking.patch} (100%) rename patches/server/{0010-Log-exceptions-caused-by-packet-sending.patch => 0012-Log-exceptions-caused-by-packet-sending.patch} (88%) rename patches/server/{0011-Save-shulker-box-openers.patch => 0013-Save-shulker-box-openers.patch} (100%) rename patches/server/{0012-Fix-non-adventure-components-not-being-translated.patch => 0014-Fix-non-adventure-components-not-being-translated.patch} (100%) rename patches/server/{0013-Resend-more-data-on-locale-change.patch => 0015-Resend-more-data-on-locale-change.patch} (98%) rename patches/server/{0014-Work-around-worldborder-collision-issues.patch => 0016-Work-around-worldborder-collision-issues.patch} (100%) diff --git a/patches/server/0001-Reduce-allocation-of-Vec3D-by-entity-tracker.patch b/patches/server/0001-Reduce-allocation-of-Vec3D-by-entity-tracker.patch new file mode 100644 index 0000000..56ac2fc --- /dev/null +++ b/patches/server/0001-Reduce-allocation-of-Vec3D-by-entity-tracker.patch @@ -0,0 +1,59 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Spottedleaf +Date: Mon, 27 Apr 2020 00:04:16 -0700 +Subject: [PATCH] Reduce allocation of Vec3D by entity tracker + + +diff --git a/src/main/java/net/minecraft/network/protocol/game/VecDeltaCodec.java b/src/main/java/net/minecraft/network/protocol/game/VecDeltaCodec.java +index 33d9131e9c75ef23cd637f5d6c39a2704a0c92a5..4b6e0fe2fabcc55007fd8979e81f66df9c0278b7 100644 +--- a/src/main/java/net/minecraft/network/protocol/game/VecDeltaCodec.java ++++ b/src/main/java/net/minecraft/network/protocol/game/VecDeltaCodec.java +@@ -5,7 +5,7 @@ import org.jetbrains.annotations.VisibleForTesting; + + public class VecDeltaCodec { + private static final double TRUNCATION_STEPS = 4096.0D; +- private Vec3 base = Vec3.ZERO; ++ public Vec3 base = Vec3.ZERO; // Paper + + @VisibleForTesting + static long encode(double value) { +diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java +index caa73632aee15583c6b6ed12a668c8f49b794708..73d50715d34fdf67f346672901dd1d24bb2ac7fb 100644 +--- a/src/main/java/net/minecraft/server/level/ChunkMap.java ++++ b/src/main/java/net/minecraft/server/level/ChunkMap.java +@@ -1419,10 +1419,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + public void updatePlayer(ServerPlayer player) { + org.spigotmc.AsyncCatcher.catchOp("player tracker update"); // Spigot + if (player != this.entity) { +- Vec3 vec3d = player.position().subtract(this.entity.position()); ++ // Paper start - remove allocation of Vec3D here ++ // Vec3 vec3d = player.position().subtract(this.entity.position()); ++ double vec3d_dx = player.getX() - this.entity.getX(); ++ double vec3d_dz = player.getZ() - this.entity.getZ(); ++ // Paper end - remove allocation of Vec3D here + int i = ChunkMap.this.getPlayerViewDistance(player); + double d0 = (double) Math.min(this.getEffectiveRange(), i * 16); +- double d1 = vec3d.x * vec3d.x + vec3d.z * vec3d.z; ++ double d1 = vec3d_dx * vec3d_dx + vec3d_dz * vec3d_dz; // Paper + double d2 = d0 * d0; + boolean flag = d1 <= d2 && this.entity.broadcastToPlayer(player) && ChunkMap.this.isChunkTracked(player, this.entity.chunkPosition().x, this.entity.chunkPosition().z); + // Paper start - check Y +diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java +index 35674f92a67f93382103c2766df4b678ba5c862f..fd75d4b04ca560a3c1c0035052ff0073b7081d71 100644 +--- a/src/main/java/net/minecraft/server/level/ServerEntity.java ++++ b/src/main/java/net/minecraft/server/level/ServerEntity.java +@@ -164,7 +164,13 @@ public class ServerEntity { + i = Mth.floor(this.entity.getYRot() * 256.0F / 360.0F); + j = Mth.floor(this.entity.getXRot() * 256.0F / 360.0F); + Vec3 vec3d = this.entity.trackingPosition(); +- boolean flag1 = this.positionCodec.delta(vec3d).lengthSqr() >= 7.62939453125E-6D; ++ // Paper start - reduce allocation of Vec3D here ++ Vec3 base = this.positionCodec.base; ++ double vec3d_dx = vec3d.x - base.x; ++ double vec3d_dy = vec3d.y - base.y; ++ double vec3d_dz = vec3d.z - base.z; ++ boolean flag1 = (vec3d_dx * vec3d_dx + vec3d_dy * vec3d_dy + vec3d_dz * vec3d_dz) >= 7.62939453125E-6D; ++ // Paper end - reduce allocation of Vec3D here + Packet packet1 = null; + boolean flag2 = flag1 || this.tickCount % 60 == 0; + boolean flag3 = Math.abs(i - this.yRotp) >= 1 || Math.abs(j - this.xRotp) >= 1; diff --git a/patches/server/0002-Optimize-non-flush-packet-sending.patch b/patches/server/0002-Optimize-non-flush-packet-sending.patch new file mode 100644 index 0000000..f8401d0 --- /dev/null +++ b/patches/server/0002-Optimize-non-flush-packet-sending.patch @@ -0,0 +1,81 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Spottedleaf +Date: Tue, 22 Sep 2020 01:49:19 -0700 +Subject: [PATCH] Optimize non-flush packet sending + +Places like entity tracking make heavy use of packet sending, +and internally netty will use some very expensive thread wakeup +calls when scheduling. + +Thanks to various hacks in ProtocolLib as well as other +plugins, we cannot simply use a queue of packets to group +send on execute. We have to call execute for each packet. + +Tux's suggestion here is exactly what was needed - tag +the Runnable indicating it should not make a wakeup call. + +Big thanks to Tux for making this possible as I had given +up on this optimisation before he came along. + +Locally this patch drops the entity tracker tick by a full 1.5x. + +(1.20.2 update) +Netty broke this LazyRunnable system in some version - this now uses +the internal safeExecute method for lazy-scheduling the packet-sending +runnables on the event loop. + +Co-authored-by: booky10 + +diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java +index c0ea20dcee8bb293df96bc6ee019e50ad6b383fd..11805569eefe100c2f469431d77a0d5a80c53244 100644 +--- a/src/main/java/net/minecraft/network/Connection.java ++++ b/src/main/java/net/minecraft/network/Connection.java +@@ -60,6 +60,21 @@ import org.slf4j.MarkerFactory; + + public class Connection extends SimpleChannelInboundHandler> { + ++ // Paper start ++ private static final java.lang.invoke.MethodHandle SAFE_EXECUTE; ++ ++ static { ++ try { ++ Class abstractChannelHandlerContext = Class.forName("io.netty.channel.AbstractChannelHandlerContext"); ++ SAFE_EXECUTE = java.lang.invoke.MethodHandles.privateLookupIn(abstractChannelHandlerContext, java.lang.invoke.MethodHandles.lookup()) ++ .findStatic(abstractChannelHandlerContext, "safeExecute", ++ java.lang.invoke.MethodType.methodType(boolean.class, io.netty.util.concurrent.EventExecutor.class, Runnable.class, io.netty.channel.ChannelPromise.class, Object.class, boolean.class)); ++ } catch (ReflectiveOperationException exception) { ++ throw new RuntimeException(exception); ++ } ++ } ++ // Paper end ++ + private static final float AVERAGE_PACKETS_SMOOTHING = 0.75F; + private static final Logger LOGGER = LogUtils.getLogger(); + public static final Marker ROOT_MARKER = MarkerFactory.getMarker("NETWORK"); +@@ -429,9 +444,24 @@ public class Connection extends SimpleChannelInboundHandler> { + if (this.channel.eventLoop().inEventLoop()) { + this.doSendPacket(packet, callbacks, flush); + } else { +- this.channel.eventLoop().execute(() -> { ++ // Paper start - optimise packets that are not flushed ++ Runnable run = () -> { + this.doSendPacket(packet, callbacks, flush); +- }); ++ }; ++ ++ if (flush) { ++ this.channel.eventLoop().execute(run); ++ } else { ++ // netty dropped support for LazyRunnable in some version, so ++ // this now needs to use method handles for calling lazy execute ++ try { ++ SAFE_EXECUTE.invoke(this.channel.eventLoop(), run, ++ this.channel.voidPromise(), null, true); ++ } catch (Throwable throwable) { ++ throw new RuntimeException(throwable); ++ } ++ } ++ // Paper end + } + + } diff --git a/patches/server/0001-Pufferfish-Server-Patches.patch b/patches/server/0003-Pufferfish-Server-Patches.patch similarity index 99% rename from patches/server/0001-Pufferfish-Server-Patches.patch rename to patches/server/0003-Pufferfish-Server-Patches.patch index 8afabe7..5802177 100644 --- a/patches/server/0001-Pufferfish-Server-Patches.patch +++ b/patches/server/0003-Pufferfish-Server-Patches.patch @@ -2058,7 +2058,7 @@ index 1c9742ad81f04052d2c3bc18c7636f45b2fc5160..e5c955e7e99bc07199feabfe9f030101 } } diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index caa73632aee15583c6b6ed12a668c8f49b794708..3abec84383a445d3ad0d3b5f613246b6ac7ee741 100644 +index 73d50715d34fdf67f346672901dd1d24bb2ac7fb..74dd70ad98c6877ace93dbcdeb3e89ba1e2d0d5e 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -244,7 +244,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -2070,7 +2070,7 @@ index caa73632aee15583c6b6ed12a668c8f49b794708..3abec84383a445d3ad0d3b5f613246b6 // Paper end - optimise chunk tick iteration public ChunkMap(ServerLevel world, LevelStorageSource.LevelStorageAccess session, DataFixer dataFixer, StructureTemplateManager structureTemplateManager, Executor executor, BlockableEventLoop mainThreadExecutor, LightChunkGetter chunkProvider, ChunkGenerator chunkGenerator, ChunkProgressListener worldGenerationProgressListener, ChunkStatusUpdateListener chunkStatusChangeListener, Supplier persistentStateManagerFactory, int viewDistance, boolean dsync) { -@@ -1464,8 +1464,28 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1468,8 +1468,28 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider return ChunkMap.this.level.getServer().getScaledTrackingDistance(initialDistance); } @@ -2099,7 +2099,7 @@ index caa73632aee15583c6b6ed12a668c8f49b794708..3abec84383a445d3ad0d3b5f613246b6 Iterator iterator = this.entity.getIndirectPassengers().iterator(); while (iterator.hasNext()) { -@@ -1477,6 +1497,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1481,6 +1501,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider i = j; } } @@ -2217,10 +2217,10 @@ index 8c33a12ca879c46893150d6adfb8aa4d397c6b4c..8afda01ebaf2b3b0cce40939ba9e8c2e private void getFullChunk(long pos, Consumer chunkConsumer) { diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index 35674f92a67f93382103c2766df4b678ba5c862f..c1315a0aeabdd80b1ef5ac54f82bb651854e0fae 100644 +index fd75d4b04ca560a3c1c0035052ff0073b7081d71..0b8cdf9d8012e40872bc6b5cf55c5a0a54cb1248 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -178,6 +178,7 @@ public class ServerEntity { +@@ -184,6 +184,7 @@ public class ServerEntity { boolean flag6 = k < -32768L || k > 32767L || l < -32768L || l > 32767L || i1 < -32768L || i1 > 32767L; if (!flag6 && this.teleportDelay <= 400 && !this.wasRiding && this.wasOnGround == this.entity.onGround()&& !(io.papermc.paper.configuration.GlobalConfiguration.get().collisions.sendFullPosForHardCollidingEntities && this.entity.hardCollides())) { // Paper - send full pos for hard colliding entities to prevent collision problems due to desync @@ -2228,7 +2228,7 @@ index 35674f92a67f93382103c2766df4b678ba5c862f..c1315a0aeabdd80b1ef5ac54f82bb651 if ((!flag2 || !flag3) && !(this.entity instanceof AbstractArrow)) { if (flag2) { packet1 = new ClientboundMoveEntityPacket.Pos(this.entity.getId(), (short) ((int) k), (short) ((int) l), (short) ((int) i1), this.entity.onGround()); -@@ -191,6 +192,7 @@ public class ServerEntity { +@@ -197,6 +198,7 @@ public class ServerEntity { flag4 = true; flag5 = true; } diff --git a/patches/server/0002-Change-branding.patch b/patches/server/0004-Change-branding.patch similarity index 100% rename from patches/server/0002-Change-branding.patch rename to patches/server/0004-Change-branding.patch diff --git a/patches/server/0003-Add-CloudPlane-configuration.patch b/patches/server/0005-Add-CloudPlane-configuration.patch similarity index 100% rename from patches/server/0003-Add-CloudPlane-configuration.patch rename to patches/server/0005-Add-CloudPlane-configuration.patch diff --git a/patches/server/0004-Add-allowPvP-gamerule.patch b/patches/server/0006-Add-allowPvP-gamerule.patch similarity index 96% rename from patches/server/0004-Add-allowPvP-gamerule.patch rename to patches/server/0006-Add-allowPvP-gamerule.patch index 957a96e..a47c237 100644 --- a/patches/server/0004-Add-allowPvP-gamerule.patch +++ b/patches/server/0006-Add-allowPvP-gamerule.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add allowPvP gamerule diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f4f8e0c0ffb7c54ccdca06f3a6c2508a094c691f..0b807c4de22bb2320ea9767d2accd7fb0bf80820 100644 +index aea0b628a1510b1dad1e7bf022c251efc05c27f4..20f39f27fc3e7a4bee861b147da66f7726dc2338 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1514,7 +1514,7 @@ public class ServerPlayer extends Player { diff --git a/patches/server/0005-Add-option-to-translate-custom-item-names-and-lore.patch b/patches/server/0007-Add-option-to-translate-custom-item-names-and-lore.patch similarity index 100% rename from patches/server/0005-Add-option-to-translate-custom-item-names-and-lore.patch rename to patches/server/0007-Add-option-to-translate-custom-item-names-and-lore.patch diff --git a/patches/server/0006-Add-more-detailed-brand-info.patch b/patches/server/0008-Add-more-detailed-brand-info.patch similarity index 100% rename from patches/server/0006-Add-more-detailed-brand-info.patch rename to patches/server/0008-Add-more-detailed-brand-info.patch diff --git a/patches/server/0007-Add-start-argument-for-changing-pufferfish-config-lo.patch b/patches/server/0009-Add-start-argument-for-changing-pufferfish-config-lo.patch similarity index 92% rename from patches/server/0007-Add-start-argument-for-changing-pufferfish-config-lo.patch rename to patches/server/0009-Add-start-argument-for-changing-pufferfish-config-lo.patch index 695f6a7..b0a7153 100644 --- a/patches/server/0007-Add-start-argument-for-changing-pufferfish-config-lo.patch +++ b/patches/server/0009-Add-start-argument-for-changing-pufferfish-config-lo.patch @@ -18,7 +18,7 @@ index 020368da69b9a492155f6de6297f74732f4ab6ea..4a5ad92c7989d4f85eea3f2908732fb5 sender.sendMessage(Component.text("Failed to reload.", NamedTextColor.RED)); e.printStackTrace(); diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -index 7939ad8e61f06288f5bb1fde827e938a636e63c0..fcbb75c973dfdc880d91849d2c97fc947d997e33 100644 +index 13e6a1539360f48f8c8f63a9150a427de6027948..5ca225ff196958f764f2918cbd327293e91eecfa 100644 --- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java @@ -48,8 +48,8 @@ public class PufferfishConfig { @@ -33,7 +33,7 @@ index 7939ad8e61f06288f5bb1fde827e938a636e63c0..fcbb75c973dfdc880d91849d2c97fc94 if (configFile.exists()) { try { diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index d51170a2ec8300bde1d02ebb499fc96e6cee83cd..26ffef198021e05d5f479d9f290228be90a93db0 100644 +index 219f91409f7e4624abcba6c9c70ee8c0fa9fc89c..720db1c8e1fb66ceb157a3a29c932d8e00417e53 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -229,7 +229,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -46,7 +46,7 @@ index d51170a2ec8300bde1d02ebb499fc96e6cee83cd..26ffef198021e05d5f479d9f290228be this.setPvpAllowed(dedicatedserverproperties.pvp); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index d6118c7e4275f41949371023c5ea6c306ed6488c..18fc20ee23cbfca4066a07a090f28fd5547b671d 100644 +index 4eb45de81fdfe765d8e6a8c2c9846d4685b29baa..58e2aa17fbd6752eef47fd0c9b6160e7bc43db67 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -179,6 +179,12 @@ public class Main { diff --git a/patches/server/0008-Fire-PlayerPickupArrowEvent-for-creative-players.patch b/patches/server/0010-Fire-PlayerPickupArrowEvent-for-creative-players.patch similarity index 100% rename from patches/server/0008-Fire-PlayerPickupArrowEvent-for-creative-players.patch rename to patches/server/0010-Fire-PlayerPickupArrowEvent-for-creative-players.patch diff --git a/patches/server/0009-Prevent-healing-amplifier-from-breaking.patch b/patches/server/0011-Prevent-healing-amplifier-from-breaking.patch similarity index 100% rename from patches/server/0009-Prevent-healing-amplifier-from-breaking.patch rename to patches/server/0011-Prevent-healing-amplifier-from-breaking.patch diff --git a/patches/server/0010-Log-exceptions-caused-by-packet-sending.patch b/patches/server/0012-Log-exceptions-caused-by-packet-sending.patch similarity index 88% rename from patches/server/0010-Log-exceptions-caused-by-packet-sending.patch rename to patches/server/0012-Log-exceptions-caused-by-packet-sending.patch index fd80d02..aea5ede 100644 --- a/patches/server/0010-Log-exceptions-caused-by-packet-sending.patch +++ b/patches/server/0012-Log-exceptions-caused-by-packet-sending.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Log exceptions caused by packet sending diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java -index c0ea20dcee8bb293df96bc6ee019e50ad6b383fd..7d4b5a460ecf906c894c7682c26a59469a09ca90 100644 +index 11805569eefe100c2f469431d77a0d5a80c53244..7b13453068100a62ee9650686cf81a8eefb041ec 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java -@@ -209,7 +209,7 @@ public class Connection extends SimpleChannelInboundHandler> { +@@ -224,7 +224,7 @@ public class Connection extends SimpleChannelInboundHandler> { if (player != null) player.quitReason = org.bukkit.event.player.PlayerQuitEvent.QuitReason.ERRONEOUS_STATE; // Paper if (flag) { @@ -17,7 +17,7 @@ index c0ea20dcee8bb293df96bc6ee019e50ad6b383fd..7d4b5a460ecf906c894c7682c26a5946 if (this.getSending() == PacketFlow.CLIENTBOUND) { ConnectionProtocol enumprotocol = ((ConnectionProtocol.CodecData) this.channel.attr(Connection.ATTRIBUTE_CLIENTBOUND_PROTOCOL).get()).protocol(); Packet packet = enumprotocol == ConnectionProtocol.LOGIN ? new ClientboundLoginDisconnectPacket(ichatmutablecomponent) : new ClientboundDisconnectPacket(ichatmutablecomponent); -@@ -223,7 +223,7 @@ public class Connection extends SimpleChannelInboundHandler> { +@@ -238,7 +238,7 @@ public class Connection extends SimpleChannelInboundHandler> { this.setReadOnly(); } else { diff --git a/patches/server/0011-Save-shulker-box-openers.patch b/patches/server/0013-Save-shulker-box-openers.patch similarity index 100% rename from patches/server/0011-Save-shulker-box-openers.patch rename to patches/server/0013-Save-shulker-box-openers.patch diff --git a/patches/server/0012-Fix-non-adventure-components-not-being-translated.patch b/patches/server/0014-Fix-non-adventure-components-not-being-translated.patch similarity index 100% rename from patches/server/0012-Fix-non-adventure-components-not-being-translated.patch rename to patches/server/0014-Fix-non-adventure-components-not-being-translated.patch diff --git a/patches/server/0013-Resend-more-data-on-locale-change.patch b/patches/server/0015-Resend-more-data-on-locale-change.patch similarity index 98% rename from patches/server/0013-Resend-more-data-on-locale-change.patch rename to patches/server/0015-Resend-more-data-on-locale-change.patch index 971ac82..1207e52 100644 --- a/patches/server/0013-Resend-more-data-on-locale-change.patch +++ b/patches/server/0015-Resend-more-data-on-locale-change.patch @@ -104,7 +104,7 @@ index ec4325b90b5707e97927b95064ef4dd840b2a538..c754ed230a5320128839541bf707d0cb public static final EntityDataAccessor DATA_BACKGROUND_COLOR_ID = SynchedEntityData.defineId(Display.TextDisplay.class, EntityDataSerializers.INT); private static final EntityDataAccessor DATA_TEXT_OPACITY_ID = SynchedEntityData.defineId(Display.TextDisplay.class, EntityDataSerializers.BYTE); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1add748c0401c78e06d9a3296716fb7a7ea97f9f..868a3cb583fe2c13ffa6eca0b0cf84e6262bbca8 100644 +index 7ed95c2a77fb73aff06051438c69f209ca580049..ab3f983bd028987835f11f327f4b8a3cd4c90442 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -355,7 +355,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0014-Work-around-worldborder-collision-issues.patch b/patches/server/0016-Work-around-worldborder-collision-issues.patch similarity index 100% rename from patches/server/0014-Work-around-worldborder-collision-issues.patch rename to patches/server/0016-Work-around-worldborder-collision-issues.patch