Skip to content

Commit 68b0aa6

Browse files
committed
move RecipeManager injection for parsing remainders to fix #286
1 parent 20e65bd commit 68b0aa6

File tree

3 files changed

+14
-8
lines changed

3 files changed

+14
-8
lines changed

src/main/java/io/wispforest/owo/mixin/recipe_remainders/RecipeManagerMixin.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,41 @@
11
package io.wispforest.owo.mixin.recipe_remainders;
22

3-
import com.google.gson.JsonObject;
3+
import com.google.gson.JsonElement;
44
import com.google.gson.JsonParseException;
55
import com.google.gson.JsonPrimitive;
6+
import com.llamalad7.mixinextras.sugar.Local;
67
import com.mojang.serialization.JsonOps;
78
import io.wispforest.owo.util.RecipeRemainderStorage;
8-
import net.minecraft.inventory.Inventory;
99
import net.minecraft.item.Item;
1010
import net.minecraft.item.ItemStack;
11-
import net.minecraft.recipe.*;
11+
import net.minecraft.recipe.Recipe;
12+
import net.minecraft.recipe.RecipeEntry;
13+
import net.minecraft.recipe.RecipeManager;
14+
import net.minecraft.recipe.RecipeType;
1215
import net.minecraft.recipe.input.RecipeInput;
13-
import net.minecraft.registry.RegistryWrapper;
16+
import net.minecraft.resource.ResourceManager;
1417
import net.minecraft.util.Identifier;
1518
import net.minecraft.util.JsonHelper;
16-
import net.minecraft.util.Util;
1719
import net.minecraft.util.collection.DefaultedList;
20+
import net.minecraft.util.profiler.Profiler;
1821
import net.minecraft.world.World;
1922
import org.spongepowered.asm.mixin.Mixin;
2023
import org.spongepowered.asm.mixin.injection.At;
2124
import org.spongepowered.asm.mixin.injection.Inject;
25+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
2226
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
2327
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
2428

2529
import java.util.HashMap;
30+
import java.util.Map;
2631
import java.util.Optional;
2732

2833
@Mixin(RecipeManager.class)
2934
public abstract class RecipeManagerMixin {
3035

31-
@Inject(method = "deserialize", at = @At(value = "RETURN"))
32-
private static void deserializeRecipeSpecificRemainders(Identifier id, JsonObject json, RegistryWrapper.WrapperLookup registryLookup, CallbackInfoReturnable<Recipe<?>> cir) {
36+
@Inject(method = "apply(Ljava/util/Map;Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/profiler/Profiler;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/recipe/RecipeEntry;<init>(Lnet/minecraft/util/Identifier;Lnet/minecraft/recipe/Recipe;)V"))
37+
private void deserializeRecipeSpecificRemainders(Map<Identifier, JsonElement> map, ResourceManager resourceManager, Profiler profiler, CallbackInfo ci, @Local Map.Entry<Identifier, JsonElement> entry) {
38+
var json = entry.getValue().getAsJsonObject();
3339
if (!json.has("owo:remainders")) return;
3440

3541
var remainders = new HashMap<Item, ItemStack>();
@@ -46,7 +52,7 @@ private static void deserializeRecipeSpecificRemainders(Identifier id, JsonObjec
4652
}
4753

4854
if (remainders.isEmpty()) return;
49-
RecipeRemainderStorage.store(id, remainders);
55+
RecipeRemainderStorage.store(entry.getKey(), remainders);
5056
}
5157

5258
@Inject(method = "getRemainingStacks", at = @At(value = "RETURN", ordinal = 0), locals = LocalCapture.CAPTURE_FAILHARD)

0 commit comments

Comments
 (0)