Instead of doing super.encodeFloat here, you want to encode it using the HBase Bytes.putFloat(b, o, v) method. The above would function correctly, but the sole purpose of these unsigned types are to allow interop with folks that have existing data that was serialized already using these Bytes utility methods. So please change to something like this:

            if (v < 0) {
                throw new IllegalDataException();
            }
            Bytes.putFloat(b, o, v);
            return Bytes.SIZEOF_FLOAT;