Открытие рецепта через достижение

Версия Minecraft
1.7.10
769
1
42
Добрый вечер, ребята. Можете подсказать, как использовать полученное достижение для разблокировки рецепта? Что я хочу - мне нужно получить какое-то достижение, допустим после крафта верстака, которое откроет доступ к рецепту деревянной кирки (например). Если у вас есть какие-нибудь ссылки, источники, либо примеры реализации в других модах - просьба ответить. Я нашел что-то связанное с этим:
Java:
public static Minecraft mc = FMLClientHandler.instance().getClient();
if (mc.thePlayer.getStatFileWriter().hasAchievementUnlocked(CoreAchievements.machineAch)) {
                RecipeUtil.addRecipe(new ItemStack(CoreBlocks.MachineMacerator), new Object[]{ "DQD", "GEG", "SAS",
                        'E', new ItemStack(CoreBlocks.MachineObject),
                        'A', new ItemStack(GCItems.basicItem, 1, 14),
                        'S', "ingotIron",
                        'G', new ItemStack(Blocks.glass),
                        'D', "ingotTin",
                        'Q', new ItemStack(CoreItems.CapaciousBattery)});
}
Пытаюсь выполнить такой код, но очевидно, что бред.
 

tox1cozZ

aka Agravaine
8,454
598
2,890
Хоспаде... У тебя есть конструктор, в который ты можешь передавать все что душе угодно. В данном случае тебе нужен базовый рецепт и ачивка.
Потом просто создаешь объект рецепта любого: ShapelessRecipes, ShapedRecipes или др.
Пишешь GameRegistry.addRecipe(new CoreRecipeHandler(baseRecipe)) и все.
 
7,099
324
1,509
Нужно из GameRegistry взять рецепт, который хочешь сделать ачивочным, удалить его оттуда и вставить new CoreRecipeHandler(удаленный рецепт)
~~~
Ну или так, как выше написал Агравэйн, не гонять туда-сюда рецепты, а сразу добавлять обвернутый ачивочным
 
769
1
42
Хоспаде... У тебя есть конструктор, в который ты можешь передавать все что душе угодно. В данном случае тебе нужен базовый рецепт и ачивка.
Потом просто создаешь объект рецепта любого: ShapelessRecipes, ShapedRecipes или др.
Пишешь GameRegistry.addRecipe(new CoreRecipeHandler(baseRecipe)) и все.
Ну я сделал... Но это работает стремно.
Java:
IRecipe baseRecipe = new ShapedRecipes(0, 0, new ItemStack[] {new ItemStack(Blocks.cobblestone)}, new ItemStack(Blocks.diamond_block));
        GameRegistry.addRecipe(new CoreRecipeHandler(baseRecipe, CoreAchievements.machineAch));
Нужно ведь прийти к виду обычного рецепта с сеткой типа "AAA", "DSS", "FSG" (например что-то там лежит для крафта)
 
7,099
324
1,509
Добавляй как обычно, потом удаляй и вместо удаленного вставляй свой
 
769
1
42
Предмет не виден в слоте, его крафт нельзя посмотреть через NEI
Java:
public static IRecipe addShapedRecipe(ItemStack output, Object... params) {
    return CraftingManager.getInstance().addRecipe(output, params);
}

private static void addRecipes() {
    IRecipe baseRecipe = addShapedRecipe(new ItemStack(CoreItems.Item, 1, 13), new Object[]{ "   ", " XX", " HH",
                'X', Blocks.gravel,
                'H', Blocks.cobblestone});
    CoreRemoveRecipe.removeRecipes(new ItemStack(CoreItems.Item, 1, 13));
    GameRegistry.addRecipe(new CoreRecipeHandler(baseRecipe, CoreAchievements.machineAch));
}
 
Сверху