diff --git a/src/main/java/ru/bclib/mixin/common/MinecraftServerMixin.java b/src/main/java/ru/bclib/mixin/common/MinecraftServerMixin.java index 31ca331d..e8a7de95 100644 --- a/src/main/java/ru/bclib/mixin/common/MinecraftServerMixin.java +++ b/src/main/java/ru/bclib/mixin/common/MinecraftServerMixin.java @@ -55,11 +55,11 @@ public class MinecraftServerMixin { @Inject(method = "loadLevel", at = @At(value = "RETURN"), cancellable = true) private void bclib_loadLevel(CallbackInfo info) { bclib_injectRecipes(); - //BiomeAPI.initRegistry(MinecraftServer.class.cast(this)); } private void bclib_injectRecipes() { RecipeManagerAccessor accessor = (RecipeManagerAccessor) resources.getRecipeManager(); accessor.bclib_setRecipes(BCLRecipeManager.getMap(accessor.bclib_getRecipes())); + accessor.bclib_setRecipesByName(BCLRecipeManager.getMapByName(accessor.bclib_getRecipesByName())); } } diff --git a/src/main/java/ru/bclib/mixin/common/RecipeManagerAccessor.java b/src/main/java/ru/bclib/mixin/common/RecipeManagerAccessor.java index 3920b687..37625cfe 100644 --- a/src/main/java/ru/bclib/mixin/common/RecipeManagerAccessor.java +++ b/src/main/java/ru/bclib/mixin/common/RecipeManagerAccessor.java @@ -16,4 +16,10 @@ public interface RecipeManagerAccessor { @Accessor("recipes") void bclib_setRecipes(Map, Map>> recipes); + + @Accessor("byName") + Map> bclib_getRecipesByName(); + + @Accessor("byName") + void bclib_setRecipesByName(Map> recipes); } \ No newline at end of file diff --git a/src/main/java/ru/bclib/recipes/BCLRecipeManager.java b/src/main/java/ru/bclib/recipes/BCLRecipeManager.java index 0ecacc23..3aca10d2 100644 --- a/src/main/java/ru/bclib/recipes/BCLRecipeManager.java +++ b/src/main/java/ru/bclib/recipes/BCLRecipeManager.java @@ -8,6 +8,7 @@ import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Block; +import ru.bclib.util.CollectionsUtil; import java.util.Map; import java.util.Map.Entry; @@ -59,6 +60,16 @@ public class BCLRecipeManager { return result; } + public static Map> getMapByName(Map> recipes) { + Map> result = CollectionsUtil.getMutable(recipes); + RECIPES.values().forEach(map -> map.forEach((location, recipe) -> { + if (!recipes.containsKey(location)) { + result.put(location, recipe); + } + })); + return result; + } + public static , T extends Recipe> S registerSerializer(String modID, String id, S serializer) { return Registry.register(Registry.RECIPE_SERIALIZER, modID + ":" + id, serializer); }