-
-
Notifications
You must be signed in to change notification settings - Fork 57
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
- Loading branch information
Showing
11 changed files
with
360 additions
and
131 deletions.
There are no files selected for viewing
43 changes: 43 additions & 0 deletions
43
.../minecraft-patches/features/0123-Bulk-writes-to-writeLongArray-during-chunk-loading.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: Taiyou06 <[email protected]> | ||
Date: Fri, 21 Feb 2025 15:06:55 +0100 | ||
Subject: [PATCH] Bulk writes to writeLongArray during chunk loading | ||
|
||
|
||
diff --git a/net/minecraft/network/FriendlyByteBuf.java b/net/minecraft/network/FriendlyByteBuf.java | ||
index 7c2df09decf90f691d35516a2eb74e97370f6a37..c5210345adfd3fe8385bf415bdf5b07eaffef24d 100644 | ||
--- a/net/minecraft/network/FriendlyByteBuf.java | ||
+++ b/net/minecraft/network/FriendlyByteBuf.java | ||
@@ -337,9 +337,30 @@ public class FriendlyByteBuf extends ByteBuf { | ||
|
||
public FriendlyByteBuf writeLongArray(long[] array) { | ||
this.writeVarInt(array.length); | ||
+ if (array.length == 0) { | ||
+ return this; | ||
+ } | ||
+ | ||
+ this.source.ensureWritable(array.length * Long.BYTES); | ||
+ int writerIndex = this.source.writerIndex(); | ||
+ | ||
+ if (this.source.hasArray()) { | ||
+ byte[] dest = this.source.array(); | ||
+ int offset = this.source.arrayOffset() + writerIndex; | ||
|
||
- for (long l : array) { | ||
- this.writeLong(l); | ||
+ ByteBuffer buf = ByteBuffer.wrap(dest, offset, array.length * Long.BYTES).order(this.source.order()); | ||
+ buf.asLongBuffer().put(array); | ||
+ | ||
+ this.source.writerIndex(writerIndex + array.length * Long.BYTES); | ||
+ } else if (this.source.nioBufferCount() > 0) { | ||
+ ByteBuffer nioBuf = this.source.nioBuffer(writerIndex, array.length * Long.BYTES); | ||
+ nioBuf.asLongBuffer().put(array); | ||
+ this.source.writerIndex(writerIndex + array.length * Long.BYTES); | ||
+ } else { | ||
+ ByteBuffer temp = ByteBuffer.allocate(array.length * Long.BYTES).order(this.source.order()); | ||
+ temp.asLongBuffer().put(array); | ||
+ temp.rewind(); | ||
+ this.source.writeBytes(temp); | ||
} | ||
|
||
return this; |
File renamed without changes.
33 changes: 0 additions & 33 deletions
33
leaf-server/minecraft-patches/features/0124-ensureCapacity-with-collectTickingChunks.patch
This file was deleted.
Oops, something went wrong.
File renamed without changes.
73 changes: 0 additions & 73 deletions
73
leaf-server/minecraft-patches/features/0128-Pre-size-ClientboundLightUpdatePacketData.patch
This file was deleted.
Oops, something went wrong.
25 changes: 0 additions & 25 deletions
25
.../minecraft-patches/features/0129-Bulk-writes-to-writeLongArray-during-chunk-loading.patch
This file was deleted.
Oops, something went wrong.
File renamed without changes.
File renamed without changes.
File renamed without changes.
81 changes: 81 additions & 0 deletions
81
leaf-server/minecraft-patches/features/0132-Slight-optimizations-to-VarInt.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: Taiyou06 <[email protected]> | ||
Date: Mon, 24 Feb 2025 21:11:09 +0100 | ||
Subject: [PATCH] Slight optimizations to VarInt | ||
|
||
|
||
diff --git a/net/minecraft/network/VarInt.java b/net/minecraft/network/VarInt.java | ||
index 6f8dd31582f0e1d3a71acc7a142c1f4ec0539d9e..043db53ee627ac13e3a952c8d5beba5065ecbb48 100644 | ||
--- a/net/minecraft/network/VarInt.java | ||
+++ b/net/minecraft/network/VarInt.java | ||
@@ -51,35 +51,41 @@ public class VarInt { | ||
} | ||
|
||
public static ByteBuf write(ByteBuf buffer, int value) { | ||
- // Gale start - Velocity - optimized VarInt#write | ||
- if ((value & 0xFFFFFF80) == 0) { | ||
- buffer.writeByte(value); | ||
- } else if ((value & 0xFFFFC000) == 0) { | ||
- int w = (value & 0x7F) << 8 | ||
- | (value >>> 7) | ||
- | 0x00008000; | ||
- buffer.writeShort(w); | ||
- } else if ((value & 0xFFE00000) == 0) { | ||
- int w = (value & 0x7F) << 16 | ||
- | (value & 0x3F80) << 1 | ||
- | (value >>> 14) | ||
- | 0x00808000; | ||
- buffer.writeMedium(w); | ||
- } else if ((value & 0xF0000000) == 0) { | ||
- int w = (value & 0x7F) << 24 | ||
- | ((value & 0x3F80) << 9) | ||
- | (value & 0x1FC000) >> 6 | ||
- | (value >>> 21) | ||
- | 0x80808000; | ||
- buffer.writeInt(w); | ||
- } else { | ||
- int w = (value & 0x7F) << 24 | ||
- | (value & 0x3F80) << 9 | ||
- | (value & 0x1FC000) >> 6 | ||
- | ((value >>> 21) & 0x7F) | ||
- | 0x80808080; | ||
- buffer.writeInt(w); | ||
- buffer.writeByte(value >>> 28); | ||
+ // Gale start - Velocity - optimized VarInt#write // Leaf - help JIT by using switch case | ||
+ int bytesNeeded = getByteSize(value); | ||
+ | ||
+ switch (bytesNeeded) { | ||
+ case 1: | ||
+ buffer.writeByte(value); | ||
+ break; | ||
+ case 2: | ||
+ int w2 = ((value & 0x7F) << 8) | (value >>> 7) | 0x00008000; | ||
+ buffer.writeShort(w2); | ||
+ break; | ||
+ case 3: | ||
+ int w3 = (value & 0x7F) << 16 | ||
+ | (value & 0x3F80) << 1 | ||
+ | (value >>> 14) | ||
+ | 0x00808000; | ||
+ buffer.writeMedium(w3); | ||
+ break; | ||
+ case 4: | ||
+ int w4 = (value & 0x7F) << 24 | ||
+ | ((value & 0x3F80) << 9) | ||
+ | (value & 0x1FC000) >> 6 | ||
+ | (value >>> 21) | ||
+ | 0x80808000; | ||
+ buffer.writeInt(w4); | ||
+ break; | ||
+ case 5: | ||
+ int w5 = (value & 0x7F) << 24 | ||
+ | (value & 0x3F80) << 9 | ||
+ | (value & 0x1FC000) >> 6 | ||
+ | ((value >>> 21) & 0x7F) | ||
+ | 0x80808080; | ||
+ buffer.writeInt(w5); | ||
+ buffer.writeByte(value >>> 28); | ||
+ break; | ||
} | ||
return buffer; | ||
} |
Oops, something went wrong.