Skip to content
Redwire Docs
v1.0.0.0
Redwireclient.com
Docs /MODULES /Packet Tools

4. Packet Tools

This is the heart of Redwire. It lets you watch, hold back, edit and re-send the network messages between your game and the server.

The page has two tabs at the top:

  • PACKET LOGGER — records traffic so you can read it.
  • PACKET INTERCEPTOR — catches traffic before it arrives, so you can change it or delay it.

4.1 First, what is a packet?

Minecraft is two programs talking to each other: your client (the game on your computer) and the server. They talk by sending small, structured messages called packets.

Almost everything is a packet. When you walk, your client sends a packet saying where you are now. When someone else places a block, the server sends you a packet telling you about it. When you open a chest, that is a packet; the chest’s contents are another; closing it is a third.

Every packet has a direction:

TermMeaningColour in Redwire
C2SClient to Server — something your game is telling the serverRed
S2CServer to Client — something the server is telling your gameBlue

Every packet also has a name, which describes what it is for. PlayerMoveC2SPacket is your client reporting movement. BlockUpdateS2CPacket is the server telling you a block changed.

Redwire sorts them into eight categories so you are not reading one enormous list:

CategoryContains
ChatMessages, commands, chat signing
InventoryContainer screens, slot changes, clicks, item drops
MovementYour position and rotation, and other entities’
WorldBlocks, chunks, time, weather, explosions
EntityMobs, items, projectiles — spawning, moving, dying
ConnectionLogging in, keep-alives, disconnects, ping
Custom PayloadNon-vanilla messages. Plugins and mods use these to talk to your client — often the most interesting category on a modded server
MiscellaneousEverything else

4.2 The Packet Logger tab

The logger records packets as they pass and lets you read them.

The logger is off by default and records nothing until you start it. This is deliberate — the game sends hundreds of packets a second, and recording constantly for no reason would waste memory.

The main table

Six columns:

ColumnWhat it shows
TIMEWhen the packet passed
DIRECTIONC2S (red) or S2C (blue)
PACKET NAMEThe packet’s type
CATEGORYWhich of the eight buckets above
STATUSSent if it passed through normally, Intercepted (in red) if the interceptor grabbed it
ACTIONSTwo small icons — see below

Click any row to select it. Its full contents appear in the Packet Details panel underneath.

The table is paginated — page buttons sit at the bottom. Newest packets are at the top.

Filtering the table

Four controls above the table narrow it down:

  • Search box — type any part of a packet name.
  • Direction — All, C2S or S2C.
  • Category — All, or one of the eight.
  • Status — All, Sent, or Intercepted.

They combine. “Every inventory packet the server sent me that the interceptor caught” is three dropdowns.

The two row actions

At the right-hand end of every row:

IconNameWhat it does
Intercept PacketAdds this type of packet to the interceptor’s catch list. Every future packet of this type will be held back instead of delivered. The icon turns red once a type is on the list.
Suppress PacketStops this type being logged. It still passes normally and still counts towards the traffic statistics — it just stops filling up your log. Entries already in the table are removed too, so the type disappears immediately.

These act on the packet’s type, not the single packet you clicked. Suppressing one PlayerMoveC2SPacket suppresses all of them. That is exactly what you want: movement packets fire several times a second and drown everything else out. Suppressing them is usually the first thing to do after starting the logger.

Packet Details

The panel under the table shows the selected packet’s contents, broken out field by field and wrapped to fit. Scroll it with the mouse wheel.

This is where you actually read a packet — the block position in a block update, the text of a chat message, the raw bytes inside a custom payload.

Field names are not always meaningful, because the game’s internal names are stripped when it is compiled. The values are correct, and shown by type. In practice you identify a field by its position and type rather than its name.

Packet Activity

Three live counters and a graph:

  • C2S PACKETS/SEC — how fast your client is sending.
  • S2C PACKETS/SEC — how fast the server is sending.
  • TOTAL LOGGED — how many packets are held in the log right now.
  • TRAFFIC OVER TIME — both rates graphed, red for C2S and blue for S2C.

