public override bool BlockRightClicked(BlockDescriptor descriptor, BlockFace face, IWorld world, IRemoteClient user)
        {
            var window = new CraftingBenchWindow(user.Server.CraftingRepository, (InventoryWindow)user.Inventory);

            user.OpenWindow(window);
            return(false);
        }
        public static void HandleOpenWindowPacket(IPacket _packet, MultiplayerClient client)
        {
            var     packet = (OpenWindowPacket)_packet;
            IWindow window = null;

            switch (packet.Type)
            {
            case 1:     // Crafting bench window
                window = new CraftingBenchWindow(client.CraftingRepository, client.Inventory);
                break;
            }
            window.ID            = packet.WindowID;
            client.CurrentWindow = window;
        }
        public override bool BlockRightClicked(BlockDescriptor descriptor, BlockFace face, IWorld world, IRemoteClient user)
        {
            var window = new CraftingBenchWindow(user.Server.CraftingRepository, (InventoryWindow)user.Inventory);

            user.OpenWindow(window);
            window.Disposed += (sender, e) =>
            {
                var entityManager = user.Server.GetEntityManagerForWorld(world);
                for (int i = 0; i < window.CraftingGrid.StartIndex + window.CraftingGrid.Length; i++)
                {
                    var item = window[i];
                    if (!item.Empty)
                    {
                        var entity = new ItemEntity(descriptor.Coordinates + Coordinates3D.Up, item);
                        entityManager.SpawnEntity(entity);
                    }
                }
            };
            return(false);
        }