08c3a6c

Bowmap · bowmap.git · Tickets

Branches > main > 08c3a6c > files / src / net

Add serverbound and clientbound packets

Grahp, 2026-09-06

Commit: 08c3a6c6d90ca5522a1d827d18363ea6202e3893
Parent: 5b6ff3c

3 changed files:

src/net/bowmap/network/clientbound_packets.clj added (view file)

@@ -0,0 +1,181 @@+(ns net.bowmap.network.clientbound-packets+  (:require+   [net.bowmap.network.phase :as phase]))++(defn ? [_] (throw (Exception. "Error while encoding packet: no packet definition for that packet id")))++(def clientbound-packets+  "Map of connection phases to pairs of [clientbound-packet-id writer]"+  {::phase/status+   [::status-response ?+    ::pong-response ?]+   ::phase/login+   [::disconnect ?+    ::encryption-request ?+    ::login-success ?+    ::set-compression ?+    ::login-plugin-request ?+    ::cookie-request ?]+   ::phase/config+   [::cookie-request ?+    ::plugin-message ?+    ::disconnect ?+    ::finish-config ?+    ::keep-alive ?+    ::ping ?+    ::reset-chat ?+    ::registry-data ?+    ::remove-resource-pack ?+    ::add-resource-pack ?+    ::store-cookie ?+    ::transfer ?+    ::feature-flags ?+    ::update-tags ?+    ::known-packs ?+    ::custom-report-details ?+    ::server-links ?+    ::clear-dialog ?+    ::show-dialog ?+    ::code-of-conduct ?]+   ::phase/play+   [::bundle-delimiter ?+    ::spawn-entity ?+    ::entity-animation ?+    ::award-statistics ?+    ::acknowledge-block-change ?+    ::set-block-destroy-stage ?+    ::block-entity-data ?+    ::block-action ?+    ::block-update ?+    ::boss-bar ?+    ::change-difficulty ?+    ::chunk-batch-finished ?+    ::chunk-batch-start ?+    ::chunk-biomes ?+    ::clear-titles ?+    ::command-suggestions-response ?+    ::commands ?+    ::close-container ?+    ::set-container-content ?+    ::set-container-property ?+    ::set-container-slot ?+    ::cookie-request ?+    ::set-cooldown ?+    ::chat-suggestions ?+    ::plugin-message ?+    ::damage-event ?+    ::debug-block-value ?+    ::debug-chunk-value ?+    ::debug-entity-value ?+    ::debug-event ?+    ::debug-sample ?+    ::delete-message ?+    ::disconnect ?+    ::disguised-chat-message ?+    ::entity-event ?+    ::teleport-entity ?+    ::explosion ?+    ::unload-chunk ?+    ::game-event ?+    ::game-rule-values ?+    ::game-test-highlight-position ?+    ::open-horse-screen ?+    ::hurt-animation ?+    ::initialize-world-border ?+    ::keep-alive ?+    ::chunk-data-and-update-light ?+    ::world-event ?+    ::particle ?+    ::update-light ?+    ::login ?+    ::low-disk-space-warning ?+    ::map-data ?+    ::merchant-offers ?+    ::update-entity-position ?+    ::update-entity-position-and-rotation ?+    ::move-minecart-along-track ?+    ::update-entity-rotation ?+    ::move-vehicle ?+    ::open-book ?

Show all 182 lines

src/net/bowmap/network/phase.clj added (view file)

@@ -0,0 +1,5 @@+(ns net.bowmap.network.phase+  "The phase of connection, also known as a connection state or protocol state in Minecraft."+  (:require [clojure.spec.alpha :as s]))++(s/def ::phase #{::handshaking ::status ::login ::config ::play})

src/net/bowmap/network/serverbound_packets.clj added (view file)

@@ -0,0 +1,98 @@+(ns net.bowmap.network.serverbound-packets+  (:require+   [net.bowmap.network.phase :as phase]))++(def serverbound-packets+  "Map of connection phases to pairs of [serverbound-packet-id reader]"+  {::phase/handshaking+   [::handshaking []]+   ::phase/status+   [::status-request []+    ::ping-request []]+   ::phase/login+   [::login-start []+    ::encryption-response []+    ::login-plugin-response []+    ::login-acknowledged []+    ::cookie-response []]+   ::phase/config+   [::client-information []+    ::cookie-response []+    ::plugin-message []+    ::finish-config []+    ::keep-alive []+    ::pong []+    ::resource-pack-response []+    ::known-packs []+    ::custom-click-action []+    ::accept-code-of-conduct []]+   ::phase/play+   [::confirm-teleportation []+    ::attack []+    ::query-block-entity-tag []+    ::bundle-item-selected []+    ::change-difficulty []+    ::change-game-mode []+    ::acknowledge-message []+    ::chat-command []+    ::signed-chat-command []+    ::chat-message []+    ::player-session []+    ::chunk-batch-received []+    ::client-status []+    ::client-tick-end []+    ::client-information []+    ::command-suggestions-request []+    ::acknowledge-configuration []+    ::click-container-button []+    ::click-container []+    ::close-container []+    ::change-container-slot-state []+    ::cookie-response []+    ::plugin-message []+    ::debug-subscription-request []+    ::edit-book []+    ::query-entity-tag []+    ::interact []+    ::jigsaw-generate []+    ::keep-alive []+    ::lock-difficulty []+    ::set-player-position []+    ::set-player-position-and-rotation []+    ::set-player-rotation []+    ::set-player-movement-flags []+    ::move-vehicle []+    ::paddle-boat []+    ::pick-item-from-block []+    ::pick-item-from-entity []+    ::ping-request []+    ::place-recipe []+    ::player-abilities []+    ::player-action []+    ::player-command []+    ::player-input []+    ::player-loaded []+    ::pong []+    ::change-recipe-book-settings []+    ::set-seen-recipe []+    ::rename-item []+    ::resource-pack-response []+    ::seen-advancements []+    ::select-trade []+    ::set-beacon-effect []+    ::select-hotbar-slot []+    ::program-command-block []+    ::program-command-block-minecart []+    ::set-creative-mode-slot []+    ::set-game-rules []+    ::program-jigsaw-block []+    ::program-structure-block []+    ::set-test-block []+    ::update-sign []+    ::spectator-action []+    ::swing-arm []+    ::teleport-to-entity []+    ::test-instance-block-action []+    ::use-item-on []+    ::use-item []+    ::custom-click-action []]})