Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Общий GUI

Статус
Закрыто для дальнейших ответов.

nt34t34

Участник
Пользователь
Баллы
31
Имя в Minecraft
Wap
Здравствуйте. Я пишу плагин, который конвертирует одну валюту в другую и я столкнулся с такой проблемой
bl2wzyd.png
aGzy977.png

Как видите, у всех игроков открывших меню общее кол-во монет. Мне нужно сделать так, чтоб у каждого был свой "счётчик" Я пробовал регистрировать GUI для каждого игрока указывая овнера, того кто вписал команду, но когда второй игрок заходит в эту GUI, то у первого игрока появляется возможность передвигать предметы, и все перестает работать
 
чтоб у каждого был свой "счётчик"
Сделай HashMap<Player, Integer>, чтобы хранить для каждого игрока свой "счетчик". Если нужно, то сделай сохранение этого "счетчика" в файл при выключении сервера.
 
Сделай HashMap<Player, Integer>, чтобы хранить для каждого игрока свой "счетчик". Если нужно, то сделай сохранение этого "счетчика" в файл при выключении сервера.
Это итак сделано через HashMap, только не объект игрока, а его UUID
 
Для каждого игрока необходимо создавать свой объект инвентаря со своим количеством монет
 
Для каждого игрока необходимо создавать свой объект инвентаря со своим количеством монет
Это сама менюшка
Код:
public Inventory menu(Player player){
        Inventory inv = Bukkit.createInventory(player, 54, ChatColor.BLACK + "Конвертер");

        ItemStack item = new ItemStack(Material.LIME_TERRACOTTA);
        ItemMeta meta = item.getItemMeta();
        assert meta != null;
        meta.setDisplayName(ChatColor.WHITE + "Прибавить " + ChatColor.GREEN + "10");
        item.setItemMeta(meta);
        inv.setItem(33, item);

        item = new ItemStack(Material.PINK_TERRACOTTA);
        meta = item.getItemMeta();
        assert meta != null;
        meta.setDisplayName(ChatColor.WHITE + "Убавить " + ChatColor.RED + "10");
        item.setItemMeta(meta);
        inv.setItem(29, item);

        item = new ItemStack(Material.GOLD_NUGGET);
        meta = item.getItemMeta();
        assert meta != null;
        meta.setDisplayName(ChatColor.WHITE + "Конвертировать 10 монет");
        item.setItemMeta(meta);
        inv.setItem(13, item);

        return inv;
    }
а это как я регистрирую
Код:
Inventory inv = menu(p);
p.openInventory(inv);
но сюравно оно работает не корректно
 
Последнее редактирование:
Для каждого игрока необходимо создавать свой объект инвентаря со своим количеством монет
"У тебя есть Map<Player, MyInventory> inventories = new HashMap<>();
MyInventory должен реализовать InventoryHolder.
При запросе инвентаря пытаешься получить его из мапы. Если запись отсутствует - генерируешь новый инвентарь и добавляешь в мапу.
При выходе запись игрока тоже удаляешь."
Я не понимаю как это должно работать, если конкретнее, то я добавлю игрока в эту мапу при входе на сервер, но как мне метод регистрации менюшки реализовать когда игрок пишет команду
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх