Initial commit
This commit is contained in:
97
net/packets/bedrock/full_chunk_data.go
Normal file
97
net/packets/bedrock/full_chunk_data.go
Normal file
@@ -0,0 +1,97 @@
|
||||
package bedrock
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
|
||||
"github.com/cubexteam/Frodding/net/info"
|
||||
"github.com/cubexteam/Frodding/net/packets"
|
||||
)
|
||||
|
||||
type FullChunkDataPacket struct {
|
||||
*packets.Packet
|
||||
ChunkX int32
|
||||
ChunkZ int32
|
||||
Data []byte
|
||||
}
|
||||
|
||||
func NewFullChunkDataPacket(cx, cz int32, data []byte) *FullChunkDataPacket {
|
||||
return &FullChunkDataPacket{
|
||||
Packet: packets.NewPacket(info.IDFullChunkData),
|
||||
ChunkX: cx,
|
||||
ChunkZ: cz,
|
||||
Data: data,
|
||||
}
|
||||
}
|
||||
|
||||
func BuildFlatChunk() []byte {
|
||||
buf := &bytes.Buffer{}
|
||||
|
||||
const numSubChunks = 8
|
||||
buf.WriteByte(numSubChunks)
|
||||
|
||||
for sc := 0; sc < numSubChunks; sc++ {
|
||||
buf.WriteByte(0)
|
||||
|
||||
blocks := make([]byte, 4096)
|
||||
baseY := sc * 16
|
||||
|
||||
for x := 0; x < 16; x++ {
|
||||
for z := 0; z < 16; z++ {
|
||||
for y := 0; y < 16; y++ {
|
||||
absY := baseY + y
|
||||
idx := x*256 + z*16 + y
|
||||
if absY == 0 {
|
||||
blocks[idx] = 7
|
||||
} else if absY < 62 {
|
||||
blocks[idx] = 1
|
||||
} else if absY == 62 {
|
||||
blocks[idx] = 3
|
||||
} else if absY == 63 {
|
||||
blocks[idx] = 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
buf.Write(blocks)
|
||||
|
||||
buf.Write(make([]byte, 2048))
|
||||
|
||||
skylight := make([]byte, 2048)
|
||||
for i := range skylight {
|
||||
if baseY >= 64 {
|
||||
skylight[i] = 0xFF
|
||||
} else {
|
||||
skylight[i] = 0x00
|
||||
}
|
||||
}
|
||||
buf.Write(skylight)
|
||||
|
||||
buf.Write(make([]byte, 2048))
|
||||
}
|
||||
|
||||
heightmap := make([]byte, 256)
|
||||
for i := range heightmap {
|
||||
heightmap[i] = 64
|
||||
}
|
||||
buf.Write(heightmap)
|
||||
|
||||
biomes := make([]byte, 256)
|
||||
for i := range biomes {
|
||||
biomes[i] = 1
|
||||
}
|
||||
buf.Write(biomes)
|
||||
|
||||
buf.WriteByte(0)
|
||||
buf.WriteByte(0)
|
||||
|
||||
return buf.Bytes()
|
||||
}
|
||||
|
||||
func (pk *FullChunkDataPacket) Encode() {
|
||||
pk.PutVarInt(pk.ChunkX)
|
||||
pk.PutVarInt(pk.ChunkZ)
|
||||
pk.PutUVarInt(uint32(len(pk.Data)))
|
||||
pk.PutBytes(pk.Data)
|
||||
}
|
||||
|
||||
func (pk *FullChunkDataPacket) Decode() {}
|
||||
Reference in New Issue
Block a user