The rates and the graph run whether or not the logger does. They are a measure of the connection, so you can leave the logger stopped and still watch traffic — useful for spotting when a server starts sending you something without filling the log up while you wait. Only TOTAL LOGGED depends on the logger, because only it is counting what was kept.

Suppressed Packets

A list of every packet type you have suppressed, with its direction. The bin icon on a row (Log Packet again) removes it from the list so that type starts being logged once more.

The count at the bottom tells you how many types are suppressed in total.

Logger Controls

ButtonWhat it does
Start Logger / Stop LoggerBegins or stops recording. This is the main switch.
Clear LogEmpties the table. Does not stop recording.
Copy LogCopies the whole log to your clipboard as plain text.
Save LogWrites the whole log to a file (see below).

Save Log writes to:

<Redwire folder>/PacketLogger/RedwirePacketLog_<timestamp>.txt

One line per packet, newest first: time, direction, name, category, status. A notification tells you where the file went.

The log holds 5000 packets. Past that it keeps the most recent and discards the oldest, so leaving the logger running for hours will not fill your memory — but it also means the beginning of a long session is gone. On a busy server that limit is reached in well under a minute if you have not suppressed movement packets. Save or clear as you go.


4.3 The Packet Interceptor tab

The logger watches. The interceptor interferes.

When it is enabled, packets of the types you have chosen are stopped before they take effect and put in a queue. Nothing happens with them until you decide. From there you can:

  • send one on, exactly as it was;
  • send them all at once, or spaced out over time;
  • send the same one many times over;
  • change its contents first;
  • or throw it away so it never happens at all.

Interception works both ways. A held C2S packet never reaches the server. A held S2C packet never reaches your client — so if you hold the packet that tells your client a chest closed, as far as your client is concerned the chest is still open.

Turning it on

Two things have to be true before anything is caught:

  1. The interceptor is enabled — the button at the top of Interceptor Controls.
  2. At least one packet type is on the catch list — see Intercepted Packets below.

Either one alone does nothing.

Intercepted Packets (the catch list)

The list of packet types to catch.

  • C2S / S2C buttons switch which side you are choosing from.
  • Category dropdown and search box narrow the list.
  • Click a row to tick or untick it. Ticked (red) means “catch this type”.

This list contains every packet type the game knows about, not just ones you have seen, so you can arm a type before it ever occurs.

You can also add types from the logger, with the Intercept Packet icon on any logged row.

Profiles

Under the search box is a strip for saving and re-loading a whole catch list.

ControlWhat it does
The dropdownLists your saved profiles, and shows which one is loaded. Picking one loads it.
The name boxThe name to save to, or the one to load again or delete. Loading fills it in; you can also just type a new name to save under.
LoadLoads the named profile again, throwing away any ticking you have done since
SaveWrites whatever is currently ticked into the named profile, creating it if it does not exist
DeleteDeletes the named profile’s file

Loading replaces rather than adds. A profile describes the complete set you want caught, so loading the same one twice always leaves you in the same place.

The dropdown and the name box are not the same value. The dropdown reports what is actually loaded; the box is where you draft a name. Typing Containers into the box does not mean a profile called Containers exists yet — it means that is what Save will call it.

Load and Delete grey out when the name in the box does not match a saved profile, and Save greys out when the box is empty. A greyed button does not respond to the cursor at all; hover it and a tooltip says which of those it is.

Profiles are files in Redwire/Interceptor/, one per profile, named <profile>.redintercept. Each is a plain list of packet names, one per line, so you can read one in a text editor or copy it between installs. A name in the file that this version of Minecraft does not have simply matches nothing.

The Default profile is written the first time the folder is created. It catches the packets your client sends when you touch a container or the world:

PacketWhat it is
ContainerButtonClickC2SPressing a button inside a GUI (an enchanting table slot, a lectern page)
ContainerClickC2SClicking a slot
SetCreativeModeSlotC2SPutting an item into a slot in creative
PlayerActionC2SBreaking a block, dropping an item, swapping to the offhand
InteractC2SRight-clicking or attacking an entity
UseItemOnC2SRight-clicking a block (which is how blocks are placed)
UseItemC2SUsing the held item on nothing — eating, drawing a bow, throwing a pearl

