aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/FurnaceTileEntity.h
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.World/FurnaceTileEntity.h')
-rw-r--r--Minecraft.World/FurnaceTileEntity.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/Minecraft.World/FurnaceTileEntity.h b/Minecraft.World/FurnaceTileEntity.h
new file mode 100644
index 00000000..db39452e
--- /dev/null
+++ b/Minecraft.World/FurnaceTileEntity.h
@@ -0,0 +1,78 @@
+#pragma once
+using namespace std;
+
+#include "FurnaceTile.h"
+#include "TileEntity.h"
+#include "Container.h"
+
+class Player;
+class Level;
+
+class FurnaceTileEntity : public TileEntity, public Container
+{
+public:
+ eINSTANCEOF GetType() { return eTYPE_FURNACETILEENTITY; }
+ static TileEntity *create() { return new FurnaceTileEntity(); }
+
+using TileEntity::setChanged;
+
+private:
+ static const int BURN_INTERVAL;
+ ItemInstanceArray *items;
+
+ enum {
+ INPUT_SLOT = 0,
+ FUEL_SLOT,
+ RESULT_SLOT,
+ };
+
+ // 4J-JEV: Added for 'Renewable Energy' achievement.
+ // Should be true iff characoal was consumed whilst cooking the current stack.
+ bool m_charcoalUsed;
+
+public:
+ int litTime;
+ int litDuration;
+ int tickCount;
+
+public:
+ // 4J Stu - Need a ctor to initialise member variables
+ FurnaceTileEntity();
+ virtual ~FurnaceTileEntity();
+
+ virtual unsigned int getContainerSize();
+ virtual shared_ptr<ItemInstance> getItem(unsigned int slot);
+ virtual shared_ptr<ItemInstance> removeItem(unsigned int slot, int count);
+ virtual shared_ptr<ItemInstance> removeItemNoUpdate(int slot);
+ virtual void setItem(unsigned int slot, shared_ptr<ItemInstance> item);
+ virtual int getName();
+ virtual void load(CompoundTag *base);
+ virtual void save(CompoundTag *base);
+ virtual int getMaxStackSize();
+ int getBurnProgress(int max);
+ int getLitProgress(int max);
+ bool isLit();
+ virtual void tick();
+
+private:
+ bool canBurn();
+
+public:
+ void burn();
+
+ static int getBurnDuration(shared_ptr<ItemInstance> itemInstance);
+ static bool isFuel(shared_ptr<ItemInstance> item);
+
+public:
+ virtual bool stillValid(shared_ptr<Player> player);
+ virtual void setChanged();
+
+ void startOpen();
+ void stopOpen();
+
+ // 4J Added
+ virtual shared_ptr<TileEntity> clone();
+
+ // 4J-JEV: Added for 'Renewable Energy' achievement.
+ bool wasCharcoalUsed() { return m_charcoalUsed; }
+}; \ No newline at end of file