aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/JukeboxTile.h
blob: dd592872ae71a3a6096a4217773900de482546fd (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
#pragma once

#include "BaseEntityTile.h"
#include "CompoundTag.h"
#include "TileEntity.h"

class CompoundTag;
class ChunkRebuildData;

class JukeboxTile : public BaseEntityTile
{
	friend class Tile;
	friend class ChunkRebuildData;
public:
	class Entity : public TileEntity
	{
	public:
		eINSTANCEOF GetType() { return eTYPE_RECORDPLAYERTILE; }
		static TileEntity *create() { return new JukeboxTile::Entity(); }

	private:
		shared_ptr<ItemInstance> record;

	public:
		Entity();

		virtual void load(CompoundTag *tag);
		virtual void save(CompoundTag *tag);
		virtual shared_ptr<ItemInstance> getRecord();
		virtual void setRecord(shared_ptr<ItemInstance> record);

		// 4J Added
		shared_ptr<TileEntity> clone();
	};

private:
	Icon *iconTop;

protected:
	JukeboxTile(int id);

public:
	virtual Icon *getTexture(int face, int data);
	virtual bool TestUse(Level *level, int x, int y, int z, shared_ptr<Player> player);
	virtual bool use(Level *level, int x, int y, int z, shared_ptr<Player> player, int clickedFace, float clickX, float clickY, float clickZ, bool soundOnly = false); // 4J added soundOnly param
	void setRecord(Level *level, int x, int y, int z, shared_ptr<ItemInstance> record);
	void dropRecording(Level *level, int x, int y, int z);
	virtual void onRemove(Level *level, int x, int y, int z, int id, int data);
	virtual void spawnResources(Level *level, int x, int y, int z, int data, float odds, int playerBonus);

	virtual shared_ptr<TileEntity> newTileEntity(Level *level);
	virtual void registerIcons(IconRegister *iconRegister);
	virtual bool hasAnalogOutputSignal();
	virtual int getAnalogOutputSignal(Level *level, int x, int y, int z, int dir);
};