From 24cbcff820b7b78297bcae8812821a1d523194d4 Mon Sep 17 00:00:00 2001 From: cheapie Date: Wed, 12 Apr 2017 01:26:40 -0500 Subject: Import existing content --- init.lua | 150 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 init.lua (limited to 'init.lua') diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..43d0c35 --- /dev/null +++ b/init.lua @@ -0,0 +1,150 @@ +local function set_formspec(meta,enabled,full) + local status + if enabled then + if full then + status = "Full Bin" + else + status = "Making Ice" + end + else + status = "Off" + end + local fs = "size[3,2]".. + "box[-0.15,0;3,1.5;#0000FF]".. + "label[0.2,0.3;"..status.."]".. + "button[0.5,1.5;2,1;power;Power]" + meta:set_string("formspec",fs) +end + +local function update_status(pos,meta,ice) + local timer = minetest.get_node_timer(pos) + local enabled = meta:get_int("enabled")==1 + if not enabled then + timer:stop() + set_formspec(meta,false) + else + local binpos = vector.add(pos,vector.new(0,-1,0)) + local binnode = minetest.get_node(binpos) + local binmeta = minetest.get_meta(binpos) + local bininv = binmeta:get_inventory() + if binnode.name ~= "icemachine:bin" or not bininv:room_for_item("ice","icemachine:cube") then + timer:stop() + set_formspec(meta,true,true) + else + if not timer:is_started() then timer:start(30) end + if ice then bininv:add_item("ice","icemachine:cube 9") end + set_formspec(meta,true,false) + end + end +end + +minetest.register_node("icemachine:machine",{ + description = "Ice Machine", + paramtype2 = "facedir", + groups = {cracky=3}, + tiles = { + "default_steel_block.png", + "default_steel_block.png", + "default_steel_block.png^icemachine_machine_sides.png", + "default_steel_block.png^icemachine_machine_sides.png", + "default_steel_block.png", + "default_steel_block.png^icemachine_machine_front.png", + }, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + update_status(pos,meta) + end, + on_receive_fields = function(pos,_,fields) + local meta = minetest.get_meta(pos) + if fields.power then + meta:set_int("enabled",math.abs(meta:get_int("enabled")-1)) + update_status(pos,meta) + end + end, + on_timer = function(pos) + local meta = minetest.get_meta(pos) + update_status(pos,meta,true) + end, +}) + +minetest.register_node("icemachine:bin",{ + description = "Ice Bin", + paramtype2 = "facedir", + groups = {cracky=3}, + tiles = { + "default_steel_block.png", + "default_steel_block.png", + "default_steel_block.png", + "default_steel_block.png", + "default_steel_block.png", + "default_steel_block.png^icemachine_bin_front.png", + }, + tube = {input_inventory="ice"}, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size("ice",8*3) + meta:set_string("formspec", + "size[8,9]".. + "list[context;ice;0,0;8,4;]".. + "list[current_player;main;0,5;8,4;]".. + "listring[]") + end, + allow_metadata_inventory_put = function(_,_,_,stack) + if stack:get_name() == "icemachine:cube" then + return(stack:get_count()) + else + return(0) + end + end, + on_metadata_inventory_take = function(pos) + local machinepos = vector.add(pos,vector.new(0,1,0)) + local machinemeta = minetest.get_meta(machinepos) + update_status(machinepos,machinemeta) + end, + can_dig = function(pos) + return(minetest.get_meta(pos):get_inventory():is_empty("ice")) + end, +}) + +minetest.register_craftitem("icemachine:cube",{ + description = "Ice Cube", + inventory_image = "icemachine_cube.png", +}) + +minetest.register_craft({ + output = "icemachine:machine", + recipe = { + {"default:steel_ingot", "bucket:bucket_water", "default:steel_ingot"}, + {"default:steel_ingot", "homedecor:fence_chainlink", "homedecor:motor"}, + {"default:steel_ingot", "bucket:bucket_empty", "homedecor:ic"}, + }, +}) + +minetest.register_craft({ + output = "icemachine:bin", + recipe = { + {"homedecor:plastic_sheeting", "", "homedecor:plastic_sheeting"}, + {"homedecor:plastic_sheeting", "", "homedecor:plastic_sheeting"}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + }, +}) + +minetest.register_craft({ + output = "default:ice", + recipe = { + {"icemachine:cube", "icemachine:cube", "icemachine:cube"}, + {"icemachine:cube", "icemachine:cube", "icemachine:cube"}, + {"icemachine:cube", "icemachine:cube", "icemachine:cube"}, + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "icemachine:cube 9", + recipe = {"default:ice"}, +}) + +if minetest.get_modpath("technic") then + technic.register_grinder_recipe({input={"default:ice 1"},output="default:snowblock 1"}) +end -- cgit v1.2.3