From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- Minecraft.World/CraftingContainer.cpp | 100 ++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 Minecraft.World/CraftingContainer.cpp (limited to 'Minecraft.World/CraftingContainer.cpp') diff --git a/Minecraft.World/CraftingContainer.cpp b/Minecraft.World/CraftingContainer.cpp new file mode 100644 index 00000000..fbcc5678 --- /dev/null +++ b/Minecraft.World/CraftingContainer.cpp @@ -0,0 +1,100 @@ +#include "stdafx.h" +#include "net.minecraft.world.entity.player.h" +#include "net.minecraft.world.item.h" +#include "AbstractContainerMenu.h" +#include "CraftingContainer.h" + +CraftingContainer::~CraftingContainer() +{ + +} + +CraftingContainer::CraftingContainer(AbstractContainerMenu *menu, unsigned int w, unsigned int h) +{ + unsigned int size = w * h; + items = new ItemInstanceArray(size); + this->menu = menu; + this->width = w; +} + +unsigned int CraftingContainer::getContainerSize() +{ + return items->length; +} + +shared_ptr CraftingContainer::getItem(unsigned int slot) +{ + if (slot >= getContainerSize()) + { + return nullptr; + } + return (*items)[slot]; +} + +shared_ptr CraftingContainer::getItem(unsigned int x, unsigned int y) +{ + if (x < 0 || x >= width) + { + return nullptr; + } + unsigned int pos = x + y * width; + return getItem(pos); +} + +int CraftingContainer::getName() +{ + return 0; +} + +shared_ptr CraftingContainer::removeItemNoUpdate(int slot) +{ + if ((*items)[slot] != NULL) + { + shared_ptr item = (*items)[slot]; + (*items)[slot] = nullptr; + return item; + } + return nullptr; +} + +shared_ptr CraftingContainer::removeItem(unsigned int slot, int count) +{ + if ((*items)[slot] != NULL) + { + if ((*items)[slot]->count <= count) + { + shared_ptr item = (*items)[slot]; + (*items)[slot] = nullptr; + menu->slotsChanged(); // 4J - used to take pointer to this, but wasn't using it so removed + return item; + } + else + { + shared_ptr i = (*items)[slot]->remove(count); + if ((*items)[slot]->count == 0) (*items)[slot] = nullptr; + menu->slotsChanged(); // 4J - used to take pointer to this, but wasn't using it so removed + return i; + } + } + return nullptr; +} + +void CraftingContainer::setItem(unsigned int slot, shared_ptr item) +{ + (*items)[slot] = item; + if(menu) menu->slotsChanged(); +} + +int CraftingContainer::getMaxStackSize() +{ + return Container::LARGE_MAX_STACK_SIZE; +} + +void CraftingContainer::setChanged() +{ +} + +bool CraftingContainer::stillValid(shared_ptr player) +{ + return true; +} \ No newline at end of file -- cgit v1.2.3