Files
MinecraftConsoles/Minecraft.World/PlayerEnderChestContainer.cpp
ModMaker101 a9be52c41a Project modernization (#630)
* Fixed boats falling and a TP glitch #266

* Replaced every C-style cast with C++ ones

* Replaced every C-style cast with C++ ones

* Fixed boats falling and a TP glitch #266

* Updated NULL to nullptr and fixing some type issues

* Modernized and fixed a few bugs

- Replaced most instances of `NULL` with `nullptr`.
- Replaced most `shared_ptr(new ...)` with `make_shared`.
- Removed the `nullptr` macro as it was interfering with the actual nullptr keyword in some instances.

* Fixing more conflicts

* Replace int loops with size_t and start work on overrides
2026-03-08 09:56:03 +07:00

83 lines
1.9 KiB
C++

#include "stdafx.h"
#include "net.minecraft.world.level.tile.entity.h"
#include "ContainerOpenPacket.h"
#include "PlayerEnderChestContainer.h"
PlayerEnderChestContainer::PlayerEnderChestContainer() : SimpleContainer(IDS_TILE_ENDERCHEST, L"", false, 9 * 3)
{
activeChest = nullptr;
}
int PlayerEnderChestContainer::getContainerType()
{
return ContainerOpenPacket::ENDER_CHEST;
}
void PlayerEnderChestContainer::setActiveChest(shared_ptr<EnderChestTileEntity> activeChest)
{
this->activeChest = activeChest;
}
void PlayerEnderChestContainer::setItemsByTag(ListTag<CompoundTag> *enderItemsList)
{
for (int i = 0; i < getContainerSize(); i++)
{
setItem(i, nullptr);
}
for (int i = 0; i < enderItemsList->size(); i++)
{
CompoundTag *tag = enderItemsList->get(i);
int slot = tag->getByte(L"Slot") & 0xff;
if (slot >= 0 && slot < getContainerSize()) setItem(slot, ItemInstance::fromTag(tag));
}
}
ListTag<CompoundTag> *PlayerEnderChestContainer::createTag()
{
ListTag<CompoundTag> *items = new ListTag<CompoundTag>(L"EnderItems");
for (int i = 0; i < getContainerSize(); i++)
{
shared_ptr<ItemInstance> item = getItem(i);
if (item != nullptr)
{
CompoundTag *tag = new CompoundTag();
tag->putByte(L"Slot", static_cast<byte>(i));
item->save(tag);
items->add(tag);
}
}
return items;
}
bool PlayerEnderChestContainer::stillValid(shared_ptr<Player> player)
{
if (activeChest != nullptr && !activeChest->stillValid(player))
{
return false;
}
return SimpleContainer::stillValid(player);
}
void PlayerEnderChestContainer::startOpen()
{
if (activeChest != nullptr)
{
activeChest->startOpen();
}
SimpleContainer::startOpen();
}
void PlayerEnderChestContainer::stopOpen()
{
if (activeChest)
{
activeChest->stopOpen();
}
SimpleContainer::stopOpen();
activeChest = nullptr;
}
bool PlayerEnderChestContainer::canPlaceItem(int slot, shared_ptr<ItemInstance> item)
{
return true;
}