Skip to content

Commit

Permalink
feat: Updated mc/packet/types.go
Browse files Browse the repository at this point in the history
  • Loading branch information
sweep-ai[bot] committed Dec 8, 2023
1 parent c169bd2 commit 422b495
Showing 1 changed file with 85 additions and 18 deletions.
103 changes: 85 additions & 18 deletions mc/packet/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -451,21 +451,36 @@ func (p *PluginMessageData) ReadFrom(r io.Reader) (n int64, err error) {
}

func (b BitSet) WriteTo(w io.Writer) (n int64, err error) {
n, err = VarInt(len(b)).WriteTo(w)
if err != nil {
return
}
for i := range b {
n2, err := Long(b[i]).WriteTo(w)
if err != nil {
return n + n2, err
bitset := bitset.New(uint(len(b)))
for i, v := range b {
if v != 0 {
bitset.Set(uint(i))
}
n += n2
}
return
data, err := bitset.MarshalBinary()
if err != nil {
return 0, err
}
return w.Write(data)
}

func (b *BitSet) ReadFrom(r io.Reader) (n int64, err error) {
data, err := ioutil.ReadAll(r)
if err != nil {
return 0, err
}
bitset := bitset.New(0)
err = bitset.UnmarshalBinary(data)
if err != nil {
return 0, err
}
*b = make(BitSet, bitset.Len())
for i := range *b {
if bitset.Test(uint(i)) {
(*b)[i] = 1
}
}
return int64(len(data)), nil
var Len VarInt
n, err = Len.ReadFrom(r)
if err != nil {
Expand Down Expand Up @@ -510,24 +525,76 @@ func NewFixedBitSet(n int64) FixedBitSet {
}

func (f FixedBitSet) WriteTo(w io.Writer) (n int64, err error) {
n2, err := w.Write(f)
return int64(n2), err
bitset := bitset.New(uint(len(f) * 8))
for i, v := range f {
for j := 0; j < 8; j++ {
if v&(1<<j) != 0 {
bitset.Set(uint(i*8 + j))
}
}
}
data, err := bitset.MarshalBinary()
if err != nil {
return 0, err
}
return w.Write(data)
}

func (f FixedBitSet) ReadFrom(r io.Reader) (n int64, err error) {
n2, err := r.Read(f)
return int64(n2), err
func (f *FixedBitSet) ReadFrom(r io.Reader) (n int64, err error) {
data, err := ioutil.ReadAll(r)
if err != nil {
return 0, err
}
bitset := bitset.New(0)
err = bitset.UnmarshalBinary(data)
if err != nil {
return 0, err
}
*f = make(FixedBitSet, (bitset.Len()+7)/8)
for i := range *f {
for j := 0; j < 8; j++ {
if bitset.Test(uint(i*8 + j)) {
(*f)[i] |= 1 << j
}
}
}
return int64(len(data)), nil
}

func (f FixedBitSet) Get(index int) bool {
return (f[index/8] & (1 << (index % 8))) != 0
bitset := bitset.New(uint(len(f) * 8))
for i, v := range f {
for j := 0; j < 8; j++ {
if v&(1<<j) != 0 {
bitset.Set(uint(i*8 + j))
}
}
}
return bitset.Test(uint(index))
}

func (f FixedBitSet) Set(index int, value bool) {
bitset := bitset.New(uint(len(f) * 8))
for i, v := range f {
for j := 0; j < 8; j++ {
if v&(1<<j) != 0 {
bitset.Set(uint(i*8 + j))
}
}
}
if value {
f[index/8] |= 1 << (index % 8)
bitset.Set(uint(index))
} else {
f[index/8] &= ^(1 << (index % 8))
bitset.Clear(uint(index))
}
for i := range f {
for j := 0; j < 8; j++ {
if bitset.Test(uint(i*8 + j)) {
f[i] |= 1 << j
} else {
f[i] &= ^(1 << j)
}
}
}
}

Expand Down

0 comments on commit 422b495

Please sign in to comment.