summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcheapie <no-email-for-you@example.com>2016-09-04 18:43:52 -0500
committercheapie <no-email-for-you@example.com>2016-09-04 18:45:45 -0500
commit8342c18f07fb0099016d851245853deadbd04378 (patch)
treed83bddb600802519c99edb7d4cb72217d6913a60
downloadcampfire_redo-8342c18f07fb0099016d851245853deadbd04378.tar
campfire_redo-8342c18f07fb0099016d851245853deadbd04378.tar.gz
campfire_redo-8342c18f07fb0099016d851245853deadbd04378.tar.bz2
campfire_redo-8342c18f07fb0099016d851245853deadbd04378.tar.xz
campfire_redo-8342c18f07fb0099016d851245853deadbd04378.zip
Add contentHEADmaster
-rw-r--r--README19
-rw-r--r--depends.txt1
-rw-r--r--init.lua112
-rw-r--r--textures/campfire_redo_campfire.pngbin0 -> 224 bytes
-rw-r--r--textures/campfire_redo_campfire_active.pngbin0 -> 1164 bytes
5 files changed, 132 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..7b9a353
--- /dev/null
+++ b/README
@@ -0,0 +1,19 @@
+campfire_redo mod for Minetest
+==============================
+
+This is a remake of the old broken "campfire" mod by an unknown author.
+
+Use:
+Place one, add some fuel, and watch it burn. Add more fuel as necessary.
+
+Crafting:
+{
+ output = "campfire_redo:campfire 1",
+ recipe = {
+ {"","default:stick",""},
+ {"default:stick","","default:stick"}
+ }
+}
+
+Code License: Unlicense, see https://unlicense.org/ for more information.
+Texture License: Based on default_stick.png and fire_basic_flame_animated.png from minetest_game (https://github.com/minetest/minetest_game), CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/).
diff --git a/depends.txt b/depends.txt
new file mode 100644
index 0000000..4ad96d5
--- /dev/null
+++ b/depends.txt
@@ -0,0 +1 @@
+default
diff --git a/init.lua b/init.lua
new file mode 100644
index 0000000..0fc615a
--- /dev/null
+++ b/init.lua
@@ -0,0 +1,112 @@
+local function campfire_timer(pos)
+ local node = minetest.get_node(pos)
+ local timer = minetest.get_node_timer(pos)
+ if node.name ~= "campfire_redo:campfire" and node.name ~= "campfire_redo:campfire_active" then
+ timer:stop()
+ return false
+ end
+ local meta = minetest.get_meta(pos)
+ local time_remain = meta:get_int("time_remain")
+ local time_total = meta:get_int("time_total")
+ if time_remain <= 0 then
+ local inv = meta:get_inventory()
+ local fuel_list = inv:get_list("fuel")
+ local fuel,leftover = minetest.get_craft_result({method = "fuel",width = 1,items = fuel_list})
+ if fuel.time > 0 then
+ time_total = fuel.time
+ meta:set_int("time_total",time_total)
+ time_remain = time_total
+ inv:set_stack("fuel",1,leftover.items[1])
+ end
+ end
+ if time_remain > 0 then
+ meta:set_string("infotext","")
+ meta:set_int("time_remain",time_remain - 1)
+ if node.name == "campfire_redo:campfire" then
+ node.name = "campfire_redo:campfire_active"
+ minetest.swap_node(pos,node)
+ end
+ local part = (time_remain / time_total) * 100
+ local fs = "size[8,9]"..
+ "list[context;fuel;3.5,2;1,1;]"..
+ "list[current_player;main;0,5;8,4;]"..
+ "listring[]"..
+ "image[3.5,1;1,1;default_furnace_fire_bg.png^[lowpart:"..part..":default_furnace_fire_fg.png]"
+ meta:set_string("formspec",fs)
+ else
+ meta:set_string("infotext","Put more wood on the fire!")
+ meta:set_int("time_remain",0)
+ if node.name == "campfire_redo:campfire_active" then
+ node.name = "campfire_redo:campfire"
+ minetest.swap_node(pos,node)
+ timer:stop()
+ local fs = "size[8,9]"..
+ "list[context;fuel;3.5,2;1,1;]"..
+ "list[current_player;main;0,5;8,4;]"..
+ "listring[]"..
+ "image[3.5,1;1,1;default_furnace_fire_bg.png]"
+ meta:set_string("formspec",fs)
+ return false
+ end
+ end
+ return true
+end
+
+minetest.register_node("campfire_redo:campfire", {
+ description = "Campfire",
+ drawtype = "plantlike",
+ tiles = {"campfire_redo_campfire.png"},
+ walkable = false,
+ paramtype = "light",
+ sunlight_propogates = true,
+ groups = {oddly_breakable_by_hand = 1},
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext","Put some wood on the fire!")
+ local fs = "size[8,9]"..
+ "list[context;fuel;3.5,2;1,1;]"..
+ "list[current_player;main;0,5;8,4;]"..
+ "listring[]"..
+ "image[3.5,1;1,1;default_furnace_fire_bg.png]"
+ meta:set_string("formspec",fs)
+ local inv = meta:get_inventory()
+ inv:set_size("fuel",1)
+ end,
+ on_metadata_inventory_put = function(pos)
+ minetest.get_node_timer(pos):start(1)
+ end,
+ on_timer = campfire_timer,
+ can_dig = function(pos)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:is_empty("fuel")
+ end
+})
+
+minetest.register_node("campfire_redo:campfire_active", {
+ drawtype = "plantlike",
+ tiles = {{name="campfire_redo_campfire_active.png",animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1.5}}},
+ drop = "campfire_redo:campfire",
+ walkable = false,
+ paramtype = "light",
+ light_source = 8,
+ sunlight_propogates = true,
+ groups = {oddly_breakable_by_hand = 1,not_in_creative_inventory = 1},
+ on_timer = campfire_timer,
+ can_dig = function(pos)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:is_empty("fuel")
+ end
+})
+
+minetest.register_alias("campfire:campfire","campfire_redo:campfire")
+minetest.register_alias("campfire:campfire_active","campfire_redo:campfire_active")
+
+minetest.register_craft({
+ output = "campfire_redo:campfire 1",
+ recipe = {
+ {"","default:stick",""},
+ {"default:stick","","default:stick"}
+ }
+})
diff --git a/textures/campfire_redo_campfire.png b/textures/campfire_redo_campfire.png
new file mode 100644
index 0000000..248cdb4
--- /dev/null
+++ b/textures/campfire_redo_campfire.png
Binary files differ
diff --git a/textures/campfire_redo_campfire_active.png b/textures/campfire_redo_campfire_active.png
new file mode 100644
index 0000000..5b51aaa
--- /dev/null
+++ b/textures/campfire_redo_campfire_active.png
Binary files differ