[1.7.10]Вопросы нуба - работа с тиками в "крафте"

Да, это моя личная рубрика. У меня в тайле блока есть такой метод:
Код:
    @Override
    public void updateEntity() {
        if (!getWorldObj().isRemote) {
            ItemStack itemStack = getStackInSlot(0);

            if (itemStack != null) {
                for(handlingTime = 0; handlingTime < 100; ++handlingTime);
                    if (handlingTime == 100) {
                    handlingTime = 0;
                    decrStackSize(0, 1);
                    if (getStackInSlot(1) != null) {
                        setInventorySlotContents(1, new ItemStack(OBItems.matter, ++getStackInSlot(1).stackSize));
                    }
                    else {
                        setInventorySlotContents(1, new ItemStack(OBItems.matter));
                        markDirty();
                    }
                    }
                } else {
                    handlingTime = 0;
                }
            }
    }
Он добавляет тики, если в слоте 0 есть что-нибудь, обнуляет тики и изменяет содержимое слотов. Вопрос: как увеличить время работы, ведь он делает это мгновенно, в то время, как мне требуется постепенное обнуление(как в печи).
 
398
4
7
Программирование - это не твое, смирись.
Ты пытался переделать мой пример [1.7.2]Свой крафт или как это заставить работать ?
Объясняю как это работает для тех кто в танке:
1) Попробуем понять как будет работать такой код:

Код:
private int counter = 0;
public void updateEntity() {
    counter++;
}

Метод updateEntity вызывается внутренностями майнкрафта каждый тик. Поэтому каждый тик counter будет увеличиваться на 1.
После 1-ого тика counter=1, после второго тика counter=2, после N-ого тика counter=N.

2) А теперь так:

Код:
private int counter = 0;
public void updateEntity() {
    counter++;
    if (counter == 2) {
        некоторый код.
        counter = 0;
    }
}

После 1-ого тика counter=1, после 2-ого сработает условие, выполнится "некоторый код" и counter обнулится.
После 3-его тика counter=1, после 4-ого сработает условие, выполнится "некоторый код" и counter обнулится.
И так далее.
Таким образом "некоторый код" будет выполняться каждый второй тик.

Надеюсь после этого ты поймешь, как работал код в моем примере.
Кстати, я писал, что тот код необходимо дополнить как минимум проверками и ограничениями. Для начала нужно убрать переполнение слота ++getStackInSlot(1).stackSize
 
398
4
7
Конечно можно. Но я написал так, чтобы поняли даже те кто в танке.
 
Dragon2488 написал(а):
Ты очень любишь оффтопить.
Это тоже есть. Иначе я не чуствую живого общения, а общаться с бездушной машиной нет никакого удовольствия, я не технофил.
[merge_posts_bbcode]Добавлено: 14.10.2014 20:29:48[/merge_posts_bbcode]

Agravaine написал(а):
Тогда уже можно и не делать переменную свою, а просто worldObj.getTotalWorldTime() % 2 == 0.
В моем то коде переменная. Поэтому он и давал пример с ней.

[merge_posts_bbcode]Добавлено: 14.10.2014 20:32:43[/merge_posts_bbcode]

Так, еще пара вопросов, и можно закрывать: 
1)Как сделать так, чтобы на выходной слот можно было вывести несколько предметов, друг за другом. Я догадываюсь, что то типо этого 
Код:
if (getStackInSlot(0) != null) { ... }

Но не уверен.
2)Как сделать проверку на валидность итема, чтобы если итем RawMatter то можно положить, а если нет - нельзя. Я сделал в слоте 
Код:
@Override
    public boolean isItemValid(ItemStack is) {
     if (is.getItem() instanceof RawMatter) {
            return true;
        } else {
            return false;
        }
    }

Но не пашет
 
398
4
7
Vova_master написал(а):
Agravaine написал(а):
Тогда уже можно и не делать переменную свою, а просто worldObj.getTotalWorldTime() % 2 == 0.
В моем то коде переменная. Поэтому он и давал пример с ней.
Не поэтому. Потому что требуется, чтобы в итоге тики считались только когда в слоте находится предмет.


1) Я ничего не понял.
2) Без понятия.
Кстати, это можно сократить до return (is.getItem() instanceof RawMatter);

Программирование - не для тебя, по крайней мере сейчас.
Программист обязан знать математику, геометрию, численные методы, немного физику.
Например, ты можешь назвать методы обхода графа? Или объяснить метод Ньютона? А ведь без знания о существовании подобных алгоритмов не стоит даже начинать писать мод, добавляющий что-то большее чем несколько кубиков.
Так что учи пока математику. А если неймется что-нибудь написать, то рисуй сначала блок-схемы.
 
