0x30 S30PacketWindowItems

Sends the full contents of an inventory window — all slots at once. Used for initial container opening and rejected transaction recovery.

Clientbound (Server → Client) · PLAY · net/minecraft/network/play/server/S30PacketWindowItems.java
inventorycontaineritem

Fields

FieldTypeDescription
windowIdunsigned byteWindow ID (0 = player inventory)
itemsItemStack[]Array of all ItemStacks in the window, slot by slot

Wire Encoding

FieldTypeNotes
Window IDUnsigned Byte
CountshortNumber of slots
Slot DataArray of SlotAll ItemStacks

MCP References

MCPNetHandlerPlayClient.handleWindowItems()

Handler Interface

HNDINetHandlerPlayClient

Notes

For windowId=0, this updates the entire player inventory (45 slots: 9 hotbar + 36 main). For chests, this is sent immediately after S2DPacketOpenWindow. When a C0E click is rejected (S32 accepted=false), the server re-sends S30 to force the client to revert its inventory.

implementation Implementation Cases

ChestStealer (Tenacity 6.0, Gugustus)

Full inventory sync — trigger auto-steal on chest contents.

Vanilla hook: EventReceivePacket
InvManager (Tenacity 6.0, Gugustus)

Full inventory sync — trigger auto-steal on chest contents.

Vanilla hook: EventReceivePacket
AutoArmor (Tenacity 6.0, Gugustus)

Full inventory sync — trigger auto-steal on chest contents.

Vanilla hook: EventReceivePacket
← Back to all packets