EntityBoundingBox

Статус
В этой теме нельзя размещать новые ответы.
Версия Minecraft
1.12.2

sk9zist :l

Исправился
981
18
157
Выпрашивание кода запрещено
Напсал вот это, чтобы обнаруживать сущностей в радиусе трёх блоков от игрока (меня):
Java:
List<EntityLivingBase> list = player.world.getEntitiesWithinAABB(EntityLivingBase.class,
                   player.getEntityBoundingBox().expand(3, 2, 1));
Всё работает. Как теперь отнимать почти всё здоровье у полученных сущностей и половину у меча в руке? Желательно пример кода, иначе практически ничего в этом непонимаю..
И, также можно узнать как сделать этот радиус в виде сферы, а не куба?
 
1,038
57
229
как сделать этот радиус в виде сферы, а не куба?
сделать ещё одну проверку на то попадает ли в заданный радиус.

Как теперь отнимать почти всё здоровье у полученных сущностей
setDamage или что-то такое
 

sk9zist :l

Исправился
981
18
157

sk9zist :l

Исправился
981
18
157
1) Как исключить из list самого игрока (ну меня), сделать проверку?
2) Отнимаю прочность вот так:
Java:
player.getHeldItemMainhand().getItem().setDamage(player.getHeldItemMainhand(), player.getHeldItemMainhand().getMaxDamage()/2);
но почему-то оно отнимает только один раз (первый).. Как исправить?
 

sk9zist :l

Исправился
981
18
157
Потому что ты каждый раз устанавливаешь предмету ровно половину урона от максимального (целого предмета), а не от текущего.
Да.. Я знал что так ответят. Но и при простом значении: 300
отнимаеться только один раз и всё. И я не знаю как получить текущий урон, впрочем это и не необходимо.
 

sk9zist :l

Исправился
981
18
157
В стаке есть метод damageItem, что вы городите
Спасибо, работает.
Уже пробовал. Выводит 0.
Попробовал отнимать прочность следуя ответу @Agravaine и одновременно выводить через твой способ - выводит потраченную прочность, а не оставшуюся.
Но теперь моя цель не это, мне нужно узнавать кол-во мобов в list и отнимать у меча столько прочности, сколько всего было обнаружено мобов. (ведь при ударе у меча тратиться всегда 1 прочность, да?)
 

sk9zist :l

Исправился
981
18
157

sk9zist :l

Исправился
981
18
157
7,099
324
1,510
И, также можно узнать как сделать этот радиус в виде сферы, а не куба?
переформулировать

Делаешь точно также, а после фильтруешь полученный список по предикату принадлежности сфере.
Предикат принадлежности сфере, думаю, сам можешь написать, это чисто матан
Фильтровать удобно стримами: list.stream().filter(<predicate>).collect(toList())
 

sk9zist :l

Исправился
981
18
157
написать list.size() - ты хочешь сказать что ты знаешь язык?
Да.. Простите я думал что имел ввиду то, что я говорил ранее, просто я укорачивал речь

Как исключить из list самого игрока (ну меня), сделать проверку?
Впрочем не важно.
 
7,099
324
1,510

sk9zist :l

Исправился
981
18
157
Предикат принадлежности сфере, думаю, сам можешь написать
В начале темы я упомянул что плохо разбираюсь в этом... Да и в математике не силён, однако спасибо за развернутый ответ
 
7,099
324
1,510
Как бы дальше нагуглить можно, задача простая, ее уже решали кто-то когда-то
 

sk9zist :l

Исправился
981
18
157
Статус
В этой теме нельзя размещать новые ответы.
Сверху