diff --git a/leaf-server/minecraft-patches/features/0128-Bulk-writes-to-writeLongArray-during-chunk-loading.patch b/leaf-server/minecraft-patches/features/0128-Bulk-writes-to-writeLongArray-during-chunk-loading.patch index d2fdc347..947081e1 100644 --- a/leaf-server/minecraft-patches/features/0128-Bulk-writes-to-writeLongArray-during-chunk-loading.patch +++ b/leaf-server/minecraft-patches/features/0128-Bulk-writes-to-writeLongArray-during-chunk-loading.patch @@ -5,13 +5,14 @@ Subject: [PATCH] Bulk writes to writeLongArray during chunk loading diff --git a/net/minecraft/network/FriendlyByteBuf.java b/net/minecraft/network/FriendlyByteBuf.java -index abb0141426fd716e79a947b9498a8351daa342fc..838a7d64e717759f506e64c74eb76eea05f72811 100644 +index abb0141426fd716e79a947b9498a8351daa342fc..5353b8331cf9c428ab7ffba6ebeac4fa323af456 100644 --- a/net/minecraft/network/FriendlyByteBuf.java +++ b/net/minecraft/network/FriendlyByteBuf.java -@@ -341,9 +341,30 @@ public class FriendlyByteBuf extends ByteBuf { +@@ -341,10 +341,33 @@ public class FriendlyByteBuf extends ByteBuf { public FriendlyByteBuf writeLongArray(long[] array) { this.writeVarInt(array.length); ++ // Leaf start - Bulk writes to writeLongArray during chunk loading + if (array.length == 0) { + return this; + } @@ -39,5 +40,7 @@ index abb0141426fd716e79a947b9498a8351daa342fc..838a7d64e717759f506e64c74eb76eea + temp.rewind(); + this.source.writeBytes(temp); } ++ // Leaf end - Bulk writes to writeLongArray during chunk loading return this; + } diff --git a/leaf-server/src/main/java/org/dreeam/leaf/util/map/ConcurrentLongHashSet.java b/leaf-server/src/main/java/org/dreeam/leaf/util/map/ConcurrentLongHashSet.java index f215b67b..06083e69 100644 --- a/leaf-server/src/main/java/org/dreeam/leaf/util/map/ConcurrentLongHashSet.java +++ b/leaf-server/src/main/java/org/dreeam/leaf/util/map/ConcurrentLongHashSet.java @@ -5,10 +5,14 @@ import it.unimi.dsi.fastutil.longs.LongOpenHashSet; import it.unimi.dsi.fastutil.longs.LongSet; import org.jetbrains.annotations.NotNull; -import java.util.*; +import java.util.Collection; +import java.util.Collections; +import java.util.NoSuchElementException; +import java.util.Objects; import java.util.concurrent.locks.ReentrantLock; public final class ConcurrentLongHashSet extends LongOpenHashSet implements LongSet { + private static final int DEFAULT_SEGMENTS = 16; // Should be power-of-two private final Segment[] segments; private final int segmentMask; @@ -23,7 +27,7 @@ public final class ConcurrentLongHashSet extends LongOpenHashSet implements Long boolean modified = false; for (Object obj : c) { if (obj instanceof Long) { - modified |= remove((Long) obj); + modified |= remove(obj); } } return modified; @@ -92,7 +96,7 @@ public final class ConcurrentLongHashSet extends LongOpenHashSet implements Long Objects.requireNonNull(c, "Collection cannot be null"); for (Object obj : c) { if (obj == null || !(obj instanceof Long)) return false; - if (!contains((Long) obj)) return false; + if (!contains(obj)) return false; } return true; } @@ -233,8 +237,7 @@ public final class ConcurrentLongHashSet extends LongOpenHashSet implements Long @Override public boolean equals(Object o) { if (this == o) return true; - if (!(o instanceof LongSet)) return false; - LongSet that = (LongSet) o; + if (!(o instanceof LongSet that)) return false; return size() == that.size() && containsAll(that); } @@ -248,7 +251,15 @@ public final class ConcurrentLongHashSet extends LongOpenHashSet implements Long return hash; } - @Override @NotNull public Object[] toArray() { return Collections.unmodifiableSet(this).toArray(); } - @Override @NotNull public T[] toArray(@NotNull T[] a) { return Collections.unmodifiableSet(this).toArray(a); } + @Override + @NotNull + public Object[] toArray() { + return Collections.unmodifiableSet(this).toArray(); + } + @Override + @NotNull + public T[] toArray(@NotNull T[] a) { + return Collections.unmodifiableSet(this).toArray(a); + } }