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

Помогите Небольшая "функция"

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

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

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

    Баллы:
    153
    Подскажите, как сделать в плагине такую "функцию": если человек кликнул по блоку с определенным id, то выполняется условие. В Java не разбираюсь, плагин собираю по кусочкам, буду благодарен всем ответам.
     
  2. Хостинг MineCraft
    <
  3. _Rufu5_

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

    Баллы:
    48
    Имя в Minecraft:
    _Rufu5_
    Вот держи код подобия
    Код:
    @EventHandler
        public void click(PlayerInteractEvent event1){
            if (event1.getAction() == Action.RIGHT_CLICK_BLOCK(У примеру там разные варианты левый клик по воздуху и тд)
                    && event1.getClickedBlock().getType() == Material.НАЗВАНИЕ) {
     
    BedinINCORP, Zard0nic и Den_Abr нравится это.
  4. Автор темы
    Zard0nic

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

    Баллы:
    153
    Большое спасибо за пример, как оказалось, язык похож на PHP, в котором я разбираюсь на базовом уровне.
    И еще один вопрос: Material.НАЗВАНИЕ - можно указать id блока?
     
    Оригинало_о нравится это.
  5. BeYkeR

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

    Баллы:
    173
    Нет, но зато можно сделать так:
    Код:
    && event1.getClickedBlock().getTypeId() == ИД
     
  6. Автор темы
    Zard0nic

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

    Баллы:
    153
    Спасибо, буду разбираться дальше. В основном вопросы в API баккита, во всех этих методах я ноль
     
  7. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    http://jd.bukkit.org/rb/apidocs/
    Все они есть тут
     
    zuma2 нравится это.
  8. Автор темы
    Zard0nic

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

    Баллы:
    153
    Это я знаю, но найти подходящий и разобраться во всем этом, когда видишь первый раз в принципе эти методы и сам ява код сложно.
    В любом случае спасибо за помощь.
     
  9. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    При знании английского и синтаксиса джавы сложностей не возникнет
     
    slavik123123123 нравится это.
  10. Автор темы
    Zard0nic

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

    Баллы:
    153
    В самом условии if написал:
    Код:
    public void selected(PlayerInventory event2)
    и далее небольшой тест на инвентарь. В итоге этот код дает ошибку. Что я сделал не так?
     
    Сникерсни нравится это.
  11. musel70

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

    Баллы:
    88
    PlayerInventoryEvent , не?
     
  12. Автор темы
    Zard0nic

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

    Баллы:
    153
    Поменял, проблема осталась http://prntscr.com/1wutp0
     
  13. musel70

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

    Баллы:
    88
    Пишет про скобки и про чтото еще
     
  14. Автор темы
    Zard0nic

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

    Баллы:
    153
    Капитан. Но код ведь правильный, или я чего-то не учел?
     
  15. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Если я правильно понял, то ты написал что то типа if(public void selected(PlayerInventory event2)), если да, то это дикий бред[DOUBLEPOST=1381595335,1381595228][/DOUBLEPOST]http://www.rubukkit.org/threads/Урок-Пишем-первый-плагин.24364/
    вот тут можно познакомиться с основами написания плагинов
     
  16. Автор темы
    Zard0nic

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

    Баллы:
    153

    Код:
    if (event1.getAction() == Action.RIGHT_CLICK_BLOCK && event1.getClickedBlock().getTypeId() == 6) {
               
                getLogger().info("Block with ID 6 has been clicked");
                public void selected(PlayerInventoryEvent event2)
                {
                    if(event2.getItemInHand().itemStack() == 1)
                    {
                       
                    }
                }
            }
    Видимо бред :с
     
  17. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Тоже бред. Ты суёшь метод в метод
     
  18. Автор темы
    Zard0nic

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

    Баллы:
    153
    Как тогда можно организовать проверку на id блока в выбранном слое инвентаря и выполнить ту или иную функцию если true?
     
  19. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Если тебе надо слушать клик с каким то предметом в руке, то это выглядеть должно как то так
    Код:
    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent e) {
    Player p = e.getPlayer();
    if(e.getAction() == Action.RIGHT_CLICK_BLOCK && p.getItemInHand().getType() == 6) {
    //съесть торт
    }
    }
     
    zuma2 нравится это.
  20. Автор темы
    Zard0nic

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

    Баллы:
    153
    Нет, схема примерно такая: если человек кликнул по блоку правым кликом, то выполняется проверка на id предмета, которым он кликнул, и если он равен, к примеру, 1(т.е. земля), то выполнить функцию.[DOUBLEPOST=1381597227,1381595908][/DOUBLEPOST]Сделал проверку через boolean, но теперь зачеркивает некоторые элементы, к примеру public void selected(PlayerInventoryEvent event2)
     
  21. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    А я что написал?
    Код:
    @СобытияОбработчик
    публичный ничегоневозвращающий наИгрокИнтеракт(ИгрокВзаимодействиеСобытие е) {
    Игрок р = е.получитьИгрок();
    если(е.получитьДействие() == Действие.ПРАВЫЙ_КЛИК_ПО_БЛОКУ И p.получитьПредметВРуке().получитьМатериалНомер() == шесть) то
    // съесть торт
    конец_условия
    }
     
    NoNaMeHaCkEr2002 нравится это.

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