From 7f2be244f2f7f2497cba33ba1e2bd5a599f23bfb Mon Sep 17 00:00:00 2001 From: kpoppel Date: Tue, 7 May 2013 22:34:06 +0200 Subject: [PATCH 1/4] Add textures for active mode of CNC. Correct two typing bug in battery_box.lua --- technic/textures/technic_cnc_front_active.png | Bin 0 -> 2216 bytes technic/textures/technic_cnc_top_active.png | Bin 0 -> 2214 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 technic/textures/technic_cnc_front_active.png create mode 100644 technic/textures/technic_cnc_top_active.png diff --git a/technic/textures/technic_cnc_front_active.png b/technic/textures/technic_cnc_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..f7a3c7f7822a0186e2ac6f7e9adc55a05dfeeccc GIT binary patch literal 2216 zcmV;Z2v_%sP)&C-N(90r3iJj6k#M01(M0d$AMnOR z{s%%LV&jd}MjK*6NsPuQQD}kk5fFw#$7(^QwWsIoefEAoz1ZWNL4zbp;(K@Up0(Dq zpXXWYUE-mK9!hLFYinyf_0&^*Qs>S)?__>{{v+@8+S(dlxcMf6^9Tf|PoL(;ufD|V zXa4d(7r$crr8G^$u3bCv)}l;?vks{x0yuW;I2xcH4iQFSqQZO6sXx8N=~JsDnNShN z)`E|qAv7)dR3DHeEZ9U43WY=F86iO&d(eU{S2?`*SmzPa;9bBJ86qTthyX|cZ3>bH z7dkb90B>uM0vpEcy6$RBuE>gvJvZHmlo}}o-X(OukJ1963_==0n=oa8HaRhNMUrzA z{hSoQwH{BTsoPEh0HXw1p3}BnK!2(SO5t0}j%)Vu&WkT&@{ENmFX!#&UqnfTPlyjZ=#;I3cBPO_X?-iVS<#pP|A(BA! z4Z1YoJW467^#myiDxve7>cSYM4N@5d0sy5mq>!|2LzD_3C9|`$69CbB%A!YW#{k6W zaCOD*rK@@O#ETFjB1VdSNvIvcwIDU#da7zfVG1-F=R7*s*m_KG4c>+hfDsTu35gL2 zqNJ`y69C236xC=*o);ZeA+dY^4V--b1!77h0!n9$E>x&2Lz#khRFOnr>-O!aOcR0t zBEfoG+oFnsBs=Q0G_)}yWTN$nER!guHc3#`NG+*HRTrQnr(S*qfkK3cAGe4CiY$ZR zsXjOdN)yH&-_$503CW?Pz?6o(*CSewHeC_#Jh>J~B@r=TLj)-%ZP=UckrL#hGmQ%o zV=}x*geXbT5p6^&gEC->jC`sfMgb`?I=4o#Wh>3O8X*M^MWzK=mUWV*L}oPAu%##r zu5AfgP5{V|u(m}h)6pU{d-v>NJRDL^PebaA+AB+ZfGN zTU&w;#OTS&0;4rCd9*I5s}bHO@=SwJs9X^mOKV$PYbOATJfls5m=cAS_@HUp7NaEE z7bmB}{Wl<`B%dlbg4zaRsyKEp zK!ZQ_O~SzP<=s83tvU8p!L|iBai63=ojCoSPjhy7hP89&$x4HLf4Gq=giZTE2oWg^ z!{Lx8zxx|TqY>6QM5d8(!az*0ZGIci+|i9#z4SO>*m}#4I#2v8@xj3H%iA={%=5$x zXGz_M;@7`;B7v9ykU}CA)OF4B_pYR>Duj?kFGxmi1kKLQ@&4dFZa->4!27?tA8?%g z?frn}%?ArExv1dwqm~Q9HNLjgXS&xpD1O+>c|qbuN&=h_HTcu-<#bisx|>Adc~%Fpq$3J z7Vjf@W-xh;mtj+7)tuZPMFMOmPX!H+$K$u@$j2Apqs?SZN8 z_n9#V7A^N)t2wY}dHPgFGw5Eqt+zbJXjF0c@1N!9&DV0*v(K^e_B#^~tmoALS|~i0 z;5L}*DfZkgWFNiY)=a(;%m8{9gp_ELVaH=k*~4f}LgLz%yx#>KJa~}Zd-rrvpZWLszOb<4 zKhFP4wqFdu>gp_y&s`uy_l75lR1zfxA$nwjkOV>~gh+VrF_|HHN0JJe5<)3b q2&4oOflmpeyX{LXFE1zlkLMrn-v`#0NHfd;0000j) literal 0 HcmV?d00001 diff --git a/technic/textures/technic_cnc_top_active.png b/technic/textures/technic_cnc_top_active.png new file mode 100644 index 0000000000000000000000000000000000000000..2bc9d81511116b0c4bb0b3ad5a2addb1d918f2de GIT binary patch literal 2214 zcmV;X2wC@uP)ZgE2TGv?kO#$jPDB(rY8-h`}H#3;`LP-F~91gLFZ|>5cL;!Y*4N*7NLwqlSHAz``@eUkzy0>x zgbrE!g4Msot!2BzWFzQO$eUWI@T%6T*xufRmd?hbTH2=IR=ck z)KbYlVw^`1#^^Zj7;W&*KmQ9MM;L>&ODv@!;;?FOZ5X1XbptwXFgM=)=w}$9FO_h} zy!Pl3AHVx9YiT_E#@G4e!;cUd2%B^IWnuq?1MOTf+G$OA>&-U+klJz1L-a)L)Vh+U z{jCP(dBGbPBHQb02T@|qcyD;^(Ifuj2R}lL(vB{`NV& zR0O5>j>x9;yqgdml;>xRb)*;(t+xOS%2F#91ArQbvyNUG55D$QK6vtP7*)Rf)}Qn7 zd++0-2b8{6y!DtEX=8HUWyXv_St{#wMU5dG0x`#p(V{pD ztyioKw5763yIT#k(g`Vm+<4O}U;c})^2?uoK+F?={HI^pzT8<*!Fp(GVOTIC?52sb zG~zBYTE~PyKUbFX0)R^a6CBnx=!1ORb2FU{fMT&IrEeOr#_^x;eSk{m!5feG^d}#p z3S%jZ(lJpPT|pq74y?-=;{!^kk4iE?3b?qLU3;T-A*D>K4L1h;W;`CiIlwr)Y1_=K z!Dq*-uRr3~AAW>7h}N_AhVhPQ9J1?Jm#E7EYH3TwXvDifIXBcaf_(vC&<)h5*W7>Q z4_MC&+V6CMb(Y{g@x~gxR9=1k;byz*E2K26btoPN#M2hR<@%a19SJFsb`j?dLk($4 zXsfi^J|96$p2O+D_0vn%>lwG{eFGqUP|8BTIUsfLiyyy_^$Dy)?O<8Y7!|Bj%2M%D z0u0g%Vg@dFqzFbjqYHUDqGk)5(Uf&wXid=3wvM=QoCSy}W3a@ysrKUjX`}M$3?j(V z$a#lP9v=eUdqxvn_QTi32iAXMM%dT%jKEr-ULoCn(=PX*FsxXRE2sj#OOChjUmTO zsRIM(7~t-VV1GQ&M#tayHpYatJFInB2Fv9c866iRhcBE6(Q>%ICk2Od6T?)}X~HNN zW3k4wfB7X;ZeF5;G6qOzmnU|o1225IX<#TR1=j0pUf2@XFevL>@ZK?QQ1>8zKPVPU8e zQY1|~VhDIM(7G~u!-Pn=yaE}7UBu*wNJVtuy&^Y_*G)x+MV->eV44#4W+mHlzN>NQtsuO&1RJTXvOax^ah}WHJfl^`ScixprBRlJdOmY} z`DLUxYU!A0Df5bYw=E!mwodekRy(FQLUy$EP8q4S7Vq+>?L9@UQZ7O8`}G%yCK!rEu7bquwrbj;YEC!^tWpe_xS!RdIx zQkGi=N~u`g_5y(Qx}y&Keqve9#GNNh8Bs+>!+A@2zF-`rT|m3yb{1nnhJbX!A%E_I zH0|)lV~yawXD!Q%t$YLEQb4RQUu~#jcGS6$_j?W(C)TTLtcAX;tmm0l3e)`~F=g7? zK*9KJ*S8AJWn`|TywP0GE4>vgp1G_TYw#i7ae=jX>xdV}?ZDc}hY3cbl$lW)H7(@h zo?1KBdivU_%a##wij*dZ3h|V&2=R2J-!PD;%n+qXV@jE(15@iQ0IX-Ie%@Y22cvex z8C;k+y)vOgSg$)SIKVTc5RVyT+apvu42yQ5u0ory2!Hg&ZKU&xI)`_L-jxs|YVYKL zl*aCuknZr_^Wfp@EEk9W^Z&pXUwIYpJvcB%QQh{rX#Flyl~<-h2z* oeCzk}Q}VAl^T{Wl{;&7{2dVVSpbqYpQvd(}07*qoM6N<$g1)&UPyhe` literal 0 HcmV?d00001 From fef948c5ac919082fa30d441ec62d6d1d0d2c98b Mon Sep 17 00:00:00 2001 From: kpoppel Date: Tue, 7 May 2013 22:51:03 +0200 Subject: [PATCH 2/4] CNC can now change programs while it is working. --- technic/battery_box.lua | 4 +- technic/cnc.lua | 128 ++++++++++++++++++++++------------------ 2 files changed, 72 insertions(+), 60 deletions(-) diff --git a/technic/battery_box.lua b/technic/battery_box.lua index 0e08d74..9c91821 100644 --- a/technic/battery_box.lua +++ b/technic/battery_box.lua @@ -218,7 +218,7 @@ minetest.register_abm({ end end --- dischargin registered power tools +-- discharging registered power tools if inv:is_empty("dst") == false then srcstack = inv:get_stack("dst", 1) src_item=srcstack:to_table() @@ -297,7 +297,7 @@ table_index=1 local pos1={} i=1 repeat - if PR_nodes[i]==nil then break end -- gettin power from all connected producers + if PR_nodes[i]==nil then break end -- getting power from all connected producers pos1.x=PR_nodes[i].x pos1.y=PR_nodes[i].y pos1.z=PR_nodes[i].z diff --git a/technic/cnc.lua b/technic/cnc.lua index 71b78b0..4976502 100644 --- a/technic/cnc.lua +++ b/technic/cnc.lua @@ -1,5 +1,11 @@ -- Technic CNC v1.0 by kpo -- Based on the NonCubic Blocks MOD v1.4 by yves_de_beck + +-- Idea: +-- Somehw have a tabbed/paged panel if the number of shapes should expand +-- beyond what is available in the panel today. +-- 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 shape = {} local onesize_products = { slope = 2, @@ -89,61 +95,9 @@ local cnc_power_formspec= local size = 1; -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 = {cracky=2}, - legacy_facedir_simple = true, - technic_power_machine=1, - internal_EU_buffer=0; - internal_EU_buffer_size=5000; - cnc_time = 0; - src_time = 0; -- fixme - - on_construct = function(pos) - local meta = minetest.env:get_meta(pos) - meta:set_string("infotext", "CNC machine") - meta:set_float("technic_power_machine", 1) - meta:set_float("internal_EU_buffer", 0) - meta:set_float("internal_EU_buffer_size", 5000) - meta:set_string("formspec", cnc_formspec..cnc_power_formspec) - meta:set_float("cnc_time", 0) - - local inv = meta:get_inventory() - inv:set_size("src", 1) - inv:set_size("dst", 4) - - meta:set_string("formspec", cnc_formspec) - meta:set_string("infotext", "CNC Milling Machine") - end, - - can_dig = function(pos,player) - local meta = minetest.env: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, - - - on_receive_fields = function(pos, formname, fields, sender) +-- The form handler is declared here because we need it in both the inactive and active modes +-- in order to be able to change programs wile it is running. +local form_handler = function(pos, formname, fields, sender) -- REGISTER MILLING PROGRAMS AND OUTPUTS: ------------------------------------------ -- Program for half/full size @@ -178,22 +132,78 @@ minetest.register_node("technic:cnc", { if onesize_products[k] ~= nil or (twosize_products[k] ~= nil and size==2) then meta:set_string("cnc_product", inputname .. "_technic_cnc_" .. k) + print(inputname .. "_technic_cnc_" .. k) break end if twosize_products[k] ~= nil and size==1 then meta:set_string("cnc_product", inputname .. "_technic_cnc_" .. k .. "_double") + print(inputname .. "_technic_cnc_" .. k .. "_double") break end end return - end, -- callback function + end -- callback function + +-- The actual block inactive state +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 = {cracky=2}, + legacy_facedir_simple = true, + technic_power_machine=1, + internal_EU_buffer=0; + internal_EU_buffer_size=5000; + cnc_time = 0; + src_time = 0; -- fixme + + on_construct = function(pos) + local meta = minetest.env:get_meta(pos) + meta:set_string("infotext", "CNC Machine Inactive") + meta:set_float("technic_power_machine", 1) + meta:set_float("internal_EU_buffer", 0) + meta:set_float("internal_EU_buffer_size", 5000) + meta:set_string("formspec", cnc_formspec..cnc_power_formspec) + meta:set_float("cnc_time", 0) + + local inv = meta:get_inventory() + inv:set_size("src", 1) + inv:set_size("dst", 4) + end, + + can_dig = function(pos,player) + local meta = minetest.env: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, + + on_receive_fields = form_handler, }) +-- Active state block minetest.register_node("technic:cnc_active", { description = "CNC 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_active.png"}, + 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"}, paramtype2 = "facedir", groups = {cracky=2,not_in_creative_inventory=1}, legacy_facedir_simple = true, @@ -206,8 +216,10 @@ minetest.register_node("technic:cnc_active", { end return true end, + on_receive_fields = form_handler, }) +-- Action code performing the transformation minetest.register_abm( { nodenames = {"technic:cnc","technic:cnc_active"}, From 5940f5bda421add111a881b4df82b793121738a9 Mon Sep 17 00:00:00 2001 From: kpoppel Date: Wed, 8 May 2013 00:06:54 +0200 Subject: [PATCH 3/4] Slope box fixes. From Bas080. --- technic/cnc_api.lua | 109 +++++++------------------------------------- 1 file changed, 16 insertions(+), 93 deletions(-) diff --git a/technic/cnc_api.lua b/technic/cnc_api.lua index 2d5dcfe..aecfadb 100644 --- a/technic/cnc_api.lua +++ b/technic/cnc_api.lua @@ -6,10 +6,6 @@ technic_cnc_api = {} ---------------------------------------- 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: ------------------------------------------------------ @@ -146,6 +142,12 @@ end -- SLOPE INNER EDGE ------------------- function technic_cnc_api.register_slope_inner_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, -0.5, 0.5, (i/detail)-0.5+(1/detail), 0.5} + slopeboxedge[i+detail+1]={-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_inner_edge", { description = description, @@ -159,51 +161,8 @@ minetest.register_node(":" .. recipeitem .. "_technic_cnc_slope_inner_edge", { 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}, - }, + type = "fixed", + fixed = slopeboxedge, }, groups = groups, }) @@ -251,6 +210,13 @@ if recipename == "default:dirt" then return end +local slopeboxedge = {} +local detail = technic_cnc_api.detail_level +for i = 0, detail-1 do + slopeboxedge[i+1]={0.5-(i/detail)-(1/detail), (i/detail)-0.5, -0.5, 0.5, (i/detail)-0.5+(1/detail), 0.5} + slopeboxedge[i+detail+1]={-0.5, (i/detail)-0.5, 0.5-(i/detail)-(1/detail), 0.5, (i/detail)-0.5+(1/detail), 0.5} +end + minetest.register_node(":" .. recipeitem .. "_technic_cnc_slope_inner_edge_upsdown", { description = description, drawtype = "nodebox", @@ -264,50 +230,7 @@ minetest.register_node(":" .. recipeitem .. "_technic_cnc_slope_inner_edge_upsdo }, 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}, - - }, + fixed = slopeboxedge, }, groups = groups, }) From 2d68498dc10bc74a35a5cc0ff4e81b6640807511 Mon Sep 17 00:00:00 2001 From: kpoppel Date: Wed, 8 May 2013 01:42:22 +0200 Subject: [PATCH 4/4] Massive change to the way CNC programs are registered. Now the API is open for adding new nodes and inhibiting some nodes for some materials. No more recipes outside of the CNC machine. Code length also greatly reduced. --- technic/cnc_api.lua | 1155 +++++++++++------------------------------ technic/cnc_nodes.lua | 340 +----------- 2 files changed, 345 insertions(+), 1150 deletions(-) diff --git a/technic/cnc_api.lua b/technic/cnc_api.lua index aecfadb..2d5e305 100644 --- a/technic/cnc_api.lua +++ b/technic/cnc_api.lua @@ -8,850 +8,329 @@ technic_cnc_api.detail_level = 16 -- 16; 1-32 -- 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) - local slopeboxedge = {} - local detail = technic_cnc_api.detail_level - for i = 0, detail-1 do - slopeboxedge[i+1]={(i/detail)-0.5, -0.5, -0.5, 0.5, (i/detail)-0.5+(1/detail), 0.5} - slopeboxedge[i+detail+1]={-0.5, -0.5, (i/detail)-0.5, 0.5, (i/detail)-0.5+(1/detail), 0.5} +local cnc_sphere = + function() + local nodebox = {} + 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)) + nodebox[i]={-sehne, (i/detail)-0.5, -sehne, sehne, (i/detail)+(1/detail)-0.5, sehne} + end + return nodebox end -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 = slopeboxedge, - }, - groups = groups, - }) +local cnc_cylinder_horizontal = + function() + local nodebox = {} + 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)) + nodebox[i]={-0.5, (i/detail)-0.5, -sehne, 0.5, (i/detail)+(1/detail)-0.5, sehne} + end + return nodebox + end + +local cnc_cylinder = + function() + local nodebox = {} + 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)) + nodebox[i]={(i/detail)-0.5, -0.5, -sehne, (i/detail)+(1/detail)-0.5, 0.5, sehne} + end + return nodebox + end + +local cnc_twocurvededge = + function() + local nodebox = {} + 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)) + nodebox[i]={-sehne, -0.5, -sehne, 0.5, (i/detail)+(1/detail)-0.5, 0.5} + end + return nodebox + end + +local cnc_onecurvededge = + function() + local nodebox = {} + 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)) + nodebox[i]={-0.5, -0.5, -sehne, 0.5, (i/detail)+(1/detail)-0.5, 0.5} + end + return nodebox + end + +local cnc_spike = + function() + local nodebox = {} + local detail = technic_cnc_api.detail_level + for i = 0, detail-1 do + nodebox[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 + return nodebox + end + +local cnc_pyramid = + function() + local nodebox = {} + local detail = technic_cnc_api.detail_level/2 + for i = 0, detail-1 do + nodebox[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 + return nodebox + end + +local cnc_slope_inner_edge_upsdown = + function() + local nodebox = {} + local detail = technic_cnc_api.detail_level + for i = 0, detail-1 do + nodebox[i+1]={0.5-(i/detail)-(1/detail), (i/detail)-0.5, -0.5, 0.5, (i/detail)-0.5+(1/detail), 0.5} + nodebox[i+detail+1]={-0.5, (i/detail)-0.5, 0.5-(i/detail)-(1/detail), 0.5, (i/detail)-0.5+(1/detail), 0.5} + end + return nodebox + end + +local cnc_slope_edge_upsdown = + function() + local nodebox = {} + local detail = technic_cnc_api.detail_level + for i = 0, detail-1 do + nodebox[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 + return nodebox + end + +local cnc_slope_inner_edge = + function() + local nodebox = {} + local detail = technic_cnc_api.detail_level + for i = 0, detail-1 do + nodebox[i+1]={(i/detail)-0.5, -0.5, -0.5, 0.5, (i/detail)-0.5+(1/detail), 0.5} + nodebox[i+detail+1]={-0.5, -0.5, (i/detail)-0.5, 0.5, (i/detail)-0.5+(1/detail), 0.5} + end + return nodebox + end + +local cnc_slope_edge = + function() + local nodebox = {} + local detail = technic_cnc_api.detail_level + for i = 0, detail-1 do + nodebox[i+1]={(i/detail)-0.5, -0.5, (i/detail)-0.5, 0.5, (i/detail)-0.5+(1/detail), 0.5} + end + return nodebox + end + +local cnc_slope_upsdown = + function() + local nodebox = {} + local detail = technic_cnc_api.detail_level + for i = 0, detail-1 do + nodebox[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 + return nodebox + end + +local cnc_slope_lying = + function() + local nodebox = {} + local detail = technic_cnc_api.detail_level + for i = 0, detail-1 do + nodebox[i+1]={(i/detail)-0.5, -0.5, (i/detail)-0.5, (i/detail)-0.5+(1/detail), 0.5 , 0.5} + end + return nodebox + end + +local cnc_slope = + function() + local nodebox = {} + local detail = technic_cnc_api.detail_level + for i = 0, detail-1 do + nodebox[i+1]={-0.5, (i/detail)-0.5, (i/detail)-0.5, 0.5, (i/detail)-0.5+(1/detail), 0.5} + end + return nodebox + end + +-- Define slope boxes for the various nodes +------------------------------------------- +technic_cnc_api.cnc_programs = { + {suffix = "technic_cnc_stick", + nodebox = {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15}, + desc = "Stick"}, + + {suffix = "technic_cnc_element_end_double", + nodebox = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.5}, + desc = "Element End Double"}, + + {suffix = "technic_cnc_element_cross_double", + nodebox = { + {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}}, + desc = "Element Cross Double"}, + + {suffix = "technic_cnc_element_t_double", + nodebox = { + {-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}}, + desc = "Element T Double"}, + + {suffix = "technic_cnc_element_edge_double", + nodebox = { + {-0.3, -0.5, -0.5, 0.3, 0.5, 0.3}, + {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}}, + desc = "Element Edge Double"}, + + {suffix = "technic_cnc_element_straight_double", + nodebox = {-0.3, -0.5, -0.5, 0.3, 0.5, 0.5}, + desc = "Element Straight Double"}, + + {suffix = "technic_cnc_element_end", + nodebox = {-0.3, -0.5, -0.3, 0.3, 0, 0.5}, + desc = "Element End"}, + + {suffix = "technic_cnc_element_cross", + nodebox = { + {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}}, + desc = "Element Cross"}, + + {suffix = "technic_cnc_element_t", + nodebox = { + {-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}}, + desc = "Element T"}, + + {suffix = "technic_cnc_element_edge", + nodebox = { + {-0.3, -0.5, -0.5, 0.3, 0, 0.3}, + {-0.5, -0.5, -0.3, -0.3, 0, 0.3}}, + desc = "Element Edge"}, + + {suffix = "technic_cnc_element_straight", + nodebox = {-0.3, -0.5, -0.5, 0.3, 0, 0.5}, + desc = "Element Straight"}, + + {suffix = "technic_cnc_sphere", + nodebox = cnc_sphere(), + desc = "Sphere"}, + + {suffix = "technic_cnc_cylinder_horizontal", + nodebox = cnc_cylinder_horizontal(), + desc = "Cylinder Horizontal"}, + + {suffix = "technic_cnc_cylinder", + nodebox = cnc_cylinder(), + desc = ""}, + + {suffix = "technic_cnc_twocurvededge", + nodebox = cnc_twocurvededge(), + desc = "One Curved Edge Block"}, + + {suffix = "technic_cnc_onecurvededge", + nodebox = cnc_onecurvededge(), + desc = "Two Curved Edge Block"}, + + {suffix = "technic_cnc_spike", + nodebox = cnc_spike(), + desc = "Spike"}, + + {suffix = "technic_cnc_pyramid", + nodebox = cnc_pyramid(), + desc = "Pyramid"}, + + {suffix = "technic_cnc_slope_inner_edge_upsdown", + nodebox = cnc_slope_inner_edge_upsdown(), + desc = "Slope Upside Down Inner Edge"}, + + {suffix = "technic_cnc_slope_edge_upsdown", + nodebox = cnc_slope_edge_upsdown(), + desc = "Slope Upside Down Edge"}, + + {suffix = "technic_cnc_slope_inner_edge", + nodebox = cnc_slope_inner_edge(), + desc = "Slope Inner Edge"}, + + {suffix = "technic_cnc_slope_edge", + nodebox = cnc_slope_edge(), + desc = "Slope Edge"}, + + {suffix = "technic_cnc_slope_upsdown", + nodebox = cnc_slope_upsdown(), + desc = "Slope Upside Down"}, + + {suffix = "technic_cnc_slope_lying", + nodebox = cnc_slope_lying(), + desc = "Slope Lying"}, + + {suffix = "technic_cnc_slope", + nodebox = cnc_slope(), + desc = "Slope"}, +-- {suffix = "", +-- nodebox =}, +} + +-- Allow disabling certain programs for some node. Default is allowing all types for all nodes +technic_cnc_api.cnc_programs_disable = { + -- ["default:brick"] = {"technic_cnc_stick"}, -- Example: Disallow the stick for brick + -- ... + ["default:dirt"] = {"technic_cnc_sphere", "technic_cnc_slope_upsdown", "technic_cnc_edge", + "technic_cnc_inner_edge", "technic_cnc_slope_edge_upsdown", "technic_cnc_slope_inner_edge_upsdown", + "technic_cnc_stick", "technic_cnc_cylinder_horizontal"} +} + +-- Generic function for registering all the different node types +function technic_cnc_api.register_cnc_program(recipeitem, suffix, nodebox, groups, images, description) + minetest.register_node(":" .. recipeitem .. "_" .. suffix, { + description = description, + drawtype = "nodebox", + tiles = images, + paramtype = "light", + paramtype2 = "facedir", + walkable = true, + selection_box = { + type = "fixed", + fixed = nodebox + }, + node_box = { + type = "fixed", + fixed = nodebox + }, + groups = groups, + }) end - --- SLOPE EDGE UPSIDE DOWN -------------------------- -function technic_cnc_api.register_slope_edge_upsdown(recipeitem, groups, images, description) - -if recipeitem == "default:dirt" then - return +-- function to iterate over all the programs the CNC machine knows +function technic_cnc_api.register_all(recipeitem, groups, images, description) + for _, data in ipairs(technic_cnc_api.cnc_programs) do + -- Disable node creation for disabled node types for some material + local do_register = true + if technic_cnc_api.cnc_programs_disable[recipeitem] ~= nil then + for __, disable in ipairs(technic_cnc_api.cnc_programs_disable[recipeitem]) do + if disable == data.suffix then + do_register = false + end + end + end + -- Create the node if it passes the test + if do_register then + technic_cnc_api.register_cnc_program(recipeitem, data.suffix, data.nodebox, groups, images, description.." "..data.desc) + end + end 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_edge_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 = slopeupdwnboxedge, - }, - groups = groups, - }) -end - - --- SLOPE INNER EDGE UPSIDE DOWN -------------------------------- -function technic_cnc_api.register_slope_inner_edge_upsdown(recipeitem, groups, images, description) - -if recipename == "default:dirt" then -return -end - -local slopeboxedge = {} -local detail = technic_cnc_api.detail_level -for i = 0, detail-1 do - slopeboxedge[i+1]={0.5-(i/detail)-(1/detail), (i/detail)-0.5, -0.5, 0.5, (i/detail)-0.5+(1/detail), 0.5} - slopeboxedge[i+detail+1]={-0.5, (i/detail)-0.5, 0.5-(i/detail)-(1/detail), 0.5, (i/detail)-0.5+(1/detail), 0.5} -end - -minetest.register_node(":" .. recipeitem .. "_technic_cnc_slope_inner_edge_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 = slopeboxedge, - }, - 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_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) ----------------------------------------------------------------------------------------------------------------------- diff --git a/technic/cnc_nodes.lua b/technic/cnc_nodes.lua index 2f375a5..df82385 100644 --- a/technic/cnc_nodes.lua +++ b/technic/cnc_nodes.lua @@ -1,354 +1,70 @@ -- 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", +technic_cnc_api.register_all("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") + "Dirt") +technic_cnc_api.cnc_programs_disable["default:dirt"] = {"technic_cnc_sphere", "technic_cnc_slope_upsdown", + "technic_cnc_edge", "technic_cnc_inner_edge", + "technic_cnc_slope_edge_upsdown", "technic_cnc_slope_inner_edge_upsdown", + "technic_cnc_stick", "technic_cnc_cylinder_horizontal"} + -- 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}, +technic_cnc_api.register_all("default:tree", + {snappy=2,choppy=2,oddly_breakable_by_hand=2,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: ------------------------------------------------- + "Wooden") -- WOOD ------- -technic_cnc_api.register_stick_etc("default:wood", +technic_cnc_api.register_all("default:wood", {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1}, {"default_wood.png"}, - "Wooden Stick") + "Wooden") -- STONE -------- -technic_cnc_api.register_stick_etc("default:stone", +technic_cnc_api.register_all("default:stone", {cracky=3,not_in_creative_inventory=1}, {"default_stone.png"}, - "Stone Stick") + "Stone") -- COBBLE --------- -technic_cnc_api.register_stick_etc("default:cobble", +technic_cnc_api.register_all("default:cobble", {cracky=3,not_in_creative_inventory=1}, {"default_cobble.png"}, - "Cobble Stick") + "Cobble") -- BRICK -------- -technic_cnc_api.register_stick_etc("default:brick", +technic_cnc_api.register_all("default:brick", {cracky=3,not_in_creative_inventory=1}, {"default_brick.png"}, - "Brick Stick") + "Brick") + -- SANDSTONE ------------ -technic_cnc_api.register_stick_etc("default:sandstone", +technic_cnc_api.register_all("default:sandstone", {crumbly=2,cracky=2,not_in_creative_inventory=1}, {"default_sandstone.png"}, - "Sandstone Stick") + "Sandstone") + -- LEAVES --------- -technic_cnc_api.register_stick_etc("default:leaves", +technic_cnc_api.register_all("default:leaves", {snappy=2,choppy=2,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, {"bucharest_tree.png"}, - "Leaves Stick") + "Leaves") -- TREE ------- -technic_cnc_api.register_stick_etc("default:tree", +technic_cnc_api.register_all("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") + "Tree") -- STEEL -------- -technic_cnc_api.register_stick_etc("default:steelblock", +technic_cnc_api.register_all("default:steel", {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") + "Steel")