diff options
| -rw-r--r-- | README | 1 | ||||
| -rw-r--r-- | init.lua | 9 |
2 files changed, 7 insertions, 3 deletions
@@ -30,6 +30,7 @@ playersettings.register("yourmodname:yoursettingname",{ max = 10, -- For "number" settings: The largest selectable value. + -- For "string" settings: Maximum length. Default: 200. integer = true, -- For "number" settings: If true, entered numbers will be rounded down to the nearest integer. @@ -94,11 +94,12 @@ function playersettings.openform(player) elseif def.type == "string" then extras = ( "field[8,6;6,1;field;Enter value:;%s]" .. - "textarea[8,7.5;6,2;;;Allowed values: %s]" .. + "textarea[8,7.5;6,2;;;Allowed values: %s\nCharacters limit: %d]" .. "field_close_on_enter[field;false]" ):format( core.formspec_escape(settingvalue), - core.formspec_escape(def.values or "any string") + core.formspec_escape(def.values or "any string"), + def.max ) elseif def.type == "number" then local allowed = "any number" @@ -177,7 +178,8 @@ function playersettings.handleform(player,form,fields) playersettings.set(name,settingname,value) end elseif def.type == "string" and fields.field then - playersettings.set(name,settingname,fields.field) + local value = fields.field:sub(1, def.max) + playersettings.set(name,settingname,value) end end if fields.settinglist then @@ -258,6 +260,7 @@ function playersettings.register(setting,def) -- Type-specific checks if def.type == "string" then assert(type(def.values) == "string") + def.max = def.max or 200 elseif def.type == "enum" then assert(type(def.values) == "table") end |
