Added recipes into named map

This commit is contained in:
paulevsGitch 2022-01-13 14:29:09 +03:00
parent fa3e82ed4e
commit 95284640e0
3 changed files with 18 additions and 1 deletions

View file

@ -55,11 +55,11 @@ public class MinecraftServerMixin {
@Inject(method = "loadLevel", at = @At(value = "RETURN"), cancellable = true) @Inject(method = "loadLevel", at = @At(value = "RETURN"), cancellable = true)
private void bclib_loadLevel(CallbackInfo info) { private void bclib_loadLevel(CallbackInfo info) {
bclib_injectRecipes(); bclib_injectRecipes();
//BiomeAPI.initRegistry(MinecraftServer.class.cast(this));
} }
private void bclib_injectRecipes() { private void bclib_injectRecipes() {
RecipeManagerAccessor accessor = (RecipeManagerAccessor) resources.getRecipeManager(); RecipeManagerAccessor accessor = (RecipeManagerAccessor) resources.getRecipeManager();
accessor.bclib_setRecipes(BCLRecipeManager.getMap(accessor.bclib_getRecipes())); accessor.bclib_setRecipes(BCLRecipeManager.getMap(accessor.bclib_getRecipes()));
accessor.bclib_setRecipesByName(BCLRecipeManager.getMapByName(accessor.bclib_getRecipesByName()));
} }
} }

View file

@ -16,4 +16,10 @@ public interface RecipeManagerAccessor {
@Accessor("recipes") @Accessor("recipes")
void bclib_setRecipes(Map<RecipeType<?>, Map<ResourceLocation, Recipe<?>>> recipes); void bclib_setRecipes(Map<RecipeType<?>, Map<ResourceLocation, Recipe<?>>> recipes);
@Accessor("byName")
Map<ResourceLocation, Recipe<?>> bclib_getRecipesByName();
@Accessor("byName")
void bclib_setRecipesByName(Map<ResourceLocation, Recipe<?>> recipes);
} }

View file

@ -8,6 +8,7 @@ import net.minecraft.world.item.crafting.RecipeSerializer;
import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.ItemLike;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import ru.bclib.util.CollectionsUtil;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
@ -59,6 +60,16 @@ public class BCLRecipeManager {
return result; return result;
} }
public static Map<ResourceLocation, Recipe<?>> getMapByName(Map<ResourceLocation, Recipe<?>> recipes) {
Map<ResourceLocation, Recipe<?>> result = CollectionsUtil.getMutable(recipes);
RECIPES.values().forEach(map -> map.forEach((location, recipe) -> {
if (!recipes.containsKey(location)) {
result.put(location, recipe);
}
}));
return result;
}
public static <S extends RecipeSerializer<T>, T extends Recipe<?>> S registerSerializer(String modID, String id, S serializer) { public static <S extends RecipeSerializer<T>, T extends Recipe<?>> S registerSerializer(String modID, String id, S serializer) {
return Registry.register(Registry.RECIPE_SERIALIZER, modID + ":" + id, serializer); return Registry.register(Registry.RECIPE_SERIALIZER, modID + ":" + id, serializer);
} }