Default is an ordinary profile once it exists: save over it or delete it as you like. It is not put back afterwards.

Loading a profile does not switch the interceptor on. The catch list and the master switch are two separate things — see Interceptor Controls below.

Packet Queue

Everything currently held, oldest at the top. This is the order they will be sent in when flushed.

ColumnMeaning
TIMEWhen it was caught
DIRECTIONC2S or S2C
PACKET NAMEIts type
STATUSUnedited, or Edited in red if you have changed it
ACTIONSFour icons — see below

Filter with the search box, the Direction dropdown and the Status dropdown (All / Edited / Unedited). The total count is shown on the right.

The four row actions:

IconWhat it does
Move this packet up one place in the queue
Move it down one place
🗑Clear Packet — delete it. It is never sent, and whatever it was going to do never happens.
Send Packet — send this one immediately and take it off the queue

Click a row (anywhere except the icons) to select it for the Packet Editor and the Bulk Packet Sender.

Interceptor Controls

ControlWhat it does
Interceptor Enabled / DisabledThe master switch
ModeHow a flush is paced — see below
DelayThe gap between packets, in the unit the Mode chose
Randomize DelayVaries each gap rather than using the exact same number every time
FLUSH QUEUESend everything in the queue, in order, using the Mode and Delay
CLEAR QUEUEThrow the whole queue away. Nothing is sent.
PAUSE / RESUMEPause a flush that is in progress, and continue it
STOPAbandon a flush in progress. Anything not yet sent stays queued.

The three Modes:

ModeMeaning
InstantEverything goes at once, as fast as possible
Delayed in msWait this many milliseconds between each packet. 1000 ms = 1 second
Delayed in ticksWait this many game ticks between each. 20 ticks = 1 second

Ticks are the game’s own heartbeat, so tick delays stay in step with game logic; milliseconds are real time. Use ticks when you care about game events, milliseconds when you care about wall-clock timing.

With Mode set to Instant, the Delay box and Randomize Delay are greyed out — there is no gap to configure. Hovering them tells you so.

Instant hands the whole run to the connection in a single tick. That is the fastest Redwire can be, but a server that limits how many packets a second it accepts will drop whatever it will not take — often without saying so. If a large run only partly lands, see Troubleshooting §17.14.

A status line shows whether a flush is Idle, Sending or Paused.

Leaving a server

Disconnecting empties the queue and switches the interceptor off, along with any hex edits you had made and any flush that was in progress.

That is not tidiness. A held packet only means anything on the connection it came from: the slot, entity and sequence numbers inside it refer to that server’s idea of the world. Flushing a queue from one server into another sends it a set of numbers that mean something completely different there — and hex edits are re-encoded against whichever server you are on now, so a carried-over edit is stale in the same way.

The packet log is kept. It is a record of what happened, and going away to read it is a perfectly normal reason to disconnect. Use Save Log first if you want it on disk as well.

Bulk Packet Sender

Sends one selected packet from the queue many times over.

ControlWhat it does
Times to SendHow many copies to send
ModeInstant, Delayed in ms, or Delayed in ticks — as above
DelayThe gap between copies
Randomize DelayVaries the gap
SENDStart. Greyed out until you select a packet in the queue
PAUSE / RESUMEPause and continue the job
STOPAbandon the job

The selected packet is taken off the queue when the bulk job starts — the job now owns it.

In Instant mode every copy is written into the connection in one go and then pushed out with a single flush, rather than each copy being pushed on its own. Same packets, same order — just one push instead of hundreds.

Keeping replayed packets current

A captured packet is a photograph of one moment, and some of what it carries goes out of date the instant it is taken. Not the part that says which slot or which button — that stays true — but the part that says which container the server thinks is open, and how far the two sides have got through synchronising it.

Redwire refreshes those numbers as each copy goes out, so a replayed packet arrives as part of the conversation happening now. It matters most for container packets: the server checks the window number first and silently discards a click that names a window it has moved on from. No error, no message — the click simply never happens. A shop that reopens its menu after every purchase changes that number every time.

