Полёт в броне

AlexSocol

Золотая лига
Сообщения
1,943
Лучшие ответы
65
Симпатии
172
#1
Версия Minecraft
1.7.10
Здравствуйте
Возможно, такая тема уже была, но я не нашёл. Вопрос очень простой: как дать игроку полёт (.allowFly()) при условии надетого нагрудника и boolean-параметра в nbt стака?
Если задавать в onArmorTick, то при снятии полёт не пропадёт, т.к. он нигде не выключается.
Есть идеи?
Заранее спасибо :D
 

timaxa007

Команда форума
Сообщения
4,927
Лучшие ответы
273
Симпатии
350
#2
Был подобный вопрос.
 

Lobotino

Каменная лига
Сообщения
149
Лучшие ответы
1
Симпатии
0
#3
Мм, выключать? :Р

В тикере проверяй на надетую бронь и нужный булеан, нет?
 

timaxa007

Команда форума
Сообщения
4,927
Лучшие ответы
273
Симпатии
350
#4
timaxa007 написал(а):
3. Использовать эвент update/tick игрока(или моба), типа: TickEvent.PlayerTickEvent и проверять на наличии части брони в слоте.
 

Dahaka

Золотая лига
Сообщения
2,251
Лучшие ответы
77
Симпатии
229
#5
В идеале, создать ивент изменения текущей амуниции (я так делал). Может много где пригодиться.
 

AlexSocol

Золотая лига
Сообщения
1,943
Лучшие ответы
65
Симпатии
172
#6
Да-да, тикеры - это, конечно, хорошо, но вот совместимость убивает напрочь. "if (броня != моя) fly = false". И срабатывает оно каждый тик, просто отрубая любые другие способы полёта из других модов. Вот именно поэтому я до сих пор не сделал эвент отключения.
[hr]
timaxa007 написал(а):
Был подобный вопрос.
А ссылку можно? Потому что я так и не нашёл.
 

timaxa007

Команда форума
Сообщения
4,927
Лучшие ответы
273
Симпатии
350
#7
Думаю, что надо сделать проверку, что предыдущие одетая броня была твоя. Для этого создать переменную, которая будет хранить значение Item или ItemStack одетой брони предыдущем тике. И создать условие которые проверяются предметы этого и предыдущего тика, не совпадают по условиям Fly отключается.
[hr]
AlexSocol написал(а):
timaxa007 написал(а):
Был подобный вопрос.
А ссылку можно? Потому что я так и не нашёл.
http://forum.mcmodding.ru/%d0%a2%d0%b5%d0%bc%d0%b0-%d0%9d%d0%b5%d0%bc%d0%bd%d0%be%d0%b3%d0%be-%d0%be-%d0%b1%d1%80%d0%be%d0%bd%d0%b5?highlight=allowFly
 

AlexSocol

Золотая лига
Сообщения
1,943
Лучшие ответы
65
Симпатии
172
#8
А разве значение этой переменной не будет одним и тем же для всех игроков?
 

Dahaka

Золотая лига
Сообщения
2,251
Лучшие ответы
77
Симпатии
229
#9
В игроке итак есть такие 5 таких переменных. Но они вроде приватные.
 

timaxa007

Команда форума
Сообщения
4,927
Лучшие ответы
273
Симпатии
350
#10
AlexSocol, ну как-бы сделать переменную так, чтобы было для игрока. Либо через через HashMap<EntityPlayer, Boolean>, либо использовать IExtendedEntityProperties.
 

MrFrozenNik

Каменная лига
Сообщения
1
Лучшие ответы
0
Симпатии
0
#11
Можете код скинуть, если писать через
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer ePlayer) {
return itemstack;
/*Сюда напишите команду для полёта, плз. Прост ошибка*/

}
 
Сверху