From 2a3abcc6b8859b11e13c9d95d7426590edf9fefd Mon Sep 17 00:00:00 2001
From: tth05 <36999320+tth05@users.noreply.github.com>
Date: Sat, 20 Jan 2024 23:00:50 +0100
Subject: Remove all usages of GT_ItemStack2 as Set/Map keys by using fastutil
(#2465)
* Replace Maps in GT_OreDictUnificator with fastutil implementations with custom hasher
Removes the need to allocate a GT_ItemStack2 every time these Maps are accessed
* Replace local HashMaps with Reference2LongArrayMaps in GT_Recipe and fix if condition
* Remove GT_ItemStack2 usage from OrePrefixes
* Update GTNHLib requirement in @Mod annotation
* Don't modify stack argument when re-trying `setItemStack2DataMap` access with wildcard value
---
src/main/java/gregtech/GT_Mod.java | 4 +-
src/main/java/gregtech/api/GregTech_API.java | 6 ++-
src/main/java/gregtech/api/enums/OrePrefixes.java | 14 ++++---
.../java/gregtech/api/objects/GT_ItemStack.java | 38 +++++++++++++++++++
.../java/gregtech/api/objects/GT_ItemStack2.java | 3 ++
.../gregtech/api/util/GT_OreDictUnificator.java | 43 ++++++++++++----------
src/main/java/gregtech/api/util/GT_Recipe.java | 20 ++++++----
src/main/java/gregtech/api/util/GT_Utility.java | 27 +++++++++++++-
8 files changed, 118 insertions(+), 37 deletions(-)
(limited to 'src')
diff --git a/src/main/java/gregtech/GT_Mod.java b/src/main/java/gregtech/GT_Mod.java
index 645702055b..90791c95f2 100644
--- a/src/main/java/gregtech/GT_Mod.java
+++ b/src/main/java/gregtech/GT_Mod.java
@@ -128,7 +128,7 @@ import ic2.api.recipe.RecipeOutput;
version = "MC1710",
guiFactory = "gregtech.client.GT_GuiFactory",
dependencies = " required-after:IC2;" + " required-after:structurelib;"
- + " required-after:gtnhlib@[0.0.8,);"
+ + " required-after:gtnhlib@[0.2.1,);"
+ " required-after:modularui@[1.1.12,);"
+ " required-after:appliedenergistics2@[rv3-beta-258,);"
+ " after:dreamcraft;"
@@ -796,7 +796,7 @@ public class GT_Mod implements IGT_Mod {
GT_Utility.reInit();
GT_Recipe.reInit();
try {
- for (Map extends ItemHolder, ?> gt_itemStackMap : GregTech_API.sItemStackMappings) {
+ for (Map, ?> gt_itemStackMap : GregTech_API.sItemStackMappings) {
GT_Utility.reMap(gt_itemStackMap);
}
for (SetMultimap extends ItemHolder, ?> gt_itemStackMap : GregTech_API.itemStackMultiMaps) {
diff --git a/src/main/java/gregtech/api/GregTech_API.java b/src/main/java/gregtech/api/GregTech_API.java
index 1f936f3119..7617b2c195 100644
--- a/src/main/java/gregtech/api/GregTech_API.java
+++ b/src/main/java/gregtech/api/GregTech_API.java
@@ -107,8 +107,12 @@ public class GregTech_API {
public static final long FLUID_MATERIAL_UNIT = L;
/**
* Fixes the HashMap Mappings for ItemStacks once the Server started
+ *
+ *
+ * NOTE: We use wildcards generics for the key because it could be for example {@link ItemStack} or
+ * {@link GT_ItemStack}
*/
- public static final Collection