Кастомная печка, работают рецепты только с вещами из мода

Версия Minecraft
1.7.10
API
Forge
55
7
3
Я сделал кастомную печку с 4-мя слотами (наконец-то) и репецты для неё работают только если используется ингредиент из моего мода (майнкрафтовские не работают).
Слоты: 0 - ингредиент, 1 - топливо, 2 - ещё ингредиент (extractHelper), 3 - вывод.
SoulExtractorRecipes.java:
package ru.wertyfiregames.craftablecreatures.compat;

import net.minecraft.block.Block;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import ru.wertyfiregames.craftablecreatures.init.CCItems;

import java.util.*;

public class SoulExtractorRecipes {
    private static final SoulExtractorRecipes extractingBase = new SoulExtractorRecipes();
    private final Map<ItemStack, ItemStack> extractingRecipes = new HashMap<>();
    private final List<ItemStack> extractHelpers = new ArrayList<>();
    private final Map<ItemStack, Float> experienceList = new HashMap<>();

    private SoulExtractorRecipes() {
        //TODO: add all recipes!
        addExtractHelper(new ItemStack(CCItems.soul_element, 1, 0));

        addRecipe(Items.gunpowder, new ItemStack(CCItems.soul_element, 1, 1), 0.3f);
        addRecipe(Items.bone, new ItemStack(CCItems.soul_element, 1, 2), 0.25f);
        addRecipe(Items.spider_eye, new ItemStack(CCItems.soul_element, 1, 3), 0.25f);
        addRecipe(Items.fermented_spider_eye, new ItemStack(CCItems.soul_element, 1, 3), 0.25f);
        addRecipe(Items.rotten_flesh, new ItemStack(CCItems.soul_element, 1, 4), 0.2f);
        addRecipe(Items.slime_ball, new ItemStack(CCItems.soul_element, 1, 5), 0.2f);
        addRecipe(Items.ghast_tear, new ItemStack(CCItems.soul_element, 1, 6), 0.35f);
        addRecipe(Items.golden_sword, new ItemStack(CCItems.soul_element, 1, 7), 0.25f);
        addRecipe(Items.ender_eye, new ItemStack(CCItems.soul_element, 1, 8), 0.35f);
        ItemStack stack1 = new ItemStack(CCItems.soul_element);
        stack1.setItemDamage(3);
        addRecipe(stack1, new ItemStack(CCItems.soul_element, 1, 9), 0.25f);

    }

    public static SoulExtractorRecipes get() {
        return extractingBase;
    }
    public Map<ItemStack, ItemStack> getExtractingRecipes() {
        return extractingRecipes;
    }

    public void addRecipe(Block input, ItemStack output, float xp) {
        addRecipe(Item.getItemFromBlock(input), output, xp);
    }
    public void addRecipe(Item input, ItemStack output, float xp) {
        addRecipe(new ItemStack(input), 1, 32767), output, xp);
    }
    public void addRecipe(ItemStack input, ItemStack output, float xp) {
        extractingRecipes.put(input.copy(), output);
        experienceList.put(output.copy(), xp);
    }

    public void addExtractHelper(Block helper) {
        addExtractHelper(Item.getItemFromBlock(helper));
    }
    public void addExtractHelper(Item helper) {
        addExtractHelper(new ItemStack(helper));
    }
    public void addExtractHelper(ItemStack helper) {
        extractHelpers.add(helper.copy());
    }

    private boolean areStacksEqual(ItemStack stack1, ItemStack stack2) {
        return stack1.isItemEqual(stack2) && (stack2.getItemDamage() == 32767 || stack2.getItemDamage() == stack1.getItemDamage());
    }

    public boolean isItemExtractHelper(ItemStack stack) {
        return extractHelpers.stream().anyMatch(helperStack -> areStacksEqual(helperStack, stack));
    }

    public ItemStack getExtractingResult(ItemStack stack) {
        for (Map.Entry<ItemStack, ItemStack> entry : extractingRecipes.entrySet()) {
            if (areStacksEqual(entry.getKey(), stack)) return entry.getValue();
        }
        return null;
    }
    public float getExtractingExperience(ItemStack stack) {
        for (Map.Entry<ItemStack, Float> entry : experienceList.entrySet()) {
            if (areStacksEqual(entry.getKey(), stack)) return entry.getValue();
        }
        return 0f;
    }
}
если нужны будут остальные классы, скину.
пж ответьте кто знает
 
Решение
там синтаксическая ошибка
я пытался по другому сделать и когда вставил код класса изменил на предыдущий вариант, ошибку синтаксиса не заметил

решение было элементарным, в методе addRecipe(Item, ItemStack, float) изменил new ItemStack(item, 1, 32767) на new ItemStack(item, 1)
там синтаксическая ошибка
я пытался по другому сделать и когда вставил код класса изменил на предыдущий вариант, ошибку синтаксиса не заметил

решение было элементарным, в методе addRecipe(Item, ItemStack, float) изменил new ItemStack(item, 1, 32767) на new ItemStack(item, 1)
 
Последнее редактирование:
Назад
Сверху