Есть лодка, есть шалкер бокс. Когда я кликаю на лодку без шаклера и у меня в руке бокс, у меня забирается шалкер, и его данные: инвентарь, название, шалкер в лодке к которому привязан бокс, и сама лодка, уходят в контейнер, а он в Set. Когда я кликаю по лодке, у меня перебирается весь сэт и находится нужный контейнер, от туда я беру инвентарь и открываю, но он автоматически закрывается, тогдя я взял и создал копию инвентаря и открыл её и всё работает.
В чем сейчас состоят твой вопрос и задача?
И в чем проблема показать код? Он явно более красноречив, чем твои попытки объяснить суть кода плагина. Если уж объясняешь на словах - в первую очередь объясняй конечную задачу, а не механику работы своего кода.
Учу изъясняться на русском языке:
"Я делаю возможность добавлять лодкам инвентарь (как у лам). Эта механика реализована посредством связывания лодок с шалкерами. Для связывания конкретной лодки с конкретным шалкером игроку нужно нажать по лодке держа при этом шалкер с вещами в руке. После нажатия шалкер пропадает из руки, а игрок при нажатии на лодку получает возможность просматривать содержимое шалкера - шалкер будто вставляется в лодку. Проблема в том, что при попытке открыть инвентарь шалкера этот инвентарь открывается и моментально закрывается. Чтобы это исправить я создаю копию инвентаря шалкера и открываю игроку уже эту копию - в этом случае инвентарь не закрывается. Объясните, пожалуйста, почему так происходит?"
А потом либо твой код, либо что-то по типу "для хранения связей лодка<>шалкер я использую Set<Container>. Container - объект, в котором хранятся UUID лодки, название шалкера и его содержимое"
Я прочитал твое сообщение раз 5, но все равно не уверен, что понял тебя до конца. Так что проведи работу над ошибками и объясни, наконец, нормально, чего ты хочешь получить/понять/изменить/исправить.
Если я правильно тебя понял, то сразу вопрос. Зачем ты помещаешь объект/айдишник лодки в контейнер? Если бы ты использовал HashMap вместо Set - ты бы мог отказаться от перебора в пользу более быстрого получения контейнера по хешу.
Ну, и ещё один вопрос - что мешает тебе создать инвентарь для лодки один раз, и потом использовать его вместо объекта контейнера?
Подозреваю, что ты постоянно создавал инвентари и потом их либо куда-то складировал, либо вообще зачем-то создавал их в цикле, из-за чего забивался heap