Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Disconnected from server even before the first packet was sent #105

Open
r58Playz opened this issue Jun 10, 2019 · 3 comments
Open

Disconnected from server even before the first packet was sent #105

r58Playz opened this issue Jun 10, 2019 · 3 comments

Comments

@r58Playz
Copy link

Starting internal server...
2019-06-10 12:51:09 [MainThread] [INFO] Mod loader has identified 1 mods to load
No seed set, generated random seed: 176701563921720149104828281598416444896
Server loop running in thread: Thread-1
Listening on 192.168.56.1 1486
Client PacketReceiver: We've been disconnected by the server
Game mode: creative
2019-06-10 12:51:17 [MainThread] [INFO] Average FPS: 593.075906

Process finished with exit code -1(manual stop in pycharm)

Started with singleplayer. I have changed the code to start the server on Singleplayer, similar to Nebual 's singleplayer server subprocess branch.
Here's the code:
utils.py:

cmd = None

def runserver():
    global cmd
    def run():
        global cmd
        with Popen([sys.executable, 'server.py']) as process:
            while True:
                if cmd == "stop":
                    process.stdin.write('stop')
                    process.stdin.flush()
                    return
                elif 'say' in cmd:
                    process.stdin.write(cmd)
                    process.stdin.flush()
                else:
                    continue
    threading.Thread(target=run).start()

controllers.py:

    def setup(self):
        if G.SINGLEPLAYER:
            try:
                print('Starting internal server...')
                # TODO: create world menu
                G.SAVE_FILENAME = "world"
                try:
                    utils.runserver()
                except:
                    print("Cannot run server with utils.runserver(), starting server with start_server(internal=True)")
                    start_server(internal=True)
                time.sleep(3)
                sock = socket.socket()
                sock.connect((socket.gethostbyname(socket.gethostname()), 1486))
            except socket.error as e:
                print("Socket Error:", e)
                # Otherwise back to the main menu we go
                return False
            except Exception as e:
                print('Unable to start internal server')
                import traceback
                traceback.print_exc()
                return False
        else:
            try:
                # Make sure the address they want to connect to works
                ipport = G.IP_ADDRESS.split(":")
                if len(ipport) == 1: ipport.append(1486)
                sock = socket.socket()
                sock.connect((tuple(ipport)))
            except socket.error as e:
                print("Socket Error:", e)
                # Otherwise back to the main menu we go
                return False

        self.init_gl()

        sky_rotation = -20.0  # -20.0

       # TERRAIN_CHOICE = self.biome_generator.get_biome_type(sector[0], sector[2])
        default_skybox = 'skydome.jpg'
        #if TERRAIN_CHOICE == G.NETHER:
        #    default_skybox = 'skydome_nether.jpg'
        #else:
        #    default_skybox = 'skybox.jpg'


        self.skydome = Skydome(
            G.RESOURCES + default_skybox,
            #'resources/skydome.jpg',
            0.7,
            100.0,
            sky_rotation,
        )

        self.player_ids = {}  # Dict of all players this session, indexes are their ID's [0: first Player on server,]

        self.focus_block = Block(width=1.05, height=1.05)
        self.earth = vec(0.8, 0.8, 0.8, 1.0)
        self.white = vec(1.0, 1.0, 1.0, 1.0)
        self.ambient = vec(1.0, 1.0, 1.0, 1.0)
        self.polished = GLfloat(100.0)
        self.crack_batch = pyglet.graphics.Batch()

        #if G.DISABLE_SAVE and world_exists(G.game_dir, G.SAVE_FILENAME):
        #    open_world(self, G.game_dir, G.SAVE_FILENAME)

        self.world = World()
        self.packetreceiver = PacketReceiver(self.world, self, sock)
        self.world.packetreceiver = self.packetreceiver
        G.CLIENT = self.packetreceiver
        self.packetreceiver.start()

        #Get our position from the server
        self.packetreceiver.request_spawnpos()
        #Since we don't know it yet, lets disable self.update, or we'll load the wrong chunks and fall
        self.update_disabled = self.update
        self.update = lambda dt: None
        #We'll re-enable it when the server tells us where we should be

        self.player = Player(game_mode=G.GAME_MODE)
        print(('Game mode: ' + self.player.game_mode))
        self.item_list = ItemSelector(self, self.player, self.world)
        self.inventory_list = InventorySelector(self, self.player, self.world)
        self.item_list.on_resize(self.window.width, self.window.height)
        self.inventory_list.on_resize(self.window.width, self.window.height)
        self.text_input = TextWidget(self.window, '',
                                     0, 0,
                                     self.window.width,
                                     visible=False,
                                     font_name=G.CHAT_FONT)
        self.text_input.push_handlers(on_toggled=self.on_text_input_toggled, key_released=self.text_input_callback)
        self.chat_box = TextWidget(self.window, '',
                                   0, self.text_input.y + self.text_input.height + 50,
                                   self.window.width // 2, height=min(300, self.window.height // 3),
                                   visible=False, multi_line=True, readonly=True,
                                   font_name=G.CHAT_FONT,
                                   text_color=(255, 255, 255, 255),
                                   background_color=(0, 0, 0, 100),
                                   enable_escape=True)
        self.camera = Camera3D(target=self.player)

        if G.HUD_ENABLED:
            self.label = pyglet.text.Label(
                '', font_name='Arial', font_size=8, x=10, y=self.window.height - 10,
                anchor_x='left', anchor_y='top', color=(255, 255, 255, 255))

        #if G.DEBUG_TEXT_ENABLED:
        #    self.debug_text = TextWidget(self.window, '',
        #                           0, self.window.height - 300,
        #                           500, 300,
        #                           visible=True, multi_line=True, readonly=True,
        #                           font_name='Arial', font_size=10,
        #                           text_color=(255, 255, 255, 255),
        #                           background_color=(0, 0, 0, 0))
        pyglet.clock.schedule_interval_soft(self.world.process_queue,
                                            1.0 / G.MAX_FPS)
        pyglet.clock.schedule_interval_soft(self.world.hide_sectors, 10.0, self.player)
        return True

G.RESOURCES was part of another change which allowed me to set the location of the resources folder. Currently that is set to pyglet.resource.get_settings_path("pyCraft") + "\\resources\\".
By the way, I didn't get any tracebacks.

@r58Playz
Copy link
Author

I decided to test my changes, and I got this. I haven't fully implemented cmd yet.

@r58Playz
Copy link
Author

I started debugging and discovered there was an error.

ConnectionAbortedError: [WinError 10053] An established connection was aborted by the software in your host machine

@r58Playz
Copy link
Author

Weirder output:
Client PacketReceiver:Game mode: creative We've been disconnected by the server

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant