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

Помогите Геттер возвращает null (получение Map из другого класса)

Тема в разделе "Помощь", создана пользователем AdilShiba, 17 сен 2020.

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

    AdilShiba Новичок

    Баллы:
    6
    Имя в Minecraft:
    AdilShiba55
    Создаю Мапу и Геттер:

    Map<String, Integer> playerPosition = new HashMap<>();

    public Map<String, Integer> getPlayerPosition() {
    return playerPosition;
    }

    Далее в методе вставляю туда данные:

    public boolean teleportationToArena(Player p) {
    Location loc = p.getLocation();

    if (p.getWorld().getBlockAt(63, 49, 165).getType() == Material.AIR) {
    p.getWorld().getBlockAt(63, 49, 165).setType(Material.DIAMOND_BLOCK);

    //1
    loc.setX(63.515);
    loc.setY(50);
    loc.setZ(165.481);
    p.teleport(loc);
    playerPosition.put(p.getName(), 1); //ВОТ ЗДЕСЬ
    p.sendMessage(ChatColor.GOLD + "Количество игроков на Арене: " + playerPosition.size());
    return true;
    }

    Этот метод я вызываю в методе Interact Event и игрок телепортируется на Арену.
    То есть, игрок добавляется в Мапу при попадании туда, и если игрок вводит команду /mainspawn(телепортирует его на Спаун), и он есть в Мапе(то есть это проверка на то, находится ли он на арене), его нужно удалить из нее.

    Дальше идет обработка команды уже в другом классе, где мне нужно получить Мапу.

    @Override
    public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) {
    if (s.equals("mainspawn")) {
    Player p = (Player) commandSender;
    Handler handler = new Handler(); //Создание экземпляра класса, в котором находится Мапа.
    if (!handler.playerPosition.containsKey(p.getName())) { //Проверка на наличие игрока в Мапе
    Location locate = p.getLocation();
    locate.setWorld(Bukkit.getWorld("theMainSpawn"));
    locate.setX(8);
    locate.setY(49);
    locate.setZ(8);
    locate.setYaw(-89);
    locate.setPitch(-3);
    p.teleport(locate);


    } else {

    handler.playerArenaClear(p); //В этом методе идет удаление игрока из Мапы
    Location locate = p.getLocation();
    locate.setWorld(Bukkit.getWorld("theMainSpawn"));
    locate.setX(8);
    locate.setY(49);
    locate.setZ(8);
    locate.setYaw(-89);
    locate.setPitch(-3);
    p.teleport(locate);
    p.sendMessage("Привет из очищения всего этого дела");
    // }

    }
    return true;
    }
    return false;
    }

    Так вот. Загвоздка в том, что экземпляр класса - пустой(т.е он всегда выдает пустую Мапу).
    Как это исправить и в чем может быть причина?

    Надеюсь на вас!
     
  2. Хостинг MineCraft
    <

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