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

Помогите Запрет на течение воды.

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

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

    HamBurgeR Участник Пользователь

    Баллы:
    31
    Приветули. Такая ситуация. Очень пытаюсь познать ремесло написания плагинов, но делать это сложно, поскольку все линки старые и многие не работают. У меня есть мод Mariculture на сервере и там есть тип воды, которая ломает всё своим течением. В конфигах запрета данной функции нету. Плюс, помимо с этим хотел написать плагин на запрет течения воды и лавы на всей карте, включая территории без привата, а таких плагинов найти не смог. Как я понял, мне нужна эта штука BlockFromToEvent. Но, мне нужно немного помощи с объяснением, как именно её использовать. Спасибо!
     
  2. Хостинг MineCraft
    <
  3. AtomicInteger

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

    Баллы:
    46
    Если есть WG, то можно выставлять флаг water-flow.Иначе, в ивенте BlockFromToEvent проверяешь, вода ли это и закрываешь ивент.Примерно так:
    Код:
    @EventHandler
    private void onWaterFlow(BlockFromToEvent event) {
        if (event.getBlock().getType() == Material.WATER)
            event.setCancelled(true);
    }
     
  4. Автор темы
    HamBurgeR

    HamBurgeR Участник Пользователь

    Баллы:
    31
    А не знаешь, можно ли WATER заменить на ид воды из мода? Или нужно что-то другое делать?
     
  5. AtomicInteger

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

    Баллы:
    46
    Можно.Правда если вода из мода, то у неё и Material другой, но я не уверен.Можешь задебажить.
     
  6. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    Бред
    getTypeId
     
  7. Автор темы
    HamBurgeR

    HamBurgeR Участник Пользователь

    Баллы:
    31
    Т.е?
    Код:
    if(event.getBlock().getTypeId()== ID)
    
    Так?
     
  8. 0x1EE7C0DE

    0x1EE7C0DE Участник Пользователь

    Баллы:
    36
    Да
     
  9. AtomicInteger

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

    Баллы:
    46
    Почему бред?
     
  10. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Потому что староверы не могут в проверку обновлений, и узнать, что Material есть почти у всех предметов в модах.
     
  11. Автор темы
    HamBurgeR

    HamBurgeR Участник Пользователь

    Баллы:
    31
    getTypeId() == 800)
    Фразу getTypeId Эклипс почему-то зачёркивает. И просит добавить @SuppressWarnings("deprecation")[DOUBLEPOST=1482276972,1482276651][/DOUBLEPOST]И ещё вопрос. А если внести дополнительно мод, как библиотеку, а в нём указать место "WATER" слово из мода? Такое будет работать?
     
  12. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    ну и пусть зачеркивает. главное чтобы красным не зачеркивало :)
     
  13. Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    это значит что метод устарел и что в любой момент его могут убрать, поэтому его использование не желательно. если мне не изменяет память то он еще с 1.7 уже deprecated

    эээксперименты. проверьте и посмотрите.
     
  14. AtomicInteger

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

    Баллы:
    46
    Если метод устарел, то это не значит что его в любой момент могут убрать.
    Проверка по id дело не надежное.Если уж так нужно, то лучше выведи значение в конфиг и оттуда получай его, так как потом будут проблемы.Но вообще, не понимаю, зачем возится с устарелыми ненадёжными методами, к тому же id, когда у модовых предметов тоже есть Material и можно проверять по нему, если автор того мода не совсем дурак.
    А вот советовать magic value методы - не бред.
     
  15. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Потому что у модов айдишники создаются рандомнот, после вайпа слетит все.
    Material.valueOf("arg");
     
  16. Автор темы
    HamBurgeR

    HamBurgeR Участник Пользователь

    Баллы:
    31
    Дык, а каким образом тогда узнать Material из мода?
     
  17. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Ну к примеру в логе запуска сервера. Injected new Forge block material CUSTOMNPCS_NPCLAMP with ID 198.
     
  18. AtomicInteger

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

    Баллы:
    46
    Не спорю, айдишники - да, а материал всегда обычно статический.
    Хорошо бы иметь небольшой дебаг-плагин, который выводит разные параметры вещей и т.п.Конкретно материал можно проверить примерно так:
    Код:
    player.sendMessage(player.getItemInHand().getType().toString());
    Можно на команды сделать, можно на клики, как угодно.
     
  19. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Тогда уж полностью автоматизировать добавление в конфиг через команду с предметом в руке.
     
  20. AtomicInteger

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

    Баллы:
    46
    Можно и так.У меня есть десктоп, она лог парсит и вырезает только модовские материалы, тоже можно использовать.
     

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