mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2026-01-06 15:51:31 +00:00
Originally vanilla logic is to use stream, and Mojang switched it to Guava's Collections2 since 1.21.4. It is much faster than using stream or manually adding to a new ArrayList. Manually adding to a new ArrayList requires allocating a new object array. However, the Collections2 lazy handles filter condition on iteration, so much better.
27 lines
1.4 KiB
Diff
27 lines
1.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Martijn Muijsers <martijnmuijsers@live.nl>
|
|
Date: Sun, 25 Dec 2022 20:51:32 +0100
|
|
Subject: [PATCH] Optimize matching item checks
|
|
|
|
License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
|
|
Gale - https://galemc.org
|
|
|
|
diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java
|
|
index 951c86278e8cb5cd801a5db2ebfabef8c6d813ef..6ceb6cf302bad28e453fa89ec16083b0e0c5c398 100644
|
|
--- a/net/minecraft/world/item/ItemStack.java
|
|
+++ b/net/minecraft/world/item/ItemStack.java
|
|
@@ -864,11 +864,11 @@ public final class ItemStack implements DataComponentHolder {
|
|
}
|
|
|
|
public static boolean isSameItem(ItemStack stack, ItemStack other) {
|
|
- return stack.is(other.getItem());
|
|
+ return stack == other || stack.is(other.getItem()); // Gale - optimize identical item checks
|
|
}
|
|
|
|
public static boolean isSameItemSameComponents(ItemStack stack, ItemStack other) {
|
|
- return stack.is(other.getItem()) && (stack.isEmpty() && other.isEmpty() || Objects.equals(stack.components, other.components));
|
|
+ return stack == other || stack.is(other.getItem()) && (stack.isEmpty() && other.isEmpty() || Objects.equals(stack.components, other.components)); // Gale - optimize identical item checks
|
|
}
|
|
|
|
public static MapCodec<ItemStack> lenientOptionalFieldOf(String fieldName) {
|