aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/PlayerEnderChestContainer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.World/PlayerEnderChestContainer.cpp')
-rw-r--r--Minecraft.World/PlayerEnderChestContainer.cpp72
1 files changed, 72 insertions, 0 deletions
diff --git a/Minecraft.World/PlayerEnderChestContainer.cpp b/Minecraft.World/PlayerEnderChestContainer.cpp
new file mode 100644
index 00000000..466d9710
--- /dev/null
+++ b/Minecraft.World/PlayerEnderChestContainer.cpp
@@ -0,0 +1,72 @@
+#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<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 != 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> 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;
+} \ No newline at end of file