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

Помогите Возможен ли Override метода другого плагина?

Discussion in 'Разработка плагинов для новичков' started by skynetxxx, Oct 14, 2013.

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

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

    Trophy Points:
    123
    Имя в Minecraft:
    skynetxxx
    Здравствуйте! Собственно такой вот вопрос:
    Возможен ли Override метода другого плагина? Именно метода, переопределение команды меня не интересует.
    Как например переопределить WorldGuardEntityListener.tryCancelPVPEvent?
     
  2. Хостинг MineCraft
    <
  3. Shevchik

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

    Trophy Points:
    173
    Имя в Minecraft:
    _Shevchik_
    Вообще возможен, но тебе не понравится этот способ.

    Спрашивается зачем тебе нужен оверрайд?
     
  4. Code

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

    Trophy Points:
    123
    Имя в Minecraft:
    _Gizmo
    если для себя, просто перепиши его, как тебе надо, и все.
     
  5. Автор темы
    skynetxxx

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

    Trophy Points:
    123
    Имя в Minecraft:
    skynetxxx
    Почему этот способ должен мне не понравиться?
    Я понимаю, что это вряд-ли выглядит красиво.

    Оверрайд нужен для того, чтобы объеденить функционал разных плагинов, не модифицируя их вручную.

    В данном случае например я собираюсь объединить функционал WorldGuard с CombatLog, убрав условие флага NoPVP для игрока который уже в PVP. Код WG уже поправил, но пересборка больших плагинов ради одного модифицированного метода - это бред, да и никуда не выложишь такой фикс.
     
  6. Shevchik

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

    Trophy Points:
    173
    Имя в Minecraft:
    _Shevchik_
    Почемубы тогда тупо не отменять убирание пвп, эвент же есть,и он cancellable.

    А для перписывания метода(точнее получившегося байткода) тебе понадобится либо CGLIB, либо ObjectWeb ASM.
     
    slavik123123123 and skynetxxx like this.

Share This Page