#include "stdafx.h" #include "net.minecraft.world.level.tile.entity.h" #include "PlayerEnderChestContainer.h" PlayerEnderChestContainer::PlayerEnderChestContainer() : SimpleContainer(IDS_TILE_ENDERCHEST, 9 * 3) { activeChest = nullptr; } void PlayerEnderChestContainer::setActiveChest(shared_ptr activeChest) { this->activeChest = activeChest; } void PlayerEnderChestContainer::setItemsByTag(ListTag *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 *PlayerEnderChestContainer::createTag() { ListTag *items = new ListTag(L"EnderItems"); for (int i = 0; i < getContainerSize(); i++) { shared_ptr item = getItem(i); if (item != NULL) { CompoundTag *tag = new CompoundTag(); tag->putByte(L"Slot", (byte) i); item->save(tag); items->add(tag); } } return items; } bool PlayerEnderChestContainer::stillValid(shared_ptr player) { if (activeChest != NULL && !activeChest->stillValid(player)) { return false; } return SimpleContainer::stillValid(player); } void PlayerEnderChestContainer::startOpen() { if (activeChest != NULL) { activeChest->startOpen(); } SimpleContainer::startOpen(); } void PlayerEnderChestContainer::stopOpen() { if (activeChest) { activeChest->stopOpen(); } SimpleContainer::stopOpen(); activeChest = nullptr; }