From 0a795ae447ccca69fe7f9ad28f7267758b4d5e35 Mon Sep 17 00:00:00 2001 From: Krock Date: Sat, 16 May 2026 09:16:01 -0500 Subject: [PATCH 1/2] Limit for string values --- README | 1 + init.lua | 9 ++++++--- 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 -- cgit v1.2.3