aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/Inventory.h
blob: 9d1aa7e0cae2b577b86f6189f16299484a0147fb (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
#pragma once
using namespace std;
#include "Container.h"
#include "ListTag.h"
#include "ItemInstance.h"

class Player;
class CompoundTag;

class Inventory : public Container
{
public:
	static const int POP_TIME_DURATION ;
	static const int MAX_INVENTORY_STACK_SIZE;

private:
	static const int INVENTORY_SIZE;
	static const int SELECTION_SIZE;

public:
	ItemInstanceArray items;
	ItemInstanceArray armor;

	int selected;
	Player *player; // This is owned by shared_ptrs, but we are owned by it

private:
	shared_ptr<ItemInstance> heldItem;
	shared_ptr<ItemInstance> carried;

public:
	bool changed;

	Inventory(Player *player);
	~Inventory();

	shared_ptr<ItemInstance> getSelected();
	// 4J-PB - Added for the in-game tooltips
	bool IsHeldItem();

	static int getSelectionSize();

private:
	int getSlot(int tileId);
	int getSlot(int tileId, int data);

	int getSlotWithRemainingSpace(shared_ptr<ItemInstance> item);
	
public:
	int getFreeSlot();

	void grabTexture(int id, int data, bool checkData, bool mayReplace);

	void swapPaint(int wheel);

	void clearInventory();

	void replaceSlot(Item *item, int data);

private:
	int addResource(shared_ptr<ItemInstance> itemInstance);

public:
	void tick();

	bool removeResource(int type);

	// 4J-PB added to get the right resource from the inventory for removal
	bool removeResource(int type,int iAuxVal);
	void removeResources(shared_ptr<ItemInstance> item); // 4J Added for trading
	
	// 4J-Stu added to the get the item that would be affected by the removeResource functions
	shared_ptr<ItemInstance> getResourceItem(int type);
	shared_ptr<ItemInstance> getResourceItem(int type,int iAuxVal);

	bool hasResource(int type);

	void swapSlots(int from, int to);

	bool add(shared_ptr<ItemInstance> item);

	shared_ptr<ItemInstance> removeItem(unsigned int slot, int count);
	virtual shared_ptr<ItemInstance> removeItemNoUpdate(int slot);

	void setItem(unsigned int slot, shared_ptr<ItemInstance> item);

	float getDestroySpeed(Tile *tile);

	ListTag<CompoundTag> *save(ListTag<CompoundTag> *listTag);

	void load(ListTag<CompoundTag> *inventoryList);

	unsigned int getContainerSize();

	shared_ptr<ItemInstance> getItem(unsigned int slot);

	int getName();

	int getMaxStackSize();

	int getAttackDamage(shared_ptr<Entity> entity);

	bool canDestroy(Tile *tile);

	shared_ptr<ItemInstance> getArmor(int layer);

	int getArmorValue();

	void hurtArmor(int dmg);

	void dropAll();

	void setChanged();

	bool isSame(shared_ptr<Inventory> copy);

private:
	bool isSame(shared_ptr<ItemInstance> a, shared_ptr<ItemInstance> b);

public:
	shared_ptr<Inventory> copy();

	void setCarried(shared_ptr<ItemInstance> carried);

	shared_ptr<ItemInstance> getCarried();

	bool stillValid(shared_ptr<Player> player);

	bool contains(shared_ptr<ItemInstance> itemInstance);

	virtual void startOpen();
	virtual void stopOpen();
	void replaceWith(shared_ptr<Inventory> other);

	int countMatches(shared_ptr<ItemInstance> itemInstance); // 4J Added
};