// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.server.core.entity.entities.player.windows;

import com.hypixel.hytale.server.core.inventory.container.ItemContainer;
import com.hypixel.hytale.component.ComponentAccessor;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.protocol.packets.window.WindowType;
import javax.annotation.Nullable;
import com.hypixel.hytale.event.EventRegistration;
import com.hypixel.hytale.server.core.inventory.container.ItemStackItemContainer;
import javax.annotation.Nonnull;
import com.google.gson.JsonObject;

public class ItemStackContainerWindow extends Window implements ItemContainerWindow
{
    @Nonnull
    private final JsonObject windowData;
    @Nonnull
    private final ItemStackItemContainer itemStackItemContainer;
    @Nullable
    private EventRegistration eventRegistration;
    
    public ItemStackContainerWindow(@Nonnull final ItemStackItemContainer itemStackItemContainer) {
        super(WindowType.Container);
        this.windowData = new JsonObject();
        this.itemStackItemContainer = itemStackItemContainer;
    }
    
    @Nonnull
    @Override
    public JsonObject getData() {
        return this.windowData;
    }
    
    public boolean onOpen0(@Nonnull final Ref<EntityStore> ref, @Nonnull final Store<EntityStore> store) {
        this.eventRegistration = this.itemStackItemContainer.getParentContainer().registerChangeEvent(event -> {
            if (!this.itemStackItemContainer.isItemStackValid()) {
                this.close(ref, store);
            }
            return;
        });
        return true;
    }
    
    public void onClose0(@Nonnull final Ref<EntityStore> ref, @Nonnull final ComponentAccessor<EntityStore> componentAccessor) {
        this.eventRegistration.unregister();
        this.eventRegistration = null;
    }
    
    @Nonnull
    @Override
    public ItemContainer getItemContainer() {
        return this.itemStackItemContainer;
    }
}
