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

Помогите Небольшой конфликт с LWC

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

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

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

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    Имеем функцию в плагине, которая отменяет установку блока с определенныпм NBT (впринципе, не важно - главное срабатывает как нужно)

    Но возникает проблема с LWC - блок устанавливается - устанавливается LWC приват - эвент меняет блок на воздух - приват остается.
    Код:
    if (event.getBlock().getType().equals(Material.CHEST)) {
      event.getBlock().setType(Material.AIR);
    }
    Используя event.setCancelled() все игроки которые видели изменение блока уходили в краш.

    Вот и вопрос - в каком направлении думать?
    Курить в сторону снятия привата, или можно обойтись без установки привата?
     
  2. Степаха

    Степаха Активный участник

    Баллы:
    78
    Имя в Minecraft:
    Samtar
    Определённо курить в сторону снятия привата у данного блока по дефолту.
     
  3. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @Jampire, приоритет у обработчика какой? Посмотри какой в LWC, поставь ниже. Я в код LWC давно не заглядывал, но если автор не ступил, то он не должен ставить приват если событие пришло к нему отмененным.
    По логике.
     
  4. Автор темы
    Jampire

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

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    У меня по сути событие не отменяется, а считается выполненным. Пытался отменять - крашило всех вокруг.
     
  5. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @Jampire, "крашило"? Очень странно. Я отменял кучу разных событий - никогда проблем не было....
    Тем более, что отмена BlockPlaceEvent - это вообще-то нормальная ситуация (на ней "приваты" основаны), которую должен адекватно обрабатывать любой плагин. В т.ч. и LWC.
     
  6. Автор темы
    Jampire

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

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    мне что-то подсказывает что дело в измененных ItemMeta данных предмета, который устанавливается как блок. И это крашит клиент.

    Ибо тестил с чистыми блоками - не было краша.
     
  7. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    А вот это вполне может быть. Попробуй вместо ItemMeta использовать уникальные значения data (durability). Мы так у себя получаем блоки с дополнительными текстурами: допустим кирпичный блок и кирпичный блок с data=1. В стандартном клиенте выглядят одинаково и ничего не крашится. В нашем - кирпичный блок:1 отображается немного по другому.
     
  8. Автор темы
    Jampire

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

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    Как раз таки не получится. Нужна именно мета. Название, тег Lore. Так-же пытаюсь найти способ уникализировать предмет (что-бы шанс появления 2х копий был максимально низким).. К примеру рандомное число в какой-то тег записать)
     

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