summaryrefslogtreecommitdiff
path: root/technic/helpers.lua
diff options
context:
space:
mode:
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>2016-04-01 21:00:20 -0400
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>2016-04-01 21:10:04 -0400
commit888b0ebfec8c2eff9015163549a7e47443cb8665 (patch)
tree915080159bfaa6ba6e226087c7ce0e8d5464b518 /technic/helpers.lua
parentda66780a569712c23ae4f2996cfb4608a9f9d69d (diff)
downloaddreambuilder_modpack-888b0ebfec8c2eff9015163549a7e47443cb8665.tar
dreambuilder_modpack-888b0ebfec8c2eff9015163549a7e47443cb8665.tar.gz
dreambuilder_modpack-888b0ebfec8c2eff9015163549a7e47443cb8665.tar.bz2
dreambuilder_modpack-888b0ebfec8c2eff9015163549a7e47443cb8665.tar.xz
dreambuilder_modpack-888b0ebfec8c2eff9015163549a7e47443cb8665.zip
"explode" all modpacks into their individual components
(you can't have a modpack buried inside a modpack)
Diffstat (limited to 'technic/helpers.lua')
-rw-r--r--technic/helpers.lua67
1 files changed, 67 insertions, 0 deletions
diff --git a/technic/helpers.lua b/technic/helpers.lua
new file mode 100644
index 0000000..e8efcf3
--- /dev/null
+++ b/technic/helpers.lua
@@ -0,0 +1,67 @@
+--load config
+local sepchar = nil
+do
+ local sepcode = technic.config:get("thousand_separator")
+ --default is SI style
+ sepchar = sepcode and string.char(sepcode) or " "
+ baresepchar = sepchar
+ --handling if sepchar is magic...
+ for magic in string.gmatch("().%+-*?[^$", ".") do
+ if sepchar == magic then sepchar = "%"..sepchar end
+ end
+end
+
+-- Only changes name, keeps other params
+function technic.swap_node(pos, name)
+ local node = minetest.get_node(pos)
+ if node.name ~= name then
+ node.name = name
+ minetest.swap_node(pos, node)
+ end
+ return node.name
+end
+
+-- Fully charge RE chargeable item.
+-- Must be defined early to reference in item definitions.
+function technic.refill_RE_charge(stack)
+ local max_charge = technic.power_tools[stack:get_name()]
+ if not max_charge then return stack end
+ technic.set_RE_wear(stack, max_charge, max_charge)
+ local meta = minetest.deserialize(stack:get_metadata()) or {}
+ meta.charge = max_charge
+ stack:set_metadata(minetest.serialize(meta))
+ return stack
+end
+
+local function resolve_name(function_name)
+ local a = _G
+ for key in string.gmatch(function_name, "([^%.]+)(%.?)") do
+ if a[key] then
+ a = a[key]
+ else
+ return nil
+ end
+ end
+ return a
+end
+
+function technic.function_exists(function_name)
+ return type(resolve_name(function_name)) == 'function'
+end
+
+-- if the node is loaded, returns it. If it isn't loaded, load it and return nil.
+function technic.get_or_load_node(pos)
+ local node_or_nil = minetest.get_node_or_nil(pos)
+ if node_or_nil then return node_or_nil end
+ local vm = VoxelManip()
+ local MinEdge, MaxEdge = vm:read_from_map(pos, pos)
+ return nil
+end
+
+function technic.prettynum(num)
+ local str, k = tostring(num), nil
+ repeat
+ str, k = str:gsub("^(-?%d+)(%d%d%d)", "%1"..sepchar.."%2")
+ until k == 0
+ return str
+end \ No newline at end of file