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

Помогите Помогите с HashMap, пожалуйста!

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

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

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

    Баллы:
    68
    Имя в Minecraft:
    CoolShaGGy
    @JustBlender @JustBlender @JustBlender Bitch
    Здравствуйте! После того, как Googlъ мне не помог, пишу сюда. Пишу Fun плагин про
    Богов, ну в общем, вот код:
    Код:
        public final HashMap<Player, ArrayList<Block>> check = new HashMap<Player, ArrayList<Block>>();
    
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
            Player pl = (Player) sender;
            if(sender instanceof Player){
                if(pl.hasPermission("thor.use")){
                if(commandLabel.equalsIgnoreCase("thor")){
                    if(check.containsKey(pl)){
                        check.remove(pl);
                        pl.sendMessage(ChatColor.DARK_RED + "Now you are just a mortal!");
                    }else {
                    check.put(pl, null);
                    pl.sendMessage((ChatColor.GOLD + "Now you have Thor power!"));
                    }
                }
                }else {
                    pl.sendMessage(ChatColor.DARK_RED + "You do not have permissions to do it!");
                }
            }
            return false;
        }
        @EventHandler
        public void onInteract(PlayerInteractEvent e){
            Player p = (Player) e.getPlayer();
            if(check.containsKey(pl)){ //Здесь надо чекнуть присутвствие Player pl = (Player) sender;, но как?
                if(p.getItemInHand().getType().equals(Material.APPLE))
                p.sendMessage("Sweggayolo");
            }
        }
    }
        
    Может надо поменять на ArrayList, но я же newbie-dumbie и ничего не понимаю :)
    Мучаюсь с этим второй день, halp please! :3
     
    Последнее редактирование: 28 сен 2014
  2. Хостинг MineCraft
    <
  3. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    А проблема в чем?
    И никогда не храните объект игрока где-либо.
     
  4. Автор темы
    ShaGTF

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

    Баллы:
    68
    Имя в Minecraft:
    CoolShaGGy
    Проблема в том, что мне надо определить игрок в hashmap или нет, то есть использовал ли он команду или нет, в PlayerInteractEvent, но как?
     
  5. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    containsKey()
     
  6. Автор темы
    ShaGTF

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

    Баллы:
    68
    Имя в Minecraft:
    CoolShaGGy
    Но я не могу проверить Player pl = (Player) sender; в PlayerInteractEvent.
     
  7. saharin94

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

    Баллы:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    Код:
            Player pl = (Player) sender;
            if(sender instanceof Player){
    Поменяй местами, иначе ClassCastException полезет, если команду выполнит что-то отличное от игрока.
     
  8. Автор темы
    ShaGTF

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

    Баллы:
    68
    Имя в Minecraft:
    CoolShaGGy
    А что делать с моей проблемой?
     
  9. makssof

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

    Баллы:
    103
    Skype:
    makssofez
    И вместо объекта Player, храни UUID игрока ( pl.getUniqueId().toString(); ), а когда нужно, получай getServer().getPlayer("/*UUID*/");
    Только перед получением игрока проверяй его на null и на онлайн.
     
    Последнее редактирование: 28 сен 2014
  10. saharin94

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

    Баллы:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    Ну это для постоянного хранения нужно. А если нужно что-то "включить" игроку на время сеанса (т.е. до его выхода из игры), то и сойдёт вариант с хранением объекта Player.
     
  11. makssof

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

    Баллы:
    103
    Skype:
    makssofez
    Но это не совсем правильно, хранить этот объект в ХМ.
     
  12. saharin94

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

    Баллы:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    Что в этом неправильного?
     
  13. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    То, что он перестает соответствовать игроку после респавна.
     
  14. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    И в том что он тащит хреналион ссылок на всякое дерьмо вместе с собой. И я сомневаюсь что ТС знает все ситуации когда надо убирать ссылку из хэшмапы.
    Соответствие кстати поправили таки где-то в 1.7.9.
     

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