- Баллы
- 173
- Имя в Minecraft
- OsipXD
А будет ли такая локация эквивалентна локации с указанными yaw и pitch?Можно создать локации без указания yaw и pitch.
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
А будет ли такая локация эквивалентна локации с указанными yaw и pitch?Можно создать локации без указания yaw и pitch.
Не тестировал, если честно.А будет ли такая локация эквивалентна локации с указанными yaw и pitch?
Эта проверка бессмысленная, энтити не блок и имеет свойство двигаться - ходить.Не тестилJava:private double x = 1D; private double y = 100D; private double z = 1D; public void entity() { Location loc = new Location(Bukkit.getWorld("world"), x, y, z); LivingEntity e = (LivingEntity) Bukkit.getWorld("world").spawnEntity(loc, EntityType.VILLAGER); } @EventHandler public void onInteract(PlayerInteractEntityEvent e) { Player p = e.getPlayer(); if (!p.hasPermission("villager.interact")) return; if (e.getRightClicked() instanceof LivingEntity) { LivingEntity en = (LivingEntity) e.getRightClicked(); if (en.getType() == EntityType.VILLAGER) { if (en.getLocation().getX() == x) { if (en.getLocation().getY() == y) { if (en.getLocation().getZ() == z) { if (en.getLocation().getWorld().getName().equalsIgnoreCase("world")) { e.setCancelled(true); Inventory i = Bukkit.createInventory(null, InventoryType.MERCHANT); i.setItem(0, new ItemStack(Material.APPLE)); i.setItem(1, new ItemStack(Material.STONE)); } } } } } } }
Да, но ведь метод equals() может быть переопределен, хотя в случае с Location я этого не наблюдаюНе тестировал, если честно.
hashCode формируется по данным класса, соответственно если yaw и pitch первый локации не равен yaw и pitch второй локации, то hashCode локаций будет разный. Соответственно, location.equals(location_1) вернёт false.
Никогда с этой частью API не работал лично, поэтому не знал. Спасибо.можно проверить Entity на тип не проверяя является ли он LivingEntity. Ибо метод Entity#getType() наследуется.
Я в коде вообще не разбирался. Я вообще не знаю, чем вы тут занимаетесь.Насколько я помню, локации можно проверять через equals.
if (location.equals(location_2) {
Уже писал в данной теме, что можно создать новый "Location" не указывая при этом yaw и pitch.Я в коде вообще не разбирался. Я вообще не знаю, чем вы тут занимаетесь.
Могу лишь сказать, что Location.equls(Location) проверит вдобавок ещё и мир с yaw и pitch, что, возможно, и не нужно в данном случае...
Я ж говорю, я в тред и код вообще не вникал.Уже писал в данной теме, что можно создать новый "Location" не указывая при этом yaw и pitch.
Да, но ведь метод equals() может быть переопределен, хотя в случае с Location я этого не наблюдаю

В этом случае yaw и pitch присваиваются нулевые значения. Соответственно если житель, на которого кликнули, не будет повёрнут, то Location.equals(Location) вернёт true.А будет ли такая локация эквивалентна локации с указанными yaw и pitch?
Вся эта хрень сдохнет, если моб ходит. Вот так нужно искать своего неписа в мире.Я ж говорю, я в тред и код вообще не вникал.
Посмотреть вложение 42946
UPD: Чуток почитал, что вы тут обсуждаете...
В этом случае yaw и pitch присваиваются нулевые значения. Соответственно если житель, на которого кликнули, не будет повёрнут, то Location.equals(Location) вернёт true.
@EventHandler
public void onPlayerInteract(PlayerInteractEntityEvent e) {
CraftEntity ent = (CraftEntity) e.getRightClicked();
NBTTagCompound nbt = new NBTTagCompound();
String UUIDMost = ent.getHandle().e(nbt).get("UUIDMost").toString();
String UUIDLeast = ent.getHandle().e(nbt).get("UUIDLeast").toString();
if(UUIDMost.equals("3005458539731698347L") && UUIDLeast.equals("-6317738198714295249L")) {
e.getPlayer().sendMessage("Это наш моб");
} else {
e.getPlayer().sendMessage("Это не наш бом");
}
}
NMS. Это не лучшее решение.Вся эта хрень сдохнет, если моб ходит. Вот так нужно искать своего неписа в мире.
Java:@EventHandler public void onPlayerInteract(PlayerInteractEntityEvent e) { CraftEntity ent = (CraftEntity) e.getRightClicked(); NBTTagCompound nbt = new NBTTagCompound(); String UUIDMost = ent.getHandle().e(nbt).get("UUIDMost").toString(); String UUIDLeast = ent.getHandle().e(nbt).get("UUIDLeast").toString(); if(UUIDMost.equals("3005458539731698347L") && UUIDLeast.equals("-6317738198714295249L")) { e.getPlayer().sendMessage("Это наш моб"); } else { e.getPlayer().sendMessage("Это не наш бом"); } }
Но единственное. Так нам без разницы где гуляет наш непис, мы его везде найдем.NMS. Это не лучшее решение.
@EventHandler
public void onPlayerInteract(PlayerInteractEntityEvent e) {
Entity ent = e.getRightClicked();
if(ent.getType()==EntityType.VILLAGER) {
if(ent.getCustomName().equals("Торгаш")) {
e.getPlayer().sendMessage("Это наш моб");
} else {
e.getPlayer().sendMessage("Это не наш бом");
}
}
}
Нужна проверка есть ли у моба имя, а то NPE вылезет.Но единственное. Так нам без разницы где гуляет наш непис, мы его везде найдем.
Никто ж не виноват, что в ведре не реализован показ уидов.
Ну есть вариант с именем неписа, но это не самое уникальное значение.
Java:@EventHandler public void onPlayerInteract(PlayerInteractEntityEvent e) { Entity ent = e.getRightClicked(); if(ent.getType()==EntityType.VILLAGER) { if(ent.getCustomName().equals("Торгаш")) { e.getPlayer().sendMessage("Это наш моб"); } else { e.getPlayer().sendMessage("Это не наш бом"); } } }
@EventHandler
public void onPlayerInteract(PlayerInteractEntityEvent e) {
Entity ent = e.getRightClicked();
if(ent.getType()==EntityType.VILLAGER && ent.getCustomName().isEmpty()) {
if(ent.getCustomName().equals("Торгаш")) {
e.getPlayer().sendMessage("Это наш моб");
} else {
e.getPlayer().sendMessage("Это не наш бом");
}
}
}
https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/Entity.html#getEntityId()Никто ж не виноват, что в ведре не реализован показ уидов.
Упс. Не то https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/Entity.html#getUniqueId()Нет, это временный уид при загрузке чанка.
Ну хз. Токо что проверил, пробовал разгружать и загружать чанки с мобом, рестартить сервер, но uuid так и не сменилсяНет, это временный уид при загрузке чанка. А первое, то просто номер моба.
Я вот аналог ситизенса себе склепал.Нет, это временный уид при загрузке чанка. А первое, то просто номер моба.
P.s citizens плагин не юзайте, там же nms ааа страшна.
Не локация, а по имениВот и я хз, делал килялку кастомнпс по getUniqueId(), каждый раз меняется.
И ты юзаешь этот костыль с лоацией моба? Ну да, костыль проще чем nms.

Можно в конец имени добавлять невидимый тэг, чтобы было уникально. Примерно как тут.Ну есть вариант с именем неписа, но это не самое уникальное значение.
Да все можно конечно же.Можно в конец имени добавлять невидимый тэг, чтобы было уникально. Примерно как тут.