- Баллы
- 123
.
Последнее редактирование:
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Это значит что ентити нельзя толкать.И еще, что делает метод setInvulnerable?
По гугл переводчику это "неуязвимость" однако такую энтити можно бить..
Та нИт же! За это отвечает метод setCollidable (вроде.. (а если нет, то за что тогда отвечает метод setCollidable? O,o))..Это значит что ентити нельзя толкать.
Это я тоже думаю сделать, но это я хочу сделать с помощью пакетов, так как я хочу чтоб энтити смотрел на каждого игрока..Создай метод, который будет управлять головой в зависимости от позиции игрока. (Голова постоянно будет смотреть на игрока)

В теории - можно, на практике не занимался таким.Та нИт же! За это отвечает метод setCollidable (вроде.. (а если нет, то за что тогда отвечает метод setCollidable? O,o))..
Это я тоже думаю сделать, но это я хочу сделать с помощью пакетов, так как я хочу чтоб энтити смотрел на каждого игрока..
Но сейчас не про это, сейчас именно взгляд при спавне, ибо сейчас у меня энтити расположен в здании, и он спавнится смотря в стенку (я ж его не собираюсь расстреливать, емае), а мне надо чтоб он смотрел на то место, откуда предположительно появится игрок (лестница).
Лучше вообще сделаю чтоб энтити всегда смотрел в одно место (для конкретного жителя - в сторону лестницы), но пакетами "поворачивался" к каждому игроку.
Так же можно надеюсь?![]()
Так вот мне интересно, как правильно это делать,В теории - можно, на практике не занимался таким.
Попробуй после спавна Entity с задержкой устанавливать ему позицию для головы.
runTaskLater(2-5 тиков)
Можно и так и так, насколько мне известно. setDirection работает с векторами и направлениями сторон (setDirection(West)). setYaw && setPitch работают с числами.Так вот мне интересно, как правильно это делать,
setYaw & setPitch или setDirection?
Сделаль вот так:Можно и так и так, насколько мне известно. setDirection работает с векторами и направлениями сторон (setDirection(West)). setYaw && setPitch работают с числами.
public Trader(String name, ConfigurationSection section) {
type = CustomEntityType.TRADER;
location = TextLocation.parse(section.getString("LOCATION"));
if (location.getChunk().isLoaded()) location.getChunk().load();
entity_type = EntityType.valueOf(section.getString("ENTITY"));
display_name = section.getString("DISPLAY_NAME");
entity = (LivingEntity) location.getWorld().spawnEntity(location, entity_type);
entity.setCustomName(display_name);
entity.setCustomNameVisible(true);
entity.setInvulnerable(true);
entity.setGravity(false);
entity.setSilent(true);
entity.setAI(false);
entity.setCollidable(false);
entity.setCanPickupItems(false);
Bukkit.getScheduler().runTaskLater(GWMServerPlugin.plugin, () -> {
System.out.println(location.getYaw());
System.out.println(location.getPitch());
entity.getLocation().setYaw(location.getYaw());
entity.getLocation().setPitch(location.getPitch());
}, 20L);
}
Лол, ты принтишь значения раньше, чем устанавливаешь их.Сделаль вот так:
Значения в консоли те-же, энтити смотрит туда-же (0;0)..Код:public Trader(String name, ConfigurationSection section) { type = CustomEntityType.TRADER; location = TextLocation.parse(section.getString("LOCATION")); if (location.getChunk().isLoaded()) location.getChunk().load(); entity_type = EntityType.valueOf(section.getString("ENTITY")); display_name = section.getString("DISPLAY_NAME"); entity = (LivingEntity) location.getWorld().spawnEntity(location, entity_type); entity.setCustomName(display_name); entity.setCustomNameVisible(true); entity.setInvulnerable(true); entity.setGravity(false); entity.setSilent(true); entity.setAI(false); entity.setCollidable(false); entity.setCanPickupItems(false); Bukkit.getScheduler().runTaskLater(GWMServerPlugin.plugin, () -> { System.out.println(location.getYaw()); System.out.println(location.getPitch()); entity.getLocation().setYaw(location.getYaw()); entity.getLocation().setPitch(location.getPitch()); }, 20L); }
Так это для того что-бы проверять правильные ли значения я устанавливаю, чтоб я точно знал что это что-то не работает, а не значения не правильные..Лол, ты принтишь значения раньше, чем устанавливаешь их.
Попытаюсь.. Но по идее, мне надо телепортировать жителя на ту же локацию которую я использую для его спавна (так как в той локации уже есть нужные Yaw и Pitch) а это немножко.. Странно)entity.teleport(newLocationWithNewYaw);
public Trader(String name, ConfigurationSection section) {
type = CustomEntityType.TRADER;
location = TextLocation.parse(section.getString("LOCATION"));
if (location.getChunk().isLoaded()) location.getChunk().load();
entity_type = EntityType.valueOf(section.getString("ENTITY"));
display_name = section.getString("DISPLAY_NAME");
entity = (LivingEntity) location.getWorld().spawnEntity(location, entity_type);
entity.setCustomName(display_name);
entity.setCustomNameVisible(true);
entity.setInvulnerable(true);
entity.setGravity(false);
entity.setSilent(true);
entity.setAI(false);
entity.setCollidable(false);
entity.setCanPickupItems(false);
Bukkit.getScheduler().runTaskLater(GWMServerPlugin.plugin, () -> {
System.out.println(location.getYaw());
System.out.println(location.getPitch());
entity.teleport(location);
}, 20L);
}
Так почему бы не создать НОВУЮ локацию на основе getX() getY() getZ() и выставить энтити?И, что самое приколькольное, метод setYaw() или setPitch() либо вовсе не работает, либо не отправляет пакет поворота головы игроку.
Это норма, просто прочитай teleport как setLocation. Метод setYaw и не должен отсылать пакет, он тупо записывает в объект Location новое значение. Это как и с setX xetY setZ setPitch. Баккит никому ничего не должен. Нужен поворот головы - лезь в NMS. Я видел сотни раз эти функции в NMS когда портировал плагины. А баккит апи предоставляет только setLocation (читай - teleport)Попытаюсь.. Но по идее, мне надо телепортировать жителя на ту же локацию которую я использую для его спавна (так как в той локации уже есть нужные Yaw и Pitch) а это немножко.. Странно)
В смысле? Я уже написал, что при спауне yaw или pitch не учитывается вообще. Хоть ты новую локацию создавай, хоть умоляй ядро работать по-человечески - пакет спауна не изменится (и его обработка). Поворот головы задаётся отдельным пакетом - о чём, собственно, я тоже сказал.Так почему бы не создать НОВУЮ локацию на основе getX() getY() getZ() и выставить энтити?
Я пробовал даже с задержкой в 20 тиков это делать, такое чувство что энтити вообще похрен, мол "я заспавнился, а дальше иди нахерн"Понял, ясненько. А последующий поворот (телепортация) с задержкой в один тик (или 10-20) при помощи runTaskLater поможет? Разве нет?

Попробовать себя телепортировать с установкой yqw & pitch? ПопробуюСтранновато. А у тебя самого поворачивается голова при телепортации?
агаПопробовать себя телепортировать с установкой yqw & pitch? Попробую