コード例 #1
0
ファイル: chunk.py プロジェクト: b1naryth1ef/BroCraft
    def getPacket(self): #@TODO Support section-packets to save bandwith?
        inf = []

        if self.c.dirty: self.world.level.generateLights()

        for y in range(0, 256, 16):
            Blocks = self.c.Blocks[..., y:y + 16].swapaxes(0, 2)
            inf.append(array(Blocks, 'uint8').tostring())
        for y in range(0, 256, 16):
            Data = self.c.Data[..., y:y + 16].swapaxes(0, 2)
            inf.append(array(packNibbleArray(Data)).tostring())
        for y in range(0, 256, 16):
            BlockLight = self.c.BlockLight[..., y:y + 16].swapaxes(0, 2)
            inf.append(array(packNibbleArray(BlockLight)).tostring())
        for y in range(0, 256, 16):
            SkyLight = self.c.SkyLight[..., y:y + 16].swapaxes(0, 2)
            inf.append(array(packNibbleArray(SkyLight)).tostring())
        inf.append("\x00" * 256) #@TODO biome data

        p = Packet("chunk")
        p.x, p.z = self.pos
        p.continuous = True
        p.primary = 65535 #@TODO LOL STATIC FTW
        p.add = 0x0
        p.data = "".join(inf)
        return p
コード例 #2
0
ファイル: player.py プロジェクト: b1naryth1ef/BroCraft
 def getLocPak(self): #@TODO dis r brok again
     pk = Packet("location")
     self.pos.modifyPacket(pk)
     pk.x = self.pos.loc.x
     pk.y = self.pos.loc.y
     pk.z = self.pos.loc.z
     pk.stance = pk.y+1.62
     pk.grounded = self.onGround
     return pk
コード例 #3
0
ファイル: entity.py プロジェクト: b1naryth1ef/BroCraft
 def getSpawnPacket(self):
     p = Packet("spawn")
     p.eid = self.id
     p.type = self.entity_type
     p.x = self.loc.x
     p.y = self.loc.y
     p.z = self.loc.z
     p.pitch = self.rotation.pitch
     p.yaw = self.rotation.yaw
     p.data = 1
     p.speedx = self.velo.x
     p.speedz = self.velo.z
     p.speedy = self.velo.y
     return p
コード例 #4
0
ファイル: player.py プロジェクト: b1naryth1ef/BroCraft
 def getTeleportPak(self):
     x, y, z = self.pos.loc.toRelative()
     pk = Packet("teleport", eid=self.entity.id, x=x, y=y, z=z)
     pk.yaw, pk.pitch = self.pos.ori.toFracs()
     return pk
コード例 #5
0
ファイル: player.py プロジェクト: b1naryth1ef/BroCraft
 def lookChange(self, pak, rec=True):
     if pak: self.pos.ori.fromDegs(pak.yaw, pak.pitch)
     pk = Packet("entity-orientation", eid=self.entity.id)
     pk.yaw, pk.pitch = self.pos.ori.toFracs()
     self.game.broadcast(pk, [self])
     self.game.broadcast(Packet("entity-head", eid=self.entity.id, yaw=self.pos.ori.toFracs()[0]), [self])
コード例 #6
0
ファイル: player.py プロジェクト: b1naryth1ef/BroCraft
    def login(self):
        # Login Packet
        pk = Packet("login")
        pk.eid = self.entity.id
        pk.leveltype = "default"
        pk.mode = "survival"
        pk.dimension = "earth"
        pk.difficulty = "normal"
        pk.unused = 0
        pk.maxplayers = self.server.max_players
        self.client.write(pk)

        # Tell the game we have joined
        self.game.playerJoin(self)

        # Preload Chunks in a 10x10 around the player
        self.loadChunkArea(5, 5)

        # Compass
        pk = Packet("compass")
        if self.entity.spawn: pk.x, pk.y, pk.z = self.entity.spawn
        else: pk.x, pk.y, pk.z = (0, 64, 0)
        self.client.write(pk)

        # Position reset
        self.pos.x = 0
        self.pos.loc.y = 64 #64
        self.pos.z = 0

        self.client.write(self.getLocPak()) # Spawn the player in

        # Load a larger area for el playero
        self.game.tm.run(self.loadChunkArea, 10, 10)