From b7aef6f605e3cc2f6abfdcfa52292e56399c82a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20P=C3=A9rez-Cerezo?= Date: Thu, 16 Jun 2016 14:57:32 +0200 Subject: First commit --- depends.txt | 1 + init.lua | 185 +++++++++++++++++++++++++++++++++++++++++++++ textures/freezer_front.png | Bin 0 -> 237 bytes textures/freezer_side.png | Bin 0 -> 145 bytes textures/freezer_top.png | Bin 0 -> 150 bytes 5 files changed, 186 insertions(+) create mode 100644 depends.txt create mode 100644 init.lua create mode 100644 textures/freezer_front.png create mode 100644 textures/freezer_side.png create mode 100644 textures/freezer_top.png 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..2ad5831 --- /dev/null +++ b/init.lua @@ -0,0 +1,185 @@ + +-- +-- Formspecs +-- + +local function active_formspec(fuel_percent, item_percent) + local formspec = + "size[8,8.5]".. + default.gui_bg.. + default.gui_bg_img.. + default.gui_slots.. + "list[current_name;src;2.75,0.5;1,1;]".. + "image[3.75,1.5;1,1;gui_furnace_arrow_bg.png^[lowpart:".. + (item_percent)..":gui_furnace_arrow_fg.png^[transformR270]".. + "list[current_name;dst;4.75,0.96;2,2;]".. + "list[current_player;main;0,4.25;8,1;]".. + "list[current_player;main;0,5.5;8,3;8]".. + "listring[current_name;dst]".. + "listring[current_player;main]".. + "listring[current_name;src]".. + "listring[current_player;main]".. + default.get_hotbar_bg(0, 4.25) + return formspec +end + +local inactive_formspec = + "size[8,8.5]".. + default.gui_bg.. + default.gui_bg_img.. + default.gui_slots.. + "list[current_name;src;2.75,0.5;1,1;]".. + "image[3.75,1.5;1,1;gui_furnace_arrow_bg.png^[transformR270]".. + "list[current_name;dst;4.75,0.96;2,2;]".. + "list[current_player;main;0,4.25;8,1;]".. + "list[current_player;main;0,5.5;8,3;8]".. + "listring[current_name;dst]".. + "listring[current_player;main]".. + "listring[current_name;src]".. + "listring[current_player;main]".. + default.get_hotbar_bg(0, 4.25) + +-- +-- Node callback functions that are the same for active and inactive furnace +-- + +local function can_dig(pos, player) + local meta = minetest.get_meta(pos); + local inv = meta:get_inventory() + return inv:is_empty("dst") and inv:is_empty("src") +end + +local function allow_metadata_inventory_put(pos, listname, index, stack, player) + if minetest.is_protected(pos, player:get_player_name()) then + return 0 + end + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if listname == "src" then + return stack:get_count() + elseif listname == "dst" then + return 0 + end +end + +local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local stack = inv:get_stack(from_list, from_index) + return allow_metadata_inventory_put(pos, to_list, to_index, stack, player) +end + +local function allow_metadata_inventory_take(pos, listname, index, stack, player) + if minetest.is_protected(pos, player:get_player_name()) then + return 0 + end + return stack:get_count() +end + +local function swap_node(pos, name) + local node = minetest.get_node(pos) + if node.name == name then + return + end + node.name = name + minetest.swap_node(pos, node) +end + +local function freezer_node_timer(pos, elapsed) + -- + -- Inizialize metadata + -- + local meta = minetest.get_meta(pos) + + local src_time = meta:get_float("src_time") or 0 + + + local inv = meta:get_inventory() + local srclist = inv:get_list("src") + + local dstlist = inv:get_list("dst") + + -- + -- Cooking + -- + + if inv:contains_item("src", "bucket:bucket_water") then + inv:remove_item("src", "bucket:bucket_water") + inv:add_item("dst", "default:ice") + inv:add_item("src", "bucket:bucket_empty") + end + + + + + -- Check if we have cookable content + return +end + +-- +-- Node definitions +-- + +minetest.register_node("freezer:freezer", { + description = "Freezer", + tiles = { + "freezer_top.png", "freezer_top.png", + "freezer_side.png", "freezer_side.png", + "freezer_side.png", "freezer_front.png" + }, + paramtype2 = "facedir", + groups = {cracky=2}, + legacy_facedir_simple = true, + is_ground_content = false, + sounds = default.node_sound_stone_defaults(), + + can_dig = can_dig, + + on_timer = freezer_node_timer, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", inactive_formspec) + local inv = meta:get_inventory() + inv:set_size('src', 1) + inv:set_size('dst', 4) + end, + + on_metadata_inventory_move = function(pos) + local timer = minetest.get_node_timer(pos) + timer:start(1.0) + end, + on_metadata_inventory_put = function(pos) + -- start timer function, it will sort out whether furnace can burn or not. + local timer = minetest.get_node_timer(pos) + timer:start(1.0) + end, + on_blast = function(pos) + local drops = {} + default.get_inventory_drops(pos, "src", drops) + default.get_inventory_drops(pos, "dst", drops) + drops[#drops+1] = "freezer:freezer" + minetest.remove_node(pos) + return drops + end, + + allow_metadata_inventory_put = allow_metadata_inventory_put, + allow_metadata_inventory_move = allow_metadata_inventory_move, + allow_metadata_inventory_take = allow_metadata_inventory_take, +}) + +minetest.register_craft({ + output = "freezer:freezer", + recipe = { + {"default:steel_ingot", "default:mese_crystal", "default:steel_ingot"}, + {"default:steel_ingot", "", "default:steel_ingot"}, + {"default:steel_ingot", "default:mese_crystal", "default:steel_ingot"} + } +}) +minetest.register_craft({ + output = "default:snowblock 3", + type = "shapeless", + recipe = { + "default:ice" + } +}) diff --git a/textures/freezer_front.png b/textures/freezer_front.png new file mode 100644 index 0000000..fc49062 Binary files /dev/null and b/textures/freezer_front.png differ diff --git a/textures/freezer_side.png b/textures/freezer_side.png new file mode 100644 index 0000000..334751a Binary files /dev/null and b/textures/freezer_side.png differ diff --git a/textures/freezer_top.png b/textures/freezer_top.png new file mode 100644 index 0000000..d7b2609 Binary files /dev/null and b/textures/freezer_top.png differ -- cgit v1.2.3