Сохранение инвентаря с инъекцией зависимостей - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь открыть чей-то инвентарь в другом классе, чем я создал инвентарь.Я не хочу использовать статику, поэтому я попробовал обходной путь с помощью инъекций зависимости.Я сделал инвентаризацию ArrayList, после чего добавляю созданную инвентаризацию в ArrayList.Вот проблема, хотя, при перезагрузке ArrayList стирается (конечно), будет ли решение для сохранения инвентаря в жизни без необходимости его записи в конфигурации или базе данных.Так как теперь игроки не смогут больше открывать этот созданный инвентарь после перезагрузки, мне действительно интересно, какие другие плагины используют для решения этой проблемы (если они, конечно, не используют статику;)).

Воткакой-то код, который я использую:

private final Inventory inv;
    private ArrayList<Inventory> inventories;
    private KitPvP kitPvP;
    private String name;
    private Material material;

    public KitManager(KitPvP kitPvP, String name, Material material, ArrayList<Inventory> inventories) {
        this.kitPvP = kitPvP;
        this.name = ChatColor.translateAlternateColorCodes('&', name);
        this.material = material;
        this.inventories = inventories;

        this.inv = Bukkit.createInventory(null, 9, this.name);
    }

public void createKit(Player p) {
        ItemStack itemStack = new ItemStack(this.material);
        ItemMeta itemMeta = itemStack.getItemMeta();
        itemMeta.setDisplayName(this.name);
        itemStack.setItemMeta(itemMeta);
        p.getInventory().addItem(itemStack);

        this.inventories.add(this.inv);

        p.openInventory(this.inv);
    }

Класс события

    private KitPvP kitPvP;
    private ArrayList<Inventory> inventories;

    public InteractListener(KitPvP kitPvP, ArrayList<Inventory> inventories) {
        this.kitPvP = kitPvP;
        this.inventories = inventories;
    }

    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent e) {
        Player p = e.getPlayer();

        p.sendMessage(this.inventories.toString());
    }
...