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

Помогите Эвент клика на табличку

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

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

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

    Баллы:
    103
    Имя в Minecraft:
    GodlikE
    Всем привет=) Подскажите эвент, когда игрок кликает ПКМ на табличку. Если такая тема уже существует, киньте на нее ссылку плиз=)
     
    Последнее редактирование: 2 май 2014
  2. Хостинг MineCraft
    <
  3. BeYkeR

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

    Баллы:
    173
    PlayerInteractEvent , через event.getClickedBlock() (или как там) проверяешь на табличку.
     
  4. FirePoint

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

    Баллы:
    173
    Имя в Minecraft:
    Just_Andrew
  5. Автор темы
    GodlikE

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

    Баллы:
    103
    Имя в Minecraft:
    GodlikE
    FirePoint, BeYkeR, спасибо=)[DOUBLEPOST=1399025303,1399025038][/DOUBLEPOST]А если я, например, хочу, чтобы только при нажатии на ИМЕННО ЭТУ табличку выполнялась комманда?=)
     
  6. Cyber Owl

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

    Баллы:
    153
    Напиши на табличку тест и сделай условие в коде, которое проверяло бы текст.
     
  7. Автор темы
    GodlikE

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

    Баллы:
    103
    Имя в Minecraft:
    GodlikE
    Спасибо=) Я решил делать через комманду=) У меня получился вот такой код:
    Код:
    public class MainClass extends JavaPlugin implements Listener {
       
        private Scoreboard score;
        private Team team1;
       
        public void onEnable()
        {
            getLogger().info("Battlefield mod was enabled");
            Bukkit.getPluginManager().registerEvents(this, this);
            team1 = score.registerNewTeam("green");
            score = Bukkit.getScoreboardManager().getNewScoreboard();
        }
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
            if(cmd.getName().equalsIgnoreCase("join team green"))
            {
                Player player = (Player) sender;
                player.setScoreboard(score);
                team1.addPlayer(player);
                player.sendMessage("Вы присоединились к зеленой комманде");
                player.getLocation().setZ(40);
            }
            return false;
        }
        public void onDisable()
        {
            getLogger().info("Battlefield mod was disabled");
        }
    }
    Эклипс в нем ошибки не видит, но сервер не запускает этот плагин( Не могли бы вы подсказать, почему так происходит, и найти ошибку?=))))
     
  8. musel70

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

    Баллы:
    88
    эмм а разве так можно?
     
  9. saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    Нет.
     
  10. konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Код:
    public void onInteract(PlayerInteractEvent event) {
    Block clickBlock = event.getClickedBlock();
    Sign sign = (Sign)event.getClickedBlock().getState();
    
    if(event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
         if(clickBlock.getType() == Material.WALL_SIGN || clickBlock.getType() == Material.SIGN_POST) {
              if(sign.getLine(0).equals(ChatColor.GOLD+"[My Pika]"))
              {
                     //code
              }
         }
    }
    }
    
    Вот так вот я проверял текст на табличке.
     
  11. Автор темы
    GodlikE

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

    Баллы:
    103
    Имя в Minecraft:
    GodlikE
    Вот ошибка=)
     

    Вложения:

  12. Автор темы
    GodlikE

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

    Баллы:
    103
    Имя в Minecraft:
    GodlikE
    Спасибо=) Ошибка была в этой строке: team = score.registerNewTeam("green");
    Только я не пойму, что в ней не так?=)))
     
  13. konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Прости, но я не очень понял? Чего тут именно не хватает? Просто это у меня работало прекрасно! Какие с этим могу быть проблемы? Скажи, я закину это себе.
     
  14. Cyber Owl

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

    Баллы:
    153
    Вы сначала делаете прослушку райтклика, а только потом проверяете куда кликнули.
    Грубо говоря, при обычном клике по абсолютно любому блоку (КРОМЕ таблички) срабатывает первый if и просто отдает эксэпшн.

    Надеюсь, немного "доступнее" объяснил.
     
    Последнее редактирование: 2 май 2014
    fromgate нравится это.
  15. saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    И ещё это из условия убрать:
    Код:
    event.getAction() == Action.RIGHT_CLICK_AIR
     
    fromgate нравится это.
  16. makssof

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

    Баллы:
    103
    Skype:
    makssofez
    @GodlikE
    Сорри за оффтоп, но я обязан спросить об этом: у тебя рефлекс=) на=) это?=)
    =)
     
  17. makssof

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

    Баллы:
    103
    Skype:
    makssofez
    Нет, я нечего не имею против, просто я не видел ни одного его сообщения без "=)". :)
    offtopic.stop();
     
  18. konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Эммм..я туплю короче.
    Код:
    if(event.getAction() == Action.RIGHT_CLICK_BLOCK &&  clickBlock.getType() == Material.WALL_SIGN) {
    }
    
    Так делать что-ли?
     
  19. saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    Таблички не только настенные бывают...
     
  20. konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Я знаю, просто лень вторые прописывать было. Ты не ответил, так надо было делать?
     
  21. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Больше никак
     

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