Синхронизация тайла после изменения через кнопку в GuiScreen

Версия Minecraft
1.7.10
Здравствуйте. Не синхронизируется тайл с клиентской частью.

При клике по одному из слотов в меню срабатывает следующий код:
1593901648622.png
Исполняемый код при клике:
if (this.click && this.tile.itemStackShop != null) {
    final ItemStack is = this.tile.itemStackShop.copy();
    is.stackSize /= 2;
    final PacketSendItemStack2 message = new PacketSendItemStack2(this.tile.xCoord, this.tile.yCoord, this.tile.zCoord, is);
    XMain.PACKET.sendToServer(message);
}

После чего, обрабатывается пакет на сервере с таким кодом:
Код из обработчика пакетов:
    @Override
    public void handleServerSide(final EntityPlayer player) {
        TileEntity tile = player.worldObj.getTileEntity(this.x, this.y, this.z);
        if(tile instanceof ConomyShopTileEntity) {
            ConomyShopTileEntity shop = (ConomyShopTileEntity) tile;
            if(this.stack != null) shop.itemStackShop = this.stack.copy();
            else shop.itemStackShop = null;
            shop.markDirty(); // Добавил из попыток починить
        }
    }

Собственно, всё бы ничего, да судя по плагину PowerNBT, у тайла NBT обновляется, но визуально никакого эффекта нет, хотя должен быть - в коробке должен измениться летающий предмет. Как пример: скриншот ниже.
1593901906841.png

При этом, у тайла есть специальные методы для обновления в NBT:
Отрезок кода из класса тайла:
@Override
    public Packet getDescriptionPacket() {
        final NBTTagCompound nbt = new NBTTagCompound();
        this.writeToNBT(nbt);
        return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt);
    }
 
    @Override
    public void onDataPacket(final NetworkManager net, final S35PacketUpdateTileEntity packet) {
        this.readFromNBT(packet.func_148857_g());
    }

Из этого какой-никакой вывод, что данные о тайле на клиенте не обновляются. Возможно, это из-за того, что в этот момент открыт GuiScreen?
Прошу помочь с решением проблемы.

UPD: проверил - не обновляется вообще ни у каких клиентов, находящихся вокруг тайла. В данный момент обновляется только если принудительно изменить NBT через плагин PowerNBT
 
Решение
Логика пакета вообще неверная. Нельзя слать стак с клиента, привет пакетхаки. Координаты тоже слать не надо и доставать тайл, player.openContainer и уже из контейнера бери тайл, так надёжнее.

По теме:
Чтобы заставить отослать пакет обновления тайла, нужно вызвать world.markBlockForUpdate(x, y, z).

tox1cozZ

aka Agravaine
8,455
598
2,892
Логика пакета вообще неверная. Нельзя слать стак с клиента, привет пакетхаки. Координаты тоже слать не надо и доставать тайл, player.openContainer и уже из контейнера бери тайл, так надёжнее.

По теме:
Чтобы заставить отослать пакет обновления тайла, нужно вызвать world.markBlockForUpdate(x, y, z).
 
Сверху