From 9b40d02fbd9e8c39c5c64cc7de89a7fe45382f04 Mon Sep 17 00:00:00 2001 From: SmallJoker <mk939@ymail.com> Date: Sat, 04 Aug 2018 09:57:30 +0200 Subject: [PATCH] Revert get_3d to deprecated get3d for 0.4.x compatibility --- technic/machines/LV/cnc.lua | 188 ++++++++++++++++++++-------------------------- 1 files changed, 82 insertions(+), 106 deletions(-) diff --git a/technic/machines/LV/cnc.lua b/technic/machines/LV/cnc.lua index f58f9df..fdfec99 100644 --- a/technic/machines/LV/cnc.lua +++ b/technic/machines/LV/cnc.lua @@ -7,6 +7,18 @@ -- I could imagine some form of API allowing modders to come with their own node -- box definitions and easily stuff it in the this machine for production. +local S = technic.getter + + +minetest.register_craft({ + output = 'technic:cnc', + recipe = { + {'default:glass', 'technic:diamond_drill_head', 'default:glass'}, + {'technic:control_logic_unit', 'technic:machine_casing', 'technic:motor'}, + {'technic:carbon_steel_ingot', 'technic:lv_cable', 'technic:carbon_steel_ingot'}, + }, +}) + local shape = {} local onesize_products = { @@ -16,6 +28,7 @@ pyramid = 2, spike = 1, cylinder = 2, + oblate_spheroid = 1, sphere = 1, stick = 8, slope_upsdown = 2, @@ -35,27 +48,28 @@ } local cnc_formspec = - "invsize[9,11;]".. - "label[1,0;Choose Milling Program:]".. + "size[9,11;]".. + "label[1,0;"..S("Choose Milling Program:").."]".. "image_button[1,0.5;1,1;technic_cnc_slope.png;slope; ]".. "image_button[2,0.5;1,1;technic_cnc_slope_edge.png;slope_edge; ]".. "image_button[3,0.5;1,1;technic_cnc_slope_inner_edge.png;slope_inner_edge; ]".. "image_button[4,0.5;1,1;technic_cnc_pyramid.png;pyramid; ]".. "image_button[5,0.5;1,1;technic_cnc_spike.png;spike; ]".. "image_button[6,0.5;1,1;technic_cnc_cylinder.png;cylinder; ]".. - "image_button[7,0.5;1,1;technic_cnc_sphere.png;sphere; ]".. + "image_button[7,0.5;1,1;technic_cnc_oblate_spheroid.png;oblate_spheroid; ]".. "image_button[8,0.5;1,1;technic_cnc_stick.png;stick; ]".. "image_button[1,1.5;1,1;technic_cnc_slope_upsdwn.png;slope_upsdown; ]".. "image_button[2,1.5;1,1;technic_cnc_slope_edge_upsdwn.png;slope_edge_upsdown; ]".. "image_button[3,1.5;1,1;technic_cnc_slope_inner_edge_upsdwn.png;slope_inner_edge_upsdown; ]".. "image_button[4,1.5;1,1;technic_cnc_cylinder_horizontal.png;cylinder_horizontal; ]".. + "image_button[5,1.5;1,1;technic_cnc_sphere.png;sphere; ]".. "image_button[1,2.5;1,1;technic_cnc_slope_lying.png;slope_lying; ]".. "image_button[2,2.5;1,1;technic_cnc_onecurvededge.png;onecurvededge; ]".. "image_button[3,2.5;1,1;technic_cnc_twocurvededge.png;twocurvededge; ]".. - "label[1,3.5;Slim Elements half / normal height:]".. + "label[1,3.5;"..S("Slim Elements half / normal height:").."]".. "image_button[1,4;1,0.5;technic_cnc_full.png;full; ]".. "image_button[1,4.5;1,0.5;technic_cnc_half.png;half; ]".. @@ -65,12 +79,16 @@ "image_button[5,4;1,1;technic_cnc_element_t.png;element_t; ]".. "image_button[6,4;1,1;technic_cnc_element_edge.png;element_edge; ]".. - "label[0, 5.5;In:]".. + "label[0, 5.5;"..S("In:").."]".. "list[current_name;src;0.5,5.5;1,1;]".. - "label[4, 5.5;Out:]".. + "label[4, 5.5;"..S("Out:").."]".. "list[current_name;dst;5,5.5;4,1;]".. - "list[current_player;main;0,7;8,4;]" + "list[current_player;main;0,7;8,4;]".. + "listring[current_name;dst]".. + "listring[current_player;main]".. + "listring[current_name;src]".. + "listring[current_player;main]" local size = 1; @@ -124,131 +142,89 @@ return end +-- Action code performing the transformation +local run = function(pos, node) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local eu_input = meta:get_int("LV_EU_input") + local machine_name = S("%s CNC Machine"):format("LV") + local machine_node = "technic:cnc" + local demand = 450 + + local result = meta:get_string("cnc_product") + if inv:is_empty("src") or + (not minetest.registered_nodes[result]) or + (not inv:room_for_item("dst", result)) then + technic.swap_node(pos, machine_node) + meta:set_string("infotext", S("%s Idle"):format(machine_name)) + meta:set_string("cnc_product", "") + meta:set_int("LV_EU_demand", 0) + return + end + + if eu_input < demand then + technic.swap_node(pos, machine_node) + meta:set_string("infotext", S("%s Unpowered"):format(machine_name)) + elseif eu_input >= demand then + technic.swap_node(pos, machine_node.."_active") + meta:set_string("infotext", S("%s Active"):format(machine_name)) + meta:set_int("src_time", meta:get_int("src_time") + 1) + if meta:get_int("src_time") >= 3 then -- 3 ticks per output + meta:set_int("src_time", 0) + srcstack = inv:get_stack("src", 1) + srcstack:take_item() + inv:set_stack("src", 1, srcstack) + inv:add_item("dst", result.." "..meta:get_int("cnc_multiplier")) + end + end + meta:set_int("LV_EU_demand", demand) +end + -- The actual block inactive state minetest.register_node("technic:cnc", { - description = "CNC Milling Machine", + description = S("%s CNC Machine"):format("LV"), tiles = {"technic_cnc_top.png", "technic_cnc_bottom.png", "technic_cnc_side.png", "technic_cnc_side.png", "technic_cnc_side.png", "technic_cnc_front.png"}, - drawtype = "nodebox", - paramtype = "light", + groups = {cracky=2, technic_machine=1, technic_lv=1}, + connect_sides = {"bottom", "back", "left", "right"}, paramtype2 = "facedir", - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, - }, - }, - groups = {cracky=2}, legacy_facedir_simple = true, on_construct = function(pos) local meta = minetest.get_meta(pos) - meta:set_string("infotext", "CNC Machine") + meta:set_string("infotext", S("%s CNC Machine"):format("LV")) meta:set_float("technic_power_machine", 1) meta:set_string("formspec", cnc_formspec) local inv = meta:get_inventory() inv:set_size("src", 1) inv:set_size("dst", 4) end, - can_dig = function(pos,player) - local meta = minetest.get_meta(pos); - local inv = meta:get_inventory() - if not inv:is_empty("src") or not inv:is_empty("dst") then - minetest.chat_send_player(player:get_player_name(), - "Machine cannot be removed because it is not empty"); - return false - else - return true - end - end, + can_dig = technic.machine_can_dig, + allow_metadata_inventory_put = technic.machine_inventory_put, + allow_metadata_inventory_take = technic.machine_inventory_take, + allow_metadata_inventory_move = technic.machine_inventory_move, on_receive_fields = form_handler, + technic_run = run, }) -- Active state block minetest.register_node("technic:cnc_active", { - description = "CNC Machine", + description = S("%s CNC Machine"):format("LV"), tiles = {"technic_cnc_top_active.png", "technic_cnc_bottom.png", "technic_cnc_side.png", "technic_cnc_side.png", "technic_cnc_side.png", "technic_cnc_front_active.png"}, + groups = {cracky=2, technic_machine=1, technic_lv=1, not_in_creative_inventory=1}, + connect_sides = {"bottom", "back", "left", "right"}, paramtype2 = "facedir", - groups = {cracky=2, not_in_creative_inventory=1}, + drop = "technic:cnc", legacy_facedir_simple = true, - can_dig = function(pos,player) - local meta = minetest.get_meta(pos); - local inv = meta:get_inventory() - if not inv:is_empty("src") or not inv:is_empty("dst") then - minetest.chat_send_player(player:get_player_name(), - "CNC machine cannot be removed because it is not empty"); - return false - end - return true - end, + can_dig = technic.machine_can_dig, + allow_metadata_inventory_put = technic.machine_inventory_put, + allow_metadata_inventory_take = technic.machine_inventory_take, + allow_metadata_inventory_move = technic.machine_inventory_move, on_receive_fields = form_handler, + technic_run = run, + technic_disabled_machine_name = "technic:cnc", }) - --- Action code performing the transformation -minetest.register_abm({ - nodenames = {"technic:cnc","technic:cnc_active"}, - interval = 1, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local eu_input = meta:get_int("LV_EU_input") - local machine_name = "CNC" - local machine_node = "technic:cnc" - local demand = 450 - - -- Setup meta data if it does not exist. state is used as an indicator of this - if not eu_input then - meta:set_int("LV_EU_demand", demand) - meta:set_int("LV_EU_input", 0) - return - end - - -- Power off automatically if no longer connected to a switching station - technic.switching_station_timeout_count(pos, "LV") - - - local result = meta:get_string("cnc_product") - if inv:is_empty("src") or - (not minetest.registered_nodes[result]) or - (not inv:room_for_item("dst", result)) then - hacky_swap_node(pos, machine_node) - meta:set_string("infotext", machine_name.." Idle") - meta:set_string("cnc_product", "") - return - end - - if eu_input < demand then - hacky_swap_node(pos, machine_node) - meta:set_string("infotext", machine_name.." Unpowered") - elseif eu_input >= demand then - hacky_swap_node(pos, machine_node.."_active") - meta:set_string("infotext", machine_name.." Active") - meta:set_int("src_time", meta:get_int("src_time") + 1) - if meta:get_int("src_time") >= 3 then -- 3 ticks per output - meta:set_int("src_time", 0) - srcstack = inv:get_stack("src", 1) - srcstack:take_item() - inv:set_stack("src", 1, srcstack) - inv:add_item("dst", result.." "..meta:get_int("cnc_multiplier")) - end - end - meta:set_int("LV_EU_demand", demand) - end -}) technic.register_machine("LV", "technic:cnc", technic.receiver) technic.register_machine("LV", "technic:cnc_active", technic.receiver) - -------------------------- --- CNC Machine Recipe -------------------------- -minetest.register_craft({ - output = 'technic:cnc', - recipe = { - {'default:glass', 'technic:diamond_drill_head', 'default:glass'}, - {'technic:control_logic_unit', 'technic:motor', 'default:steel_ingot'}, - {'default:steel_ingot', 'default:copper_ingot', 'default:steel_ingot'}, - }, -}) -- Gitblit v1.8.0