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

#include "Recipy.h"

class FireworksRecipe : public Recipy
{
private:
	//shared_ptr<ItemInstance> resultItem;

		// 4J added so we can have separate contexts and rleBuf for different threads
	class ThreadStorage
	{
	public:
		shared_ptr<ItemInstance> resultItem;
		ThreadStorage();
	};
	static DWORD tlsIdx;
	static ThreadStorage *tlsDefault;

	void setResultItem(shared_ptr<ItemInstance> item);
public:
	// Each new thread that needs to use Compression will need to call one of the following 2 functions, to either create its own
	// local storage, or share the default storage already allocated by the main thread
	static void CreateNewThreadStorage();
	static void UseDefaultThreadStorage();
	static void ReleaseThreadStorage();

public:
	FireworksRecipe();

	bool matches(shared_ptr<CraftingContainer> craftSlots, Level *level);
	shared_ptr<ItemInstance> assemble(shared_ptr<CraftingContainer> craftSlots);
	int size();
	const ItemInstance *getResultItem();

	
	virtual const int getGroup() { return 0; }		

	// 4J-PB
	virtual bool requires(int iRecipe) { return false; };
	virtual void requires(INGREDIENTS_REQUIRED *pIngReq) {};

	// 4J Added
	static void updatePossibleRecipes(shared_ptr<CraftingContainer> craftSlots, bool *firework, bool *charge, bool *fade);
	static bool isValidIngredient(shared_ptr<ItemInstance> item, bool firework, bool charge, bool fade);
};