summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README1
-rw-r--r--init.lua9
2 files changed, 7 insertions, 3 deletions
diff --git a/README b/README
index 6b962ec..294fc18 100644
--- a/README
+++ b/README
@@ -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.
diff --git a/init.lua b/init.lua
index b1d1b2a..2bf67fb 100644
--- a/init.lua
+++ b/init.lua
@@ -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