# HG changeset patch # User Steve Losh # Date 1308707394 14400 # Node ID c873cb4028e4a8e351f3d527d5af987ed450787b # Parent b6d82b5b24d07f24f09c1f3f2131a430a097d7f4 Moar. diff -r b6d82b5b24d0 -r c873cb4028e4 src/clojurecraft/core.clj --- a/src/clojurecraft/core.clj Tue Jun 21 21:42:54 2011 -0400 +++ b/src/clojurecraft/core.clj Tue Jun 21 21:49:54 2011 -0400 @@ -21,6 +21,7 @@ 0x0C :playerlook 0x0D :playerpositionlook 0x0E :playerdigging + 0x0F :playerblockplacement }) (def packet-ids (apply assoc {} (mapcat reverse packet-types))) @@ -150,6 +151,17 @@ (-write-int conn z) (-write-byte conn face)) +(defn write-packet-playerblockplacement [conn {x :x y :y z :z direction :direction id :id amount :amount damage :damage}] + (-write-byte conn (:playerblockplacement packet-ids)) + + (-write-int conn x) + (-write-byte conn y) + (-write-int conn z) + (-write-byte conn direction) + (-write-short conn id) + (-write-byte conn amount) + (-write-short conn damage)) + ; Writing Wrappers ----------------------------------------------------------------- (defn flushc [conn] @@ -157,16 +169,17 @@ (defn write-packet [conn packet-type payload] (cond - (= packet-type :keepalive) (write-packet-handshake conn payload) - (= packet-type :handshake) (write-packet-handshake conn payload) - (= packet-type :login) (write-packet-login conn payload) - (= packet-type :chat) (write-packet-chat conn payload) - (= packet-type :respawn) (write-packet-respawn conn payload) - (= packet-type :player) (write-packet-player conn payload) - (= packet-type :playerposition) (write-packet-playerposition conn payload) - (= packet-type :playerlook) (write-packet-playerlook conn payload) - (= packet-type :playerpositionlook) (write-packet-playerpositionlook conn payload) - (= packet-type :playerdigging) (write-packet-playerdigging conn payload) + (= packet-type :keepalive) (write-packet-handshake conn payload) + (= packet-type :handshake) (write-packet-handshake conn payload) + (= packet-type :login) (write-packet-login conn payload) + (= packet-type :chat) (write-packet-chat conn payload) + (= packet-type :respawn) (write-packet-respawn conn payload) + (= packet-type :player) (write-packet-player conn payload) + (= packet-type :playerposition) (write-packet-playerposition conn payload) + (= packet-type :playerlook) (write-packet-playerlook conn payload) + (= packet-type :playerpositionlook) (write-packet-playerpositionlook conn payload) + (= packet-type :playerdigging) (write-packet-playerdigging conn payload) + (= packet-type :playerblockplacement) (write-packet-playerblockplacement conn payload) ) (flushc conn)) @@ -274,6 +287,16 @@ (assoc :z (-read-int conn)) (assoc :face (-read-byte conn)))) +(defn read-packet-playerblockplacement [conn] + (-> {} + (assoc :x (-read-int conn)) + (assoc :y (-read-byte conn)) + (assoc :z (-read-int conn)) + (assoc :direction (-read-byte conn)) + (assoc :id (-read-short conn)) + (assoc :amount (-read-byte conn)) + (assoc :damage (-read-short conn)))) + ; Reading Wrappers ----------------------------------------------------------------- (defn read-packet [conn packet-id] @@ -282,18 +305,19 @@ (println "\n----->") (println (cond - (= packet-type :keepalive) (read-packet-keepalive conn) - (= packet-type :handshake) (read-packet-handshake conn) - (= packet-type :login) (read-packet-login conn) - (= packet-type :chat) (read-packet-chat conn) - (= packet-type :timeupdate) (read-packet-timeupdate conn) - (= packet-type :equipment) (read-packet-equipment conn) - (= packet-type :spawnposition) (read-packet-spawnposition conn) - (= packet-type :useentity) (read-packet-useentity conn) - (= packet-type :updatehealth) (read-packet-updatehealth conn) - (= packet-type :respawn) (read-packet-respawn conn) - (= packet-type :playerpositionlook) (read-packet-playerpositionlook conn) - (= packet-type :playerdigging) (read-packet-playerdigging conn) + (= packet-type :keepalive) (read-packet-keepalive conn) + (= packet-type :handshake) (read-packet-handshake conn) + (= packet-type :login) (read-packet-login conn) + (= packet-type :chat) (read-packet-chat conn) + (= packet-type :timeupdate) (read-packet-timeupdate conn) + (= packet-type :equipment) (read-packet-equipment conn) + (= packet-type :spawnposition) (read-packet-spawnposition conn) + (= packet-type :useentity) (read-packet-useentity conn) + (= packet-type :updatehealth) (read-packet-updatehealth conn) + (= packet-type :respawn) (read-packet-respawn conn) + (= packet-type :playerpositionlook) (read-packet-playerpositionlook conn) + (= packet-type :playerdigging) (read-packet-playerdigging conn) + (= packet-type :playerblockplacement) (read-packet-playerblockplacement conn) :else (str "UNKNOWN PACKET TYPE: " packet-id) )) (println "\n\n\n")))