示例#1
0
    public override void OnBlockRemoved()
    {
        base.OnBlockRemoved();

        if (clientDialog != null)
        {
            clientDialog.TryClose();
            if (clientDialog != null)
            {
                clientDialog.Dispose();
                clientDialog = null;
            }
        }
    }
示例#2
0
    public override void OnReceivedServerPacket(int packetid, byte[] data)
    {
        if (packetid == (int)EnumBlockStovePacket.OpenGUI)
        {
            using (MemoryStream ms = new MemoryStream(data))
            {
                BinaryReader reader = new BinaryReader(ms);

                string dialogClassName = reader.ReadString();
                string dialogTitle     = reader.ReadString();

                TreeAttribute tree = new TreeAttribute();
                tree.FromBytes(reader);
                Inventory.FromTreeAttributes(tree);
                Inventory.ResolveBlocksOrItems();

                IClientWorldAccessor clientWorld = (IClientWorldAccessor)Api.World;

                SyncedTreeAttribute dtree = new SyncedTreeAttribute();
                SetDialogValues(dtree);

                if (clientDialog != null)
                {
                    clientDialog.TryClose();
                    clientDialog = null;
                }
                else
                {
                    clientDialog           = new GuiDialogBlockEntityFurnace(dialogTitle, Inventory, Pos, dtree, Api as ICoreClientAPI);
                    clientDialog.OnClosed += () => { clientDialog.Dispose(); clientDialog = null; };
                    clientDialog.TryOpen();
                }
            }
        }

        if (packetid == (int)EnumBlockEntityPacketId.Close)
        {
            IClientWorldAccessor clientWorld = (IClientWorldAccessor)Api.World;
            clientWorld.Player.InventoryManager.CloseInventory(Inventory);
        }
    }