generated from your-land/yl_template
Replaces all mentions of template with yl_survey_fs and throws out unnecessary files
This commit is contained in:
parent
ffe26eeb98
commit
cf6ec1c3cd
@ -2,7 +2,7 @@ unused_args = false
|
||||
allow_defined_top = false
|
||||
|
||||
globals = {
|
||||
"yl_template"
|
||||
"yl_survey_fs"
|
||||
}
|
||||
|
||||
read_globals = {
|
||||
@ -19,4 +19,7 @@ read_globals = {
|
||||
|
||||
-- MTG
|
||||
"default", "sfinv", "creative",
|
||||
|
||||
-- Dependecies
|
||||
"yl_survey"
|
||||
}
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
|
||||
# License
|
||||
|
||||
Copyright (c) 2024 Developername, Styxcolor
|
||||
Copyright (c) 2024 AliasAlreadyTaken, Styxcolor
|
||||
|
||||
Code:
|
||||
|
||||
* [MIT](https://gitea.your-land.de/your-land/yl_template/src/LICENSE-MIT) Developername
|
||||
* [MIT](https://gitea.your-land.de/your-land/yl_survey_fs/src/LICENSE-MIT) AliasAlreadyTaken
|
||||
|
||||
Media:
|
||||
|
||||
* screenshot.png [CC0](https://gitea.your-land.de/your-land/yl_template/src/LICENSE-CC0) Styxcolor
|
||||
* screenshot.png [CC0](https://gitea.your-land.de/your-land/yl_survey_fs/src/LICENSE-CC0) Styxcolor
|
||||
|
||||
41
README.md
41
README.md
@ -1,56 +1,59 @@
|
||||
|
||||
# yl_template
|
||||
# yl_survey_fs
|
||||
|
||||
## Purpose
|
||||
|
||||
This mod is not meant to bring functionality by itself, but to serve as a template you can base your mod on. Remove the components you do not want and expand on those you want.
|
||||
This mod contains functions to deliver survey formspecs to participants and store their opinion.
|
||||
|
||||
## Download
|
||||
|
||||
Get it from https://gitea.your-land.de/your-land/yl_template
|
||||
Get it from https://gitea.your-land.de/your-land/yl_survey_fs
|
||||
|
||||
## Dependencies
|
||||
|
||||
`Delete the Dependency section if your mod has no dependencies`
|
||||
|
||||
See [mod.conf](mod.conf)
|
||||
|
||||
* [modname_of_dependency](https://gitea.your-land.de/link/to/git/of/dependency)
|
||||
* [yl_survey](https://gitea.your-land.de/your-land/yl_survey)
|
||||
|
||||
## Installation
|
||||
|
||||
1. Copy the "yl_template" folder to your mod directory.
|
||||
1. Copy the "yl_survey_fs" folder to your mod directory.
|
||||
2. Make sure the [dependencies](#dependencies) are satisfied, if any.
|
||||
3. Enable the mod in your world.mt file.
|
||||
|
||||
## Configuration
|
||||
|
||||
```
|
||||
yl_template.debug = false
|
||||
yl_survey_fs.debug = false
|
||||
```
|
||||
Set to true to enable debug mode
|
||||
|
||||
```
|
||||
yl_template.save_path
|
||||
```
|
||||
Set this to where in the worldfolder you want the JSON files stored.
|
||||
|
||||
## Usage
|
||||
|
||||
This mod targets `[servers|singleplayer|...]`, but should work in `[[servers|singleplayer|...]`, too. It comes with no direct content but exposes functions you can use in your mod.
|
||||
This mod targets servers, but should work in singleplayer, too. It comes with no direct content but exposes functions you can use in your mod.
|
||||
|
||||
### Chatcommands
|
||||
|
||||
|
||||
### Modmakers
|
||||
|
||||
Use the following public functions to `[achieve your goals]`
|
||||
Use the following public functions to deliver the survey formspecs
|
||||
|
||||
```
|
||||
yl_survey_fs.deliver_survey(playername, survey_id)
|
||||
```
|
||||
|
||||
Returns `true` if the survey could be sent to the player, `false, "errormessage"` if not.
|
||||
|
||||
## Limitations
|
||||
|
||||
* Only "respond to a survey" included
|
||||
* Creation of surveys in the next iteration
|
||||
|
||||
## Alternatives
|
||||
## Supported versions
|
||||
|
||||
If you use yl_template, but something is wrong, please [file a bug](https://gitea.your-land.de/your-land/yl_template/issues/new). PRs also welcome.
|
||||
If you use yl_survey_fs, but something is wrong, please [file a bug](https://gitea.your-land.de/your-land/yl_survey_fs/issues/new). PRs also welcome.
|
||||
|
||||
There is no reason to believe it doesn't work anywhere, but you never know.
|
||||
|
||||
@ -66,11 +69,9 @@ Mods that depend on it will cease to work, if the mod is removed without proper
|
||||
|
||||
## License
|
||||
|
||||
[Shorthand of your chosen license: MIT, LGPLv3+, GPLv3+, AGPL, ...]. Please choose one of the major license that is compatible with as much of the MT universe over some obscure and incompatible license. If you use the screenshot.png, keep Styxcolor in there because she made that screenshot.png, if you add your own, replace the line with whoever made it. Example for MIT and CC0:
|
||||
See [LICENSE.md](https://gitea.your-land.de/your-land/yl_survey_fs/src/LICENSE.md)
|
||||
|
||||
See [LICENSE.md](https://gitea.your-land.de/your-land/yl_template/src/LICENSE.md)
|
||||
|
||||
* Code MIT Developername
|
||||
* Code MIT AliasAlreadyTaken
|
||||
* Screenshot CC0 Styxcolor
|
||||
|
||||
## Thank you
|
||||
|
||||
14
api.lua
14
api.lua
@ -4,31 +4,31 @@
|
||||
-- they expect as parameters and what types and values they return.
|
||||
-- If you ever change those, consider adding backwards compatibility,
|
||||
-- since other mods may rely on them.
|
||||
function yl_template.some_api_call(target, message, color)
|
||||
function yl_survey_fs.some_api_call(target, message, color)
|
||||
|
||||
if (type(target) ~= "string") then
|
||||
return false, yl_template.t("error_not_a_string", "target")
|
||||
return false, yl_survey_fs.t("error_not_a_string", "target")
|
||||
end
|
||||
if (minetest.get_player_by_name(target) == nil) then
|
||||
return false, yl_template.t("error_player_not_online", target)
|
||||
return false, yl_survey_fs.t("error_player_not_online", target)
|
||||
end
|
||||
|
||||
if (type(message) ~= "string") then
|
||||
return false, yl_template.t("error_not_a_string", "message")
|
||||
return false, yl_survey_fs.t("error_not_a_string", "message")
|
||||
end
|
||||
|
||||
-- is_color(color) does not exist, you need to implement it if you want to use it
|
||||
if (is_color(color) == false) then
|
||||
return false, yl_template.t("error_not_a_colorspec", "color")
|
||||
return false, yl_survey_fs.t("error_not_a_colorspec", "color")
|
||||
end
|
||||
|
||||
if (minetest.colorize == nil) then
|
||||
return false, yl_template.t("error_function_not_available",
|
||||
return false, yl_survey_fs.t("error_function_not_available",
|
||||
"minetest.colorize")
|
||||
end
|
||||
|
||||
local message_with_color = minetest.colorize(color, message)
|
||||
minetest.chat_send_player(target, message_with_color)
|
||||
|
||||
return true, yl_template.t("api_sent_x_to_y", message_with_color, target)
|
||||
return true, yl_survey_fs.t("api_sent_x_to_y", message_with_color, target)
|
||||
end
|
||||
|
||||
@ -1,19 +0,0 @@
|
||||
local chatcommand_cmd = "admin_example"
|
||||
local chatcommand_definition = {
|
||||
params = yl_template.t("chatcommand_admin_parameters"), -- Short parameter description
|
||||
description = yl_template.t("chatcommand_admin_description"), -- Full description
|
||||
privs = {[yl_template.settings.admin_priv] = true}, -- Require the "privs" privilege to run
|
||||
func = function(name, param)
|
||||
local success = true
|
||||
if success then
|
||||
return true, yl_template.t("chatcommand_admin_success_message")
|
||||
else
|
||||
return false, yl_template.t("chatcommand_admin_fail_message")
|
||||
end
|
||||
end
|
||||
-- Called when command is run. Returns boolean success and text output.
|
||||
-- Special case: The help message is shown to the player if `func`
|
||||
-- returns false without a text output.
|
||||
}
|
||||
|
||||
minetest.register_chatcommand(chatcommand_cmd, chatcommand_definition)
|
||||
@ -1,19 +0,0 @@
|
||||
local chatcommand_cmd = "player_example"
|
||||
local chatcommand_definition = {
|
||||
params = yl_template.t("chatcommand_player_parameters"), -- Short parameter description
|
||||
description = yl_template.t("chatcommand_player_parameters"), -- Full description
|
||||
privs = {privs = true}, -- Require the "privs" privilege to run
|
||||
func = function(name, param)
|
||||
local success = true
|
||||
if success then
|
||||
return true, yl_template.t("chatcommand_player_parameters")
|
||||
else
|
||||
return false, yl_template.t("chatcommand_player_parameters")
|
||||
end
|
||||
end
|
||||
-- Called when command is run. Returns boolean success and text output.
|
||||
-- Special case: The help message is shown to the player if `func`
|
||||
-- returns false without a text output.
|
||||
}
|
||||
|
||||
minetest.register_chatcommand(chatcommand_cmd, chatcommand_definition)
|
||||
@ -1,2 +0,0 @@
|
||||
dofile(yl_template.modpath .. "chatcommand_admin.lua")
|
||||
dofile(yl_template.modpath .. "chatcommand_player.lua")
|
||||
10
config.lua
10
config.lua
@ -1,12 +1,12 @@
|
||||
|
||||
-- Setting a configuration, switch the order in which the settings shall take precedence. First valid one taken.
|
||||
|
||||
yl_template.settings = {}
|
||||
yl_survey_fs.settings = {}
|
||||
|
||||
yl_template.settings.debug = minetest.settings:get_bool("yl_template.debug", false)
|
||||
yl_survey_fs.settings.debug = minetest.settings:get_bool("yl_survey_fs.debug", false)
|
||||
|
||||
yl_template.settings.external_value = "mod_default" or minetest.settings:get("yl_template.external_value") or "default"
|
||||
yl_survey_fs.settings.external_value = "mod_default" or minetest.settings:get("yl_survey_fs.external_value") or "default"
|
||||
|
||||
yl_template.settings.save_path = "yl_template" or minetest.settings:get("yl_template.save_path") or "default"
|
||||
yl_survey_fs.settings.save_path = "yl_survey_fs" or minetest.settings:get("yl_survey_fs.save_path") or "default"
|
||||
|
||||
yl_template.settings.admin_priv = "admin_priv" or minetest.settings:get("yl_template.admin_priv") or "server"
|
||||
yl_survey_fs.settings.admin_priv = "admin_priv" or minetest.settings:get("yl_survey_fs.admin_priv") or "server"
|
||||
|
||||
@ -1,13 +0,0 @@
|
||||
local timer = 0
|
||||
|
||||
local gs = function(dtime)
|
||||
timer = timer + dtime
|
||||
if timer <= yl_template.config.interval then
|
||||
return
|
||||
end
|
||||
timer = 0
|
||||
|
||||
-- do stuff
|
||||
end
|
||||
|
||||
minetest.register_globalstep(gs)
|
||||
@ -1,7 +1,7 @@
|
||||
yl_template.information = {}
|
||||
yl_template.information.version = "0.0.1"
|
||||
yl_template.information.author = "AliasAlreadyTaken"
|
||||
yl_template.information.license = "MIT"
|
||||
yl_template.information.name = "yl_template" -- Name of the mod
|
||||
yl_template.information.source = "https://gitea.your-land.de/your-land/yl_template"
|
||||
yl_template.information.additional = yl_template.t("information_additional")
|
||||
yl_survey_fs.information = {}
|
||||
yl_survey_fs.information.version = "0.0.1"
|
||||
yl_survey_fs.information.author = "AliasAlreadyTaken"
|
||||
yl_survey_fs.information.license = "MIT"
|
||||
yl_survey_fs.information.name = "yl_survey_fs"
|
||||
yl_survey_fs.information.source = "https://gitea.your-land.de/your-land/yl_survey_fs"
|
||||
yl_survey_fs.information.additional = yl_survey_fs.t("information_additional")
|
||||
|
||||
40
init.lua
40
init.lua
@ -5,27 +5,27 @@
|
||||
-- Changelog
|
||||
|
||||
local mod_start_time = minetest.get_us_time()
|
||||
minetest.log("action", "[MOD] yl_template loading")
|
||||
minetest.log("action", "[MOD] yl_survey_fs loading")
|
||||
|
||||
yl_template = {}
|
||||
yl_template.error = {}
|
||||
yl_template.modname = minetest.get_current_modname()
|
||||
yl_template.modstorage = minetest.get_mod_storage()
|
||||
yl_template.modpath = minetest.get_modpath("yl_template") .. DIR_DELIM
|
||||
yl_template.worldpath = minetest.get_worldpath() .. DIR_DELIM
|
||||
yl_survey_fs = {}
|
||||
yl_survey_fs.error = {}
|
||||
yl_survey_fs.modname = minetest.get_current_modname()
|
||||
yl_survey_fs.modstorage = minetest.get_mod_storage()
|
||||
yl_survey_fs.modpath = minetest.get_modpath("yl_survey_fs") .. DIR_DELIM
|
||||
yl_survey_fs.worldpath = minetest.get_worldpath() .. DIR_DELIM
|
||||
|
||||
dofile(yl_template.modpath .. "texts.lua")
|
||||
dofile(yl_template.modpath .. "information.lua")
|
||||
dofile(yl_template.modpath .. "config.lua")
|
||||
dofile(yl_template.modpath .. "setup.lua")
|
||||
dofile(yl_template.modpath .. "privs.lua")
|
||||
dofile(yl_template.modpath .. "internal.lua")
|
||||
dofile(yl_template.modpath .. "api.lua")
|
||||
dofile(yl_template.modpath .. "initialize.lua")
|
||||
dofile(yl_template.modpath .. "distinct_feature.lua")
|
||||
dofile(yl_template.modpath .. "overwrite_feature.lua")
|
||||
dofile(yl_template.modpath .. "globalsteps.lua")
|
||||
dofile(yl_template.modpath .. "chatcommands.lua")
|
||||
dofile(yl_survey_fs.modpath .. "texts.lua")
|
||||
dofile(yl_survey_fs.modpath .. "information.lua")
|
||||
dofile(yl_survey_fs.modpath .. "config.lua")
|
||||
-- dofile(yl_survey_fs.modpath .. "setup.lua")
|
||||
-- dofile(yl_survey_fs.modpath .. "privs.lua")
|
||||
dofile(yl_survey_fs.modpath .. "internal.lua")
|
||||
dofile(yl_survey_fs.modpath .. "api.lua")
|
||||
dofile(yl_survey_fs.modpath .. "initialize.lua")
|
||||
-- dofile(yl_survey_fs.modpath .. "distinct_feature.lua")
|
||||
-- dofile(yl_survey_fs.modpath .. "overwrite_feature.lua")
|
||||
-- dofile(yl_survey_fs.modpath .. "globalsteps.lua")
|
||||
-- dofile(yl_survey_fs.modpath .. "chatcommands.lua")
|
||||
|
||||
local mod_end_time = (minetest.get_us_time() - mod_start_time) / 1000000
|
||||
minetest.log("action", "[MOD] yl_template loaded in [" .. mod_end_time .. "s]")
|
||||
minetest.log("action", "[MOD] yl_survey_fs loaded in [" .. mod_end_time .. "s]")
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
-- Use this file to initialize variables once after server start and check everything is in place
|
||||
|
||||
local function run_each_serverstart()
|
||||
yl_template.data = {}
|
||||
--minetest.on_mods_loaded(0.0, yl_template.on_mods_loaded)
|
||||
--minetest.after(0.0, yl_template.after)
|
||||
yl_survey_fs.data = {}
|
||||
--minetest.on_mods_loaded(0.0, yl_survey_fs.on_mods_loaded)
|
||||
--minetest.after(0.0, yl_survey_fs.after)
|
||||
end
|
||||
|
||||
run_each_serverstart()
|
||||
|
||||
51
internal.lua
51
internal.lua
@ -1,54 +1,9 @@
|
||||
-- The functions and variables in this file are only for use in the mod itself.
|
||||
-- Those that do real work should be local and wrapped in public functions
|
||||
local function log(text)
|
||||
local logmessage = yl_template.t("log_prefix", yl_template.modname, text)
|
||||
if yl_template.settings.debug then minetest.log("action", logmessage) end
|
||||
local logmessage = yl_survey_fs.t("log_prefix", yl_survey_fs.modname, text)
|
||||
if yl_survey_fs.settings.debug then minetest.log("action", logmessage) end
|
||||
return logmessage
|
||||
end
|
||||
|
||||
function yl_template.log(text) return log(text) end
|
||||
|
||||
local function get_savepath()
|
||||
local savepath = yl_template.worldpath .. yl_template.settings.save_path
|
||||
log(yl_template.t("log_prefix", dump(savepath)))
|
||||
return savepath
|
||||
end
|
||||
|
||||
local function get_filepath(filename)
|
||||
local path_to_file = get_savepath() .. DIR_DELIM .. filename .. ".json"
|
||||
log(yl_template.t("get_filepath", dump(filename), dump(path_to_file)))
|
||||
return path_to_file
|
||||
end
|
||||
|
||||
local function save_json(filename, content)
|
||||
if type(filename) ~= "string" or type(content) ~= "table" then
|
||||
return false
|
||||
end
|
||||
local savepath = get_filepath(filename)
|
||||
local savecontent = minetest.write_json(content)
|
||||
return minetest.safe_file_write(savepath, savecontent)
|
||||
end
|
||||
|
||||
local function load_json(path)
|
||||
local file = io.open(path, "r")
|
||||
if not file then
|
||||
return false, yl_template.t("error_cannot_open_file", dump(path))
|
||||
end
|
||||
|
||||
local content = file:read("*all")
|
||||
file:close()
|
||||
|
||||
if not content then
|
||||
return false, yl_template.t("error_cannot_read_file", dump(path))
|
||||
end
|
||||
|
||||
return true, minetest.parse_json(content)
|
||||
end
|
||||
|
||||
-- Public functions wrap the private ones, so they can be exchanged easily
|
||||
|
||||
function yl_template.load(filename, ...) return load_json(filename, ...) end
|
||||
|
||||
function yl_template.save(filename, content, ...)
|
||||
return save_json(filename, content, ...)
|
||||
end
|
||||
function yl_survey_fs.log(text) return log(text) end
|
||||
|
||||
9
mod.conf
9
mod.conf
@ -1,6 +1,5 @@
|
||||
name = yl_template
|
||||
description = A template with best practices
|
||||
depends = default
|
||||
optional_depends = moreblocks
|
||||
name = yl_survey_fs
|
||||
description = Uses formspecs for survey creation and responses
|
||||
depends = yl_survey
|
||||
author = AliasAlreadyTaken
|
||||
title = Template
|
||||
title = Survey Formspecs
|
||||
@ -1,76 +0,0 @@
|
||||
local priv_name = "example"
|
||||
local priv_definition = {
|
||||
description = yl_template.t("privs_example_description"),
|
||||
-- Privilege description
|
||||
|
||||
give_to_singleplayer = false,
|
||||
-- Whether to grant the privilege to singleplayer.
|
||||
|
||||
give_to_admin = true,
|
||||
-- Whether to grant the privilege to the server admin.
|
||||
-- Uses value of 'give_to_singleplayer' by default.
|
||||
|
||||
on_grant = function(name, granter_name)
|
||||
-- logging
|
||||
if (type(granter_name) ~= "string") then
|
||||
local errormessage = yl_template.t("error_name_not_found",
|
||||
dump(granter_name))
|
||||
yl_template.log(errormessage)
|
||||
return false, errormessage
|
||||
end
|
||||
if not name then
|
||||
local errormessage = yl_template.t("error_name_not_found",
|
||||
dump(name))
|
||||
yl_template.log(errormessage)
|
||||
return false, errormessage
|
||||
end
|
||||
if not priv_name then
|
||||
local errormessage = yl_template.t("error_priv_not_found",
|
||||
dump(priv_name))
|
||||
yl_template.log(errormessage)
|
||||
return false, errormessage
|
||||
end
|
||||
local text = yl_template.t("privs_example_grant_logmessage",
|
||||
dump(granter_name), dump(priv_name),
|
||||
dump(name))
|
||||
yl_template.log(text)
|
||||
end,
|
||||
-- Called when given to player 'name' by 'granter_name'.
|
||||
-- 'granter_name' will be nil if the priv was granted by a mod.
|
||||
|
||||
on_revoke = function(name, revoker_name)
|
||||
-- logging
|
||||
if (type(revoker_name) ~= "string") then
|
||||
local errormessage = yl_template.t("error_name_not_found",
|
||||
dump(revoker_name))
|
||||
yl_template.log(errormessage)
|
||||
return false, errormessage
|
||||
end
|
||||
if not name then
|
||||
local errormessage = yl_template.t("error_name_not_found",
|
||||
dump(name))
|
||||
yl_template.log(errormessage)
|
||||
return false, errormessage
|
||||
end
|
||||
if not priv_name then
|
||||
local errormessage = yl_template.t("error_priv_not_found",
|
||||
dump(priv_name))
|
||||
yl_template.log(errormessage)
|
||||
return false, errormessage
|
||||
end
|
||||
local text = yl_template.t("privs_example_revoke_logmessage",
|
||||
dump(revoker_name), dump(priv_name),
|
||||
dump(name))
|
||||
yl_template.log(text)
|
||||
end
|
||||
-- Called when taken from player 'name' by 'revoker_name'.
|
||||
-- 'revoker_name' will be nil if the priv was revoked by a mod.
|
||||
|
||||
-- Note that the above two callbacks will be called twice if a player is
|
||||
-- responsible, once with the player name, and then with a nil player
|
||||
-- name.
|
||||
-- Return true in the above callbacks to stop register_on_priv_grant or
|
||||
-- revoke being called.
|
||||
}
|
||||
|
||||
minetest.register_privilege(priv_name, priv_definition)
|
||||
BIN
screenshot.png
BIN
screenshot.png
Binary file not shown.
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 1020 KiB |
@ -3,9 +3,9 @@
|
||||
# Debug
|
||||
# Set this to true to enable debug mode, it will output some more values to log
|
||||
# Optional, default is false
|
||||
yl_template.debug (Debug mode) bool false
|
||||
yl_survey_fs.debug (Debug mode) bool false
|
||||
|
||||
# First line: Name the settings
|
||||
# Second line: Say what it does, how to use it, what it changes
|
||||
# Third line: Is it optional? What's the default value? Does it expect a certain set of values?
|
||||
yl_template.external_value (Description of the setting) string "default_value"
|
||||
yl_survey_fs.external_value (Description of the setting) string "default_value"
|
||||
|
||||
19
setup.lua
19
setup.lua
@ -1,19 +0,0 @@
|
||||
-- Use this file to set up folder and variables once after installation of the mod
|
||||
-- Afterwards you could disable this part of the code or set a variable that tells
|
||||
-- this code not to run again
|
||||
|
||||
local mkdir = minetest.mkdir
|
||||
local save_path = yl_template.settings.save_path
|
||||
|
||||
local function run_once()
|
||||
local path = yl_template.worldpath .. DIR_DELIM .. save_path
|
||||
local file = io.open(path, "r")
|
||||
if not file then
|
||||
mkdir(path)
|
||||
else
|
||||
file:close()
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
run_once()
|
||||
@ -1,8 +1,8 @@
|
||||
local S = minetest.get_translator(yl_template.modname)
|
||||
local S = minetest.get_translator(yl_survey_fs.modname)
|
||||
|
||||
local texts = {}
|
||||
|
||||
function yl_template.t(key, ...) return S(texts[key], ...) or "" end
|
||||
function yl_survey_fs.t(key, ...) return S(texts[key], ...) or "" end
|
||||
|
||||
-- Fixed texts
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user