aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/ClientConnection.h
blob: 53c3ff227501d4515638f5e295996a0328a94a37 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#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<String, PlayerInfo> playerInfoMap = new HashMap<String, PlayerInfo>();
public:
	//List<PlayerInfo> playerInfos = new ArrayList<PlayerInfo>();

	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<LoginPacket> packet);
    virtual void handleAddEntity(std::shared_ptr<AddEntityPacket> packet);
	virtual void handleAddExperienceOrb(std::shared_ptr<AddExperienceOrbPacket> packet);
    virtual void handleAddGlobalEntity(std::shared_ptr<AddGlobalEntityPacket> packet);
    virtual void handleAddPainting(std::shared_ptr<AddPaintingPacket> packet);
    virtual void handleSetEntityMotion(std::shared_ptr<SetEntityMotionPacket> packet);
    virtual void handleSetEntityData(std::shared_ptr<SetEntityDataPacket> packet);
    virtual void handleAddPlayer(std::shared_ptr<AddPlayerPacket> packet);
    virtual void handleTeleportEntity(std::shared_ptr<TeleportEntityPacket> packet);
    virtual void handleMoveEntity(std::shared_ptr<MoveEntityPacket> packet);
	virtual void handleRotateMob(std::shared_ptr<RotateHeadPacket> packet);
	virtual void handleMoveEntitySmall(std::shared_ptr<MoveEntityPacketSmall> packet);
    virtual void handleRemoveEntity(std::shared_ptr<RemoveEntitiesPacket> packet);
	virtual void handleMovePlayer(std::shared_ptr<MovePlayerPacket> packet);

    Random *random;

	// 4J Added
	virtual void handleChunkVisibilityArea(std::shared_ptr<ChunkVisibilityAreaPacket> packet);

    virtual void handleChunkVisibility(std::shared_ptr<ChunkVisibilityPacket> packet);
    virtual void handleChunkTilesUpdate(std::shared_ptr<ChunkTilesUpdatePacket> packet);
    virtual void handleBlockRegionUpdate(std::shared_ptr<BlockRegionUpdatePacket> packet);
    virtual void handleTileUpdate(std::shared_ptr<TileUpdatePacket> packet);
    virtual void handleDisconnect(std::shared_ptr<DisconnectPacket> packet);
    virtual void onDisconnect(DisconnectPacket::eDisconnectReason reason, void *reasonObjects);
    void sendAndDisconnect(std::shared_ptr<Packet> packet);
    void send(std::shared_ptr<Packet> packet);
    virtual void handleTakeItemEntity(std::shared_ptr<TakeItemEntityPacket> packet);
    virtual void handleChat(std::shared_ptr<ChatPacket> packet);
    virtual void handleAnimate(std::shared_ptr<AnimatePacket> packet);
    virtual void handleEntityActionAtPosition(std::shared_ptr<EntityActionAtPositionPacket> packet);
    virtual void handlePreLogin(std::shared_ptr<PreLoginPacket> packet);
    void close();
    virtual void handleAddMob(std::shared_ptr<AddMobPacket> packet);
    virtual void handleSetTime(std::shared_ptr<SetTimePacket> packet);
    virtual void handleSetSpawn(std::shared_ptr<SetSpawnPositionPacket> packet);
    virtual void handleRidePacket(std::shared_ptr<SetRidingPacket> packet);
    virtual void handleEntityEvent(std::shared_ptr<EntityEventPacket> packet);
private:
	std::shared_ptr<Entity> getEntity(int entityId);
	wstring GetDisplayNameByGamertag(wstring gamertag);
public:
    virtual void handleSetHealth(std::shared_ptr<SetHealthPacket> packet);
	virtual void handleSetExperience(std::shared_ptr<SetExperiencePacket> packet);
    virtual void handleRespawn(std::shared_ptr<RespawnPacket> packet);
    virtual void handleExplosion(std::shared_ptr<ExplodePacket> packet);
    virtual void handleContainerOpen(std::shared_ptr<ContainerOpenPacket> packet);
    virtual void handleContainerSetSlot(std::shared_ptr<ContainerSetSlotPacket> packet);
    virtual void handleContainerAck(std::shared_ptr<ContainerAckPacket> packet);
    virtual void handleContainerContent(std::shared_ptr<ContainerSetContentPacket> packet);
    virtual void handleSignUpdate(std::shared_ptr<SignUpdatePacket> packet);
	virtual void handleTileEntityData(std::shared_ptr<TileEntityDataPacket> packet);
    virtual void handleContainerSetData(std::shared_ptr<ContainerSetDataPacket> packet);
    virtual void handleSetEquippedItem(std::shared_ptr<SetEquippedItemPacket> packet);
    virtual void handleContainerClose(std::shared_ptr<ContainerClosePacket> packet);
    virtual void handleTileEvent(std::shared_ptr<TileEventPacket> packet);
	virtual void handleTileDestruction(std::shared_ptr<TileDestructionPacket> packet);
	virtual bool canHandleAsyncPackets();
    virtual void handleGameEvent(std::shared_ptr<GameEventPacket> gameEventPacket);
    virtual void handleComplexItemData(std::shared_ptr<ComplexItemDataPacket> packet);
    virtual void handleLevelEvent(std::shared_ptr<LevelEventPacket> packet);
    virtual void handleAwardStat(std::shared_ptr<AwardStatPacket> packet);
	virtual void handleUpdateMobEffect(std::shared_ptr<UpdateMobEffectPacket> packet);
	virtual void handleRemoveMobEffect(std::shared_ptr<RemoveMobEffectPacket> packet);
	virtual bool isServerPacketListener();
	virtual void handlePlayerInfo(std::shared_ptr<PlayerInfoPacket> packet);
	virtual void handleKeepAlive(std::shared_ptr<KeepAlivePacket> packet);
	virtual void handlePlayerAbilities(std::shared_ptr<PlayerAbilitiesPacket> playerAbilitiesPacket);
	virtual void handleSoundEvent(std::shared_ptr<LevelSoundPacket> packet);
	virtual void handleCustomPayload(std::shared_ptr<CustomPayloadPacket> customPayloadPacket);
	virtual Connection *getConnection();

	// 4J Added
	virtual void handleServerSettingsChanged(std::shared_ptr<ServerSettingsChangedPacket> packet);
	virtual void handleTexture(std::shared_ptr<TexturePacket> packet);
	virtual void handleTextureAndGeometry(std::shared_ptr<TextureAndGeometryPacket> packet);
	virtual void handleUpdateProgress(std::shared_ptr<UpdateProgressPacket> 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<TextureChangePacket> packet);
	virtual void handleTextureAndGeometryChange(std::shared_ptr<TextureAndGeometryChangePacket> packet);
	virtual void handleUpdateGameRuleProgressPacket(std::shared_ptr<UpdateGameRuleProgressPacket> packet);
	virtual void handleXZ(std::shared_ptr<XZPacket> packet);

	void displayPrivilegeChanges(std::shared_ptr<MultiplayerLocalPlayer> player, unsigned int oldPrivileges);
};