Chunks loading correctly

This commit is contained in:
Kyler 2024-04-17 22:44:04 -06:00
parent 45a1166aee
commit f1cefdce0b
1 changed files with 38 additions and 4 deletions

View File

@ -12,6 +12,7 @@ from quarry.net.server import ServerFactory, ServerProtocol
from quarry.types.uuid import UUID
from quarry.types.chunk import BlockArray, PackedArray
from quarry.types.registry import LookupRegistry
from quarry.types.buffer.v1_14 import Buffer1_14
import quarry.types.nbt as NBT
from quarry.data.data_packs import data_packs, dimension_types
@ -37,19 +38,52 @@ def bootstrap_server_data():
process = subprocess.Popen(command, shell=True, cwd="generate_data")
process.wait()
FOREST_BIOME_DATA_PACK_ID = 7
BIOME_ID = 7 # Forest Data ID
# java -DbundlerMainClass=net.minecraft.data.Main -jar minecraft_server.jar --reports
if not os.path.exists("generate_data"): bootstrap_server_data()
REGISTRY = LookupRegistry.from_json(r'generate_data\generated\reports')
CHUNKS_TALL = 28
class Buffer_1_18_2(Buffer1_14):
@classmethod
def pack_chunk(cls, sections):
data = b""
for section in sections:
if section and not section.is_empty():
data += cls.pack_chunk_section(section)
return data
@classmethod
def pack_chunk_section(cls, blocks, block_lights=None, sky_lights=None):
"""
Packs a chunk section. The supplied argument should be an instance of
``quarry.types.chunk.BlockArray``.
"""
out = cls.pack('HB', blocks.non_air, blocks.storage.value_width)
out += cls.pack_chunk_section_palette(blocks.palette)
out += cls.pack_chunk_section_array(blocks.to_bytes())
out += cls.pack('B', 0) # Biome Bits Per Entry
out += cls.pack_varint(BIOME_ID) # Biome Palette
out += cls.pack_varint(0) # Biome Data Array Length
return out
def unpack_chunk(self, bitmask, overworld=True):
raise NotImplementedError
def unpack_chunk_section(self, overworld=True):
raise NotImplementedError
class YTDServerProtocol(ServerProtocol):
def player_joined(self):
# Call super. This switches us to "play" mode, marks the player as
# in-game, and does some logging.
ServerProtocol.player_joined(self)
self.buff_type = Buffer_1_18_2
# Send join game packet
self.send_join_game()
@ -263,11 +297,11 @@ class YTDServerFactory(ServerFactory):
def generate(self, x, z):
sections = []
for _ in range(CHUNKS_TALL):
sections.append((BlockArray.empty(REGISTRY),None,None))
sections.append(BlockArray.empty(REGISTRY))
for sec in sections:
sec[0][0] = {'name': 'minecraft:grass_block', 'snowy': 'false'}
sec[0] = {'name': 'minecraft:grass_block', 'snowy': 'false'}
for i in range(1,16*16*16):
sec[0][i] = {'name': 'minecraft:air'}
sec[i] = {'name': 'minecraft:air'}
height_map = NBT.TagRoot({'':NBT.TagCompound({'MOTION_BLOCKING':NBT.TagLongArray(PackedArray.empty_height())})})
return sections, height_map