Вопрос по вызову Overlay 1.6.4

Привет всем, возник вопрос, я сделал оверлей (а именно вывод на экран изображения, он включается сразу после вкл. minecraft) и хотелось бы чтобы итем и вызывал этот оверлей. В том смысле что, мы берём итем, кликаем например правой мышкой и после на экран высвечивается овелей, а после повторного нажатия он убирается. Оверлей делал по урокам Технули (за что ему большое спасибо) Как понял нужно использовать вот этот код:
Код:
public ItemStack onItemRightClick(ItemStack is, World world, EntityPlayer player)
{
    // Что-то нужно дописать тут...
return is;
}
Да и наверно строчка return is; не нужна... В общем как-то так. Помогите пожалуйста, куда рыть, как понять? Спасибо
 

Nao

138
3
Код:
private boolean flag = false;

@Override
public ItemStack onItemRightClick(ItemStack is, World world, EntityPlayer player) {
    if (!flag) {
        // Код вызова оверлея
        flag = true;
    } else {
        // Код скрывания оверлея
        flag = false;
    }
    return is;
}
 
Nao написал(а):
Код:
private boolean flag = false;

@Override
public ItemStack onItemRightClick(ItemStack is, World world, EntityPlayer player) {
    if (!flag) {
        // Код вызова оверлея
        flag = true;
    } else {
        // Код скрывания оверлея
        flag = false;
    }
    return is;
}
Спасибо большое, потихоньку понимаю что, как работает, поставил, вроде ошибок нет, но сразу понятно что ничего не заработает, я не понимаю как привязать нужный оверлей к нему. Писать за место flag? (возможно глупо, потому что как я понимаю это ничего не изменит)
 
216
6
19
Если делал по моему уроку - в файле со списком всех Overlay*ев сделай проверку при вызове твоего оверлея, типа if (MySuperItem.flag == true), если да, то Overlay вызывается, если нет.. Тут ясно. А в методе onItemRightClick() сделай, что при нажатии, значение flag меняется.

public ItemStack onItemRightClick(bla, bla, bla) {
if (flag) {
flag = false;
}else if (flag == false) {
flag = true;
}
}
P.S. Пишу с телефона...
[merge_posts_bbcode]Добавлено: 09.09.2014 13:43:35[/merge_posts_bbcode]

Если не понял, через часа два, я смогу скинуть код, как это должно быть.
 
Onneros написал(а):
Если делал по моему уроку - в файле со списком всех Overlay*ев сделай проверку при вызове твоего оверлея, типа if (MySuperItem.flag == true), если да, то Overlay вызывается, если нет.. Тут ясно. А в методе onItemRightClick() сделай, что при нажатии, значение flag меняется.

public ItemStack onItemRightClick(bla, bla, bla) {
 if (flag) {
    flag = false;
}else if (flag == false) {
    flag = true;
}
}
P.S. Пишу с телефона...
[merge_posts_bbcode]Добавлено: 09.09.2014 13:43:35[/merge_posts_bbcode]

Если не понял, через часа два, я смогу скинуть код, как это должно быть.
Спасибо большое, код работает, хотя по разному, иногда работает адекватно, иногда нет, если бы вы всё таки решитесь кинуть полный код, буду безумно благодарен.
 
675
2
Onneros написал(а):
Стоит сделать проверку "в руках ли предмет"?
Не стоит спрашивать у зажигания, заведен ли двигатель. В класс отлова эвента поместите флаг, а уже из вне его изменяйте.
 

Nao

138
3
Onneros написал(а):
public ItemStack onItemRightClick(bla, bla, bla) {
 if (flag) {
    flag = false;
}else if (flag == false) {
    flag = true;
}
}
Развидеть, развииидеть!!!!! Ребята, учитесь программировать до начала извращений с модами... Это же просто ппц!
Я думал "int i = 100; while(i != 0) { i--; }" (да, да, в одну строку) - самый страшний говнокод, который я видел в жизни, но это...
 
1,990
18
105
Nao написал(а):
Развидеть, развииидеть!!!!!
Там не хватает кое-чего, айда поправлю:

Код:
public ItemStack onItemRightClick(bla, bla, bla) { //compile error
  flag = flag != true && flag == false ? (false == false ? false : flag != false && flag == true ? (true == true ? true : false) : false) : true;
}
 
216
6
19
Nao написал(а):
Onneros написал(а):
public ItemStack onItemRightClick(bla, bla, bla) {
 if (flag) {
    flag = false;
}else if (flag == false) {
    flag = true;
}
}
Развидеть, развииидеть!!!!! Ребята, учитесь программировать до начала извращений с модами... Это же просто ппц!
Я думал "int i = 100; while(i != 0) { i--; }" (да, да, в одну строку) - самый страшний говнокод, который я видел в жизни, но это...
Я бы не проч подучиться программировать, но некогда...
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
flag = !flag, так никто и не написал.
 
905
5
А теперь, внимание, вопрос! Что будет с майном, если в класс предмета/блока вставить переменную?
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
Ничего, просто переменная будет сродни статичной из-за того что классы блока и предмета - синглетоны-дескрипторы.
 
905
5
Ага. Вот только МК мультиплеерен, и статик будет один на весь сервер. Ну и, соответственно, гуй будет у всех.
 
675
2
laz2727 написал(а):
Ага. Вот только МК мультиплеерен, и статик будет один на весь сервер. Ну и, соответственно, гуй будет у всех.
Думаю, что этот функционал реализуется на клиенте и ничего страшного не случится. Тем не менее, статики - зло, а вот адекватный ооп - сила.
 
905
5
Ну, это проверить надо бы. Но лучше, конечно. через нбт.
 

timaxa007

Модератор
5,831
409
672
HanteR12372, для уточнения вызываешь 'overlay' для иконки предмета? Я так думаю, что это возможно реализовать с помощью NBT (просто мне сейчас кажется этим по-легче) и не только.
 
Сверху