# HG changeset patch # User Steve Losh # Date 1312420311 14400 # Node ID 085e63240d4f8907b986dbabb375beee2a76856b # Parent 3b17a92aa31bfc20af3326df6bdaa5b6e5cb6f15 Bit twiddling. diff -r 3b17a92aa31b -r 085e63240d4f src/clojurecraft/core.clj --- a/src/clojurecraft/core.clj Wed Aug 03 20:14:46 2011 -0400 +++ b/src/clojurecraft/core.clj Wed Aug 03 21:11:51 2011 -0400 @@ -116,3 +116,5 @@ (defn disconnect [bot] (dosync (alter (:connection bot) merge {:exit true}))) + +(def minecraft-local {:name "localhost" :port 25565}) diff -r 3b17a92aa31b -r 085e63240d4f src/clojurecraft/in.clj --- a/src/clojurecraft/in.clj Wed Aug 03 20:14:46 2011 -0400 +++ b/src/clojurecraft/in.clj Wed Aug 03 21:11:51 2011 -0400 @@ -1,6 +1,7 @@ (ns clojurecraft.in (:use [clojurecraft.util]) (:use [clojurecraft.mappings]) + (:use [clojurecraft.chunks]) (:require [clojurecraft.data]) (:import [clojurecraft.data Location Entity]) (:import (java.util.zip Inflater))) @@ -13,31 +14,33 @@ (reverse s)))) (defn top [b] - (bit-shift-right (bit-and b 0xf0) 4)) + (byte (bit-shift-right (bit-and b 0xf0) 4))) (defn bottom [b] - (bit-and b 0x0f)) + (byte (bit-and b 0x0f))) +(defn to-unsigned [b] + (bit-and b 0xff)) ; Reading Data --------------------------------------------------------------------- (defn- -read-byte [conn] - (io! + (io! (let [b (.readByte (:in @conn))] - b))) + (byte b)))) (defn- -read-bytearray [conn size] - (io! + (io! (let [ba (byte-array size)] (.read (:in @conn) ba 0 size) ba))) (defn- -read-int [conn] - (io! + (io! (let [i (.readInt (:in @conn))] i))) (defn- -read-long [conn] - (io! + (io! (let [i (.readLong (:in @conn))] i))) @@ -76,12 +79,12 @@ s))) (defn- -read-metadata [conn] - (io! + (io! (loop [data []] (let [x (-read-byte conn)] (if (= x 127) data - (case (bit-shift-right x 5) + (case (bit-shift-right (to-unsigned x) 5) 0 (recur (conj data (-read-byte conn))) 1 (recur (conj data (-read-short conn))) 2 (recur (conj data (-read-int conn))) @@ -357,7 +360,7 @@ nibbles [] data data] (if (= i len) - [nibbles data] + [(byte-array nibbles) data] (let [next-byte (get data 0) top-byte (top next-byte) bottom-byte (bottom next-byte)]