PacketWhat gets refreshed
ContainerClickC2SWindow number, sync revision, and the “what this click left behind” claim
ContainerButtonClickC2SWindow number
ContainerCloseC2SWindow number
PlayerActionC2S, UseItemOnC2S, UseItemC2SAction sequence number

That last one on the click is worth explaining. A real click tells the server what the client thinks the affected slots and the held cursor look like afterwards, and the server uses it to work out whether the two of you have drifted apart. Captured, it describes a moment that has gone — so a hundred replayed copies would all insist on the same outdated outcome. Redwire clears it instead. Claiming nothing is honest; claiming the wrong thing is not.

What the packet does is never rewritten. A replayed click still clicks the slot, with the button and action, it was captured clicking, and the aim recorded in a UseItemC2S is left exactly as captured. Only the bookkeeping around it moves.

Hex-edited packets are exempt. If you have changed a packet’s bytes, those bytes go out exactly as you typed them — including the window number. Editing bytes means you want those bytes.

This is about packets being accepted, not about how fast they arrive. A server that limits how many packets a second it will take from you will still drop the surplus; use one of the Delayed modes for that. See Troubleshooting §17.14.

Packet Editor

With a queued packet selected, this panel lets you change it before it is sent. Two views of the same packet, kept in step: edit either and the other updates.

HEX EDITOR — the packet’s raw bytes.

  • Click a byte to select it, then type hex digits (09, af) to overwrite it.
  • The OVERWRITE / INSERT pill at the top right switches modes. In overwrite mode typing replaces the byte you are on. In insert mode it adds new bytes before the cursor, making the packet longer. The Insert key toggles this too.
  • Bytes you have changed are highlighted, so you can always see your edits.

DECODED FIELDS — the same packet as readable values.

Click into the box and edit the values directly. Changes save as you type; there is no confirm step. This is far easier than counting bytes when you just want to change a number or a piece of text.

Numbers, booleans, text, choices and lists of text can be edited. Anything more complicated — a block state, an item stack, a chunk’s worth of data — is shown but not editable; use the hex editor for those.

A list of text is written and read back as a quoted list, so a sign’s four lines look like this:

Text = ["Welcome", "to the shop", "", ""]

Edit the words between the quotes. Quotes are used rather than plain commas because a line may well contain a comma of its own, and splitting on those would quietly turn one line into two. A " or a \ inside a line is written with a backslash in front of it.

Revert Edits — the button in the panel header puts the packet back exactly as it was caught. It is only available on a packet you have actually edited.

“Byte view unavailable on this connection.” — you are in singleplayer. A singleplayer world passes packets between two parts of the same program, in memory, so they are never turned into bytes and there is nothing for the hex editor to show. Decoded Fields still works. Join a real server (including your own LAN world opened to the network) to use the hex editor.

An invalid edit is caught, not crashed on. If your edited bytes do not form a valid packet, the Decoded Fields box says so rather than the game falling over. Use Revert Edits to recover.


4.4 Two worked examples

Reading what a plugin sends your client

  1. Packet Logger → Start Logger.
  2. Set the Category filter to Custom Payload.
  3. Do the thing you are curious about in-game — open the server’s menu, click its GUI, use its command.
  4. Come back and read the rows. The Packet Details panel shows the contents.

Holding your inventory clicks

  1. Packet Interceptor tab.
  2. In Intercepted Packets, choose C2S, search for ClickSlot, and tick it.
  3. Click Interceptor Disabled to turn it on.
  4. Open a chest and click an item. Nothing appears to happen — the click never reached the server.
  5. Back in Redwire, the packet is in the Packet Queue. Send it with ➤, edit it first, or delete it with 🗑.

4.5 Doing this without opening Redwire

Two shortcuts exist so you do not have to open the interface mid-action:

  • Keybinds — Toggle Packet Logger, Toggle Packet Interceptor, Flush Packet Queue, Clear Packet Queue and Disconnect and Flush can all be put on a key. See Keybinds.
  • The in-game overlay — while a chest or other container is open, a floating Packet Queue window shows the queue live, with flush and clear buttons. See The In-Game Overlay.