Божеее мой.
Если тебе говорят идти почитать - стоит идти и почитать, не?
Специально для тебя обьясняю. Что делает модификатор static:
При обьявлении поля с данным модификатором, данное поле становится общим для всех объектов (экземпляров) данного класса. Улавливаешь логику? Нет?
Один игрок нажал ПКМ, засунул предмет в инвентарь -> у другого игрока, у которого открыт этот инвентарь, ВНЕЗАПНО появляется предмет. Почему? Да потому что ты делаешь матрицу общей для всех игроков по сути. И любое изменение из любого участка кода отражается везде.
Что тебе надо сделать?
Посмотри IExtendedEntityProperties, посмотри NBT. Люди же как-то добавляют новые характеристики игроку? Что тебе мешает добавить в игрока переременную, которая хранит контейнер? И модификатор статик (он тут вообще не уместен) будет не нужен и ты спокойно сможешь обратиться к своим слотам через onItemUse\т.д.
Таким образом, ты сможешь узнать что находится в твоем потаенном контейнере, что вызывается по ПКМ на предмете, через любой участок кода, где фигурирует игрок.
Если тебе нужен отдельный инвентарь для каждого предмета - используй NBT итемстака, контейнер остается у игрока, но IInventory - craftMatrix, точнее его содержимое - итемстаки, будут в данном случае привязаны к другому итемстаку.
Что насчет гуи - я предлагал тебе следующее. Ты как-то промолвился, что у тебя есть слот, в который нельзя положить предмет - и из которого нельзя забрать предмет, но предмет там каким-то образом появляется. Через гуи мы просто отрисовываем нужный при данных обстоятельствах предмет, затемняем слот (как бы говоря юзеру, что ты не возьмешь предмет) и всё. Типа визуальная подсказка. А дальше там свои действия по кнопочкам.
Да, я не очень вник в твою задачу, потому что стены текста, где половина буковок - агр на других людей, меня не очень привлекает. Поэтому, если что непонятно - опиши свою задачу максимально подробно, и попробуй сделать это грамотно и по пунктам.
>Если я не прав, то опиши как обратиться к нестатическому объекту класса через другой класс без >использования открытия класса объектно, то есть без Object a = new b();
Элементарные знания ООП, нет?
Есть класс гуи, есть контейнер. Я хочу в классе гуи отрисовать предмет из контейнера. Твоя задача?
1. Имеем конструктор гуи - public MyGui(MyContainer container, EntityPlayer player)
2. Смекаешь?
3. При создании гуи, сначала создается контейнер, дальше он передается в гуи.
4. ??? ItemStack itemStack = container.itemMatrix.getItemInSlot(0);
5. PROFIT
Упомяну, что в Java операнд = при работе с обьектами оперирует лишь над ссылками. Это очень важный момент. Клонирование обьектов осуществляется через создание нового - это либо конструктор с входным аргументом, тип которого совпадает с самим классом обьекта, либо метод clone(), который возвращает новый обьект с теми же свойствами.