Skip to content

Commit 6162861

Browse files
committed
fix duplicate recipe memory
clarify todo
1 parent 09a8ee5 commit 6162861

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

src/main/java/gregtech/common/metatileentities/storage/CraftingRecipeMemory.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package gregtech.common.metatileentities.storage;
22

3+
import gregtech.api.util.ItemStackHashStrategy;
4+
35
import net.minecraft.item.ItemStack;
46
import net.minecraft.nbt.NBTTagCompound;
57
import net.minecraft.nbt.NBTTagList;
@@ -12,6 +14,7 @@
1214
import com.cleanroommc.modularui.network.NetworkUtils;
1315
import com.cleanroommc.modularui.utils.MouseData;
1416
import com.cleanroommc.modularui.value.sync.SyncHandler;
17+
import it.unimi.dsi.fastutil.Hash;
1518
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
1619
import org.jetbrains.annotations.NotNull;
1720
import org.jetbrains.annotations.Nullable;
@@ -32,6 +35,11 @@ public class CraftingRecipeMemory extends SyncHandler {
3235
// server only
3336
public static final int MOUSE_CLICK = 2;
3437

38+
private final Hash.Strategy<ItemStack> strategy = ItemStackHashStrategy.builder()
39+
.compareItem(true)
40+
.compareMetadata(true)
41+
.build();
42+
3543
private final MemorizedRecipe[] memorizedRecipes;
3644
private final IItemHandlerModifiable craftingMatrix;
3745

@@ -84,16 +92,18 @@ private MemorizedRecipe findOrCreateRecipe(ItemStack resultItemStack) {
8492
MemorizedRecipe existing = null;
8593
for (MemorizedRecipe memorizedRecipe : memorizedRecipes) {
8694
if (memorizedRecipe != null &&
87-
ItemStack.areItemStacksEqual(memorizedRecipe.recipeResult, resultItemStack)) {
95+
strategy.equals(memorizedRecipe.recipeResult, resultItemStack)) {
8896
existing = memorizedRecipe;
8997
break;
9098
}
9199
}
92100

93101
// we already have a recipe that matches
94102
// move it to the front
95-
if (existing != null && !existing.recipeLocked) {
96-
if (existing.index == 0) return existing; // it's already at the front
103+
if (existing != null) {
104+
// it's already at the front or it's locked
105+
if (existing.index == 0 || existing.recipeLocked) return existing;
106+
97107
int removed = existing.index;
98108
removeRecipe(existing.index);
99109
syncToClient(REMOVE_RECIPE, buffer -> buffer.writeByte(removed));

src/main/java/gregtech/common/metatileentities/storage/MetaTileEntityWorkbench.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ public IWidget createCraftingGrid() {
317317
public IWidget createCraftingOutput(PosGuiData guiData, PanelSyncManager syncManager) {
318318
var amountCrafted = new IntSyncValue(this::getItemsCrafted, this::setItemsCrafted);
319319
syncManager.syncValue("amount_crafted", amountCrafted);
320-
amountCrafted.updateCacheFromSource(true); // todo remove
320+
amountCrafted.updateCacheFromSource(true); // todo remove on mui2 rc3
321321

322322
return Flow.column()
323323
.size(54)

0 commit comments

Comments
 (0)