Broken code?
private void OnItemRemovedFromContainer(ItemContainer itemContainer, Item item)
        {
            if (item.parentItem != null)
                return;

            var player = itemContainer.GetOwnerPlayer();
            if (player != null)
                return;

            ContainerController container;
            if (!_controllersPerContainer.TryGetValue(itemContainer.uid, out container))
                return;

#if DEBUG
            Puts($"OnItemRemovedFromContainer: {item.info.shortname} (slot {item.position})");
#endif

            container.OnItemTaken(item);

            Interface.CallHook("OnItemSkinChanged", player, item);

            container.Clear();
        }

If player isn't null return, then using null player in a call. It's like that in a few of the functions.

Swapping each instance of that broken part to the following fixes it.

BasePlayer player = itemContainer.entityOwner as BasePlayer;
            if (player == null)
                return;​

as far as I remember it is intentional and if changed the plugin will no longer fully/properly function though, but i'll need to double check, thanks