From 2eafcb924a6b89f6a67e3fa4bf6586413623ffc9 Mon Sep 17 00:00:00 2001 From: Krock Date: Fri, 15 May 2026 07:57:47 -0500 Subject: Assorted fixes/cleanups Contains the following patches: * [PATCH 01/10] Replace 'minetest' with 'core' * [PATCH 02/10] Extend type checks * [PATCH 03/10] Add examples * [PATCH 04/10] Protect against invalid formspec inputs * [PATCH 05/10] Unify some code * [PATCH 06/10] Use dropdown index to check againt value validity * [PATCH 07/10] Improve formspec and implement 'Reset' button * [PATCH 08/10] Do not run callbacks if no value changed * [PATCH 09/10] Add checkbox to show technical names * [PATCH 10/10] Make formspec layout more compact --- examples.lua | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 examples.lua (limited to 'examples.lua') diff --git a/examples.lua b/examples.lua new file mode 100644 index 0000000..eb439b8 --- /dev/null +++ b/examples.lua @@ -0,0 +1,64 @@ +core.log("error", "[playersettings] Examples are enabled!") + +local longdesc = "Some helpful long description with [];\\[ escaped characters\nLine 2" + +-- Wrapper to add logging +local function playersettings_register_logged(setting, def) + def.onjoin = function(player_name, setting_value) + core.log("action", ("Callback %s for player=%s: %s=%s"):format( + "onjoin", player_name, setting, dump(setting_value))) + end + def.onchange = function(player_name, old_value, new_value) + core.log("action", ("Callback %s for player=%s: old=%s, new=%s"):format( + "onchange", player_name, dump(old_value), dump(new_value))) + return true -- allow changing + end + def.afterchange = function(player_name, old_value, new_value) + core.log("action", ("Callback %s for player=%s: old=%s, new=%s"):format( + "afterchange", player_name, dump(old_value), dump(new_value))) + end + + playersettings.register(setting, def) +end + +playersettings_register_logged("playersettings:number", { + type = "number", + shortdesc = "Example: number", + longdesc = longdesc, + default = 5, + min = -0.123, + max = 10, +}) + +playersettings_register_logged("playersettings:number_integer", { + type = "number", + integer = true, + shortdesc = "Example: number (integer)", + longdesc = longdesc, + default = 5, + min = -10, + max = 20, +}) + +playersettings_register_logged("playersettings:string", { + type = "string", + shortdesc = "Example: string", + longdesc = longdesc, + default = "", + values = "Input any value." +}) + +playersettings_register_logged("playersettings:boolean", { + type = "boolean", + shortdesc = "Example: boolean", + longdesc = longdesc, + default = true, +}) + +playersettings_register_logged("playersettings:enum", { + type = "enum", + shortdesc = "Example: enum", + longdesc = longdesc, + default = "apple", + values = { "apple", "banana", "batman" }, +}) -- cgit v1.2.3