diff options
author | Jake Potrebic <[email protected]> | 2022-03-30 13:28:38 -0700 |
---|---|---|
committer | GitHub <[email protected]> | 2022-03-30 13:28:38 -0700 |
commit | 7f47b9b7f84f9bee31b3e046a8dcbd28ec012fe0 (patch) | |
tree | 08dd0cadd782982719e33315c2ae5687b2ce21fb /patches/server/0361-Avoid-hopper-searches-if-there-are-no-items.patch | |
parent | d3c102373f90cffa1be2a19ce671d99d563ff9ca (diff) | |
download | Paper-7f47b9b7f84f9bee31b3e046a8dcbd28ec012fe0.tar.gz Paper-7f47b9b7f84f9bee31b3e046a8dcbd28ec012fe0.zip |
Remove KeyedObject interface (#7680)
Diffstat (limited to 'patches/server/0361-Avoid-hopper-searches-if-there-are-no-items.patch')
-rw-r--r-- | patches/server/0361-Avoid-hopper-searches-if-there-are-no-items.patch | 124 |
1 files changed, 0 insertions, 124 deletions
diff --git a/patches/server/0361-Avoid-hopper-searches-if-there-are-no-items.patch b/patches/server/0361-Avoid-hopper-searches-if-there-are-no-items.patch deleted file mode 100644 index c5138af81d..0000000000 --- a/patches/server/0361-Avoid-hopper-searches-if-there-are-no-items.patch +++ /dev/null @@ -1,124 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: CullanP <[email protected]> -Date: Thu, 3 Mar 2016 02:13:38 -0600 -Subject: [PATCH] Avoid hopper searches if there are no items - -Hoppers searching for items and minecarts is the most expensive part of hopper ticking. -We keep track of the number of minecarts and items in a chunk. -If there are no items in the chunk, we skip searching for items. -If there are no minecarts in the chunk, we skip searching for them. - -Usually hoppers aren't near items, so we can skip most item searches. -And since minecart hoppers are used _very_ rarely near we can avoid alot of searching there. - -Combined, this adds up a lot. - -diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index bfbd1922d77602628e57326b3251459f45b1aed9..334fd625829c8e5e9c434b184f6d0084b2d6ccc8 100644 ---- a/src/main/java/net/minecraft/world/level/Level.java -+++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -986,7 +986,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - } - } - -- }); -+ }, predicate == net.minecraft.world.entity.EntitySelector.CONTAINER_ENTITY_SELECTOR); // Paper - return list; - } - -diff --git a/src/main/java/net/minecraft/world/level/entity/EntitySection.java b/src/main/java/net/minecraft/world/level/entity/EntitySection.java -index 524f3c42964eb83c9109bcc548a1075f1e295411..e9aee7d11798c3bd990466f101e9e342686de11c 100644 ---- a/src/main/java/net/minecraft/world/level/entity/EntitySection.java -+++ b/src/main/java/net/minecraft/world/level/entity/EntitySection.java -@@ -13,6 +13,10 @@ public class EntitySection<T extends EntityAccess> { - private static final Logger LOGGER = LogUtils.getLogger(); - private final ClassInstanceMultiMap<T> storage; - private Visibility chunkStatus; -+ // Paper start - track number of items and minecarts -+ public int itemCount; -+ public int inventoryEntityCount; -+ // Paper end - - public EntitySection(Class<T> entityClass, Visibility status) { - this.chunkStatus = status; -@@ -20,10 +24,24 @@ public class EntitySection<T extends EntityAccess> { - } - - public void add(T entity) { -+ // Paper start -+ if (entity instanceof net.minecraft.world.entity.item.ItemEntity) { -+ this.itemCount++; -+ } else if (entity instanceof net.minecraft.world.Container) { -+ this.inventoryEntityCount++; -+ } -+ // Paper end - this.storage.add(entity); - } - - public boolean remove(T entity) { -+ // Paper start -+ if (entity instanceof net.minecraft.world.entity.item.ItemEntity) { -+ this.itemCount--; -+ } else if (entity instanceof net.minecraft.world.Container) { -+ this.inventoryEntityCount--; -+ } -+ // Paper end - return this.storage.remove(entity); - } - -diff --git a/src/main/java/net/minecraft/world/level/entity/EntitySectionStorage.java b/src/main/java/net/minecraft/world/level/entity/EntitySectionStorage.java -index 13df7889b2b5249fb81c54fadf55315a4c515116..74210dc2eef63da7360b1f833bb59b278419fb2b 100644 ---- a/src/main/java/net/minecraft/world/level/entity/EntitySectionStorage.java -+++ b/src/main/java/net/minecraft/world/level/entity/EntitySectionStorage.java -@@ -111,13 +111,20 @@ public class EntitySectionStorage<T extends EntityAccess> { - } - - public void getEntities(AABB box, Consumer<T> action) { -+ // Paper start -+ this.getEntities(box, action, false); -+ } -+ public void getEntities(AABB box, Consumer<T> action, boolean isContainerSearch) { -+ // Paper end - this.forEachAccessibleNonEmptySection(box, (section) -> { -+ if (isContainerSearch && section.inventoryEntityCount <= 0) return; // Paper - section.getEntities(box, action); - }); - } - - public <U extends T> void getEntities(EntityTypeTest<T, U> filter, AABB box, Consumer<U> action) { - this.forEachAccessibleNonEmptySection(box, (section) -> { -+ if (filter.getBaseClass() == net.minecraft.world.entity.item.ItemEntity.class && section.itemCount <= 0) return; // Paper - section.getEntities(filter, box, action); - }); - } -diff --git a/src/main/java/net/minecraft/world/level/entity/LevelEntityGetter.java b/src/main/java/net/minecraft/world/level/entity/LevelEntityGetter.java -index 9723a0ad61548c8c6c4c5ef20a150d5b17d80afd..da1ad0b2679e392ed81b50c15f012c63cb5c939e 100644 ---- a/src/main/java/net/minecraft/world/level/entity/LevelEntityGetter.java -+++ b/src/main/java/net/minecraft/world/level/entity/LevelEntityGetter.java -@@ -17,6 +17,7 @@ public interface LevelEntityGetter<T extends EntityAccess> { - <U extends T> void get(EntityTypeTest<T, U> filter, Consumer<U> action); - - void get(AABB box, Consumer<T> action); -+ void get(AABB box, Consumer<T> action, boolean isContainerSearch); // Paper - - <U extends T> void get(EntityTypeTest<T, U> filter, AABB box, Consumer<U> action); - } -diff --git a/src/main/java/net/minecraft/world/level/entity/LevelEntityGetterAdapter.java b/src/main/java/net/minecraft/world/level/entity/LevelEntityGetterAdapter.java -index d5129c12c79eb6fe6b7e5f8eed4d24226423f5fd..3b13f6ea36a3bfecabe09221eb5c48dddab119db 100644 ---- a/src/main/java/net/minecraft/world/level/entity/LevelEntityGetterAdapter.java -+++ b/src/main/java/net/minecraft/world/level/entity/LevelEntityGetterAdapter.java -@@ -38,7 +38,13 @@ public class LevelEntityGetterAdapter<T extends EntityAccess> implements LevelEn - - @Override - public void get(AABB box, Consumer<T> action) { -- this.sectionStorage.getEntities(box, action); -+ // Paper start -+ this.get(box, action, false); -+ } -+ @Override -+ public void get(AABB box, Consumer<T> action, boolean isContainerSearch) { -+ this.sectionStorage.getEntities(box, action, isContainerSearch); -+ // Paper end - } - - @Override |