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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Trophy Points:
    88
    PlayerInventoryEvent , не?
     
  12. Автор темы
    Zard0nic

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

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

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

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

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

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

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

    Trophy Points:
    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 Старожил Пользователь

    Trophy Points:
    153

    Code:
    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 Старожил Девелопер Пользователь

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

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

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

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

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

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

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

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

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

Share This Page