From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: tr7zw Date: Fri, 17 Jul 2020 01:10:17 +0200 Subject: [PATCH] Optimize TileEntity loading 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 a2e3e96e1e96c152de820283c1f8cb6248321f54..1725fc72846949fa08009ca5bec6214828bbbf3c 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 4a956f36812f36ea9898cb9e0c231ddb5eaa12cd..98196c11e6b22b14c0c23ae877559f06a5795a0f 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;