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

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

Discussion in 'Разработка плагинов для новичков' started by GodlikE, May 2, 2014.

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

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

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

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

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

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

    Trophy Points:
    173
    Имя в Minecraft:
    Just_Andrew
  5. Автор темы
    GodlikE

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

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

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

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

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

    Trophy Points:
    103
    Имя в Minecraft:
    GodlikE
    Спасибо=) Я решил делать через комманду=) У меня получился вот такой код:
    Code:
    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 Активный участник Пользователь

    Trophy Points:
    88
    эмм а разве так можно?
     
  9. saharin94

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

    Trophy Points:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    Нет.
     
  10. konfyciu98

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

    Trophy Points:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Code:
    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 Старожил Пользователь

    Trophy Points:
    103
    Имя в Minecraft:
    GodlikE
    Вот ошибка=)
     

    Attached Files:

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

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

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

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

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

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

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

    Надеюсь, немного "доступнее" объяснил.
     
    Last edited: May 2, 2014
    fromgate likes this.
  15. saharin94

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

    Trophy Points:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    И ещё это из условия убрать:
    Code:
    event.getAction() == Action.RIGHT_CLICK_AIR
     
    fromgate likes this.
  16. makssof

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

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

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

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

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

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

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

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

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

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

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

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

Share This Page