the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 166 lines 8.1 kB view raw
1#pragma once 2#include "..\Minecraft.World\net.minecraft.network.h" 3class Minecraft; 4class MultiPlayerLevel; 5class SavedDataStorage; 6class Socket; 7class MultiplayerLocalPlayer; 8 9class ClientConnection : public PacketListener 10{ 11private: 12 enum eClientConnectionConnectingState 13 { 14 eCCPreLoginSent = 0, 15 eCCPreLoginReceived, 16 eCCLoginSent, 17 eCCLoginReceived, 18 eCCConnected 19 }; 20 21private: 22 bool done; 23 Connection *connection; 24public: 25 wstring message; 26 bool createdOk; // 4J added 27private: 28 Minecraft *minecraft; 29 MultiPlayerLevel *level; 30 bool started; 31 32 // 4J Stu - I don't think we are interested in the PlayerInfo data, so I'm not going to use it at the moment 33 //Map<String, PlayerInfo> playerInfoMap = new HashMap<String, PlayerInfo>(); 34public: 35 //List<PlayerInfo> playerInfos = new ArrayList<PlayerInfo>(); 36 37 int maxPlayers; 38 39public: 40 bool isStarted() { return started; } // 4J Added 41 bool isClosed() { return done; } // 4J Added 42 Socket *getSocket() { return connection->getSocket(); } // 4J Added 43 44private: 45 DWORD m_userIndex; // 4J Added 46public: 47 SavedDataStorage *savedDataStorage; 48 ClientConnection(Minecraft *minecraft, const wstring& ip, int port); 49 ClientConnection(Minecraft *minecraft, Socket *socket, int iUserIndex = -1); 50 ~ClientConnection(); 51 void tick(); 52 INetworkPlayer *getNetworkPlayer(); 53 virtual void handleLogin(shared_ptr<LoginPacket> packet); 54 virtual void handleAddEntity(shared_ptr<AddEntityPacket> packet); 55 virtual void handleAddExperienceOrb(shared_ptr<AddExperienceOrbPacket> packet); 56 virtual void handleAddGlobalEntity(shared_ptr<AddGlobalEntityPacket> packet); 57 virtual void handleAddPainting(shared_ptr<AddPaintingPacket> packet); 58 virtual void handleSetEntityMotion(shared_ptr<SetEntityMotionPacket> packet); 59 virtual void handleSetEntityData(shared_ptr<SetEntityDataPacket> packet); 60 virtual void handleAddPlayer(shared_ptr<AddPlayerPacket> packet); 61 virtual void handleTeleportEntity(shared_ptr<TeleportEntityPacket> packet); 62 virtual void handleSetCarriedItem(shared_ptr<SetCarriedItemPacket> packet); 63 virtual void handleMoveEntity(shared_ptr<MoveEntityPacket> packet); 64 virtual void handleRotateMob(shared_ptr<RotateHeadPacket> packet); 65 virtual void handleMoveEntitySmall(shared_ptr<MoveEntityPacketSmall> packet); 66 virtual void handleRemoveEntity(shared_ptr<RemoveEntitiesPacket> packet); 67 virtual void handleMovePlayer(shared_ptr<MovePlayerPacket> packet); 68 69 Random *random; 70 71 // 4J Added 72 virtual void handleChunkVisibilityArea(shared_ptr<ChunkVisibilityAreaPacket> packet); 73 74 virtual void handleChunkVisibility(shared_ptr<ChunkVisibilityPacket> packet); 75 virtual void handleChunkTilesUpdate(shared_ptr<ChunkTilesUpdatePacket> packet); 76 virtual void handleBlockRegionUpdate(shared_ptr<BlockRegionUpdatePacket> packet); 77 virtual void handleTileUpdate(shared_ptr<TileUpdatePacket> packet); 78 virtual void handleDisconnect(shared_ptr<DisconnectPacket> packet); 79 virtual void onDisconnect(DisconnectPacket::eDisconnectReason reason, void *reasonObjects); 80 void sendAndDisconnect(shared_ptr<Packet> packet); 81 void send(shared_ptr<Packet> packet); 82 virtual void handleTakeItemEntity(shared_ptr<TakeItemEntityPacket> packet); 83 virtual void handleChat(shared_ptr<ChatPacket> packet); 84 virtual void handleAnimate(shared_ptr<AnimatePacket> packet); 85 virtual void handleEntityActionAtPosition(shared_ptr<EntityActionAtPositionPacket> packet); 86 virtual void handlePreLogin(shared_ptr<PreLoginPacket> packet); 87 void close(); 88 virtual void handleAddMob(shared_ptr<AddMobPacket> packet); 89 virtual void handleSetTime(shared_ptr<SetTimePacket> packet); 90 virtual void handleSetSpawn(shared_ptr<SetSpawnPositionPacket> packet); 91 virtual void handleEntityLinkPacket(shared_ptr<SetEntityLinkPacket> packet); 92 virtual void handleEntityEvent(shared_ptr<EntityEventPacket> packet); 93private: 94 shared_ptr<Entity> getEntity(int entityId); 95 wstring GetDisplayNameByGamertag(wstring gamertag); 96public: 97 virtual void handleSetHealth(shared_ptr<SetHealthPacket> packet); 98 virtual void handleSetExperience(shared_ptr<SetExperiencePacket> packet); 99 virtual void handleRespawn(shared_ptr<RespawnPacket> packet); 100 virtual void handleExplosion(shared_ptr<ExplodePacket> packet); 101 virtual void handleContainerOpen(shared_ptr<ContainerOpenPacket> packet); 102 virtual void handleContainerSetSlot(shared_ptr<ContainerSetSlotPacket> packet); 103 virtual void handleContainerAck(shared_ptr<ContainerAckPacket> packet); 104 virtual void handleContainerContent(shared_ptr<ContainerSetContentPacket> packet); 105 virtual void handleTileEditorOpen(shared_ptr<TileEditorOpenPacket> packet); 106 virtual void handleSignUpdate(shared_ptr<SignUpdatePacket> packet); 107 virtual void handleTileEntityData(shared_ptr<TileEntityDataPacket> packet); 108 virtual void handleContainerSetData(shared_ptr<ContainerSetDataPacket> packet); 109 virtual void handleSetEquippedItem(shared_ptr<SetEquippedItemPacket> packet); 110 virtual void handleContainerClose(shared_ptr<ContainerClosePacket> packet); 111 virtual void handleTileEvent(shared_ptr<TileEventPacket> packet); 112 virtual void handleTileDestruction(shared_ptr<TileDestructionPacket> packet); 113 virtual bool canHandleAsyncPackets(); 114 virtual void handleGameEvent(shared_ptr<GameEventPacket> gameEventPacket); 115 virtual void handleComplexItemData(shared_ptr<ComplexItemDataPacket> packet); 116 virtual void handleLevelEvent(shared_ptr<LevelEventPacket> packet); 117 virtual void handleAwardStat(shared_ptr<AwardStatPacket> packet); 118 virtual void handleUpdateMobEffect(shared_ptr<UpdateMobEffectPacket> packet); 119 virtual void handleRemoveMobEffect(shared_ptr<RemoveMobEffectPacket> packet); 120 virtual bool isServerPacketListener(); 121 virtual void handlePlayerInfo(shared_ptr<PlayerInfoPacket> packet); 122 virtual void handleKeepAlive(shared_ptr<KeepAlivePacket> packet); 123 virtual void handlePlayerAbilities(shared_ptr<PlayerAbilitiesPacket> playerAbilitiesPacket); 124 virtual void handleSoundEvent(shared_ptr<LevelSoundPacket> packet); 125 virtual void handleCustomPayload(shared_ptr<CustomPayloadPacket> customPayloadPacket); 126 virtual Connection *getConnection(); 127 128 // 4J Added 129 virtual void handleServerSettingsChanged(shared_ptr<ServerSettingsChangedPacket> packet); 130 virtual void handleTexture(shared_ptr<TexturePacket> packet); 131 virtual void handleTextureAndGeometry(shared_ptr<TextureAndGeometryPacket> packet); 132 virtual void handleUpdateProgress(shared_ptr<UpdateProgressPacket> packet); 133 134 // 4J Added 135 static int HostDisconnectReturned(void *pParam,int iPad,C4JStorage::EMessageResult result); 136 static int ExitGameAndSaveReturned(void *pParam,int iPad,C4JStorage::EMessageResult result); 137 virtual void handleTextureChange(shared_ptr<TextureChangePacket> packet); 138 virtual void handleTextureAndGeometryChange(shared_ptr<TextureAndGeometryChangePacket> packet); 139 virtual void handleUpdateGameRuleProgressPacket(shared_ptr<UpdateGameRuleProgressPacket> packet); 140 virtual void handleXZ(shared_ptr<XZPacket> packet); 141 142 void displayPrivilegeChanges(shared_ptr<MultiplayerLocalPlayer> player, unsigned int oldPrivileges); 143 144 virtual void handleAddObjective(shared_ptr<SetObjectivePacket> packet); 145 virtual void handleSetScore(shared_ptr<SetScorePacket> packet); 146 virtual void handleSetDisplayObjective(shared_ptr<SetDisplayObjectivePacket> packet); 147 virtual void handleSetPlayerTeamPacket(shared_ptr<SetPlayerTeamPacket> packet); 148 virtual void handleParticleEvent(shared_ptr<LevelParticlesPacket> packet); 149 virtual void handleUpdateAttributes(shared_ptr<UpdateAttributesPacket> packet); 150 151private: 152 // 4J: Entity link packet deferred 153 class DeferredEntityLinkPacket 154 { 155 public: 156 DWORD m_recievedTick; 157 shared_ptr<SetEntityLinkPacket> m_packet; 158 159 DeferredEntityLinkPacket(shared_ptr<SetEntityLinkPacket> packet); 160 }; 161 162 vector<DeferredEntityLinkPacket> deferredEntityLinkPackets; 163 static const int MAX_ENTITY_LINK_DEFERRAL_INTERVAL = 1000; 164 165 void checkDeferredEntityLinkPackets(int newEntityId); 166};