LibJF/libjf-data-manipulation-v0/src/main/java/io/gitlab/jfronny/libjf/data/manipulation/impl/mixin/RecipeManagerMixin.java

33 lines
1.4 KiB
Java
Raw Normal View History

2023-02-26 12:49:00 +01:00
package io.gitlab.jfronny.libjf.data.manipulation.impl.mixin;
import com.google.gson.JsonObject;
2021-09-27 20:55:48 +02:00
import io.gitlab.jfronny.libjf.LibJf;
2021-10-03 13:43:16 +02:00
import io.gitlab.jfronny.libjf.data.manipulation.api.RecipeUtil;
import net.minecraft.recipe.RecipeManager;
import net.minecraft.util.Identifier;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyVariable;
2023-02-26 12:49:00 +01:00
import java.util.*;
@Mixin(RecipeManager.class)
public class RecipeManagerMixin {
2021-10-03 13:43:16 +02:00
@ModifyVariable(method = "apply(Ljava/util/Map;Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/profiler/Profiler;)V", at = @At(value = "INVOKE_ASSIGN", target = "Ljava/util/Set;iterator()Ljava/util/Iterator;", ordinal = 0, remap = false))
private Iterator<Map.Entry<Identifier, JsonObject>> filterIterator(Iterator<Map.Entry<Identifier, JsonObject>> iterator) {
ArrayList<Map.Entry<Identifier, JsonObject>> replacement = new ArrayList<>();
while(iterator.hasNext()) {
Map.Entry<Identifier, JsonObject> cur = iterator.next();
Identifier recipeId = cur.getKey();
if (RecipeUtil.isIdBlocked(recipeId)) {
2021-09-27 20:55:48 +02:00
LibJf.LOGGER.info("Blocking recipe by identifier: " + recipeId);
} else {
replacement.add(cur);
}
}
return replacement.iterator();
}
}