Asd73 написал(а):
Vova_master написал(а):
Agravaine написал(а):
Тогда уже можно и не делать переменную свою, а просто worldObj.getTotalWorldTime() % 2 == 0.
В моем то коде переменная. Поэтому он и давал пример с ней.
Не поэтому. Потому что требуется, чтобы в итоге тики считались только когда в слоте находится предмет.


1) Я ничего не понял.
2) Без понятия.
Кстати, это можно сократить до return (is.getItem() instanceof RawMatter);

Программирование - не для тебя, по крайней мере сейчас.
Программист обязан знать математику, геометрию, численные методы, немного физику.
Например, ты можешь назвать методы обхода графа? Или объяснить метод Ньютона? А ведь без знания о существовании подобных алгоритмов не стоит даже начинать писать мод, добавляющий что-то большее чем несколько кубиков.
Так что учи пока математику. А если неймется что-нибудь написать, то рисуй сначала блок-схемы.
Моддинг - не программирование. Ты путаешь понятия. А блок схемы я терпеть не могу, я вообще не люблю по схемам работать. Спонтанность мне больше по душе. А насчет 1 я имел ввиду что бы не один предмет за раз, а несколько. Т.е: в слоте 0 лежит 3 итема, и чтобы они друг за другом переработались в другой предмет и сложились в слот 1. Как в печи(опять же). Стаковый(может быть так). И да, кодинг не очень для меня, работа на готовых движках проще(ну кроме cryengine, много багов)
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
Vova_master написал(а):
Моддинг - не программирование.
Убейте меня. Вернее сначала этого, а потом меня, а в аду я его еще раз убью.
[merge_posts_bbcode]Добавлено: 14.10.2014 19:33:30[/merge_posts_bbcode]

Злобненько как-то получилось.
 
1,990
18
105
Asd73 написал(а):
Программист обязан знать математику, геометрию, численные методы, немного физику.
Например, ты можешь назвать методы обхода графа? Или объяснить метод Ньютона? А ведь без знания о существовании подобных алгоритмов не стоит даже начинать писать мод, добавляющий что-то большее чем несколько кубиков.
Так что учи пока математику. А если неймется что-нибудь написать, то рисуй сначала блок-схемы.
Всеми руками за математику, геометрию, может, численные методы.
Согласен насчет блок-схем.

Но насчет графа, наверное нет. Может быть, потому что я их подсознательно ненавижу. Не задалось со школьных уроков информатики, ибо рисовал эту фигню на бумаге и зачем-то считал количество возможных исходов определенной задачи.
Зависит от типа графа, скорее.
Теория важна, но практические знания могут её очень нехило переплюнуть много где.
Например, я сходу не понял про "методы обхода графа", загуглил и оказалось что я это делал, когда писал свой велосипедный поиск пути. Можешь назвать это быдлокодингом, но я отчетливо понимал, что делаю.
Я просто не знал как это называется у нормальных людей. Я же даун.
 
Мдаа,  а я то даже и не слышал о графах. Токо в диспечере задач(пысы: если кто не в курсе, я в 9 классе, идите все подальше *удалил форум из закладок*)
 
29
0
хочешь сказать что в 9 классе программировать не учат ? хоть какие то основы но должны дать.или что ты хотел сказать нам своим "я в 9 классе" ?
 
104
0
Bioace написал(а):
хочешь сказать что в 9 классе программировать не учат ? хоть какие то основы но должны дать.или что ты хотел сказать нам своим "я в 9 классе" ?
У нас в конце 9-го класса только-только про систему IP рассказали... программирование не было в программе информатики, только вордики... даже Exel`я не было! Разве что, можно было записаться на доп. занятия, но и там только паскаль изучали...
 
2,955
12
А мы с шестого класса програмируем. 2 четверть был паскаль, а третью джава.
 
398
4
7
По моему все равно на каком языке учат программировать в школе.
Подошел бы и маткад. В школе должны учить разрабатывать несложные алгоритмы.

Oldestkon написал(а):
Но насчет графа, наверное нет.
Может и не нужны. Но хотя бы об их существовании знать стоит.
 
Dragon2488 написал(а):
Ды. Я сам спрашивал у информатика.
Я спрашивал. Сказал, что нету. И это в гимназии(1519 кстати, москвичи поймут)
[merge_posts_bbcode]Добавлено: 16.10.2014 00:45:55[/merge_posts_bbcode]

Bioace написал(а):
хочешь сказать что в 9 классе программировать не учат ? хоть какие то основы но должны дать.или что ты хотел сказать нам своим "я в 9 классе" ?
Хех, нам про устройство изображения и анимации рассказывают(может уже нет, я месяц как болею)

[merge_posts_bbcode]Добавлено: 16.10.2014 00:46:57[/merge_posts_bbcode]

Программирование у нас будет. На паскале(что уже не актуально на мой взгляд. Еще был QBasic учить бы заставили -_-)
 
Сверху