Handle loading / unloading chunks better
This commit is contained in:
+22
-10
@@ -31,10 +31,10 @@ class ChunkDataPacket(Packet):
|
||||
self.biomes.append(VarInt.read(file_object))
|
||||
size = VarInt.read(file_object)
|
||||
self.data = file_object.read(size)
|
||||
size_entities = VarInt.read(file_object)
|
||||
self.entities = []
|
||||
for i in range(size_entities):
|
||||
self.entities.append(Nbt.read(file_object))
|
||||
#size_entities = VarInt.read(file_object)
|
||||
#self.entities = []
|
||||
#for i in range(size_entities):
|
||||
# self.entities.append(Nbt.read(file_object))
|
||||
|
||||
self.decode_chunk_data()
|
||||
|
||||
@@ -49,9 +49,9 @@ class ChunkDataPacket(Packet):
|
||||
Integer.send(self.biomes[i], packet_buffer)
|
||||
VarInt.send(len(self.data), packet_buffer)
|
||||
packet_buffer.send(self.data)
|
||||
VarInt.send(len(self.entities), packet_buffer)
|
||||
for e in self.entities:
|
||||
Nbt.send(e, packet_buffer)
|
||||
#VarInt.send(len(self.entities), packet_buffer)
|
||||
#for e in self.entities:
|
||||
# Nbt.send(e, packet_buffer)
|
||||
|
||||
def decode_chunk_data(self):
|
||||
packet_data = PacketBuffer()
|
||||
@@ -64,9 +64,9 @@ class ChunkDataPacket(Packet):
|
||||
if self.bit_mask_y & (1 << i):
|
||||
self.chunks[i].read(packet_data)
|
||||
|
||||
for e in self.entities:
|
||||
y = e['y']
|
||||
self.chunks[floor(y/16)].entities.append(e)
|
||||
#for e in self.entities:
|
||||
# y = e['y']
|
||||
# self.chunks[floor(y/16)].entities.append(e)
|
||||
|
||||
class Chunk:
|
||||
position = multi_attribute_alias(Vector, 'x', 'y', 'z')
|
||||
@@ -458,3 +458,15 @@ class DisconnectPacket(Packet):
|
||||
definition = [
|
||||
{'reason': String},
|
||||
]
|
||||
|
||||
class UnloadChunkPacket(Packet):
|
||||
# Tells the client to unload a chunk column
|
||||
# https://wiki.vg/Protocol#Unload_Chunk
|
||||
|
||||
id = 0x1C
|
||||
packet_name = 'unload chunk'
|
||||
|
||||
definition = [
|
||||
{'chunk_x': Integer},
|
||||
{'chunk_z': Integer},
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user