end
-function core.splittext(text,charlimit)
+function core.wrap_text(text, charlimit)
local retval = {}
local current_idx = 1
core.rotate_node = function(itemstack, placer, pointed_thing)
core.rotate_and_place(itemstack, placer, pointed_thing,
- core.setting_getbool("creative_mode"),
+ core.settings:get_bool("creative_mode"),
{invert_wall = placer:get_player_control().sneak})
return itemstack
end
local ESCAPE_CHAR = string.char(0x1b)
--- Client-sided mods don't have access to getbool
-if core.setting_getbool and core.setting_getbool("disable_escape_sequences") then
-
- function core.get_color_escape_sequence(color)
- return ""
- end
-
- function core.get_background_escape_sequence(color)
- return ""
- end
-
- function core.colorize(color, message)
- return message
- end
-
-else
-
- function core.get_color_escape_sequence(color)
- return ESCAPE_CHAR .. "(c@" .. color .. ")"
- end
-
- function core.get_background_escape_sequence(color)
- return ESCAPE_CHAR .. "(b@" .. color .. ")"
- end
+function core.get_color_escape_sequence(color)
+ return ESCAPE_CHAR .. "(c@" .. color .. ")"
+end
- function core.colorize(color, message)
- local lines = tostring(message):split("\n", true)
- local color_code = core.get_color_escape_sequence(color)
+function core.get_background_escape_sequence(color)
+ return ESCAPE_CHAR .. "(b@" .. color .. ")"
+end
- for i, line in ipairs(lines) do
- lines[i] = color_code .. line
- end
+function core.colorize(color, message)
+ local lines = tostring(message):split("\n", true)
+ local color_code = core.get_color_escape_sequence(color)
- return table.concat(lines, "\n") .. core.get_color_escape_sequence("#ffffff")
+ for i, line in ipairs(lines) do
+ lines[i] = color_code .. line
end
+ return table.concat(lines, "\n") .. core.get_color_escape_sequence("#ffffff")
end
+
function core.strip_foreground_colors(str)
return (str:gsub(ESCAPE_CHAR .. "%(c@[^)]+%)", ""))
end
local oc = {}
for c, v in pairs(pos_off) do
- if v == 0 then
+ if nc or v == 0 then
oc[#oc + 1] = c
else
offset = v
nc = c
end
end
+
local fine_pos = {[nc] = node_pos[nc] + offset}
camera_pos.y = camera_pos.y + 1.625 + eye_offset_first.y / 10
local f = (node_pos[nc] + offset - camera_pos[nc]) / look_dir[nc]
return fine_pos
end
+function core.string_to_privs(str, delim)
+ assert(type(str) == "string")
+ delim = delim or ','
+ local privs = {}
+ for _, priv in pairs(string.split(str, delim)) do
+ privs[priv:trim()] = true
+ end
+ return privs
+end
+
+function core.privs_to_string(privs, delim)
+ assert(type(privs) == "table")
+ delim = delim or ','
+ local list = {}
+ for priv, bool in pairs(privs) do
+ if bool then
+ list[#list + 1] = priv
+ end
+ end
+ return table.concat(list, delim)
+end
+
+assert(core.string_to_privs("a,b").b == true)
+assert(core.privs_to_string({a=true,b=true}) == "a,b")