Fix gapple bugs and unload far chunks
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import os
|
||||
from math import floor
|
||||
import json
|
||||
import time
|
||||
|
||||
from minecraft.networking.packets import clientbound, serverbound
|
||||
from protocol import packets
|
||||
@@ -112,11 +113,10 @@ class ChunksManager:
|
||||
if not c: return None
|
||||
c.set_block_at(x%16, y%16, z%16, block)
|
||||
|
||||
def check_loaded(self, position):
|
||||
#for i in range(441): # TODO: base off render_distance?
|
||||
def check_loaded(self, position, steps):
|
||||
x, y, z = utils.pint(position)
|
||||
player_chunk = (x//16, 1, z//16)
|
||||
for i in range(121): # TODO: base off render_distance?
|
||||
for i in range(steps): # TODO: base off render_distance?
|
||||
offset = utils.spiral(i)
|
||||
check = utils.padd(player_chunk, offset)
|
||||
|
||||
@@ -125,6 +125,24 @@ class ChunksManager:
|
||||
|
||||
return True
|
||||
|
||||
def unload_chunks(self, position):
|
||||
start = time.time()
|
||||
x, y, z = utils.pint(position)
|
||||
player_chunk = (x//16, 0, z//16)
|
||||
|
||||
loaded_chunks = list(self.chunks.keys())
|
||||
count = 0
|
||||
|
||||
for chunk in loaded_chunks:
|
||||
check = (chunk[0], 0, chunk[2])
|
||||
if utils.phyp_king(player_chunk, check) > 16:
|
||||
del self.chunks[chunk]
|
||||
count += 1
|
||||
|
||||
if count:
|
||||
print('unloaded', count, 'chunks in', time.time()-start, 's')
|
||||
|
||||
|
||||
|
||||
class ChunkNotLoadedException(Exception):
|
||||
def __str__(self):
|
||||
|
Reference in New Issue
Block a user