Added recipes into named map
This commit is contained in:
parent
fa3e82ed4e
commit
95284640e0
3 changed files with 18 additions and 1 deletions
|
@ -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()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue