- 1,634
- 149
- 353
Здравствуйте дорогие форумчане!
Столкнулся с странной, на мой взгляд, проблемой.
После закрытия Screen, итемы, которые получаются по BlockEntity (который получается по BlockPos со стороны клиента), остаются при повторном открытии. И это при том, что на я обновляю блок.
Мне кажется, что причина ошибки где-то неглубоко и я просто долблюсь в глаза, но решил всё же спросить здесь.
UPD. Небольшое пояснение: по Shift+ПКМ предметы из ступы извлекаются. Как можете заметить, их там нет, и потому ничего не извлекается. Однако в Screen всё отрисовывается.
Столкнулся с странной, на мой взгляд, проблемой.
После закрытия Screen, итемы, которые получаются по BlockEntity (который получается по BlockPos со стороны клиента), остаются при повторном открытии. И это при том, что на я обновляю блок.
Мне кажется, что причина ошибки где-то неглубоко и я просто долблюсь в глаза, но решил всё же спросить здесь.
Пакет, отправляемы при закрытии скрина:
//... проверка и поиск рецепта, бла-бла-бла
for(int slot = 0; slot <= tile.handler.getSlots(); slot++)
tile.handler.getStackInSlot(slot).shrink(1);
level.setBlockAndUpdate(pos, Blocks.MORTAR.get().defaultBlockState()); //Здесь level - ServerLevel, мб из-за этого?
Метод рендера предметов:
void renderItems(GuiGraphics gui) {
if(gui == null || tile == null) return; //заработай пж
List<ItemStack> items = new ArrayList<>();
for(int i = 0; i < tile.handler.getSlots(); i++)
items.add(new ItemStack(tile.handler.getStackInSlot(i).getItem(), 1));
if(!items.isEmpty()) {
int i = -(items.size() / 2);
for (ItemStack stack : items) {
gui.renderFakeItem(stack, (width) / 2 - 84, height / 2 + 18 * i++);
}
}
}