1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите [Решено] Как призвать жителя с нужными торговыми принадлежностями?

Тема в разделе "Разработка плагинов для новичков", создана пользователем Exception_Prototype, 22 авг 2016.

Статус темы:
Закрыта.
  1. OsipXD

    OsipXD Старожил Пользователь

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    А будет ли такая локация эквивалентна локации с указанными yaw и pitch?
     
  2. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Не тестировал, если честно.
    hashCode формируется по данным класса, соответственно если yaw и pitch первой локации не равен yaw и pitch второй локации, то hashCode локаций будет разный. Соответственно, location.equals(location_1) вернёт false.
     
    Последнее редактирование: 6 сен 2016
  3. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Эта проверка бессмысленная, энтити не блок и имеет свойство двигаться - ходить.
    У энтити есть UUIDLeast UUIDMost, которые и делают его уникальным для проверки.
     
    Последнее редактирование: 6 сен 2016
  4. OsipXD

    OsipXD Старожил Пользователь

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    Да, но ведь метод equals() может быть переопределен, хотя в случае с Location я этого не наблюдаю
     
  5. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Никогда с этой частью API не работал лично, поэтому не знал. Спасибо.
     
  6. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Я в коде вообще не разбирался. Я вообще не знаю, чем вы тут занимаетесь.
    Могу лишь сказать, что Location.equls(Location) проверит вдобавок ещё и мир с yaw и pitch, что, возможно, и не нужно в данном случае...
     
  7. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Уже писал в данной теме, что можно создать новый "Location" не указывая при этом yaw и pitch.
     
  8. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Я ж говорю, я в тред и код вообще не вникал.
    upload_2016-9-7_5-30-49.png
    UPD: Чуток почитал, что вы тут обсуждаете...
    В этом случае yaw и pitch присваиваются нулевые значения. Соответственно если житель, на которого кликнули, не будет повёрнут, то Location.equals(Location) вернёт true.
     
  9. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Вся эта хрень сдохнет, если моб ходит. Вот так нужно искать своего неписа в мире.

    Код:
        @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("Это не наш бом");
            }
        }
     
  10. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    NMS. Это не лучшее решение.
     
  11. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Но единственное. Так нам без разницы где гуляет наш непис, мы его везде найдем.
    Никто ж не виноват, что в ведре не реализован показ уидов.
    Ну есть вариант с именем неписа, но это не самое уникальное значение.
    Код:
        @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("Это не наш бом");
                }
            }
        }
     
    Последнее редактирование: 7 сен 2016
  12. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
    Нужна проверка есть ли у моба имя, а то NPE вылезет.
     
  13. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Код:
        @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("Это не наш бом");
                }
            }
        }
     
  14. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
  15. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
  16. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
    Ну хз. Токо что проверил, пробовал разгружать и загружать чанки с мобом, рестартить сервер, но uuid так и не сменился
     
  17. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Я вот аналог ситизенса себе склепал.
    Ну как аналог, ситизенс весит 700 кб, а мой "аналог" - 60. Чисто под конкретные задачи. Для меня вполне хватает, и главное, что нмс там нет.
     
  18. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Не локация, а по имени :)
     
  19. OsipXD

    OsipXD Старожил Пользователь

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    Можно в конец имени добавлять невидимый тэг, чтобы было уникально. Примерно как тут.
     
  20. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Да все можно конечно же.
     
Статус темы:
Закрыта.

Поделиться этой страницей