diff options
| author | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
|---|---|---|
| committer | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
| commit | b691c43c44ff180d10e7d4a9afc83b98551ff586 (patch) | |
| tree | 3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.World/CraftingContainer.cpp | |
| parent | def8cb415354ac390b7e89052a50605285f1aca9 (diff) | |
Initial commit
Diffstat (limited to 'Minecraft.World/CraftingContainer.cpp')
| -rw-r--r-- | Minecraft.World/CraftingContainer.cpp | 100 |
1 files changed, 100 insertions, 0 deletions
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<ItemInstance> CraftingContainer::getItem(unsigned int slot) +{ + if (slot >= getContainerSize()) + { + return nullptr; + } + return (*items)[slot]; +} + +shared_ptr<ItemInstance> 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<ItemInstance> CraftingContainer::removeItemNoUpdate(int slot) +{ + if ((*items)[slot] != NULL) + { + shared_ptr<ItemInstance> item = (*items)[slot]; + (*items)[slot] = nullptr; + return item; + } + return nullptr; +} + +shared_ptr<ItemInstance> CraftingContainer::removeItem(unsigned int slot, int count) +{ + if ((*items)[slot] != NULL) + { + if ((*items)[slot]->count <= count) + { + shared_ptr<ItemInstance> 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<ItemInstance> 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<ItemInstance> 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> player) +{ + return true; +}
\ No newline at end of file |
