Add milling machine from non cubic to technic mod.
Next step is to make sure it only works if powered.
30 files added
2 files modified
| | |
| | | chainsaw_max_charge=30000 |
| | | -- Configuration |
| | | local chainsaw_max_charge = 30000 -- 30000 - Maximum charge of the saw |
| | | local chainsaw_charge_per_node = 12 -- 12 - Gives 2500 nodes on a single charge (about 50 complete normal trees) |
| | | local chainsaw_leaves = true -- true - Cut down entire trees, leaves and all |
| | | |
| | | register_power_tool ("technic:chainsaw",chainsaw_max_charge) |
| | | |
| | | minetest.register_tool("technic:chainsaw", { |
| | | description = "Chainsaw", |
| | | inventory_image = "technic_chainsaw.png", |
| | | stack_max = 1, |
| | | on_use = function(itemstack, user, pointed_thing) |
| | | if pointed_thing.type=="node" then |
| | | item=itemstack:to_table() |
| | | local meta=get_item_meta(item["metadata"]) |
| | | if meta==nil then return end --tool not charghed |
| | | if meta["charge"]==nil then return end |
| | | charge=meta["charge"] |
| | | charge_to_take=600; |
| | | if charge-charge_to_take>0 then |
| | | charge_to_take=chainsaw_dig_it(minetest.get_pointed_thing_position(pointed_thing, above),user,charge_to_take) |
| | | charge=charge-charge_to_take; |
| | | set_RE_wear(item,charge,chainsaw_max_charge) |
| | | meta["charge"]=charge |
| | | item["metadata"]=set_item_meta(meta) |
| | | itemstack:replace(item) |
| | | return itemstack |
| | | end |
| | | end |
| | | end, |
| | | description = "Chainsaw", |
| | | inventory_image = "technic_chainsaw.png", |
| | | stack_max = 1, |
| | | on_use = function(itemstack, user, pointed_thing) |
| | | if pointed_thing.type=="node" then |
| | | item=itemstack:to_table() |
| | | local meta=get_item_meta(item["metadata"]) |
| | | if meta==nil then return end --tool not charged |
| | | if meta["charge"]==nil then return end |
| | | -- Send current charge to digging function so that the chainsaw will stop after digging a number of nodes. |
| | | local charge=meta["charge"] |
| | | if charge < chainsaw_charge_per_node then return end -- only cut if charged |
| | | |
| | | charge=chainsaw_dig_it(minetest.get_pointed_thing_position(pointed_thing, above),user,charge) |
| | | set_RE_wear(item,charge,chainsaw_max_charge) |
| | | meta["charge"]=charge |
| | | item["metadata"]=set_item_meta(meta) |
| | | itemstack:replace(item) |
| | | return itemstack |
| | | end |
| | | end, |
| | | }) |
| | | |
| | | minetest.register_craft({ |
| | | output = 'technic:chainsaw', |
| | | recipe = { |
| | | {'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot', 'technic:battery'}, |
| | | {'technic:stainless_steel_ingot', 'technic:motor', 'technic:battery'}, |
| | | {'','','moreores:copper_ingot'}, |
| | | } |
| | | output = 'technic:chainsaw', |
| | | recipe = { |
| | | {'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot', 'technic:battery'}, |
| | | {'technic:stainless_steel_ingot', 'technic:motor', 'technic:battery'}, |
| | | {'','','moreores:copper_ingot'}, |
| | | } |
| | | }) |
| | | |
| | | -- The default stuff |
| | | local timber_nodenames={["default:jungletree"] = true, |
| | | ["default:papyrus"] = true, |
| | | ["default:cactus"] = true, |
| | | ["default:tree"] = true, |
| | | ["default:apple"] = true |
| | | } |
| | | |
| | | if chainsaw_leaves == true then |
| | | timber_nodenames["default:leaves"] = true |
| | | end |
| | | |
| | | -- Support moretrees if it is there |
| | | if( minetest.get_modpath("moretrees") ~= nil ) then |
| | | timber_nodenames["moretrees:apple_tree_trunk"] = true |
| | | timber_nodenames["moretrees:apple_tree_trunk_sideways"] = true |
| | | timber_nodenames["moretrees:beech_trunk"] = true |
| | | timber_nodenames["moretrees:beech_trunk_sideways"] = true |
| | | timber_nodenames["moretrees:birch_trunk"] = true |
| | | timber_nodenames["moretrees:birch_trunk_sideways"] = true |
| | | timber_nodenames["moretrees:fir_trunk"] = true |
| | | timber_nodenames["moretrees:fir_trunk_sideways"] = true |
| | | timber_nodenames["moretrees:oak_trunk"] = true |
| | | timber_nodenames["moretrees:oak_trunk_sideways"] = true |
| | | timber_nodenames["moretrees:palm_trunk"] = true |
| | | timber_nodenames["moretrees:palm_trunk_sideways"] = true |
| | | timber_nodenames["moretrees:pine_trunk"] = true |
| | | timber_nodenames["moretrees:pine_trunk_sideways"] = true |
| | | timber_nodenames["moretrees:rubber_tree_trunk"] = true |
| | | timber_nodenames["moretrees:rubber_tree_trunk_sideways"] = true |
| | | timber_nodenames["moretrees:rubber_tree_trunk_empty"] = true |
| | | timber_nodenames["moretrees:rubber_tree_trunk_sideways_empty"] = true |
| | | timber_nodenames["moretrees:sequoia_trunk"] = true |
| | | timber_nodenames["moretrees:sequoia_trunk_sideways"] = true |
| | | timber_nodenames["moretrees:spruce_trunk"] = true |
| | | timber_nodenames["moretrees:spruce_trunk_sideways"] = true |
| | | timber_nodenames["moretrees:willow_trunk"] = true |
| | | timber_nodenames["moretrees:willow_trunk_sideways"] = true |
| | | timber_nodenames["moretrees:jungletree_trunk"] = true |
| | | timber_nodenames["moretrees:jungletree_trunk_sideways"] = true |
| | | |
| | | timber_nodenames={"default:jungletree", "default:papyrus", "default:cactus", "default:tree"} |
| | | if chainsaw_leaves == true then |
| | | timber_nodenames["moretrees:apple_tree_leaves"] = true |
| | | timber_nodenames["moretrees:oak_leaves"] = true |
| | | timber_nodenames["moretrees:sequoia_leaves"] = true |
| | | timber_nodenames["moretrees:birch_leaves"] = true |
| | | timber_nodenames["moretrees:birch_leaves"] = true |
| | | timber_nodenames["moretrees:palm_leaves"] = true |
| | | timber_nodenames["moretrees:spruce_leaves"] = true |
| | | timber_nodenames["moretrees:spruce_leaves"] = true |
| | | timber_nodenames["moretrees:pine_leaves"] = true |
| | | timber_nodenames["moretrees:willow_leaves"] = true |
| | | timber_nodenames["moretrees:rubber_tree_leaves"] = true |
| | | timber_nodenames["moretrees:jungletree_leaves_green"] = true |
| | | timber_nodenames["moretrees:jungletree_leaves_yellow"] = true |
| | | timber_nodenames["moretrees:jungletree_leaves_red"] = true |
| | | end |
| | | end |
| | | |
| | | function chainsaw_dig_it (pos, player,charge_to_take) |
| | | charge_to_take=0 |
| | | local node=minetest.env:get_node(pos) |
| | | local i=1 |
| | | while timber_nodenames[i]~=nil do |
| | | if node.name==timber_nodenames[i] then |
| | | charge_to_take=600 |
| | | np={x=pos.x, y=pos.y, z=pos.z} |
| | | while minetest.env:get_node(np).name==timber_nodenames[i] do |
| | | minetest.env:remove_node(np) |
| | | minetest.env:add_item(np, timber_nodenames[i]) |
| | | np={x=np.x, y=np.y+1, z=np.z} |
| | | end |
| | | minetest.sound_play("chainsaw", {pos = pos, gain = 1.0, max_hear_distance = 10,}) |
| | | return charge_to_take |
| | | end |
| | | i=i+1 |
| | | end |
| | | -- Support growing_trees if it is there |
| | | if( minetest.get_modpath("growing_trees") ~= nil ) then |
| | | timber_nodenames["growing_trees:trunk"] = true |
| | | timber_nodenames["growing_trees:medium_trunk"] = true |
| | | timber_nodenames["growing_trees:big_trunk"] = true |
| | | timber_nodenames["growing_trees:trunk_top"] = true |
| | | timber_nodenames["growing_trees:trunk_sprout"] = true |
| | | timber_nodenames["growing_trees:branch_sprout"] = true |
| | | timber_nodenames["growing_trees:branch"] = true |
| | | timber_nodenames["growing_trees:branch_xmzm"] = true |
| | | timber_nodenames["growing_trees:branch_xpzm"] = true |
| | | timber_nodenames["growing_trees:branch_xmzp"] = true |
| | | timber_nodenames["growing_trees:branch_xpzp"] = true |
| | | timber_nodenames["growing_trees:branch_zz"] = true |
| | | timber_nodenames["growing_trees:branch_xx"] = true |
| | | |
| | | return charge_to_take |
| | | if chainsaw_leaves == true then |
| | | timber_nodenames["growing_trees:leaves"] = true |
| | | end |
| | | end |
| | | |
| | | -- Support growing_cactus if it is there |
| | | if( minetest.get_modpath("growing_cactus") ~= nil ) then |
| | | timber_nodenames["growing_cactus:sprout"] = true |
| | | timber_nodenames["growing_cactus:branch_sprout_vertical"] = true |
| | | timber_nodenames["growing_cactus:branch_sprout_vertical_fixed"] = true |
| | | timber_nodenames["growing_cactus:branch_sprout_xp"] = true |
| | | timber_nodenames["growing_cactus:branch_sprout_xm"] = true |
| | | timber_nodenames["growing_cactus:branch_sprout_zp"] = true |
| | | timber_nodenames["growing_cactus:branch_sprout_zm"] = true |
| | | timber_nodenames["growing_cactus:trunk"] = true |
| | | timber_nodenames["growing_cactus:branch_trunk"] = true |
| | | timber_nodenames["growing_cactus:branch"] = true |
| | | timber_nodenames["growing_cactus:branch_xp"] = true |
| | | timber_nodenames["growing_cactus:branch_xm"] = true |
| | | timber_nodenames["growing_cactus:branch_zp"] = true |
| | | timber_nodenames["growing_cactus:branch_zm"] = true |
| | | timber_nodenames["growing_cactus:branch_zz"] = true |
| | | timber_nodenames["growing_cactus:branch_xx"] = true |
| | | end |
| | | |
| | | -- Table for saving what was sawed down |
| | | local produced |
| | | |
| | | -- Saw down trees entry point |
| | | chainsaw_dig_it = function(pos, player,current_charge) |
| | | local remaining_charge=current_charge |
| | | |
| | | -- A bit of trickery here: use a different node drop callback |
| | | -- and restore the original afterwards. |
| | | minetest.handle_node_drops = chainsaw_handle_node_drops |
| | | |
| | | -- clear result and start sawing things down |
| | | produced = {} |
| | | remaining_charge = recursive_dig(pos, remaining_charge, player) |
| | | minetest.sound_play("chainsaw", {pos = pos, gain = 1.0, max_hear_distance = 10,}) |
| | | |
| | | -- Restore the original noder drop handler |
| | | minetest.handle_node_drops = original_handle_node_drops |
| | | |
| | | -- Now drop items for the player |
| | | local number, produced_item, p |
| | | for produced_item,number in pairs(produced) do |
| | | --print("ADDING ITEM: " .. produced_item .. " " .. number) |
| | | -- Drop stacks of 99 or less |
| | | p = { |
| | | x = pos.x + math.random()*4, |
| | | y = pos.y, |
| | | z = pos.z + math.random()*4 |
| | | } |
| | | while number > 99 do |
| | | minetest.env:add_item(p, produced_item .. " 99") |
| | | p = { |
| | | x = pos.x + math.random()*4, |
| | | y = pos.y, |
| | | z = pos.z + math.random()*4 |
| | | } |
| | | number = number - 99 |
| | | end |
| | | minetest.env:add_item(p, produced_item .. " " .. number) |
| | | end |
| | | return remaining_charge |
| | | end |
| | | |
| | | -- Override the default handling routine to be able to count up the |
| | | -- items sawed down so that we can drop them i an nice single stack |
| | | chainsaw_handle_node_drops = function(pos, drops, digger) |
| | | -- Add dropped items to list of collected nodes |
| | | local _, dropped_item |
| | | for _, dropped_item in ipairs(drops) do |
| | | if produced[dropped_item] == nil then |
| | | produced[dropped_item] = 1 |
| | | else |
| | | produced[dropped_item] = produced[dropped_item] + 1 |
| | | end |
| | | end |
| | | end |
| | | |
| | | -- Save the currently installed dropping mechanism so we can restore it. |
| | | local original_handle_node_drops = minetest.handle_node_drops |
| | | |
| | | -- This function does all the hard work. Recursively we dig the node at hand |
| | | -- if it is in the table and then search the surroundings for more stuff to dig. |
| | | recursive_dig = function(pos, remaining_charge, player) |
| | | local node=minetest.env:get_node(pos) |
| | | local i=1 |
| | | -- Lookup node name in timber table: |
| | | if timber_nodenames[node.name] ~= nil then |
| | | -- Return if we are out of power |
| | | if remaining_charge < chainsaw_charge_per_node then |
| | | return 0 |
| | | end |
| | | local np |
| | | -- wood found - cut it. |
| | | minetest.env:dig_node(pos) |
| | | |
| | | remaining_charge=remaining_charge-chainsaw_charge_per_node |
| | | -- check surroundings and run recursively if any charge left |
| | | np={x=pos.x+1, y=pos.y, z=pos.z} |
| | | if timber_nodenames[minetest.env:get_node(np).name] ~= nil then |
| | | remaining_charge = recursive_dig(np, remaining_charge) |
| | | end |
| | | np={x=pos.x+1, y=pos.y, z=pos.z+1} |
| | | if timber_nodenames[minetest.env:get_node(np).name] ~= nil then |
| | | remaining_charge = recursive_dig(np, remaining_charge) |
| | | end |
| | | np={x=pos.x+1, y=pos.y, z=pos.z-1} |
| | | if timber_nodenames[minetest.env:get_node(np).name] ~= nil then |
| | | remaining_charge = recursive_dig(np, remaining_charge) |
| | | end |
| | | |
| | | np={x=pos.x-1, y=pos.y, z=pos.z} |
| | | if timber_nodenames[minetest.env:get_node(np).name] ~= nil then |
| | | remaining_charge = recursive_dig(np, remaining_charge) |
| | | end |
| | | np={x=pos.x-1, y=pos.y, z=pos.z+1} |
| | | if timber_nodenames[minetest.env:get_node(np).name] ~= nil then |
| | | remaining_charge = recursive_dig(np, remaining_charge) |
| | | end |
| | | np={x=pos.x-1, y=pos.y, z=pos.z-1} |
| | | if timber_nodenames[minetest.env:get_node(np).name] ~= nil then |
| | | remaining_charge = recursive_dig(np, remaining_charge) |
| | | end |
| | | |
| | | np={x=pos.x, y=pos.y+1, z=pos.z} |
| | | if timber_nodenames[minetest.env:get_node(np).name] ~= nil then |
| | | remaining_charge = recursive_dig(np, remaining_charge) |
| | | end |
| | | |
| | | np={x=pos.x, y=pos.y, z=pos.z+1} |
| | | if timber_nodenames[minetest.env:get_node(np).name] ~= nil then |
| | | remaining_charge = recursive_dig(np, remaining_charge) |
| | | end |
| | | np={x=pos.x, y=pos.y, z=pos.z-1} |
| | | if timber_nodenames[minetest.env:get_node(np).name] ~= nil then |
| | | remaining_charge = recursive_dig(np, remaining_charge) |
| | | end |
| | | return remaining_charge |
| | | end |
| | | -- Nothing sawed down |
| | | return remaining_charge |
| | | end |
New file |
| | |
| | | -- Technic CNC v1.0 by kpo |
| | | -- Based on the NonCubic Blocks MOD v1.4 by yves_de_beck |
| | | local shape = {} |
| | | local size = 0 |
| | | local onesize_products = { |
| | | slope = 2, |
| | | slope_edge = 1, |
| | | slope_inner_edge = 1, |
| | | pyramid = 2, |
| | | spike = 1, |
| | | cylinder = 2, |
| | | sphere = 1, |
| | | stick = 8, |
| | | slope_upsdwn = 2, |
| | | slope_edge_upsdwn = 1, |
| | | slope_inner_edge_upsdwn = 1, |
| | | cylinder_hor = 2, |
| | | slope_lying = 2, |
| | | onecurvededge = 1, |
| | | twocurvededge = 1, |
| | | } |
| | | local twosize_products = { |
| | | element_straight = 4, |
| | | element_end = 2, |
| | | element_cross = 1, |
| | | element_t = 1, |
| | | element_edge = 2, |
| | | } |
| | | |
| | | local showbackground = "--" |
| | | local max_cncruns = 99 |
| | | local max_products = 99 |
| | | |
| | | --showlabelin = "" |
| | | --showlabelout = "label[4.5,5.5;Out:]" |
| | | |
| | | -- I want the CNC machine to be a two block thing |
| | | minetest.register_node("technic:cnc", { |
| | | description = "CNC Milling Machine", |
| | | 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", |
| | | paramtype2 = "facedir", |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, |
| | | |
| | | }, |
| | | }, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, |
| | | }, |
| | | groups = {oddly_breakable_by_hand=2, cracky=3, dig_immediate=1}, |
| | | |
| | | can_dig = function(pos,player) |
| | | local meta = minetest.env:get_meta(pos); |
| | | local inv = meta:get_inventory() |
| | | if not inv:is_empty("input") or not inv:is_empty("output") 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, |
| | | |
| | | on_construct = function(pos) |
| | | local meta = minetest.env:get_meta(pos) |
| | | if technic_cnc_api.allow_menu_background == true or technic_cnc_api.allow_menu_background == 1 then |
| | | showbackground = "background[-0.15,-0.25;8.40,11.75;technic_cnc_background.png]" |
| | | end |
| | | |
| | | meta:set_string("formspec", "invsize[8,11;]".. |
| | | "label[0,0;Choose Milling Program:]".. |
| | | "image_button[0,0.5;1,1;technic_cnc_slope.png;slope; ]".. |
| | | "image_button[1,0.5;1,1;technic_cnc_slope_edge.png;slope_edge; ]".. |
| | | "image_button[2,0.5;1,1;technic_cnc_slope_inner_edge.png;slope_inner_edge; ]".. |
| | | "image_button[3,0.5;1,1;technic_cnc_pyramid.png;pyramid; ]".. |
| | | "image_button[4,0.5;1,1;technic_cnc_spike.png;spike; ]".. |
| | | "image_button[5,0.5;1,1;technic_cnc_cylinder.png;cylinder; ]".. |
| | | "image_button[6,0.5;1,1;technic_cnc_sphere.png;sphere; ]".. |
| | | "image_button[7,0.5;1,1;technic_cnc_stick.png;stick; ]".. |
| | | |
| | | "image_button[0,1.5;1,1;technic_cnc_slope_upsdwn.png;slope_upsdwn; ]".. |
| | | "image_button[1,1.5;1,1;technic_cnc_slope_edge_upsdwn.png;slope_upsdwn_edge; ]".. |
| | | "image_button[2,1.5;1,1;technic_cnc_slope_inner_edge_upsdwn.png;slope_upddown_inner_edge; ]".. |
| | | "image_button[5,1.5;1,1;technic_cnc_cylinder_horizontal.png;cylinder_horizontal; ]".. |
| | | |
| | | "image_button[0,2.5;1,1;technic_cnc_slope_lying.png;slope_lying; ]".. |
| | | "image_button[1,2.5;1,1;technic_cnc_onecurvededge.png;onecurvededge; ]".. |
| | | "image_button[2,2.5;1,1;technic_cnc_twocurvededge.png;twocurvededge; ]".. |
| | | |
| | | "label[0,3.5;Slim Elements half / normal height:]".. |
| | | |
| | | "image_button[0,4;1,0.5;technic_cnc_full.png;full; ]".. |
| | | "image_button[0,4.5;1,0.5;technic_cnc_half.png;half; ]".. |
| | | "image_button[1,4;1,1;technic_cnc_element_straight.png;element_straight; ]".. |
| | | "image_button[2,4;1,1;technic_cnc_element_end.png;element_end; ]".. |
| | | "image_button[3,4;1,1;technic_cnc_element_cross.png;element_cross; ]".. |
| | | "image_button[4,4;1,1;technic_cnc_element_t.png;element_t; ]".. |
| | | "image_button[5,4;1,1;technic_cnc_element_edge.png;element_edge; ]".. |
| | | |
| | | "label[0, 5.5;In:]".. -- showlabelin.. |
| | | "list[current_name;input;0.5,5.5;1,1;]".. |
| | | "field[3, 6;1,1;num_cncruns;Repeat program:;${num_cncruns}]".. -- Fill default with meta data num_cncruns |
| | | "label[4, 5.5;Out:]".. -- showlabelout.. |
| | | "list[current_name;output;4.5,5.5;1,1;]".. |
| | | |
| | | "list[current_player;main;0,7;8,4;]".. |
| | | showbackground) |
| | | meta:set_string("infotext", "CNC Milling Machine") |
| | | meta:set_string("num_cncruns", 1 ); |
| | | |
| | | local inv = meta:get_inventory() |
| | | inv:set_size("input", 1) |
| | | inv:set_size("output", 1) |
| | | end, |
| | | |
| | | on_receive_fields = function(pos, formname, fields, sender) |
| | | -- REGISTER MILLING PROGRAMMS AND OUTPUTS: |
| | | ------------------------------------------ |
| | | -- Program for half/full size |
| | | if fields["full"] then |
| | | size = 1 |
| | | return |
| | | end |
| | | |
| | | if fields["half"] then |
| | | size = 2 |
| | | return |
| | | end |
| | | |
| | | local meta = minetest.env:get_meta(pos) |
| | | local inv = meta:get_inventory() |
| | | |
| | | -- Limit the number entered |
| | | if( fields.num_cncruns and tonumber( fields.num_cncruns) > 0 and tonumber(fields.num_cncruns) < 100 ) then |
| | | meta:set_string( "num_cncruns", fields.num_cncruns ); |
| | | else |
| | | minetest.chat_send_player(sender:get_player_name(), "CNC machine runs set to a bad value. Machine resets."); |
| | | meta:set_string( "num_cncruns", 1 ); |
| | | fields.num_cncruns = 1 |
| | | end |
| | | |
| | | -- Do nothing if the machine is empty |
| | | if inv:is_empty("input") then |
| | | return |
| | | end |
| | | |
| | | -- Do nothing if the output is not empty and the product used is not the same as what is already there |
| | | |
| | | -- Resolve the node name and the number of items to make and the number of items to take |
| | | local product = "" |
| | | local produces = 1 |
| | | local input_used = 1 |
| | | local inputstack = inv:get_stack("input", 1) |
| | | local inputname = inputstack:get_name() |
| | | local multiplier = 1 |
| | | for k, _ in pairs(fields) do |
| | | -- Set a multipier for the half/full size capable blocks |
| | | if twosize_products[k] ~= nil then |
| | | multiplier = size*twosize_products[k] |
| | | else |
| | | multiplier = onesize_products[k] |
| | | end |
| | | |
| | | if onesize_products[k] ~= nil or twosize_products[k] ~= nil then |
| | | product = inputname .. "_technic_cnc_" .. k |
| | | produces = math.min( fields.num_cncruns*multiplier, max_products) -- produce at most max_products |
| | | input_used = math.min( math.floor(produces/multiplier), inputstack:get_count()) -- use at most what we got |
| | | produces = input_used*multiplier -- final production |
| | | print(size) |
| | | print(fields.num_cncruns) |
| | | print(product) |
| | | print(produces) |
| | | print(input_used) |
| | | print("------------------") |
| | | break |
| | | end |
| | | end |
| | | |
| | | -- CNC does the transformation |
| | | ------------------------------ |
| | | if minetest.registered_nodes[product] ~= nil then |
| | | inv:add_item("output",product .. " " .. produces) |
| | | inputstack:take_item(input_used) |
| | | inv:set_stack("input",1,inputstack) |
| | | else |
| | | minetest.chat_send_player(sender:get_player_name(), "CNC machine does not know how to mill this material. Please remove it."); |
| | | end |
| | | return; |
| | | end, -- callback function |
| | | }) |
| | | ---------- |
| | | |
| | | |
| | | -- Milling 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'}, |
| | | }, |
| | | }) |
| | | ------------------------- |
New file |
| | |
| | | -- API for the technic CNC machine |
| | | -- Again code is adapted from the NonCubic Blocks MOD v1.4 by yves_de_beck |
| | | technic_cnc_api = {} |
| | | |
| | | -- HERE YOU CAN CHANGE THE DETAIL-LEVEL: |
| | | ---------------------------------------- |
| | | technic_cnc_api.detail_level = 16 -- 16; 1-32 |
| | | |
| | | -- HERE YOU CAN DE/ACTIVATE BACKGROUND FOR CNC MENU: |
| | | -------------------------------------------------------- |
| | | technic_cnc_api.allow_menu_background = false |
| | | |
| | | -- REGISTER NONCUBIC FORMS, CREATE MODELS AND RECIPES: |
| | | ------------------------------------------------------ |
| | | |
| | | -- SLOPE |
| | | -------- |
| | | function technic_cnc_api.register_slope(recipeitem, groups, images, description) |
| | | |
| | | local slopebox = {} |
| | | local detail = technic_cnc_api.detail_level |
| | | for i = 0, detail-1 do |
| | | slopebox[i+1]={-0.5, (i/detail)-0.5, (i/detail)-0.5, 0.5, (i/detail)-0.5+(1/detail), 0.5} |
| | | end |
| | | |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_slope", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = slopebox, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | end |
| | | |
| | | |
| | | -- SLOPE Lying |
| | | ---------------- |
| | | function technic_cnc_api.register_slope_lying(recipeitem, groups, images, description) |
| | | |
| | | local slopeboxlying = {} |
| | | local detail = technic_cnc_api.detail_level |
| | | for i = 0, detail-1 do |
| | | slopeboxlying[i+1]={(i/detail)-0.5, -0.5, (i/detail)-0.5, (i/detail)-0.5+(1/detail), 0.5 , 0.5} |
| | | end |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_slope_lying", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = slopeboxlying, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | minetest.register_craft({ |
| | | output = recipeitem .. "_technic_cnc_slope_lying 1", |
| | | recipe = { |
| | | {"", "", ""}, |
| | | {"", recipeitem .. "_technic_cnc_slope", ""}, |
| | | {"", "", ""}, |
| | | }, |
| | | }) |
| | | |
| | | end |
| | | |
| | | |
| | | -- SLOPE UPSIDE DOWN |
| | | -------------------- |
| | | function technic_cnc_api.register_slope_upsdown(recipeitem, groups, images, description) |
| | | |
| | | if subname == "dirt" then |
| | | return |
| | | end |
| | | |
| | | local slopeupdwnbox = {} |
| | | local detail = technic_cnc_api.detail_level |
| | | for i = 0, detail-1 do |
| | | slopeupdwnbox[i+1]={-0.5, (i/detail)-0.5, (-1*(i/detail))+0.5-(1/detail), 0.5, (i/detail)-0.5+(1/detail), 0.5} |
| | | end |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_slope_upsdown", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = slopeupdwnbox, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | end |
| | | |
| | | |
| | | -- SLOPE EDGE |
| | | ------------- |
| | | function technic_cnc_api.register_slope_edge(recipeitem, groups, images, description) |
| | | |
| | | local slopeboxedge = {} |
| | | local detail = technic_cnc_api.detail_level |
| | | for i = 0, detail-1 do |
| | | slopeboxedge[i+1]={(i/detail)-0.5, -0.5, (i/detail)-0.5, 0.5, (i/detail)-0.5+(1/detail), 0.5} |
| | | end |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_slope_edge", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = slopeboxedge, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | end |
| | | |
| | | |
| | | -- SLOPE INNER EDGE |
| | | ------------------- |
| | | function technic_cnc_api.register_slope_inner_edge(recipeitem, groups, images, description) |
| | | |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_slope_inner_edge", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | -- PART 1 |
| | | {-0.5, -0.5, -0.5, 0.5, -0.45, 0.5}, |
| | | {-0.45, -0.5, -0.5, 0.5, -0.4, 0.5}, |
| | | {-0.4, -0.5, -0.5, 0.5, -0.35, 0.5}, |
| | | {-0.35, -0.5, -0.5, 0.5, -0.3, 0.5}, |
| | | {-0.3, -0.5, -0.5, 0.5, -0.25, 0.5}, |
| | | {-0.25, -0.5, -0.5, 0.5, -0.2, 0.5}, |
| | | {-0.2, -0.5, -0.5, 0.5, -0.15, 0.5}, |
| | | {-0.15, -0.5, -0.5, 0.5, -0.1, 0.5}, |
| | | {-0.1, -0.5, -0.5, 0.5, -0.05, 0.5}, |
| | | {-0.05, -0.5, -0.5, 0.5, 0, 0.5}, |
| | | {0, -0.5, -0.5, 0.5, 0.05, 0.5}, |
| | | {0.05, -0.5, -0.5, 0.5, 0.1, 0.5}, |
| | | {0.1, -0.5, -0.5, 0.5, 0.15, 0.5}, |
| | | {0.15, -0.5, -0.5, 0.5, 0.2, 0.5}, |
| | | {0.2, -0.5, -0.5, 0.5, 0.25, 0.5}, |
| | | {0.25, -0.5, -0.5, 0.5, 0.3, 0.5}, |
| | | {0.3, -0.5, -0.5, 0.5, 0.35, 0.5}, |
| | | {0.35, -0.5, -0.5, 0.5, 0.4, 0.5}, |
| | | {0.4, -0.5, -0.5, 0.5, 0.45, 0.5}, |
| | | {0.45, -0.5, -0.5, 0.5, 0.5, 0.5}, |
| | | -- PART 2 |
| | | {-0.5, -0.5, -0.45, 0.5, -0.45, 0.5}, |
| | | {-0.5, -0.5, -0.4, 0.5, -0.4, 0.5}, |
| | | {-0.5, -0.5, -0.35, 0.5, -0.35, 0.5}, |
| | | {-0.5, -0.5, -0.3, 0.5, -0.3, 0.5}, |
| | | {-0.5, -0.5, -0.25, 0.5, -0.25, 0.5}, |
| | | {-0.5, -0.5, -0.2, 0.5, -0.2, 0.5}, |
| | | {-0.5, -0.5, -0.15, 0.5, -0.15, 0.5}, |
| | | {-0.5, -0.5, -0.1, 0.5, -0.1, 0.5}, |
| | | {-0.5, -0.5, -0.05, 0.5, -0.05, 0.5}, |
| | | {-0.5, -0.5, 0, 0.5, 0, 0.5}, |
| | | {-0.5, -0.5, 0.05, 0.5, 0.05, 0.5}, |
| | | {-0.5, -0.5, 0.1, 0.5, 0.1, 0.5}, |
| | | {-0.5, -0.5, 0.15, 0.5, 0.15, 0.5}, |
| | | {-0.5, -0.5, 0.2, 0.5, 0.2, 0.5}, |
| | | {-0.5, -0.5, .25, 0.5, 0.25, 0.5}, |
| | | {-0.5, -0.5, 0.3, 0.5, 0.3, 0.5}, |
| | | {-0.5, -0.5, 0.35, 0.5, 0.35, 0.5}, |
| | | {-0.5, -0.5, 0.4, 0.5, 0.4, 0.5}, |
| | | {-0.5, -0.5, 0.45, 0.5, 0.45, 0.5}, |
| | | {-0.5, -0.5, 0.5, 0.5, 0.5, 0.5}, |
| | | }, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | end |
| | | |
| | | |
| | | -- SLOPE EDGE UPSIDE DOWN |
| | | ------------------------- |
| | | function technic_cnc_api.register_slope_upsdown_edge(recipeitem, groups, images, description) |
| | | |
| | | if recipeitem == "default:dirt" then |
| | | return |
| | | end |
| | | |
| | | local slopeupdwnboxedge = {} |
| | | local detail = technic_cnc_api.detail_level |
| | | for i = 0, detail-1 do |
| | | slopeupdwnboxedge[i+1]={(-1*(i/detail))+0.5-(1/detail), (i/detail)-0.5, (-1*(i/detail))+0.5-(1/detail), 0.5, (i/detail)-0.5+(1/detail), 0.5} |
| | | end |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_slope_upsdown_edge", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = slopeupdwnboxedge, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | end |
| | | |
| | | |
| | | -- SLOPE INNER EDGE UPSIDE DOWN |
| | | ------------------------------- |
| | | function technic_cnc_api.register_slope_upsdown_inner_edge(recipeitem, groups, images, description) |
| | | |
| | | if recipename == "default:dirt" then |
| | | return |
| | | end |
| | | |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_slope_upsdown_inner_edge", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | {0.45, -0.5, -0.5, 0.5, -0.45, 0.5}, |
| | | {0.4, -0.45, -0.5, 0.5, -0.4, 0.5}, |
| | | {0.35, -0.4, -0.5, 0.5, -0.35, 0.5}, |
| | | {0.3, -0.35, -0.5, 0.5, -0.3, 0.5}, |
| | | {0.25, -0.3, -0.5, 0.5, -0.25, 0.5}, |
| | | {0.2, -0.25, -0.5, 0.5, -0.2, 0.5}, |
| | | {0.15, -0.2, -0.5, 0.5, -0.15, 0.5}, |
| | | {0.1, -0.15, -0.5, 0.5, -0.1, 0.5}, |
| | | {0.05, -0.1, -0.5, 0.5, -0.05, 0.5}, |
| | | {0, -0.05, -0.5, 0.5, 0, 0.5}, |
| | | {-0.05, 0, -0.5, 0.5, 0.05, 0.5}, |
| | | {-0.1, 0.05, -0.5, 0.5, 0.1, 0.5}, |
| | | {-0.15, 0.1, -0.5, 0.5, 0.15, 0.5}, |
| | | {-0.2, 0.15, -0.5, 0.5, 0.2, 0.5}, |
| | | {-0.25, 0.2, -0.5, 0.5, 0.25, 0.5}, |
| | | {-0.3, 0.25, -0.5, 0.5, 0.3, 0.5}, |
| | | {-0.35, 0.3, -0.5, 0.5, 0.35, 0.5}, |
| | | {-0.4, 0.35, -0.5, 0.5, 0.4, 0.5}, |
| | | {-0.45, 0.4, -0.5, 0.5, 0.45, 0.5}, |
| | | {-0.5, 0.45, -0.5, 0.5, 0.5, 0.5}, |
| | | |
| | | {-0.5, -0.5, 0.45, 0.5, -0.45, 0.5}, |
| | | {-0.5, -0.45, 0.4, 0.5, -0.4, 0.5}, |
| | | {-0.5, -0.4, 0.35, 0.5, -0.35, 0.5}, |
| | | {-0.5, -0.35, 0.3, 0.5, -0.3, 0.5}, |
| | | {-0.5, -0.3, 0.25, 0.5, -0.25, 0.5}, |
| | | {-0.5, -0.25, 0.2, 0.5, -0.2, 0.5}, |
| | | {-0.5, -0.2, 0.15, 0.5, -0.15, 0.5}, |
| | | {-0.5, -0.15, 0.1, 0.5, -0.1, 0.5}, |
| | | {-0.5, -0.1, 0.05, 0.5, -0.05, 0.5}, |
| | | {-0.5, -0.05, 0, 0.5, 0, 0.5}, |
| | | {-0.5, 0, -0.05, 0.5, 0.05, 0.5}, |
| | | {-0.5, 0.05, -0.1, 0.5, 0.1, 0.5}, |
| | | {-0.5, 0.1, -0.15, 0.5, 0.15, 0.5}, |
| | | {-0.5, 0.15, -0.2, 0.5, 0.2, 0.5}, |
| | | {-0.5, 0.2, -0.25, 0.5, 0.25, 0.5}, |
| | | {-0.5, 0.25, -0.3, 0.5, 0.3, 0.5}, |
| | | {-0.5, 0.3, -0.35, 0.5, 0.35, 0.5}, |
| | | {-0.5, 0.35, -0.4, 0.5, 0.4, 0.5}, |
| | | {-0.5, 0.4, -0.45, 0.5, 0.45, 0.5}, |
| | | {-0.5, 0.45, -0.5, 0.5, 0.5, 0.5}, |
| | | |
| | | }, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | end |
| | | |
| | | |
| | | -- PYRAMID |
| | | ---------- |
| | | function technic_cnc_api.register_pyramid(recipeitem, groups, images, description) |
| | | |
| | | local pyrabox = {} |
| | | local detail = technic_cnc_api.detail_level/2 |
| | | for i = 0, detail-1 do |
| | | pyrabox[i+1]={(i/detail/2)-0.5, (i/detail/2)-0.5, (i/detail/2)-0.5, 0.5-(i/detail/2), (i/detail/2)-0.5+(1/detail), 0.5-(i/detail/2)} |
| | | end |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_pyramid", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = pyrabox, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | end |
| | | |
| | | |
| | | -- SPIKE |
| | | -------- |
| | | function technic_cnc_api.register_spike(recipeitem, groups, images, description) |
| | | |
| | | if recipename == "default:dirt" then |
| | | return |
| | | end |
| | | |
| | | local spikebox = {} |
| | | local detail = technic_cnc_api.detail_level |
| | | for i = 0, detail-1 do |
| | | spikebox[i+1]={(i/detail/2)-0.5, (i/detail/2)-0.5, (i/detail/2)-0.5, 0.5-(i/detail/2), (i/detail)-0.5+(1/detail), 0.5-(i/detail/2)} |
| | | end |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_spike", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = spikebox, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | end |
| | | |
| | | |
| | | -- Block one curved edge |
| | | ------------------------ |
| | | function technic_cnc_api.register_onecurvededge(recipeitem, groups, images, description) |
| | | |
| | | local quartercyclebox = {} |
| | | local detail = technic_cnc_api.detail_level*2 |
| | | local sehne |
| | | for i = (detail/2)-1, detail-1 do |
| | | sehne = math.sqrt(0.25 - (((i/detail)-0.5)^2)) |
| | | quartercyclebox[i]={-0.5, -0.5, -sehne, 0.5, (i/detail)+(1/detail)-0.5, 0.5} |
| | | end |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_onecurvededge", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = quartercyclebox, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | end |
| | | |
| | | |
| | | -- Block two curved edges |
| | | ------------------------- |
| | | function technic_cnc_api.register_twocurvededge(recipeitem, groups, images, description) |
| | | |
| | | local quartercyclebox2 = {} |
| | | local detail = technic_cnc_api.detail_level*2 |
| | | local sehne |
| | | for i = (detail/2)-1, detail-1 do |
| | | sehne = math.sqrt(0.25 - (((i/detail)-0.5)^2)) |
| | | quartercyclebox2[i]={-sehne, -0.5, -sehne, 0.5, (i/detail)+(1/detail)-0.5, 0.5} |
| | | end |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_twocurvededge", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = quartercyclebox2, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | minetest.register_craft({ |
| | | output = recipeitem .. "_technic_cnc_twocurvededge 3", |
| | | recipe = { |
| | | {"", "", ""}, |
| | | {recipeitem .. "_technic_cnc_onecurvededge", "", ""}, |
| | | {recipeitem .. "_technic_cnc_onecurvededge", recipeitem .. "_technic_cnc_onecurvededge", ""}, |
| | | }, |
| | | }) |
| | | |
| | | end |
| | | |
| | | -- Cylinder |
| | | ----------- |
| | | function technic_cnc_api.register_cylinder(recipeitem, groups, images, description) |
| | | |
| | | if recipename == "default:dirt" then |
| | | return |
| | | end |
| | | |
| | | local cylbox = {} |
| | | local detail = technic_cnc_api.detail_level |
| | | local sehne |
| | | for i = 1, detail-1 do |
| | | sehne = math.sqrt(0.25 - (((i/detail)-0.5)^2)) |
| | | cylbox[i]={(i/detail)-0.5, -0.5, -sehne, (i/detail)+(1/detail)-0.5, 0.5, sehne} |
| | | end |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_cylinder", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = cylbox, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | minetest.register_craft({ |
| | | output = recipeitem .. "_technic_cnc_cylinder 1", |
| | | recipe = { |
| | | {"", "", ""}, |
| | | {"", recipeitem .. "_technic_cnc_cylinder_horizontal", ""}, |
| | | {"", "", ""}, |
| | | }, |
| | | }) |
| | | |
| | | end |
| | | |
| | | |
| | | -- Cylinder Horizontal |
| | | ---------------------- |
| | | function technic_cnc_api.register_cylinder_horizontal(recipeitem, groups, images, description) |
| | | |
| | | if recipename == "default:dirt" then |
| | | return |
| | | end |
| | | |
| | | local cylbox_horizontal = {} |
| | | local detail = technic_cnc_api.detail_level |
| | | local sehne |
| | | for i = 1, detail-1 do |
| | | sehne = math.sqrt(0.25 - (((i/detail)-0.5)^2)) |
| | | cylbox_horizontal[i]={-0.5, (i/detail)-0.5, -sehne, 0.5, (i/detail)+(1/detail)-0.5, sehne} |
| | | end |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_cylinder_horizontal", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = cylbox_horizontal, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | minetest.register_craft({ |
| | | output = recipeitem .. "_technic_cnc_cylinder_horizontal 1", |
| | | recipe = { |
| | | {"", "", ""}, |
| | | {"", recipeitem .. "_technic_cnc_cylinder", ""}, |
| | | {"", "", ""}, |
| | | }, |
| | | }) |
| | | end |
| | | |
| | | |
| | | -- Sphere |
| | | --------- |
| | | function technic_cnc_api.register_sphere(recipeitem, groups, images, description) |
| | | |
| | | if recipename == "default:dirt" then |
| | | return |
| | | end |
| | | |
| | | local spherebox = {} |
| | | local detail = technic_cnc_api.detail_level |
| | | local sehne |
| | | for i = 1, detail-1 do |
| | | sehne = math.sqrt(0.25 - (((i/detail)-0.5)^2)) |
| | | spherebox[i]={-sehne, (i/detail)-0.5, -sehne, sehne, (i/detail)+(1/detail)-0.5, sehne} |
| | | end |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_cylinder_sphere", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = spherebox, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | end |
| | | |
| | | |
| | | -- Element straight |
| | | ------------------- |
| | | function technic_cnc_api.register_element_straight(recipeitem, groups, images, description) |
| | | |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_element_straight", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.3, -0.5, -0.5, 0.3, 0, 0.5}, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | {-0.3, -0.5, -0.5, 0.3, 0, 0.5}, |
| | | }, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | end |
| | | |
| | | |
| | | -- Element Edge |
| | | --------------- |
| | | function technic_cnc_api.register_element_edge(recipeitem, groups, images, description) |
| | | |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_element_edge", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | {-0.3, -0.5, -0.5, 0.3, 0, 0.3}, |
| | | {-0.5, -0.5, -0.3, -0.3, 0, 0.3}, |
| | | }, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | {-0.3, -0.5, -0.5, 0.3, 0, 0.3}, |
| | | {-0.5, -0.5, -0.3, -0.3, 0, 0.3}, |
| | | }, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | end |
| | | |
| | | |
| | | -- Element T |
| | | ------------ |
| | | function technic_cnc_api.register_element_t(recipeitem, groups, images, description) |
| | | |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_element_t", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | {-0.3, -0.5, -0.5, 0.3, 0, 0.3}, |
| | | {-0.5, -0.5, -0.3, -0.3, 0, 0.3}, |
| | | {0.3, -0.5, -0.3, 0.5, 0, 0.3}, |
| | | }, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | {-0.3, -0.5, -0.5, 0.3, 0, 0.3}, |
| | | {-0.5, -0.5, -0.3, -0.3, 0, 0.3}, |
| | | {0.3, -0.5, -0.3, 0.5, 0, 0.3}, |
| | | }, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | end |
| | | |
| | | |
| | | -- Element Cross |
| | | ---------------- |
| | | function technic_cnc_api.register_element_cross(recipeitem, groups, images, description) |
| | | |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_element_cross", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | {0.3, -0.5, -0.3, 0.5, 0, 0.3}, |
| | | {-0.3, -0.5, -0.5, 0.3, 0, 0.5}, |
| | | {-0.5, -0.5, -0.3, -0.3, 0, 0.3}, |
| | | }, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | {0.3, -0.5, -0.3, 0.5, 0, 0.3}, |
| | | {-0.3, -0.5, -0.5, 0.3, 0, 0.5}, |
| | | {-0.5, -0.5, -0.3, -0.3, 0, 0.3}, |
| | | }, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | end |
| | | |
| | | |
| | | -- Element End |
| | | -------------- |
| | | function technic_cnc_api.register_element_end(recipeitem, groups, images, description) |
| | | |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_element_end", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.5}, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.5}, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | end |
| | | |
| | | |
| | | -- Element straight DOUBLE |
| | | -------------------------- |
| | | function technic_cnc_api.register_element_straight_double(recipeitem, groups, images, description) |
| | | |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_element_straight_double", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.3, -0.5, -0.5, 0.3, 0.5, 0.5}, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | {-0.3, -0.5, -0.5, 0.3, 0.5, 0.5}, |
| | | }, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | minetest.register_craft({ |
| | | output = recipeitem .. "_technic_cnc_element_straight_double 1", |
| | | recipe = { |
| | | {"", "", ""}, |
| | | {"", recipeitem .. "_technic_cnc_element_straight", ""}, |
| | | {"", recipeitem .. "_technic_cnc_element_straight", ""}, |
| | | }, |
| | | }) |
| | | end |
| | | |
| | | |
| | | -- Element Edge DOUBLE |
| | | ---------------------- |
| | | function technic_cnc_api.register_element_edge_double(recipeitem, groups, images, description) |
| | | |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_element_edge_double", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | {-0.3, -0.5, -0.5, 0.3, 0.5, 0.3}, |
| | | {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}, |
| | | }, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | {-0.3, -0.5, -0.5, 0.3, 0.5, 0.3}, |
| | | {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}, |
| | | }, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | minetest.register_craft({ |
| | | output = recipeitem .. "_technic_cnc_element_edge_double 1", |
| | | recipe = { |
| | | {"", "", ""}, |
| | | {"", recipeitem .. "_technic_cnc_element_edge", ""}, |
| | | {"", recipeitem .. "_technic_cnc_element_edge", ""}, |
| | | }, |
| | | }) |
| | | end |
| | | |
| | | |
| | | -- Element T DOUBLE |
| | | ------------------- |
| | | function technic_cnc_api.register_element_t_double(recipeitem, groups, images, description) |
| | | |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_element_t_double", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | {-0.3, -0.5, -0.5, 0.3, 0.5, 0.3}, |
| | | {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}, |
| | | {0.3, -0.5, -0.3, 0.5, 0.5, 0.3}, |
| | | }, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | {-0.3, -0.5, -0.5, 0.3, 0.5, 0.3}, |
| | | {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}, |
| | | {0.3, -0.5, -0.3, 0.5, 0.5, 0.3}, |
| | | }, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | minetest.register_craft({ |
| | | output = recipeitem .. "_technic_cnc_element_t_double 1", |
| | | recipe = { |
| | | {"", "", ""}, |
| | | {"", recipeitem .. "_technic_cnc_element_t", ""}, |
| | | {"", recipeitem .. "_technic_cnc_element_t", ""}, |
| | | }, |
| | | }) |
| | | end |
| | | |
| | | |
| | | -- Element Cross Double |
| | | ----------------------- |
| | | function technic_cnc_api.register_element_cross_double(recipeitem, groups, images, description) |
| | | |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_element_cross_double", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | {0.3, -0.5, -0.3, 0.5, 0.5, 0.3}, |
| | | {-0.3, -0.5, -0.5, 0.3, 0.5, 0.5}, |
| | | {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}, |
| | | }, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = { |
| | | {0.3, -0.5, -0.3, 0.5, 0.5, 0.3}, |
| | | {-0.3, -0.5, -0.5, 0.3, 0.5, 0.5}, |
| | | {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}, |
| | | }, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | minetest.register_craft({ |
| | | output = recipeitem .. "_technic_cnc_element_cross_double 1", |
| | | recipe = { |
| | | {"", "", ""}, |
| | | {"", recipeitem .. "_technic_cnc_element_cross", ""}, |
| | | {"", recipeitem .. "_technic_cnc_element_cross", ""}, |
| | | }, |
| | | }) |
| | | |
| | | end |
| | | |
| | | |
| | | -- Element End Double |
| | | --------------------- |
| | | function technic_cnc_api.register_element_end_double(recipeitem, groups, images, description) |
| | | |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_element_end_double", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.5}, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.5}, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | minetest.register_craft({ |
| | | output = recipeitem .. "_technic_cnc_element_end_double 1", |
| | | recipe = { |
| | | {"", "", ""}, |
| | | {"", recipeitem .. "_technic_cnc_element_end", ""}, |
| | | {"", recipeitem .. "_technic_cnc_element_end", ""}, |
| | | }, |
| | | }) |
| | | end |
| | | |
| | | |
| | | -- STICK |
| | | -------- |
| | | function technic_cnc_api.register_stick(recipeitem, groups, images, description) |
| | | |
| | | minetest.register_node(":" .. recipeitem .. "_technic_cnc_stick", { |
| | | description = description, |
| | | drawtype = "nodebox", |
| | | tiles = images, |
| | | paramtype = "light", |
| | | paramtype2 = "facedir", |
| | | walkable = true, |
| | | selection_box = { |
| | | type = "fixed", |
| | | fixed = {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15}, |
| | | }, |
| | | node_box = { |
| | | type = "fixed", |
| | | fixed = {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15}, |
| | | }, |
| | | groups = groups, |
| | | }) |
| | | minetest.register_craft({ |
| | | output = recipeitem .. "_technic_cnc_stick 8", |
| | | recipe = { |
| | | {'default:stick', "", ""}, |
| | | {"", "", ""}, |
| | | {recipeitem, "", ""}, |
| | | }, |
| | | }) |
| | | end |
| | | |
| | | |
| | | |
| | | -- REGISTER NEW TECHNIC_CNC_API's PART 2: technic_cnc_api.register_element_end(subname, recipeitem, groups, images, desc_element_xyz) |
| | | ----------------------------------------------------------------------------------------------------------------------- |
| | | function technic_cnc_api.register_slope_edge_etc(recipeitem, groups, images, desc_slope, desc_slope_lying, desc_slope_upsdown, desc_slope_edge, desc_slope_inner_edge, desc_slope_upsdwn_edge, desc_slope_upsdwn_inner_edge, desc_pyramid, desc_spike, desc_onecurvededge, desc_twocurvededge, desc_cylinder, desc_cylinder_horizontal, desc_sphere, desc_element_straight, desc_element_edge, desc_element_t, desc_element_cross, desc_element_end) |
| | | |
| | | technic_cnc_api.register_slope(recipeitem, groups, images, desc_slope) |
| | | technic_cnc_api.register_slope_lying(recipeitem, groups, images, desc_slope_lying) |
| | | technic_cnc_api.register_slope_upsdown(recipeitem, groups, images, desc_slope_upsdown) |
| | | technic_cnc_api.register_slope_edge(recipeitem, groups, images, desc_slope_edge) |
| | | technic_cnc_api.register_slope_inner_edge(recipeitem, groups, images, desc_slope_inner_edge) |
| | | technic_cnc_api.register_slope_upsdown_edge(recipeitem, groups, images, desc_slope_upsdwn_edge) |
| | | technic_cnc_api.register_slope_upsdown_inner_edge(recipeitem, groups, images, desc_slope_upsdwn_inner_edge) |
| | | technic_cnc_api.register_pyramid(recipeitem, groups, images, desc_pyramid) |
| | | technic_cnc_api.register_spike(recipeitem, groups, images, desc_spike) |
| | | technic_cnc_api.register_onecurvededge(recipeitem, groups, images, desc_onecurvededge) |
| | | technic_cnc_api.register_twocurvededge(recipeitem, groups, images, desc_twocurvededge) |
| | | technic_cnc_api.register_cylinder(recipeitem, groups, images, desc_cylinder) |
| | | technic_cnc_api.register_cylinder_horizontal(recipeitem, groups, images, desc_cylinder_horizontal) |
| | | technic_cnc_api.register_sphere(recipeitem, groups, images, desc_sphere) |
| | | technic_cnc_api.register_element_straight(recipeitem, groups, images, desc_element_straight) |
| | | technic_cnc_api.register_element_edge(recipeitem, groups, images, desc_element_edge) |
| | | technic_cnc_api.register_element_t(recipeitem, groups, images, desc_element_t) |
| | | technic_cnc_api.register_element_cross(recipeitem, groups, images, desc_element_cross) |
| | | technic_cnc_api.register_element_end(recipeitem, groups, images, desc_element_end) |
| | | end |
| | | |
| | | -- REGISTER STICKS: noncubic.register_xyz(recipeitem, groups, images, desc_element_xyz) |
| | | ------------------------------------------------------------------------------------------------------------ |
| | | function technic_cnc_api.register_stick_etc(recipeitem, groups, images, desc_stick) |
| | | technic_cnc_api.register_stick(recipeitem, groups, images, desc_stick) |
| | | end |
| | | |
| | | function technic_cnc_api.register_elements(recipeitem, groups, images, desc_element_straight_double, desc_element_edge_double, desc_element_t_double, desc_element_cross_double, desc_element_end_double) |
| | | technic_cnc_api.register_element_straight_double(recipeitem, groups, images, desc_element_straight_double) |
| | | technic_cnc_api.register_element_edge_double(recipeitem, groups, images, desc_element_edge_double) |
| | | technic_cnc_api.register_element_t_double(recipeitem, groups, images, desc_element_t_double) |
| | | technic_cnc_api.register_element_cross_double(recipeitem, groups, images, desc_element_cross_double) |
| | | technic_cnc_api.register_element_end_double(recipeitem, groups, images, desc_element_end_double) |
| | | end |
New file |
| | |
| | | -- REGISTER MATERIALS AND PROPERTIES FOR NONCUBIC ELEMENTS: |
| | | ----------------------------------------------------------- |
| | | |
| | | -- WOOD |
| | | ------- |
| | | technic_cnc_api.register_slope_edge_etc("default:wood", |
| | | {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1}, |
| | | {"default_wood.png"}, |
| | | "Wooden Slope", |
| | | "Wooden Slope Lying", |
| | | "Wooden Slope Upside Down", |
| | | "Wooden Slope Edge", |
| | | "Wooden Slope Inner Edge", |
| | | "Wooden Slope Upside Down Edge", |
| | | "Wooden Slope Upside Down Inner Edge", |
| | | "Wooden Pyramid", |
| | | "Wooden Spike", |
| | | "Wooden One Curved Edge Block", |
| | | "Wooden Two Curved Edge Block", |
| | | "Wooden Cylinder", |
| | | "Wooden Cylinder Horizontal", |
| | | "Wooden Sphere", |
| | | "Wooden Element Straight", |
| | | "Wooden Element Edge", |
| | | "Wooden Element T", |
| | | "Wooden Element Cross", |
| | | "Wooden Element End") |
| | | -- STONE |
| | | -------- |
| | | technic_cnc_api.register_slope_edge_etc("default:stone", |
| | | {cracky=3,not_in_creative_inventory=1}, |
| | | {"default_stone.png"}, |
| | | "Stone Slope", |
| | | "Stone Slope Lying", |
| | | "Stone Slope Upside Down", |
| | | "Stone Slope Edge", |
| | | "Stone Slope Inner Edge", |
| | | "Stone Slope Upside Down Edge", |
| | | "Stone Slope Upside Down Inner Edge", |
| | | "Stone Pyramid", |
| | | "Stone Spike", |
| | | "Stone One Curved Edge Block", |
| | | "Stone Two Curved Edge Block", |
| | | "Stone Cylinder", |
| | | "Stote Cylinder Horizontal", |
| | | "Stone Sphere", |
| | | "Stone Element Straight", |
| | | "Stone Element Edge", |
| | | "Stone Element T", |
| | | "Stone Element Cross", |
| | | "Stone Element End") |
| | | -- COBBLE |
| | | --------- |
| | | technic_cnc_api.register_slope_edge_etc("default:cobble", |
| | | {cracky=3,not_in_creative_inventory=1}, |
| | | {"default_cobble.png"}, |
| | | "Cobble Slope", |
| | | "Cobble Slope Lying", |
| | | "Cobble Slope Upside Down", |
| | | "Cobble Slope Edge", |
| | | "Cobble Slope Inner Edge", |
| | | "Cobble Slope Upside Down Edge", |
| | | "Cobble Slope Upside Down Inner Edge", |
| | | "Cobble Pyramid", |
| | | "Cobble Spike", |
| | | "Cobble One Curved Edge Block", |
| | | "Cobble Two Curved Edge Block", |
| | | "Cobble Cylinder", |
| | | "Cobble Cylinder Horizontal", |
| | | "Cobble Sphere", |
| | | "Cobble Element Straight", |
| | | "Cobble Element Edge", |
| | | "Cobble Element T", |
| | | "Cobble Element Cross", |
| | | "Cobble Element End") |
| | | -- BRICK |
| | | -------- |
| | | technic_cnc_api.register_slope_edge_etc("default:brick", |
| | | {cracky=3,not_in_creative_inventory=1}, |
| | | {"default_brick.png"}, |
| | | "Brick Slope", |
| | | "Brick Slope Upside Down", |
| | | "Brick Slope Edge", |
| | | "Brick Slope Inner Edge", |
| | | "Brick Slope Upside Down Edge", |
| | | "Brick Slope Upside Down Inner Edge", |
| | | "Brick Pyramid", |
| | | "Brick Spike", |
| | | "Brick One Curved Edge Block", |
| | | "Brick Two Curved Edge Block", |
| | | "Brick Cylinder", |
| | | "Brick Cylinder Horizontal", |
| | | "Brick Sphere", |
| | | "Brick Element Straight", |
| | | "Brick Element Edge", |
| | | "Brick Element T", |
| | | "Brick Element Cross", |
| | | "Brick Element End") |
| | | -- SANDSTONE |
| | | ------------ |
| | | technic_cnc_api.register_slope_edge_etc("default:sandstone", |
| | | {crumbly=2,cracky=2,not_in_creative_inventory=1}, |
| | | {"default_sandstone.png"}, |
| | | "Sandstone Slope", |
| | | "Sandstone Slope Lying", |
| | | "Sandstone Slope Upside Down", |
| | | "Sandstone Slope Edge", |
| | | "Sandstone Slope Inner Edge", |
| | | "Sandstone Slope Upside Down Edge", |
| | | "Sandstone Slope Upside Down Inner Edge", |
| | | "Sandstone Pyramid", |
| | | "Sandstone Spike", |
| | | "Sandstone One Curved Edge Block", |
| | | "Sandstone Two Curved Edge Block", |
| | | "Sandstone Cylinder", |
| | | "Sandstone Cylinder Horizontal", |
| | | "Sandstone Sphere", |
| | | "Sandstone Element Straight", |
| | | "Sandstone Element Edge", |
| | | "Sandstone Element T", |
| | | "Sandstone Element Cross", |
| | | "Sandstone Element End") |
| | | -- LEAVES |
| | | --------- |
| | | technic_cnc_api.register_slope_edge_etc("default:leaves", |
| | | {snappy=2,choppy=2,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, |
| | | {"bucharest_tree.png"}, |
| | | "Leaves Slope", |
| | | "Leaves Slope Lying", |
| | | "Leaves Slope Upside Down", |
| | | "Leaves Slope Edge", |
| | | "Leaves Slope Inner Edge", |
| | | "Leaves Slope Upside Down Edge", |
| | | "Leaves Slope Upside Down Inner Edge", |
| | | "Leaves Pyramid", |
| | | "Leaves Spike", |
| | | "Leaves One Curved Edge Block", |
| | | "Leaves Two Curved Edge Block", |
| | | "Leaves Cylinder", |
| | | "Leaves Cylinder Horizontal", |
| | | "Leaves Sphere", |
| | | "Leaves Element Straight", |
| | | "Leaves Element Edge", |
| | | "Leaves Element T", |
| | | "Leaves Element Cross", |
| | | "Leaves Element End") |
| | | -- DIRT |
| | | ------- |
| | | technic_cnc_api.register_slope_edge_etc("default:dirt", |
| | | {snappy=2,choppy=2,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, |
| | | {"default_grass.png", "default_dirt.png", "default_grass.png"}, |
| | | "Dirt Slope", |
| | | "Dirt Slope Lying", |
| | | "Dirt Slope Upside Down", |
| | | "Dirt Slope Edge", |
| | | "Dirt Slope Inner Edge", |
| | | "Dirt Slope Upside Down Edge", |
| | | "Dirt Slope Upside Down Inner Edge", |
| | | "Dirt Pyramid", |
| | | "Dirt Spike", |
| | | "Dirt One Curved Edge Block", |
| | | "Dirt Two Curved Edge Block", |
| | | "Dirt Cylinder", |
| | | "Dirt Cylinder Horizontal", |
| | | "Dirt Sphere", |
| | | "Dirt Element Straight", |
| | | "Dirt Element Edge", |
| | | "Dirt Element T", |
| | | "Dirt Element Cross", |
| | | "Dirt Element End") |
| | | -- TREE |
| | | ------- |
| | | technic_cnc_api.register_slope_edge_etc("default:tree", |
| | | {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,not_in_creative_inventory=1}, |
| | | {"default_tree.png"}, |
| | | "Tree Slope", |
| | | "Tree Slope Lying", |
| | | "Tree Slope Upside Down", |
| | | "Tree Slope Edge", |
| | | "Tree Slope Inner Edge", |
| | | "Tree Slope Upside Down Edge", |
| | | "Tree Slope Upside Down Inner Edge", |
| | | "Tree Pyramid", |
| | | "Tree Spike", |
| | | "Tree One Curved Edge Block", |
| | | "Tree Two Curved Edge Block", |
| | | "Tree Cylinder", |
| | | "Tree Cylinder Horizontal", |
| | | "Tree Sphere", |
| | | "Tree Element Straight", |
| | | "Tree Element Edge", |
| | | "Tree Element T", |
| | | "Tree Element Cross", |
| | | "Tree Element End") |
| | | -- STEEL |
| | | -------- |
| | | technic_cnc_api.register_slope_edge_etc("default:steelblock", |
| | | {snappy=1,bendy=2,cracky=1,melty=2,level=2,not_in_creative_inventory=1}, |
| | | {"default_steel_block.png"}, |
| | | "Steel Slope", |
| | | "Steel Slope Lying", |
| | | "Steel Slope Upside Down", |
| | | "Steel Slope Edge", |
| | | "Steel Slope Inner Edge", |
| | | "Steel Slope Upside Down Edge", |
| | | "Steel Slope Upside Down Inner Edge", |
| | | "Steel Pyramid", |
| | | "Steel Spike", |
| | | "Steel One Curved Edge Block", |
| | | "Steel Two Curved Edge Block", |
| | | "Steel Cylinder", |
| | | "Steel Cylinder Horizontal", |
| | | "Steel Sphere", |
| | | "Steel Element Straight", |
| | | "Steel Element Edge", |
| | | "Steel Element T", |
| | | "Steel Element Cross", |
| | | "Steel Element End") |
| | | |
| | | -- REGISTER MATERIALS AND PROPERTIES FOR STICKS: |
| | | ------------------------------------------------ |
| | | |
| | | -- WOOD |
| | | ------- |
| | | technic_cnc_api.register_stick_etc("default:wood", |
| | | {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1}, |
| | | {"default_wood.png"}, |
| | | "Wooden Stick") |
| | | -- STONE |
| | | -------- |
| | | technic_cnc_api.register_stick_etc("default:stone", |
| | | {cracky=3,not_in_creative_inventory=1}, |
| | | {"default_stone.png"}, |
| | | "Stone Stick") |
| | | -- COBBLE |
| | | --------- |
| | | technic_cnc_api.register_stick_etc("default:cobble", |
| | | {cracky=3,not_in_creative_inventory=1}, |
| | | {"default_cobble.png"}, |
| | | "Cobble Stick") |
| | | -- BRICK |
| | | -------- |
| | | technic_cnc_api.register_stick_etc("default:brick", |
| | | {cracky=3,not_in_creative_inventory=1}, |
| | | {"default_brick.png"}, |
| | | "Brick Stick") |
| | | -- SANDSTONE |
| | | ------------ |
| | | technic_cnc_api.register_stick_etc("default:sandstone", |
| | | {crumbly=2,cracky=2,not_in_creative_inventory=1}, |
| | | {"default_sandstone.png"}, |
| | | "Sandstone Stick") |
| | | -- LEAVES |
| | | --------- |
| | | technic_cnc_api.register_stick_etc("default:leaves", |
| | | {snappy=2,choppy=2,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, |
| | | {"bucharest_tree.png"}, |
| | | "Leaves Stick") |
| | | -- TREE |
| | | ------- |
| | | technic_cnc_api.register_stick_etc("default:tree", |
| | | {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1,not_in_creative_inventory=1}, |
| | | {"default_tree.png"}, |
| | | "Tree Stick") |
| | | -- STEEL |
| | | -------- |
| | | technic_cnc_api.register_stick_etc("default:steelblock", |
| | | {snappy=1,bendy=2,cracky=1,melty=2,level=2,not_in_creative_inventory=1}, |
| | | {"default_steel_block.png"}, |
| | | "Steel Stick") |
| | | |
| | | -- REGISTER MATERIALS AND PROPERTIES FOR HALF AND NORMAL HEIGHT ELEMENTS: |
| | | ------------------------------------------------------------------------- |
| | | |
| | | -- WOOD |
| | | ------- |
| | | technic_cnc_api.register_elements("default:wood", |
| | | {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1}, |
| | | {"default_wood.png"}, |
| | | "Wooden Element Straight Double", |
| | | "Wooden Element Edge Double", |
| | | "Wooden Element T Double", |
| | | "Wooden Element Cross Double", |
| | | "Wooden Element End Double") |
| | | -- STONE |
| | | -------- |
| | | technic_cnc_api.register_elements("default:stone", |
| | | {cracky=3,not_in_creative_inventory=1}, |
| | | {"default_stone.png"}, |
| | | "Stone Element Straight Double", |
| | | "Stone Element Edge Double", |
| | | "Stone Element T Double", |
| | | "Stone Element Cross Double", |
| | | "Stone Element End Double") |
| | | -- COBBLE |
| | | --------- |
| | | technic_cnc_api.register_elements("default:cobble", |
| | | {cracky=3,not_in_creative_inventory=1}, |
| | | {"default_cobble.png"}, |
| | | "Cobble Element Straight Double", |
| | | "Cobble Element Edge Double", |
| | | "Cobble Element T Double", |
| | | "Cobble Element Cross Double", |
| | | "Cobble Element End Double") |
| | | -- BRICK |
| | | -------- |
| | | technic_cnc_api.register_elements("default:brick", |
| | | {cracky=3,not_in_creative_inventory=1}, |
| | | {"default_brick.png"}, |
| | | "Brick Element Straight Double", |
| | | "Brick Element Edge Double", |
| | | "Brick Element T Double", |
| | | "Brick Element Cross Double", |
| | | "Brick Element End Double") |
| | | -- SANDSTONE |
| | | ------------ |
| | | technic_cnc_api.register_elements("default:sandstone", |
| | | {crumbly=2,cracky=2,not_in_creative_inventory=1}, |
| | | {"default_sandstone.png"}, |
| | | "Sandstone Element Straight Double", |
| | | "Sandstone Element Edge Double", |
| | | "Sandstone Element T Double", |
| | | "Sandstone Element Cross Double", |
| | | "Sandstone Element End Double") |
| | | -- LEAVES |
| | | --------- |
| | | technic_cnc_api.register_elements("default:leaves", |
| | | {snappy=2,choppy=2,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, |
| | | {"bucharest_tree.png"}, |
| | | "Leaves Element Straight Double", |
| | | "Leaves Element Edge Double", |
| | | "Leaves Element T Double", |
| | | "Leaves Element Cross Double", |
| | | "Leaves Element End Double") |
| | | -- TREE |
| | | ------- |
| | | technic_cnc_api.register_elements("default:tree", |
| | | {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1,not_in_creative_inventory=1}, |
| | | {"default_tree.png"}, |
| | | "Tree Element Straight Double", |
| | | "Tree Element Edge Double", |
| | | "Tree Element T Double", |
| | | "Tree Element Cross Double", |
| | | "Tree Element End Double") |
| | | -- STEEL |
| | | -------- |
| | | technic_cnc_api.register_elements("default:steel", |
| | | {snappy=1,bendy=2,cracky=1,melty=2,level=2,not_in_creative_inventory=1}, |
| | | {"default_steel_block.png"}, |
| | | "Steel Element Straight Double", |
| | | "Steel Element Edge Double", |
| | | "Steel Element T Double", |
| | | "Steel Element Cross Double", |
| | | "Steel Element End Double") |
| | |
| | | -- namespace: technic |
| | | -- (c) 2012-2013 by RealBadAngel <mk@realbadangel.pl> |
| | | |
| | | technic = {} |
| | | |
| | | modpath=minetest.get_modpath("technic") |
| | | |
| | | --Read technic config file |
| | |
| | | dofile(modpath.."/music_player.lua") |
| | | dofile(modpath.."/generator.lua") |
| | | dofile(modpath.."/grinder.lua") |
| | | dofile(modpath.."/cnc.lua") |
| | | dofile(modpath.."/cnc_api.lua") |
| | | dofile(modpath.."/cnc_nodes.lua") |
| | | |
| | | --MV machines |
| | | dofile(modpath.."/wires_mv.lua") |
| | |
| | | dofile(modpath.."/alloy_furnace_mv.lua") |
| | | dofile(modpath.."/forcefield.lua") |
| | | |
| | | --HV machines |
| | | dofile(modpath.."/wires_hv.lua") |
| | | |
| | | --Tools |
| | | if enable_mining_drill==true then dofile(modpath.."/mining_drill.lua") end |
| | | if enable_mining_laser==true then dofile(modpath.."/mining_laser_mk1.lua") end |
| | | if enable_flashlight==true then dofile(modpath.."/flashlight.lua") end |
| | | if technic.config:getBool("enable_mining_drill") then dofile(modpath.."/mining_drill.lua") end |
| | | if technic.config:getBool("enable_mining_laser") then dofile(modpath.."/mining_laser_mk1.lua") end |
| | | if technic.config:getBool("enable_flashlight") then dofile(modpath.."/flashlight.lua") end |
| | | dofile(modpath.."/cans.lua") |
| | | dofile(modpath.."/chainsaw.lua") |
| | | dofile(modpath.."/tree_tap.lua") |