From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: tr7zw Date: Fri, 31 Jul 2020 22:04:17 -0500 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 c2c19a6fbfa2a4aba21aa71789071c69a6246556..7dfd36e22a896ae440bbda6db0628c44493b44d2 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,12 +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 */ public class HashedList implements List { @@ -163,6 +161,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 542b7cb89ac6b216d02bac6563df60d53cc7e9f1..811b02d36416b41f7dfa0d3b8a94c159fe77c911 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()); // Yatopia + protected final List tileEntityListPending = HashedList.wrapper(Lists.newArrayList()); // Yatopia protected final java.util.Set tileEntityListUnload = com.google.common.collect.Sets.newHashSet(); public final Thread serverThread; private final boolean debugWorld;