c9b29ed

Branches > refactor/use-spec-1 > c9b29ed > files / src / net / bowmap / packet / client.clj

yeah

Grahp, 2026-03-08

Commit: c9b29ede695f75db939ca58675d9850b6c6db4e5
Parent: bef72d9

2 changed files:

src/net/bowmap/packet/client.clj modified (view file)

@@ -220,7 +220,30 @@                       :entries [:list [:table [:id :identifier                                                :data [:optional :nbt]]]]]      ::keep-alive [:id :long]-     ::finish-config []}))+     ::finish-config []+     ::login [:entity-id :int+              :hardcore? :boolean+              :dimension-names [:list :identifier]+              :max-players :varint+              :view-distance :varint+              :simulation-distance :varint+              :reduced-debug-info? :boolean+              :enable-respawn-screen? :boolean+              :do-limited-crafting? :boolean+              :dimension-type-id :varint+              :dimension-name :identifier+              :hashed-seed :long+              ;; TODO :net.bowmap.gamemode ig?+              :gamemode [:enum :ubyte {0 :survival 1 :creative 2 :adventure 3 :spectator}]+              :previous-gamemode [:enum :byte {-1 :unknown 0 :survival 1 :creative 2 :adventure 3 :spectator}]+              :debug-world? :boolean+              :superflat-world? :boolean+              :has-death-location? :boolean+              :death-dimension-name [:context-optional :identifier]+              :death-location [:context-optional :position]+              :portal-cooldown :varint+              :sea-level :varint+              :enforce-secure-chat? :boolean]}))  (defn numeric-id [state id]   (packet-ids {::state/state state ::pk/id id}))@@ -232,8 +255,8 @@ (defn- encode-packet*   [pk state]   {:pre [(pk/packet? pk)]}-  (let [id (assert! (numeric-id state (::pk/id pk)) {:pk pk :state state})-        encoder (assert! (packet-encoder pk))+  (let [id (assert! (numeric-id state (::pk/id pk)) {:pk pk :state state} "No such packet with that id.")+        encoder (assert! (packet-encoder pk) {:pk pk :state state :id id} "No such encoder for that packet!")         data-buf (-> (Unpooled/buffer)                      (write/write-varint! id)                      (encoder pk))]

src/net/bowmap/packet/write.clj modified (view file)

@@ -176,6 +176,8 @@  ;; End NBT lol +(defn write-enum! [buf codec m x]+  (codec buf (m x)))  (def writers   "Map of type names to functions.@@ -191,9 +193,15 @@    :json   write-json!    :uuid   write-uuid!    :identifier write-string!+   :boolean write-boolean!     :nbt write-nbt! +   :enum (fn [t m]+           (fn [buf x] (write-enum! buf (writer t) m x)))++   :position (fn [t pos] (raise "YOU NEVER ACTUALLY IMPLEMENTED THE POSITION TYPE REMEMBER?"))+    ;; TODO These are kinda named backwards...    :context-optional (fn [t]                        (let [codec (writer t)]