void SetProps(Player p, BlockProps[] scope, BlockID block, string[] args)
        {
            BlockOption opt = BlockOptions.Find(args[2]);

            if (opt == null)
            {
                Help(p); return;
            }
            string value = args.Length > 3 ? args[3] : "";

            opt.SetFunc(p, scope, block, value);
            scope[block].ChangedScope |= BlockOptions.ScopeId(scope);
            BlockOptions.ApplyChanges(scope, p.level, block, true);
        }
        public override void Help(Player p, string message)
        {
            if (message.CaselessEq("props") || message.CaselessEq("properties"))
            {
                p.Message("&HProperties: &f{0}", BlockOptions.Options.Join(o => o.Name));
                p.Message("&HUse &T/Help BlockProps [property] &Hfor more details");
                return;
            }

            BlockOption opt = BlockOptions.Find(message);

            if (opt != null)
            {
                p.Message(opt.Help);
            }
            else
            {
                p.Message("&WUnrecognised property \"{0}\"", message);
            }
        }