the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
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};