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

Помогите Пропадают мобы (жители) при смерти игрока

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

  1. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Решил написать плагин на BedWars. Все работает, но есть одна проблема. Если игрок умирает, все жители (других мобов просто в мире нет) в мире пропадают ДЛЯ НЕГО визуально (звуки их слышны, но магазин никак не открыть, так как просто не срабатывает EntityInteractEntityEvent). Остальные игроки видят всех жителей, и могут покупать вещи. Но им достаточно умереть и респавниться, как и для них жители пропадут. Использую в PlayerDeathEvent player.spigot().respawn(); и телепортирую потом игрока на свою базу (конечно, если есть кровать, иначе - gamer.setSpectator(true), но это не важно).

    Почему так происходит? Мои догадки:
    1) player.spigot().respawn() создает эту ошибку. (Думаю, если в этом проблема, то через NMS тоже нет смысла это делать).
    2) Кривой спавн самого жителя (маловероятно).
    Код:
        public void spawn(Location location)
        {
            Entity trader = location.getWorld().spawnEntity(location, EntityType.VILLAGER);
            trader.setCustomName(ChatColor.translateAlternateColorCodes('&', cfg.getString("path"));
            trader.setCustomNameVisible(true);
            Villager villager = (Villager) trader;
            villager.setProfession(Profession.NITWIT);
            villager.getAttribute(Attribute.GENERIC_MOVEMENT_SPEED).setBaseValue(0);
        }
    3) проблема с ядром.
    ... Ваш ответ.

    Вообщем, хотел бы узнать причину этого бага, и почему так происходит, чтобы знать, что убирать и переделывать (да и другим может встретиться этот баг).
     
  2. xDark

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

    Баллы:
    96
    setRemoveWhenFarAway(false);
     
  3. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Так житель то не удаляется, он просто становится невидимым умершему, другим игрокам он остается видимым. Хотя все равно установлю это значение, но решит ли это проблему?
     
    Последнее редактирование: 26 мар 2018
  4. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Боюсь, что не решит.

    Для начала поставь последний билд ядра для нужной версии игры.

    Затем проверь, как ведёт себя сервер без всех остальных плагинов (должен стоять только твой и зависимости). Если все станет нормально - поиграйся с приоритетом события смерти.

    Последнее, что могу предложить - вызывай респаун через один тик после смерти.

    Также для диагностики можешь наспаунить обычных ванильных мобов и посмотреть, пропадут ли они
     
  5. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Поставил, при смерти все жители все равно на карте для игрока пропадают визуально.
    Поставил на центре ведьм, при телепорте на карту все мобы видны, и жители и ведьмы. При смерти ни тех ни других не видно. Главное, ведьмы не видны, а вот зельки в игрока бросают.
    У меня и так стоит сам плагин + MultiWorld.
     
  6. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Не пробовал?
     
  7. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Вписал в код, но еще не тестил.
     
  8. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Не помогло (
    Поставил EventPriority.HIGHEST - тоже не помогло.
    После респавна все равно мобы больше не видны для респавнутого игрока.
     
  9. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Нашел в интернете этот тред: https://bugs.mojang.com/browse/MC-68403
    Похоже, это ошибка билда (хотя, вроде у меня релизная версия). Пофиксить ее на уровне сервера возможно?
    Версия клиента - 1.12 + OptiFine.
    Версия ядра сервера - spigot-1.12-R0.1-SNAPSHOT-b1376
     
  10. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Затестил на 1.8 ядре, проблема пропала. Так вот.. шо делать с 1.12)
     
  11. VentiKLay

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

    Баллы:
    76
    Имя в Minecraft:
    VentiKLay
    Если в твоем плагине покупка идёт через gui, а не через самого жителя, то можешь отрубить AI жителя (хз может поможет)
    Код:
    villager.setAI(false);
    
     
  12. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Боюсь, не поможет. Ведь я спавнил ведьм, и они тоже пропадали, хотя они не имеют AI, насколько я знаю.
     
  13. VentiKLay

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

    Баллы:
    76
    Имя в Minecraft:
    VentiKLay
    По моему у всех Entity есть свое AI

    UPDATE: У ведьм и в правду нету AI
     

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