neoLegacy/Minecraft.World/Recipy.h
DrPerkyLegit b67cbb85f3
Some checks are pending
Sync branches with main / sync (push) Waiting to run
feat: multiplayer feat/less hardcoded lists (#89)
* CustomPayloadPacket Changes

commented all code for old equip packets
cleaned up custom payload key creation
added 2 new payload packet definitions for upcoming changes

* server sided recipe list

* code cleanup for recipes

* add dtor for recipe classes to fix memory leak

* forgot this part to the dtor commit

* dtor changes tested and fixed

* server side creative menu list
2026-05-22 18:39:27 +03:00

58 lines
1.6 KiB
C++

// package net.minecraft.world.item.crafting;
//
// import net.minecraft.world.inventory.CraftingContainer;
// import net.minecraft.world.item.ItemInstance;
#pragma once
#include "CraftingContainer.h"
#define RECIPE_TYPE_2x2 0
#define RECIPE_TYPE_3x3 1
class Recipy
{
public:
enum _eGroupType
{
eGroupType_First = 0,
eGroupType_Structure = 0,
eGroupType_Tool,
eGroupType_Food,
eGroupType_Armour,
eGroupType_Mechanism,
eGroupType_Transport,
eGroupType_Decoration,
eGroupType_Max
}
eGroupType; // to class the item produced by the recipe
// 4J-PB - we'll classing an ingredient ID with a different aux value as a different IngID AuxVal pair
typedef struct
{
int iIngC;
int iType; // Can be a 2x2 or a 3x3. Inventory crafting can only make a 2x2.
int* iIngIDA;
int* iIngValA;
int* iIngAuxValA;
Recipy* pRecipy;
bool bCanMake[XUSER_MAX_COUNT];
unsigned int* uiGridA; // hold the layout of the recipe (id | auxval<<24)
unsigned short usBitmaskMissingGridIngredients[XUSER_MAX_COUNT]; // each bit set means we don't have that grid ingredient
}
INGREDIENTS_REQUIRED;
virtual ~Recipy() = default;
virtual bool matches(shared_ptr<CraftingContainer> craftSlots, Level* level) = 0;
virtual shared_ptr<ItemInstance> assemble(shared_ptr<CraftingContainer> craftSlots) = 0;
virtual int size() = 0;
virtual const ItemInstance* getResultItem() = 0;
virtual const int getGroup() = 0;
// 4J-PB
virtual bool reqs(int iRecipe) = 0;
virtual void reqs(INGREDIENTS_REQUIRED* pIngReq) = 0;
virtual void writeToStream(DataOutputStream* dos) = 0;
};