diff --git a/depends.txt b/depends.txt new file mode 100644 index 0000000..1810f69 --- /dev/null +++ b/depends.txt @@ -0,0 +1 @@ +default diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..e43278f --- /dev/null +++ b/init.lua @@ -0,0 +1,6 @@ +cube_nodes= {} + +local modpath = minetest.get_modpath("cube_nodes") + +dofile(modpath .. "/nodes.lua") +dofile(modpath .. "/node_frames.lua") diff --git a/node_frames.lua b/node_frames.lua new file mode 100644 index 0000000..ff2a8a3 --- /dev/null +++ b/node_frames.lua @@ -0,0 +1,1173 @@ +--NODE FRAMES-- +minetest.register_node("cube_nodes:sign_A", { + description = "Sign A", + drawtype = "signlike", + tiles = {"node_A.png", "node_empty"}, + inventory_image = "node_A.png", + wield_image = "node_A.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_B", { + description = "Sign B", + drawtype = "signlike", + tiles = {"node_B.png", "node_empty"}, + inventory_image = "node_B.png", + wield_image = "node_B.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_C", { + description = "Sign C", + drawtype = "signlike", + tiles = {"node_C.png", "node_empty"}, + inventory_image = "node_C.png", + wield_image = "node_C.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_D", { + description = "Sign D", + drawtype = "signlike", + tiles = {"node_D.png", "node_empty"}, + inventory_image = "node_D.png", + wield_image = "node_D.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_E", { + description = "Sign E", + drawtype = "signlike", + tiles = {"node_E.png", "node_empty"}, + inventory_image = "node_E.png", + wield_image = "node_E.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_F", { + description = "Sign F", + drawtype = "signlike", + tiles = {"node_F.png", "node_empty"}, + inventory_image = "node_F.png", + wield_image = "node_F.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_G", { + description = "Sign G", + drawtype = "signlike", + tiles = {"node_G.png", "node_empty"}, + inventory_image = "node_G.png", + wield_image = "node_G.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_H", { + description = "Sign H", + drawtype = "signlike", + tiles = {"node_H.png", "node_empty"}, + inventory_image = "node_H.png", + wield_image = "node_H.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_I", { + description = "Sign I", + drawtype = "signlike", + tiles = {"node_I.png", "node_empty"}, + inventory_image = "node_I.png", + wield_image = "node_I.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_J", { + description = "Sign J", + drawtype = "signlike", + tiles = {"node_J.png", "node_empty"}, + inventory_image = "node_J.png", + wield_image = "node_J.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_K", { + description = "Sign K", + drawtype = "signlike", + tiles = {"node_K.png", "node_empty"}, + inventory_image = "node_K.png", + wield_image = "node_K.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_L", { + description = "Sign l", + drawtype = "signlike", + tiles = {"node_L.png", "node_empty"}, + inventory_image = "node_L.png", + wield_image = "node_L.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_M", { + description = "Sign M", + drawtype = "signlike", + tiles = {"node_M.png", "node_empty"}, + inventory_image = "node_M.png", + wield_image = "node_M.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_N", { + description = "Sign N", + drawtype = "signlike", + tiles = {"node_N.png", "node_empty"}, + inventory_image = "node_N.png", + wield_image = "node_N.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_O", { + description = "Sign O", + drawtype = "signlike", + tiles = {"node_O.png", "node_empty"}, + inventory_image = "node_O.png", + wield_image = "node_O.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_P", { + description = "Sign P", + drawtype = "signlike", + tiles = {"node_P.png", "node_empty"}, + inventory_image = "node_P.png", + wield_image = "node_P.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_Q", { + description = "Sign Q", + drawtype = "signlike", + tiles = {"node_Q.png", "node_empty"}, + inventory_image = "node_Q.png", + wield_image = "node_Q.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_R", { + description = "Sign R", + drawtype = "signlike", + tiles = {"node_R.png", "node_empty"}, + inventory_image = "node_R.png", + wield_image = "node_R.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_S", { + description = "Sign S", + drawtype = "signlike", + tiles = {"node_S.png", "node_empty"}, + inventory_image = "node_S.png", + wield_image = "node_S.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_T", { + description = "Sign T", + drawtype = "signlike", + tiles = {"node_T.png", "node_empty"}, + inventory_image = "node_T.png", + wield_image = "node_T.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_U", { + description = "Sign U", + drawtype = "signlike", + tiles = {"node_U.png", "node_empty"}, + inventory_image = "node_U.png", + wield_image = "node_U.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_V", { + description = "Sign V", + drawtype = "signlike", + tiles = {"node_V.png", "node_empty"}, + inventory_image = "node_V.png", + wield_image = "node_V.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_W", { + description = "Sign W", + drawtype = "signlike", + tiles = {"node_W.png", "node_empty"}, + inventory_image = "node_W.png", + wield_image = "node_W.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_X", { + description = "Sign X", + drawtype = "signlike", + tiles = {"node_X.png", "node_empty"}, + inventory_image = "node_X.png", + wield_image = "node_X.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_Y", { + description = "Sign Y", + drawtype = "signlike", + tiles = {"node_Y.png", "node_empty"}, + inventory_image = "node_Y.png", + wield_image = "node_Y.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_Z", { + description = "Sign Z", + drawtype = "signlike", + tiles = {"node_Z.png", "node_empty"}, + inventory_image = "node_Z.png", + wield_image = "node_Z.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_0", { + description = "Sign 0", + drawtype = "signlike", + tiles = {"node_0.png", "node_empty"}, + inventory_image = "node_O.png", + wield_image = "node_0.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_1", { + description = "Sign 1", + drawtype = "signlike", + tiles = {"node_1.png", "node_empty"}, + inventory_image = "node_1.png", + wield_image = "node_1.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_2", { + description = "Sign 2", + drawtype = "signlike", + tiles = {"node_2.png", "node_empty"}, + inventory_image = "node_2.png", + wield_image = "node_2.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_3", { + description = "Sign 3", + drawtype = "signlike", + tiles = {"node_3.png", "node_empty"}, + inventory_image = "node_3.png", + wield_image = "node_3.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_4", { + description = "Sign 4", + drawtype = "signlike", + tiles = {"node_4.png", "node_empty"}, + inventory_image = "node_4.png", + wield_image = "node_4.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_5", { + description = "Sign 5", + drawtype = "signlike", + tiles = {"node_5.png", "node_empty"}, + inventory_image = "node_5.png", + wield_image = "node_5.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_6", { + description = "Sign 6", + drawtype = "signlike", + tiles = {"node_6.png", "node_empty"}, + inventory_image = "node_6.png", + wield_image = "node_6.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_7", { + description = "Sign 7", + drawtype = "signlike", + tiles = {"node_7.png", "node_empty"}, + inventory_image = "node_7.png", + wield_image = "node_7.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_8", { + description = "Sign 8", + drawtype = "signlike", + tiles = {"node_8.png", "node_empty"}, + inventory_image = "node_8.png", + wield_image = "node_8.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_9", { + description = "Sign 9", + drawtype = "signlike", + tiles = {"node_9.png", "node_empty"}, + inventory_image = "node_9.png", + wield_image = "node_9.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_line1", { + description = "Sign Line1", + drawtype = "signlike", + tiles = {"node_line1.png", "node_empty"}, + inventory_image = "node_line1.png", + wield_image = "node_line1.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_line2", { + description = "Sign Line2", + drawtype = "signlike", + tiles = {"node_line2.png", "node_empty"}, + inventory_image = "node_line2.png", + wield_image = "node_line2.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_star", { + description = "Sign Star", + drawtype = "signlike", + tiles = {"node_star.png", "node_empty"}, + inventory_image = "node_star.png", + wield_image = "node_star.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_plus", { + description = "Sign Plus", + drawtype = "signlike", + tiles = {"node_plus.png", "node_empty"}, + inventory_image = "node_plus.png", + wield_image = "node_plus.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_minus", { + description = "Sign Minus", + drawtype = "signlike", + tiles = {"node_minus.png", "node_empty"}, + inventory_image = "node_minus.png", + wield_image = "node_minus.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_exclamation_mark", { + description = "Sign Exclamation Mark", + drawtype = "signlike", + tiles = {"node_exclamation_mark.png", "node_empty"}, + inventory_image = "node_exclamation_mark.png", + wield_image = "node_exclamation_mark.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_question_mark", { + description = "Sign Question Mark", + drawtype = "signlike", + tiles = {"node_question_mark.png", "node_empty"}, + inventory_image = "node_question_mark.png", + wield_image = "node_question_mark.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) +minetest.register_node("cube_nodes:sign_stop", { + description = "Sign Stop", + drawtype = "signlike", + tiles = {"node_stop.png", "node_empty"}, + inventory_image = "node_stop.png", + wield_image = "node_stop.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_bracket1", { + description = "Sign Bracket1", + drawtype = "signlike", + tiles = {"node_bracket1.png", "node_empty"}, + inventory_image = "node_bracket1.png", + wield_image = "node_bracket1.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_bracket2", { + description = "Sign Bracket2", + drawtype = "signlike", + tiles = {"node_bracket2.png", "node_empty"}, + inventory_image = "node_bracket2.png", + wield_image = "node_bracket2.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_comma", { + description = "Sign Comma", + drawtype = "signlike", + tiles = {"node_comma.png", "node_empty"}, + inventory_image = "node_comma.png", + wield_image = "node_comma.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_dash", { + description = "Sign Dash", + drawtype = "signlike", + tiles = {"node_dash.png", "node_empty"}, + inventory_image = "node_dash.png", + wield_image = "node_dash.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_procent", { + description = "Sign Procent", + drawtype = "signlike", + tiles = {"node_procent.png", "node_empty"}, + inventory_image = "node_procent.png", + wield_image = "node_procent.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_multiplication_mark", { + description = "Sign Multiplication Mark", + drawtype = "signlike", + tiles = {"node_multiplication_mark.png", "node_empty"}, + inventory_image = "node_multiplication_mark.png", + wield_image = "node_multiplication_mark.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_division_mark", { + description = "Sign Division Mark", + drawtype = "signlike", + tiles = {"node_division_mark.png", "node_empty"}, + inventory_image = "node_division_mark.png", + wield_image = "node_division_mark.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_equality_mark", { + description = "Sign Equality Mark", + drawtype = "signlike", + tiles = {"node_equality_mark.png", "node_empty"}, + inventory_image = "node_equality_mark.png", + wield_image = "node_equality_mark.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_smile", { + description = "Sign Smile", + drawtype = "signlike", + tiles = {"node_smile.png", "node_empty"}, + inventory_image = "node_smile.png", + wield_image = "node_smile.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) +minetest.register_node("cube_nodes:sign_sad", { + description = "Sign Sad", + drawtype = "signlike", + tiles = {"node_sad.png", "node_empty"}, + inventory_image = "node_sad.png", + wield_image = "node_sad.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) +minetest.register_node("cube_nodes:sign_evil", { + description = "Sign Evil", + drawtype = "signlike", + tiles = {"node_evil.png", "node_empty"}, + inventory_image = "node_evil.png", + wield_image = "node_evil.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("cube_nodes:sign_normal", { + description = "Sign Normal", + drawtype = "signlike", + tiles = {"node_normal.png", "node_empty"}, + inventory_image = "node_normal.png", + wield_image = "node_normal.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "wallmounted", + --wall_top = = + --wall_bottom = = + --wall_side = = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) diff --git a/node_machine.lua b/node_machine.lua new file mode 100644 index 0000000..77891fe --- /dev/null +++ b/node_machine.lua @@ -0,0 +1,396 @@ +node_machine.known_nodes = {} +node_machine.names = { + {"node_A"}, + {"node_B"}, + {"node_C"}, + {"node_D"}, + {"node_E"}, + {"node_F"}, + {"node_G"}, + {"node_H"}, + {"node_I"}, + {"node_J"}, + {"node_K"}, + {"node_L"}, + {"node_M"}, + {"node_N"}, + {"node_O"}, + {"node_P"}, + {"node_Q"}, + {"node_R"}, + {"node_S"}, + {"node_T"}, + {"node_U"}, + {"node_V"}, + {"node_W"}, + {"node_X"}, + {"node_Y"}, + {"node_Z"}, + {"node_0"}, + {"node_1"}, + {"node_2"}, + {"node_3"}, + {"node_4"}, + {"node_5"}, + {"node_6"}, + {"node_7"}, + {"node_8"}, + {"node_9"}, + {"node_line1"}, + {"node_line2"}, + {"node_star"}, + {"node_plus"}, + {"node_minus"}, + {"node_bracket1"}, + {"node_bracket2"}, + {"node_stop"}, + {"node_multiplication_mark"}, + {"node_question_mark"}, + {"node_equality_mark"}, + {"node_exclamation_mark"}, + {"node_division_mark"}, + {"node_comma"}, + {"node_dash"}, + {"node_procent"}, + {"node_smile"}, + {"node_sad"}, + {"node_evil"}, + {"node_normal"}, +} + +function node_machine:get_cost(inv, stackname) + for i, item in pairs(inv:get_list("output")) do + if item:get_name() == stackname then + return node_machine.cost_in_nodes[i] + end + end +end + +function circular_saw:get_output_inv(modname, material, amount, max) + if (not max or max < 1 or max > 99) then max = 99 end + + local list = {} + local pos = #list + + -- If there is nothing inside, display empty inventory: + if amount < 1 then + return list + end + + for i = 1, #circular_saw.names do + local t = circular_saw.names[i] + local cost = circular_saw.cost_in_microblocks[i] + local balance = math.min(math.floor(amount/cost), max) + local nodename = modname .. ":" .. t[1] .. "_" .. material .. t[2] + if minetest.registered_nodes[nodename] then + pos = pos + 1 + list[pos] = nodename .. " " .. balance + end + end + return list +end + + +-- Reset empty circular_saw after last full block has been taken out +-- (or the circular_saw has been placed the first time) +-- Note: max_offered is not reset: +function circular_saw:reset(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + + inv:set_list("input", {}) + inv:set_list("micro", {}) + inv:set_list("output", {}) + meta:set_int("anz", 0) + + meta:set_string("infotext", + S("Circular Saw is empty (owned by %s)") + :format(meta:get_string("owner") or "")) +end + + +-- Player has taken something out of the box or placed something inside +-- that amounts to count microblocks: +function circular_saw:update_inventory(pos, amount) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + + amount = meta:get_int("anz") + amount + + -- The material is recycled automaticly. + inv:set_list("recycle", {}) + + if amount < 1 then -- If the last block is taken out. + self:reset(pos) + return + end + + local stack = inv:get_stack("input", 1) + -- At least one "normal" block is necessary to see what kind of stairs are requested. + if stack:is_empty() then + -- Any microblocks not taken out yet are now lost. + -- (covers material loss in the machine) + self:reset(pos) + return + + end + local node_name = stack:get_name() or "" + local name_parts = circular_saw.known_nodes[node_name] or "" + local modname = name_parts[1] or "" + local material = name_parts[2] or "" + + inv:set_list("input", { -- Display as many full blocks as possible: + node_name.. " " .. math.floor(amount / 8) + }) + + -- The stairnodes made of default nodes use moreblocks namespace, other mods keep own: + if modname == "default" then + modname = "moreblocks" + end + -- print("circular_saw set to " .. modname .. " : " + -- .. material .. " with " .. (amount) .. " microblocks.") + + -- 0-7 microblocks may remain left-over: + inv:set_list("micro", { + modname .. ":micro_" .. material .. "_bottom " .. (amount % 8) + }) + -- Display: + inv:set_list("output", + self:get_output_inv(modname, material, amount, + meta:get_int("max_offered"))) + -- Store how many microblocks are available: + meta:set_int("anz", amount) + + meta:set_string("infotext", + S("Circular Saw is working on %s (owned by %s)") + :format(material, meta:get_string("owner") or "")) +end + + +-- The amount of items offered per shape can be configured: +function circular_saw.on_receive_fields(pos, formname, fields, sender) + local meta = minetest.get_meta(pos) + local max = tonumber(fields.max_offered) + if max and max > 0 then + meta:set_string("max_offered", max) + -- Update to show the correct number of items: + circular_saw:update_inventory(pos, 0) + end +end + + +-- Moving the inventory of the circular_saw around is not allowed because it +-- is a fictional inventory. Moving inventory around would be rather +-- impractical and make things more difficult to calculate: +function circular_saw.allow_metadata_inventory_move( + pos, from_list, from_index, to_list, to_index, count, player) + return 0 +end + + +-- Only input- and recycle-slot are intended as input slots: +function circular_saw.allow_metadata_inventory_put( + pos, listname, index, stack, player) + -- The player is not allowed to put something in there: + if listname == "output" or listname == "micro" then + return 0 + end + + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local stackname = stack:get_name() + local count = stack:get_count() + + -- Only alow those items that are offered in the output inventory to be recycled: + if listname == "recycle" then + if not inv:contains_item("output", stackname) then + return 0 + end + local stackmax = stack:get_stack_max() + local instack = inv:get_stack("input", 1) + local microstack = inv:get_stack("micro", 1) + local incount = instack:get_count() + local incost = (incount * 8) + microstack:get_count() + local maxcost = (stackmax * 8) + 7 + local cost = circular_saw:get_cost(inv, stackname) + if (incost + cost) > maxcost then + return math.max((maxcost - incost) / cost, 0) + end + return count + end + + -- Only accept certain blocks as input which are known to be craftable into stairs: + if listname == "input" then + if not inv:is_empty("input") then + if inv:get_stack("input", index):get_name() ~= stackname then + return 0 + end + end + if not inv:is_empty("micro") then + local microstackname = inv:get_stack("micro", 1):get_name():gsub("^.+:micro_", "", 1) + local cutstackname = stackname:gsub("^.+:", "", 1) + if microstackname ~= cutstackname then + return 0 + end + end + for name, t in pairs(circular_saw.known_nodes) do + if name == stackname and inv:room_for_item("input", stack) then + return count + end + end + return 0 + end +end + +-- Taking is allowed from all slots (even the internal microblock slot). +-- Putting something in is slightly more complicated than taking anything +-- because we have to make sure it is of a suitable material: +function circular_saw.on_metadata_inventory_put( + pos, listname, index, stack, player) + -- We need to find out if the circular_saw is already set to a + -- specific material or not: + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local stackname = stack:get_name() + local count = stack:get_count() + + -- Putting something into the input slot is only possible if that had + -- been empty before or did contain something of the same material: + if listname == "input" then + -- Each new block is worth 8 microblocks: + circular_saw:update_inventory(pos, 8 * count) + elseif listname == "recycle" then + -- Lets look which shape this represents: + local cost = circular_saw:get_cost(inv, stackname) + local input_stack = inv:get_stack("input", 1) + -- check if this would not exceed input itemstack max_stacks + if input_stack:get_count() + ((cost * count) / 8) <= input_stack:get_stack_max() then + circular_saw:update_inventory(pos, cost * count) + end + end +end + +function circular_saw.on_metadata_inventory_take( + pos, listname, index, stack, player) + + -- Prevent (inbuilt) swapping between inventories with different blocks + -- corrupting player inventory or Saw with 'unknown' items. + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local input_stack = inv:get_stack(listname, index) + if not input_stack:is_empty() and input_stack:get_name()~=stack:get_name() then + local player_inv = player:get_inventory() + if player_inv:room_for_item("main", input_stack) then + player_inv:add_item("main", input_stack) + end + + circular_saw:reset(pos) + return + end + + -- If it is one of the offered stairs: find out how many + -- microblocks have to be substracted: + if listname == "output" then + -- We do know how much each block at each position costs: + local cost = circular_saw.cost_in_microblocks[index] + * stack:get_count() + + circular_saw:update_inventory(pos, -cost) + elseif listname == "micro" then + -- Each microblock costs 1 microblock: + circular_saw:update_inventory(pos, -stack:get_count()) + elseif listname == "input" then + -- Each normal (= full) block taken costs 8 microblocks: + circular_saw:update_inventory(pos, 8 * -stack:get_count()) + end + -- The recycle field plays no role here since it is processed immediately. +end + +function circular_saw.on_construct(pos) + local meta = minetest.get_meta(pos) + local fancy_inv = default.gui_bg..default.gui_bg_img..default.gui_slots + meta:set_string("formspec", "size[11,10]"..fancy_inv.. + "label[0,0;" ..S("Input\nmaterial").. "]" .. + "list[current_name;input;1.5,0;1,1;]" .. + "label[0,1;" ..S("Left-over").. "]" .. + "list[current_name;micro;1.5,1;1,1;]" .. + "label[0,2;" ..S("Recycle\noutput").. "]" .. + "list[current_name;recycle;1.5,2;1,1;]" .. + "field[0.3,3.5;1,1;max_offered;" ..S("Max").. ":;${max_offered}]" .. + "button[1,3.2;1,1;Set;" ..S("Set").. "]" .. + "list[current_name;output;2.8,0;8,6;]" .. + "list[current_player;main;1.5,6.25;8,4;]") + + meta:set_int("anz", 0) -- No microblocks inside yet. + meta:set_string("max_offered", 99) -- How many items of this kind are offered by default? + meta:set_string("infotext", S("Circular Saw is empty")) + + local inv = meta:get_inventory() + inv:set_size("input", 1) -- Input slot for full blocks of material x. + inv:set_size("micro", 1) -- Storage for 1-7 surplus microblocks. + inv:set_size("recycle", 1) -- Surplus partial blocks can be placed here. + inv:set_size("output", 6*8) -- 6x8 versions of stair-parts of material x. + + circular_saw:reset(pos) +end + + +function circular_saw.can_dig(pos,player) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if not inv:is_empty("input") or + not inv:is_empty("micro") or + not inv:is_empty("recycle") then + return false + end + -- Can be dug by anyone when empty, not only by the owner: + return true +end + +minetest.register_node("moreblocks:circular_saw", { + description = S("Circular Saw"), + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.4, -0.5, -0.4, -0.25, 0.25, -0.25}, -- Leg + {0.25, -0.5, 0.25, 0.4, 0.25, 0.4}, -- Leg + {-0.4, -0.5, 0.25, -0.25, 0.25, 0.4}, -- Leg + {0.25, -0.5, -0.4, 0.4, 0.25, -0.25}, -- Leg + {-0.5, 0.25, -0.5, 0.5, 0.375, 0.5}, -- Tabletop + {-0.01, 0.4375, -0.125, 0.01, 0.5, 0.125}, -- Saw blade (top) + {-0.01, 0.375, -0.1875, 0.01, 0.4375, 0.1875}, -- Saw blade (bottom) + {-0.25, -0.0625, -0.25, 0.25, 0.25, 0.25}, -- Motor case + }, + }, + tiles = {"moreblocks_circular_saw_top.png", + "moreblocks_circular_saw_bottom.png", + "moreblocks_circular_saw_side.png"}, + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + groups = {choppy = 2,oddly_breakable_by_hand = 2}, + sounds = default.node_sound_wood_defaults(), + on_construct = circular_saw.on_construct, + can_dig = circular_saw.can_dig, + -- Set the owner of this circular saw. + after_place_node = function(pos, placer) + local meta = minetest.get_meta(pos) + local owner = placer and placer:get_player_name() or "" + meta:set_string("owner", owner) + meta:set_string("infotext", + S("Circular Saw is empty (owned by %s)") + :format(owner)) + end, + + -- The amount of items offered per shape can be configured: + on_receive_fields = circular_saw.on_receive_fields, + allow_metadata_inventory_move = circular_saw.allow_metadata_inventory_move, + -- Only input- and recycle-slot are intended as input slots: + allow_metadata_inventory_put = circular_saw.allow_metadata_inventory_put, + -- Taking is allowed from all slots (even the internal microblock slot). Moving is forbidden. + -- Putting something in is slightly more complicated than taking anything because we have to make sure it is of a suitable material: + on_metadata_inventory_put = circular_saw.on_metadata_inventory_put, + on_metadata_inventory_take = circular_saw.on_metadata_inventory_take, +}) + diff --git a/nodes.lua b/nodes.lua new file mode 100644 index 0000000..37bd7d7 --- /dev/null +++ b/nodes.lua @@ -0,0 +1,563 @@ +--NODES-- +minetest.register_node("cube_nodes:node_A", { + description = ("Node A"), + tiles = {"node_A.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_B", { + description = ("Node B"), + tiles = {"node_B.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_C", { + description = ("Node C"), + tiles = {"node_C.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_D", { + description = ("Node D"), + tiles = {"node_D.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_E", { + description = ("Node E"), + tiles = {"node_E.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_F", { + description = ("Node F"), + tiles = {"node_F.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_G", { + description = ("Node G"), + tiles = {"node_G.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_H", { + description = ("Node H"), + tiles = {"node_H.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_I", { + description = ("Node I"), + tiles = {"node_I.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_J", { + description = ("Node J"), + tiles = {"node_J.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_K", { + description = ("Node K"), + tiles = {"node_K.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_L", { + description = ("Node L"), + tiles = {"node_L.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_M", { + description = ("Node M"), + tiles = {"node_M.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_N", { + description = ("Node N"), + tiles = {"node_N.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_O", { + description = ("Node O"), + tiles = {"node_O.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_P", { + description = ("Node P"), + tiles = {"node_P.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_Q", { + description = ("Node Q"), + tiles = {"node_Q.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_R", { + description = ("Node R"), + tiles = {"node_R.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_S", { + description = ("Node S"), + tiles = {"node_S.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_T", { + description = ("Node T"), + tiles = {"node_T.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_U", { + description = ("Node U"), + tiles = {"node_U.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_V", { + description = ("Node V"), + tiles = {"node_V.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_W", { + description = ("Node W"), + tiles = {"node_W.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_X", { + description = ("Node X"), + tiles = {"node_X.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_Y", { + description = ("Node Y"), + tiles = {"node_Y.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_Z", { + description = ("Node Z"), + tiles = {"node_Z.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_0", { + description = ("Node 0"), + tiles = {"node_O.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_1", { + description = ("Node 1"), + tiles = {"node_1.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_2", { + description = ("Node 2"), + tiles = {"node_2.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_3", { + description = ("Node 3"), + tiles = {"node_3.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_4", { + description = ("Node 4"), + tiles = {"node_4.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_5", { + description = ("Node 5"), + tiles = {"node_5.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_6", { + description = ("Node 6"), + tiles = {"node_6.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_7", { + description = ("Node 7"), + tiles = {"node_7.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_8", { + description = ("Node 8"), + tiles = {"node_8.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_9", { + description = ("Node 9"), + tiles = {"node_9.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_line1", { + description = ("Node Line1"), + tiles = {"node_line1.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_line2", { + description = ("Node Line2"), + tiles = {"node_line2.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + + +minetest.register_node("cube_nodes:node_star", { + description = ("Node Star"), + tiles = {"node_star.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + + +minetest.register_node("cube_nodes:node_plus", { + description = ("Node Plus"), + tiles = {"node_plus.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + + +minetest.register_node("cube_nodes:node_minus", { + description = ("Node Minus"), + tiles = {"node_minus.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_exclamation_mark", { + description = ("Node Exclamation Mark"), + tiles = {"node_exclamation_mark.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_question_mark", { + description = ("Node Question Mark"), + tiles = {"node_question_mark.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_stop", { + description = ("Node Stop"), + tiles = {"node_stop.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_bracket1", { + description = ("Node Bracket1"), + tiles = {"node_bracket1.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_bracket2", { + description = ("Node Bracket2"), + tiles = {"node_bracket2.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_comma", { + description = ("Node Comma"), + tiles = {"node_comma.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_dash", { + description = ("Node Dash"), + tiles = {"node_dash.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_procent", { + description = ("Node Procent"), + tiles = {"node_procent.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_multiplication_mark", { + description = ("Node Multiplication Mark"), + tiles = {"node_multiplication_mark.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_division_mark", { + description = ("Node Division Mark"), + tiles = {"node_division_mark.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_equality_mark", { + description = ("Node Equality Mark"), + tiles = {"node_equality_mark.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_smile", { + description = ("Node Smile"), + tiles = {"node_smile.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_sad", { + description = ("Node Sad"), + tiles = {"node_sad.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_evil", { + description = ("Node Evil"), + tiles = {"node_evil.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cube_nodes:node_normal", { + description = ("Node Normal"), + tiles = {"node_normal.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_stone_defaults(), +}) diff --git a/textures/node_1.png b/textures/node_1.png new file mode 100644 index 0000000..29bd8cb Binary files /dev/null and b/textures/node_1.png differ diff --git a/textures/node_2.png b/textures/node_2.png new file mode 100644 index 0000000..69a39dc Binary files /dev/null and b/textures/node_2.png differ diff --git a/textures/node_3.png b/textures/node_3.png new file mode 100644 index 0000000..6240edf Binary files /dev/null and b/textures/node_3.png differ diff --git a/textures/node_4.png b/textures/node_4.png new file mode 100644 index 0000000..de8897a Binary files /dev/null and b/textures/node_4.png differ diff --git a/textures/node_5.png b/textures/node_5.png new file mode 100644 index 0000000..b3e7847 Binary files /dev/null and b/textures/node_5.png differ diff --git a/textures/node_6.png b/textures/node_6.png new file mode 100644 index 0000000..c97f888 Binary files /dev/null and b/textures/node_6.png differ diff --git a/textures/node_7.png b/textures/node_7.png new file mode 100644 index 0000000..e1ad097 Binary files /dev/null and b/textures/node_7.png differ diff --git a/textures/node_8.png b/textures/node_8.png new file mode 100644 index 0000000..5106d63 Binary files /dev/null and b/textures/node_8.png differ diff --git a/textures/node_9.png b/textures/node_9.png new file mode 100644 index 0000000..7f1c487 Binary files /dev/null and b/textures/node_9.png differ diff --git a/textures/node_A.png b/textures/node_A.png new file mode 100644 index 0000000..d3b923d Binary files /dev/null and b/textures/node_A.png differ diff --git a/textures/node_B.png b/textures/node_B.png new file mode 100644 index 0000000..a5a0a59 Binary files /dev/null and b/textures/node_B.png differ diff --git a/textures/node_C.png b/textures/node_C.png new file mode 100644 index 0000000..42969f7 Binary files /dev/null and b/textures/node_C.png differ diff --git a/textures/node_D.png b/textures/node_D.png new file mode 100644 index 0000000..a1216c8 Binary files /dev/null and b/textures/node_D.png differ diff --git a/textures/node_E.png b/textures/node_E.png new file mode 100644 index 0000000..3ab9faf Binary files /dev/null and b/textures/node_E.png differ diff --git a/textures/node_F.png b/textures/node_F.png new file mode 100644 index 0000000..4ab87a5 Binary files /dev/null and b/textures/node_F.png differ diff --git a/textures/node_G.png b/textures/node_G.png new file mode 100644 index 0000000..996840d Binary files /dev/null and b/textures/node_G.png differ diff --git a/textures/node_H.png b/textures/node_H.png new file mode 100644 index 0000000..73cb147 Binary files /dev/null and b/textures/node_H.png differ diff --git a/textures/node_I.png b/textures/node_I.png new file mode 100644 index 0000000..d47e95d Binary files /dev/null and b/textures/node_I.png differ diff --git a/textures/node_J.png b/textures/node_J.png new file mode 100644 index 0000000..7260b26 Binary files /dev/null and b/textures/node_J.png differ diff --git a/textures/node_K.png b/textures/node_K.png new file mode 100644 index 0000000..6534b61 Binary files /dev/null and b/textures/node_K.png differ diff --git a/textures/node_L.png b/textures/node_L.png new file mode 100644 index 0000000..3e29ae8 Binary files /dev/null and b/textures/node_L.png differ diff --git a/textures/node_M.png b/textures/node_M.png new file mode 100644 index 0000000..1e719c3 Binary files /dev/null and b/textures/node_M.png differ diff --git a/textures/node_N.png b/textures/node_N.png new file mode 100644 index 0000000..139cca6 Binary files /dev/null and b/textures/node_N.png differ diff --git a/textures/node_O.png b/textures/node_O.png new file mode 100644 index 0000000..6f1bb21 Binary files /dev/null and b/textures/node_O.png differ diff --git a/textures/node_P.png b/textures/node_P.png new file mode 100644 index 0000000..030fce6 Binary files /dev/null and b/textures/node_P.png differ diff --git a/textures/node_Q.png b/textures/node_Q.png new file mode 100644 index 0000000..45a5bc7 Binary files /dev/null and b/textures/node_Q.png differ diff --git a/textures/node_R.png b/textures/node_R.png new file mode 100644 index 0000000..1f94c29 Binary files /dev/null and b/textures/node_R.png differ diff --git a/textures/node_S.png b/textures/node_S.png new file mode 100644 index 0000000..be6d34b Binary files /dev/null and b/textures/node_S.png differ diff --git a/textures/node_T.png b/textures/node_T.png new file mode 100644 index 0000000..37c6a23 Binary files /dev/null and b/textures/node_T.png differ diff --git a/textures/node_U.png b/textures/node_U.png new file mode 100644 index 0000000..e69969e Binary files /dev/null and b/textures/node_U.png differ diff --git a/textures/node_V.png b/textures/node_V.png new file mode 100644 index 0000000..edfd17e Binary files /dev/null and b/textures/node_V.png differ diff --git a/textures/node_W.png b/textures/node_W.png new file mode 100644 index 0000000..3646695 Binary files /dev/null and b/textures/node_W.png differ diff --git a/textures/node_X.png b/textures/node_X.png new file mode 100644 index 0000000..3858836 Binary files /dev/null and b/textures/node_X.png differ diff --git a/textures/node_Y.png b/textures/node_Y.png new file mode 100644 index 0000000..8b97923 Binary files /dev/null and b/textures/node_Y.png differ diff --git a/textures/node_Z.png b/textures/node_Z.png new file mode 100644 index 0000000..d411db2 Binary files /dev/null and b/textures/node_Z.png differ diff --git a/textures/node_bracket1.png b/textures/node_bracket1.png new file mode 100644 index 0000000..aad2998 Binary files /dev/null and b/textures/node_bracket1.png differ diff --git a/textures/node_bracket2.png b/textures/node_bracket2.png new file mode 100644 index 0000000..1ccf9a0 Binary files /dev/null and b/textures/node_bracket2.png differ diff --git a/textures/node_comma.png b/textures/node_comma.png new file mode 100644 index 0000000..7285290 Binary files /dev/null and b/textures/node_comma.png differ diff --git a/textures/node_dash.png b/textures/node_dash.png new file mode 100644 index 0000000..6f65d3d Binary files /dev/null and b/textures/node_dash.png differ diff --git a/textures/node_division_mark.png b/textures/node_division_mark.png new file mode 100644 index 0000000..da817a3 Binary files /dev/null and b/textures/node_division_mark.png differ diff --git a/textures/node_empty.png b/textures/node_empty.png new file mode 100644 index 0000000..4a93770 Binary files /dev/null and b/textures/node_empty.png differ diff --git a/textures/node_equality_mark.png b/textures/node_equality_mark.png new file mode 100644 index 0000000..ebbc2b3 Binary files /dev/null and b/textures/node_equality_mark.png differ diff --git a/textures/node_evil.png b/textures/node_evil.png new file mode 100644 index 0000000..bddbdd1 Binary files /dev/null and b/textures/node_evil.png differ diff --git a/textures/node_exclamation_mark.png b/textures/node_exclamation_mark.png new file mode 100644 index 0000000..3fe743f Binary files /dev/null and b/textures/node_exclamation_mark.png differ diff --git a/textures/node_line1.png b/textures/node_line1.png new file mode 100644 index 0000000..c0dc751 Binary files /dev/null and b/textures/node_line1.png differ diff --git a/textures/node_line2.png b/textures/node_line2.png new file mode 100644 index 0000000..4f8e684 Binary files /dev/null and b/textures/node_line2.png differ diff --git a/textures/node_minus.png b/textures/node_minus.png new file mode 100644 index 0000000..515c7ad Binary files /dev/null and b/textures/node_minus.png differ diff --git a/textures/node_multiplication_mark.png b/textures/node_multiplication_mark.png new file mode 100644 index 0000000..0135e32 Binary files /dev/null and b/textures/node_multiplication_mark.png differ diff --git a/textures/node_normal.png b/textures/node_normal.png new file mode 100644 index 0000000..e4526cf Binary files /dev/null and b/textures/node_normal.png differ diff --git a/textures/node_plus.png b/textures/node_plus.png new file mode 100644 index 0000000..c733c99 Binary files /dev/null and b/textures/node_plus.png differ diff --git a/textures/node_procent.png b/textures/node_procent.png new file mode 100644 index 0000000..9008d24 Binary files /dev/null and b/textures/node_procent.png differ diff --git a/textures/node_question_mark.png b/textures/node_question_mark.png new file mode 100644 index 0000000..c733386 Binary files /dev/null and b/textures/node_question_mark.png differ diff --git a/textures/node_sad.png b/textures/node_sad.png new file mode 100644 index 0000000..4cdb3fa Binary files /dev/null and b/textures/node_sad.png differ diff --git a/textures/node_smile.png b/textures/node_smile.png new file mode 100644 index 0000000..1a7027d Binary files /dev/null and b/textures/node_smile.png differ diff --git a/textures/node_star.png b/textures/node_star.png new file mode 100644 index 0000000..1a79c86 Binary files /dev/null and b/textures/node_star.png differ diff --git a/textures/node_stop.png b/textures/node_stop.png new file mode 100644 index 0000000..2f7e3c9 Binary files /dev/null and b/textures/node_stop.png differ