#pragma once #include "..\Minecraft.World\net.minecraft.network.h" class Minecraft; class MultiPlayerLevel; class SavedDataStorage; class Socket; class MultiplayerLocalPlayer; class ClientConnection : public PacketListener { private: enum eClientConnectionConnectingState { eCCPreLoginSent = 0, eCCPreLoginReceived, eCCLoginSent, eCCLoginReceived, eCCConnected }; private: bool done; Connection *connection; public: wstring message; bool createdOk; // 4J added private: Minecraft *minecraft; MultiPlayerLevel *level; bool started; // 4J Stu - I don't think we are interested in the PlayerInfo data, so I'm not going to use it at the moment //Map playerInfoMap = new HashMap(); public: //List playerInfos = new ArrayList(); int maxPlayers; public: bool isStarted() { return started; } // 4J Added bool isClosed() { return done; } // 4J Added Socket *getSocket() { return connection->getSocket(); } // 4J Added private: DWORD m_userIndex; // 4J Added public: SavedDataStorage *savedDataStorage; ClientConnection(Minecraft *minecraft, const wstring& ip, int port); ClientConnection(Minecraft *minecraft, Socket *socket, int iUserIndex = -1); ~ClientConnection(); void tick(); INetworkPlayer *getNetworkPlayer(); virtual void handleLogin(std::shared_ptr packet); virtual void handleAddEntity(std::shared_ptr packet); virtual void handleAddExperienceOrb(std::shared_ptr packet); virtual void handleAddGlobalEntity(std::shared_ptr packet); virtual void handleAddPainting(std::shared_ptr packet); virtual void handleSetEntityMotion(std::shared_ptr packet); virtual void handleSetEntityData(std::shared_ptr packet); virtual void handleAddPlayer(std::shared_ptr packet); virtual void handleTeleportEntity(std::shared_ptr packet); virtual void handleMoveEntity(std::shared_ptr packet); virtual void handleRotateMob(std::shared_ptr packet); virtual void handleMoveEntitySmall(std::shared_ptr packet); virtual void handleRemoveEntity(std::shared_ptr packet); virtual void handleMovePlayer(std::shared_ptr packet); Random *random; // 4J Added virtual void handleChunkVisibilityArea(std::shared_ptr packet); virtual void handleChunkVisibility(std::shared_ptr packet); virtual void handleChunkTilesUpdate(std::shared_ptr packet); virtual void handleBlockRegionUpdate(std::shared_ptr packet); virtual void handleTileUpdate(std::shared_ptr packet); virtual void handleDisconnect(std::shared_ptr packet); virtual void onDisconnect(DisconnectPacket::eDisconnectReason reason, void *reasonObjects); void sendAndDisconnect(std::shared_ptr packet); void send(std::shared_ptr packet); virtual void handleTakeItemEntity(std::shared_ptr packet); virtual void handleChat(std::shared_ptr packet); virtual void handleAnimate(std::shared_ptr packet); virtual void handleEntityActionAtPosition(std::shared_ptr packet); virtual void handlePreLogin(std::shared_ptr packet); void close(); virtual void handleAddMob(std::shared_ptr packet); virtual void handleSetTime(std::shared_ptr packet); virtual void handleSetSpawn(std::shared_ptr packet); virtual void handleRidePacket(std::shared_ptr packet); virtual void handleEntityEvent(std::shared_ptr packet); private: std::shared_ptr getEntity(int entityId); wstring GetDisplayNameByGamertag(wstring gamertag); public: virtual void handleSetHealth(std::shared_ptr packet); virtual void handleSetExperience(std::shared_ptr packet); virtual void handleRespawn(std::shared_ptr packet); virtual void handleExplosion(std::shared_ptr packet); virtual void handleContainerOpen(std::shared_ptr packet); virtual void handleContainerSetSlot(std::shared_ptr packet); virtual void handleContainerAck(std::shared_ptr packet); virtual void handleContainerContent(std::shared_ptr packet); virtual void handleSignUpdate(std::shared_ptr packet); virtual void handleTileEntityData(std::shared_ptr packet); virtual void handleContainerSetData(std::shared_ptr packet); virtual void handleSetEquippedItem(std::shared_ptr packet); virtual void handleContainerClose(std::shared_ptr packet); virtual void handleTileEvent(std::shared_ptr packet); virtual void handleTileDestruction(std::shared_ptr packet); virtual bool canHandleAsyncPackets(); virtual void handleGameEvent(std::shared_ptr gameEventPacket); virtual void handleComplexItemData(std::shared_ptr packet); virtual void handleLevelEvent(std::shared_ptr packet); virtual void handleAwardStat(std::shared_ptr packet); virtual void handleUpdateMobEffect(std::shared_ptr packet); virtual void handleRemoveMobEffect(std::shared_ptr packet); virtual bool isServerPacketListener(); virtual void handlePlayerInfo(std::shared_ptr packet); virtual void handleKeepAlive(std::shared_ptr packet); virtual void handlePlayerAbilities(std::shared_ptr playerAbilitiesPacket); virtual void handleSoundEvent(std::shared_ptr packet); virtual void handleCustomPayload(std::shared_ptr customPayloadPacket); virtual Connection *getConnection(); // 4J Added virtual void handleServerSettingsChanged(std::shared_ptr packet); virtual void handleTexture(std::shared_ptr packet); virtual void handleTextureAndGeometry(std::shared_ptr packet); virtual void handleUpdateProgress(std::shared_ptr packet); // 4J Added static int HostDisconnectReturned(void *pParam,int iPad,C4JStorage::EMessageResult result); static int ExitGameAndSaveReturned(void *pParam,int iPad,C4JStorage::EMessageResult result); virtual void handleTextureChange(std::shared_ptr packet); virtual void handleTextureAndGeometryChange(std::shared_ptr packet); virtual void handleUpdateGameRuleProgressPacket(std::shared_ptr packet); virtual void handleXZ(std::shared_ptr packet); void displayPrivilegeChanges(std::shared_ptr player, unsigned int oldPrivileges); };