aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/MultiPlayerLocalPlayer.h
blob: e660a96a206d3e8f7ca8e2dddbf9c4c00f35e701 (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
#pragma once
#include "LocalPlayer.h"
#include "..\Minecraft.World\SharedConstants.h"

class ClientConnection;
class Minecraft;
class Level;

//#define STRESS_TEST_MOVE

class MultiplayerLocalPlayer : public LocalPlayer
{
private:
	static const int POSITION_REMINDER_INTERVAL = SharedConstants::TICKS_PER_SECOND;
public:
	ClientConnection *connection;
private:
    bool flashOnSetHealth;
public:
	MultiplayerLocalPlayer(Minecraft *minecraft, Level *level, User *user, ClientConnection *connection);
private:
	double xLast, yLast1, yLast2, zLast;
    float yRotLast, xRotLast;
public:
	virtual bool hurt(DamageSource *source, float dmg);
    virtual void heal(float heal);
    virtual void tick();
private:
	bool lastOnGround;
    bool lastSneaked;
	bool lastIdle;
	bool lastSprinting;
    int positionReminder;
public:
	void sendPosition();

	using Player::drop;
    virtual shared_ptr<ItemEntity> drop();
protected:
	virtual void reallyDrop(shared_ptr<ItemEntity> itemEntity);
public:
	virtual void chat(const wstring& message);
    virtual void swing();
    virtual void respawn();
protected:
	virtual void actuallyHurt(DamageSource *source, float dmg);

	// 4J Added override to capture event for tutorial messages
	virtual void completeUsingItem();

	// 4J Added overrides to capture events for tutorial
	virtual void onEffectAdded(MobEffectInstance *effect);
	virtual void onEffectUpdated(MobEffectInstance *effect, bool doRefreshAttributes);
	virtual void onEffectRemoved(MobEffectInstance *effect);
public:
	virtual void closeContainer();
	void clientSideCloseContainer();
    virtual void hurtTo(float newHealth, ETelemetryChallenges damageSource);
    virtual void awardStat(Stat *stat, byteArray param);
    void awardStatFromServer(Stat *stat, byteArray param);
	void onUpdateAbilities();
	bool isLocalPlayer();

protected:
	virtual void sendRidingJump();

public:
    virtual void sendOpenInventory();

	// 4J - send the custom skin texture data if there is one
	//void CustomSkin(PBYTE pbData, DWORD dwBytes);

	// 4J Overriding this so we can flag an event for the tutorial
	virtual void ride(shared_ptr<Entity> e);

	// 4J - added for the Stop Sleeping
	virtual void StopSleeping();

	// 4J Added
	virtual void setAndBroadcastCustomSkin(DWORD skinId);
	virtual void setAndBroadcastCustomCape(DWORD capeId);

	// 4J added for testing
#ifdef STRESS_TEST_MOVE
	void StressTestMove(double *tempX, double *tempY, double *tempZ);
#endif
};