[1.7.2]Свой крафт или как это заставить работать

398
4
7
В методе func_1_a:
https://github.com/VovaMaster/RCServMod/blob/master/src/main/java/ru/vovamaster99/rcservmod/ob/crafts/MHRecipes.java#L54
itemStack.getItem() == itemstack.getItem()
itemStack.getItemDamage() == itemstack.getItemDamage()
Это же всегда будет возвращать истину. И тогда цикл while (func_1_a(itemstack, (ItemStack)entry.getKey())); все повесит.

Я так и не понял какого вида нужно сделать рецепты.
 
Asd73 написал(а):
В методе func_1_a:
https://github.com/VovaMaster/RCServMod/blob/master/src/main/java/ru/vovamaster99/rcservmod/ob/crafts/MHRecipes.java#L54
itemStack.getItem() == itemstack.getItem()
itemStack.getItemDamage() == itemstack.getItemDamage()
Это же всегда будет возвращать истину. И тогда цикл while (func_1_a(itemstack, (ItemStack)entry.getKey())); все повесит.

Я так и не понял какого вида нужно сделать рецепты.
Как в печи, все оттуда. Токо там метод func_151397_a что-ли
[merge_posts_bbcode]Добавлено: 07.10.2014 23:12:29[/merge_posts_bbcode]

Agravaine написал(а):
Работает и так, по идее.
Я имел ввиду, сделать, что бы при покладывании итема в слот(указанного в рецепте) по прошествии определенного времени срабатывала смена итема. Сложно, проще обьяснить на примере печи.
 
398
4
7
Vova_master написал(а):
Сложно, проще обьяснить на примере печи.
Перед тем как что-то делать, нужно поточнее сформулировать задачу.
Сколько будет рецептов, один, два или больше? Если будет несколько разных крафтов, то предметы будут крафтится одинаковое или разное время?
Или как в грегтехе сначала удалять предметы из входных слотов, а только потом запускать процесс обработки?
Крафтится все будет из одного вида предмета (какой-то материи) или из разных предметов?
Может быть результат крафта выбирать из списка в гуи, как в конденсаторе из Applied Energistics?

В любом случае не стоит брать код из печки. Попробуй нарисовать блок-схему алгоритма или описать каким-нибудь псевдокодом (или просто словами по пунктам).


Vova_master написал(а):
Как в печи, все оттуда. Токо там метод func_151397_a что-ли
Да, не заметил что сравниваются разные итемы, слишком уж похожие у них имена.
 
Asd73 написал(а):
Vova_master написал(а):
Сложно, проще обьяснить на примере печи.
Перед тем как что-то делать, нужно поточнее сформулировать задачу.
Сколько будет рецептов, один, два или больше? Если будет несколько разных крафтов, то предметы будут крафтится одинаковое или разное время?
Или как в грегтехе сначала удалять предметы из входных слотов, а только потом запускать процесс обработки?
Крафтится все будет из одного вида предмета (какой-то материи) или из разных предметов?
Может быть результат крафта выбирать из списка в гуи, как в конденсаторе из Applied Energistics?

В любом случае не стоит брать код из печки. Попробуй нарисовать блок-схему алгоритма или описать каким-нибудь псевдокодом (или просто словами по пунктам).


Vova_master написал(а):
Как в печи, все оттуда. Токо там метод func_151397_a что-ли
Да, не заметил что сравниваются разные итемы, слишком уж похожие у них имена.
1 рецепт, может, позже будет еще и изменение их возможностей(смешивая с зельями). И про материю ты прав. Но мне хотя бы что бы оно просто по истечении какого-то времени убирало из слота 0 и добавляло в слот 1
 
398
4
7
Код:
    @Override
    public void updateEntity() {
        if (!getWorldObj().isRemote) {
            ItemStack istack = getStackInSlot(0);
            if (istack != null) {
                if (handlingTime != 20) handlingTime++;
                if (handlingTime == 20) {
                    handlingTime = 0;
                    decrStackSize(0, 1);
                    if (getStackInSlot(1) != null)
                        setInventorySlotContents(1, new ItemStack(Blocks.stone, ++getStackInSlot(1).stackSize));
                    else
                        setInventorySlotContents(1, new ItemStack(Blocks.stone));
                    markDirty();
                }
            } else {
                handlingTime = 0;
            }
        }
    }
Любые итемы из входного слота перерабатываются в камень, время переработки 20 тиков.
Надеюсь, что будет понятно без комментариев.
Этот код показывает лишь принцип, для полноценного использования необходимо добавить проверки и т.п. Остальные методы, которые ты скопировал из печки, нужно удалить.
 
Asd73 написал(а):
Код:
                if (handlingTime != 20) handlingTime++;
Может, for или while? что-то не пашет. Ща пробну, отпишусь
[merge_posts_bbcode]Добавлено: 09.10.2014 00:39:57[/merge_posts_bbcode]

О, с тиками норм. Правда, когда попытался взять итем из слота 1 игра крашнулась, ссылается на SlotMH.onPickupFromSlot. Выбросила StackOverflowError
 
ПАШЕТ! Я из onPickupFromSlot убрал строку с этим же названием. На нее все логи и указывали. Теперь можно закрывать. Гит обновлю, как только нарисую тектуру гуи. Вопрос решен!(Как же приятно, когда тебя и твою тупость терпят и помогают решить вопросы, которые очевидное решение имеют)
 
Сверху