@mrsakura52

Как обращаться к инвентарю из другого файла?

Ситуация такая: Я пишу плагин для сервере майнкрафт spigot, объявляю ивент в main.java:
getServer().getPluginManager().registerEvents(new PlayerInventoryEvent(this), this);

Также есть класс который отвечает за команду открытия инвентаря:
public class settingsInventoryCommand implements CommandExecutor {
    private final Main plugin;
    public static settingsInventoryCommand i;

    public settingsInventoryCommand(Main plugin) {
        this.plugin = plugin;
    };

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (!(sender instanceof Player)) { return true; }

        Player p = (Player) sender;

        String inventoryTitle = plugin.getConfig().getString("messages.inventoryTitle").replace("{nickname}", p.getName()).replace("&", "\u00a7");
        Inventory inv = Bukkit.createInventory(null, 27, inventoryTitle);

        ItemStack tempIS = new ItemStack(Material.APPLE);
        ItemMeta tempIM = tempIS.getItemMeta();
        tempIM.setDisplayName("APPLE");
        tempIS.setItemMeta(tempIM);

        inv.setItem(13, tempIS);

        p.openInventory(inv);
        plugin.settingsInv.put(p.getName(), p.getAddress().getHostName());

        return true;
    }

    public static settingsInventoryCommand getInv() { return i; }
}

Как я могу обращаться к переменной inv (из класса команды) из к примеру класса ивента? При том, что класс с ивентом и класс с командой находятся в разных пакетах?
  • Вопрос задан
  • 29 просмотров
Решения вопроса 1
xez
@xez Куратор тега Java
Senior Junior Roo
Inventory inv у вас объявлена с минимальной областью видимости.
Если есть необходимость обращаться к ней как-то из всего приложения, можно, например, сделать "InventoryRepository" - отдельный объект, который будет хранить экземпляры этих Inventory, выдавать их по требованию, сохранять, изменять и т. д...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы