Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Vehicles + Water = Dismount

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

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

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Всем доброго времени суток.
    Возникла такая проблема - как я думаю все знают, при погружении в воду сидя на любом ездовом животном вы с него встаете.
    Необходимо предотвратить дизмаунт.
    Евенты VehicleExitEvent на текущих версиях увы не работает.
    NMS Допустим.

    Какие есть мыслишки?
    Заранее благодарю.
     
  2. Хостинг MineCraft
    <
  3. BeYkeR

    BeYkeR Старожил Девелопер Пользователь

    Баллы:
    173
    Модифицируй класс животного и используй Reflection
     
  4. Автор темы
    ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    В чем твоя проблема?

    Логично предположить что я знаю что надо модифицировать через Reflection... И так же логично предположить что коль я создал тему тут, то я уже перепробовал не один десяток вариантов?
     
  5. Автор темы
    ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Ты глупый или да?
    Если я создал тему тут, значит я обгуглил то что мог
    На официальном форуме подобным вопросом не задавались, вопросом о операциях с дизмаунтом - да, но все сошлись на неработоспособности ядра в плане кидания этого эвента.
    А вот смысл от твоих постов мне не ясен.[DOUBLEPOST=1397659023,1397658829][/DOUBLEPOST]
    К сведению о том посте где я поставил лайк..
    Ты задал вопрос самого базового и элементарного уровня который находится на первой странице и выдается ПЕРВЫМ, по этому тебе и тыкнули в поиск 2 человека.
    Пруфчик:
    [​IMG]

    Я же задаю вопрос несколько сложнее, на который не нашел ответ ни на этом, ни на официальном форуме / в гугле / изучив сорс некоторых плагинов.[DOUBLEPOST=1397673099][/DOUBLEPOST]:С
    HALP PLEASE
    @fromgate @ptnk @Den_Abr @DPOH-VAR @Flumaster
     
    Последнее редактирование: 16 апр 2014
    BeYkeR нравится это.
  6. Flumaster

    Flumaster Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    alexey_aristov
    Какое ядро?
     
  7. Автор темы
    ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    1.7.5 Бета-билд
     
  8. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Поржал от души, спасибо.
    По описанию на тебя кстати похоже.
    Без модификации ядра ничего не выйдет, сложности добавляет обфускация, но от неё ещё можно избавиться.
     
    BeYkeR нравится это.
  9. Автор темы
    ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Да я уже так и подумал что тут либо Entity переписывать, либо Player
     
  10. Автор темы
    ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Кстати про старика он мне сказал при том что я тут с 2011 :D

    А по теме, в общем попробую покапать ядрышко, отпишусь потом.
    Если есть мысли - пишем :)
     
  11. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    @ql_Nik_lp,
    Придется копать вглубь nms, искать причину дисмаунта энтитей.
    Не исключено кстати, что это делает сам клиент. - Тут было бы неплохо еще пакеты проследить.

    Если дело все-таки на сервере, то вот что могу порекомендовать:
    библиотека BCEL - для модификации классов. Опасная вещь с большим порогом вхождения.
    Javassist - похожая вещь, но для новичков. Быстродействие у нее в разы меньше, чем BCEL

    Если клиент виновен - тут уже ничего не поделаешь. Разве что модифицировать его.
     
  12. Автор темы
    ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Скорее всего так и есть, потому что в случае если бы дело было в сервере, то это выглядело бы примерно как if(this.inWater)
    this.vechicle.setPassanger(null);

    Но проверив абсолютно все места где упоминается inWater или манипуляции с вехиклом/пассажиром в классах Entity, EntityLiving, EntityPlayer я такого не нашел...
    Единственное на что была мысль, это:
    Код:
        public void a(float f, float f1, boolean flag, boolean flag1) {
            if (this.vehicle != null) {
                if (f >= -1.0F && f <= 1.0F) {
                    this.bd = f;
                }
    
                if (f1 >= -1.0F && f1 <= 1.0F) {
                    this.be = f1;
                }
    
                this.bc = flag;
                this.setSneaking(flag1);
            }
        }
    из EntityPlayer, однако модифицировать такую сущность я в любом случае не стану.

    В общем решение я уже нашел, и скоро на него можно будет глянуть в "Неподтвержденных плагинах" ;D

    Кстати, кинул заявочку в скайп, буду рад если добавишь :)


    З.Ы. За BCEL благодарю :)
     

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