From f9e971311ae2d4680fa562f0b45cb6d78fb12b45 Mon Sep 17 00:00:00 2001 From: tr7zw Date: Fri, 17 Jul 2020 01:10:44 +0200 Subject: [PATCH] Create 0027-Optimize-TileEntity-loading.patch --- .../0027-Optimize-TileEntity-loading.patch | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 patches/server/0027-Optimize-TileEntity-loading.patch diff --git a/patches/server/0027-Optimize-TileEntity-loading.patch b/patches/server/0027-Optimize-TileEntity-loading.patch new file mode 100644 index 00000000..6c43964e --- /dev/null +++ b/patches/server/0027-Optimize-TileEntity-loading.patch @@ -0,0 +1,71 @@ +From 2bb2f43c34ce219ab0fa4adb901b2774b0584d5d Mon Sep 17 00:00:00 2001 +From: tr7zw +Date: Fri, 17 Jul 2020 01:10:17 +0200 +Subject: [PATCH] Optimize TileEntity loading + +--- + .../mods/lithium/common/util/collections/HashedList.java | 5 ++--- + src/main/java/net/minecraft/server/World.java | 7 +++++-- + 2 files changed, 7 insertions(+), 5 deletions(-) + +diff --git a/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java b/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java +index a2e3e96e1e..1725fc7284 100644 +--- a/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java ++++ b/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java +@@ -1,11 +1,10 @@ + package me.jellysquid.mods.lithium.common.util.collections; + +-import it.unimi.dsi.fastutil.objects.ObjectArraySet; +- + import java.util.*; + + /** + * Wraps a {@link List} with a hash table which provides O(1) lookups for {@link Collection#contains(Object)}. ++ * Uses a hashset so some issues can happen if the same entry get's added multiple times! (Doesn't matter for this usecase) + * + * @see https://github.com/jellysquid3/lithium-fabric/blob/1.16.x/fabric/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java + */ +@@ -163,6 +162,6 @@ public class HashedList implements List { + } + + public static HashedList wrapper(List list) { +- return new HashedList<>(list, new ObjectArraySet<>(list)); ++ return new HashedList<>(list, new HashSet<>(list)); + } + } +\ No newline at end of file +diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java +index 4a956f3681..98196c11e6 100644 +--- a/src/main/java/net/minecraft/server/World.java ++++ b/src/main/java/net/minecraft/server/World.java +@@ -2,6 +2,8 @@ package net.minecraft.server; + + import co.aikar.timings.Timing; + import co.aikar.timings.Timings; ++import me.jellysquid.mods.lithium.common.util.collections.HashedList; ++ + import com.destroystokyo.paper.antixray.ChunkPacketBlockController; // Paper - Anti-Xray + import com.destroystokyo.paper.antixray.ChunkPacketBlockControllerAntiXray; // Paper - Anti-Xray + import com.destroystokyo.paper.event.server.ServerExceptionEvent; +@@ -10,6 +12,7 @@ import com.google.common.base.MoreObjects; + import com.google.common.collect.Lists; + import com.mojang.serialization.Codec; + import java.io.IOException; ++import java.util.ArrayList; + import java.util.Collection; + import java.util.Iterator; + import java.util.List; +@@ -42,8 +45,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable { + public static final ResourceKey THE_END = ResourceKey.a(IRegistry.ae, new MinecraftKey("the_end")); + private static final EnumDirection[] a = EnumDirection.values(); + //public final List tileEntityList = Lists.newArrayList(); // Paper - remove unused list +- public final List tileEntityListTick = Lists.newArrayList(); +- protected final List tileEntityListPending = Lists.newArrayList(); ++ public final List tileEntityListTick = HashedList.wrapper(Lists.newArrayList()); // YAPFA ++ protected final List tileEntityListPending = HashedList.wrapper(Lists.newArrayList()); // YAPFA + protected final java.util.Set tileEntityListUnload = com.google.common.collect.Sets.newHashSet(); + public final Thread serverThread; + private final boolean debugWorld; +-- +2.25.1.windows.1 +