From aade1489d15e0c4cb4116fbafb823e43f4a720bd Mon Sep 17 00:00:00 2001 From: Jeija Date: Wed, 15 Aug 2012 10:55:36 +0200 Subject: [PATCH] Move Battery to mesecons-extension-battery --- .gitignore | 1 + README | 8 ++ mesecons_battery/depends.txt | 1 + mesecons_battery/init.lua | 149 +++++++++++++++++++++++++++++++++++ modpack.txt | 1 + 5 files changed, 160 insertions(+) create mode 100644 .gitignore create mode 100644 README create mode 100644 mesecons_battery/depends.txt create mode 100644 mesecons_battery/init.lua create mode 100644 modpack.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b25c15b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*~ diff --git a/README b/README new file mode 100644 index 0000000..1440643 --- /dev/null +++ b/README @@ -0,0 +1,8 @@ +-- |\ /| ____ ____ ____ _____ ____ _____ +-- | \ / | | | | | | | |\ | | +-- | \/ | |___ ____ |___ | | | | \ | |____ +-- | | | | | | | | | \ | | +-- | | |___ ____| |___ |____ |____| | \| ____| +-- by Jeija and contributors + +Battery extension. diff --git a/mesecons_battery/depends.txt b/mesecons_battery/depends.txt new file mode 100644 index 0000000..acaa924 --- /dev/null +++ b/mesecons_battery/depends.txt @@ -0,0 +1 @@ +mesecons diff --git a/mesecons_battery/init.lua b/mesecons_battery/init.lua new file mode 100644 index 0000000..1218778 --- /dev/null +++ b/mesecons_battery/init.lua @@ -0,0 +1,149 @@ +for i = 1, 5 do + minetest.register_node("mesecons_battery:battery_charging_"..i, { + drawtype = "nodebox", + tiles = {"jeija_battery_charging.png"}, + paramtype = "light", + is_ground_content = true, + walkable = true, + node_box = { + type = "fixed", + fixed = { + {-0.499, -0.499, -0.499, -0.4, 0.499, 0.499}, + { 0.4, -0.499, -0.499, 0.499, 0.499, 0.499}, + {-0.499, -0.499, -0.499, 0.499, 0.499, -0.4 }, + {-0.499, -0.499, 0.4, 0.499, 0.499, 0.499 }, + {-0.4 , -0.5 , -0.4 , 0.4 , 1*(i/5)-0.5, 0.4}} + }, + + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + }, + groups = {dig_immediate=2, mesecon = 2}, + description="Battery", + }) +end + +for i = 1, 5 do + minetest.register_node("mesecons_battery:battery_discharging_"..i, { + drawtype = "nodebox", + tiles = {"jeija_battery_discharging.png"}, + paramtype = "light", + is_ground_content = true, + walkable = true, + node_box = { + type = "fixed", + fixed = { + {-0.499, -0.499, -0.499, -0.4, 0.499, 0.499}, + { 0.4, -0.499, -0.499, 0.499, 0.499, 0.499}, + {-0.499, -0.499, -0.499, 0.499, 0.499, -0.4 }, + {-0.499, -0.499, 0.4, 0.499, 0.499, 0.499 }, + {-0.4 , -0.5 , -0.4 , 0.4 , 1*(i/5)-0.5, 0.4}} + }, + + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + }, + groups = {dig_immediate=2, not_in_creative_inventory=1, mesecon = 2}, + description="Battery", + }) + mesecon:add_receptor_node("mesecons_battery:battery_discharging_"..i) + mesecon:register_effector("mesecons_battery:battery_discharging_"..i, "mesecons_battery:battery_charging_"..i) +end + +minetest.register_on_placenode(function (pos, newnode, placer) + if string.find(newnode.name, "mesecons_battery:battery") then + meta = minetest.env:get_meta(pos) + meta:set_int("batterystate", tonumber(string.sub(newnode.name, string.len(newnode.name)))*20-19) + meta:set_int("charging", 0) + end +end) + +minetest.register_on_punchnode(function(pos, node, puncher) + if string.find(node.name, "mesecons_battery:battery_charging") then + local meta = minetest.env:get_meta(pos); + local batterystate = meta:get_int("batterystate") + local charging = meta:get_int("charging") + minetest.env:remove_node(pos) + minetest.env:place_node(pos, {name=string.gsub(node.name, "charging", "discharging")}) + mesecon:receptor_on(pos) + meta:set_int("batterystate", batterystate) + meta:set_int("charging", charging) + end + if string.find(node.name, "mesecons_battery:battery_discharging") then + local meta = minetest.env:get_meta(pos); + local batterystate = meta:get_int("batterystate") + local charging = meta:get_int("charging") + minetest.env:remove_node(pos) + minetest.env:place_node(pos, {name=string.gsub(node.name, "discharging", "charging")}) + mesecon:receptor_off(pos) + meta:set_int("batterystate", batterystate) + meta:set_int("charging", charging) + end +end) + +minetest.register_abm({ +nodenames = {"mesecons_battery:battery_charging_1", "mesecons_battery:battery_charging_2", "mesecons_battery:battery_charging_3", "mesecons_battery:battery_charging_4", "mesecons_battery:battery_charging_5"}, + interval = 1, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local meta = minetest.env:get_meta(pos); + if meta:get_int("charging") == 1 then + local batterystate = meta:get_int("batterystate") + local charging = meta:get_int("charging") + local name = node.name; + if batterystate < 100 then --change battery charging state + batterystate = batterystate + 1 + else + node.name=string.gsub(node.name, "charging", "discharging") + mesecon:receptor_on(pos) + end + + if string.find(node.name, tostring(math.ceil(batterystate/20))) == nil then + node.name = string.gsub(node.name, tostring(math.ceil(batterystate/20)-1), tostring(math.ceil(batterystate/20))) --change node for new nodebox model + end + minetest.env:add_node(pos, node) + meta:set_int("batterystate", batterystate) + meta:set_int("charging", charging) + end + end, +}) + +minetest.register_abm({ +nodenames = {"mesecons_battery:battery_discharging_1", "mesecons_battery:battery_discharging_2", "mesecons_battery:battery_discharging_3", "mesecons_battery:battery_discharging_4", "mesecons_battery:battery_discharging_5"}, + interval = 1, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local meta = minetest.env:get_meta(pos); + local batterystate = meta:get_int("batterystate") + local charging = meta:get_int("charging") + local name = node.name; + if batterystate > 1 then --change battery charging state + batterystate = batterystate - 1 + else + node.name=string.gsub(node.name, "discharging", "charging") + mesecon:receptor_off(pos) + end + + if string.find(node.name, tostring(math.ceil(batterystate/20))) == nil then + node.name = string.gsub(node.name, tostring(math.ceil(batterystate/20)+1), tostring(math.ceil(batterystate/20))) --change node for new nodebox model + end + minetest.env:add_node(pos, node) + meta:set_int("batterystate", batterystate) + meta:set_int("charging", charging) + end, +}) + + +mesecon:register_on_signal_on(function(pos, node) + if string.find(node.name, "mesecons_battery:battery") then + minetest.env:get_meta(pos):set_int("charging", 1) + end +end) + +mesecon:register_on_signal_off(function(pos, node) + if string.find(node.name, "mesecons_battery:battery") then + minetest.env:get_meta(pos):set_int("charging", 0) + end +end) diff --git a/modpack.txt b/modpack.txt new file mode 100644 index 0000000..33d91f5 --- /dev/null +++ b/modpack.txt @@ -0,0 +1 @@ +The presence of this file indicates that the current folder is a modpack. \ No newline at end of file