Added letters, numbers, punctuations and frames

master
Andrey01 2017-03-01 22:00:02 +03:00 committed by GitHub
parent 5d265d9579
commit 67e23b8533
61 changed files with 2139 additions and 0 deletions

1
depends.txt Normal file
View File

@ -0,0 +1 @@
default

6
init.lua Normal file
View File

@ -0,0 +1,6 @@
cube_nodes= {}
local modpath = minetest.get_modpath("cube_nodes")
dofile(modpath .. "/nodes.lua")
dofile(modpath .. "/node_frames.lua")

1173
node_frames.lua Normal file

File diff suppressed because it is too large Load Diff

396
node_machine.lua Normal file
View File

@ -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,
})

563
nodes.lua Normal file
View File

@ -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(),
})

BIN
textures/node_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

BIN
textures/node_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 B

BIN
textures/node_3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 B

BIN
textures/node_4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

BIN
textures/node_5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

BIN
textures/node_6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

BIN
textures/node_7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 B

BIN
textures/node_8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 B

BIN
textures/node_9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

BIN
textures/node_A.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 B

BIN
textures/node_B.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 B

BIN
textures/node_C.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 B

BIN
textures/node_D.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 B

BIN
textures/node_E.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 B

BIN
textures/node_F.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

BIN
textures/node_G.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 B

BIN
textures/node_H.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 B

BIN
textures/node_I.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

BIN
textures/node_J.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 B

BIN
textures/node_K.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 B

BIN
textures/node_L.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

BIN
textures/node_M.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 B

BIN
textures/node_N.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

BIN
textures/node_O.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

BIN
textures/node_P.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 B

BIN
textures/node_Q.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

BIN
textures/node_R.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 B

BIN
textures/node_S.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 B

BIN
textures/node_T.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 B

BIN
textures/node_U.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

BIN
textures/node_V.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 B

BIN
textures/node_W.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

BIN
textures/node_X.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 B

BIN
textures/node_Y.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 B

BIN
textures/node_Z.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 B

BIN
textures/node_bracket1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

BIN
textures/node_bracket2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

BIN
textures/node_comma.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

BIN
textures/node_dash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

BIN
textures/node_empty.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 B

BIN
textures/node_evil.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

BIN
textures/node_line1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 B

BIN
textures/node_line2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 B

BIN
textures/node_minus.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B

BIN
textures/node_normal.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

BIN
textures/node_plus.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 B

BIN
textures/node_procent.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

BIN
textures/node_sad.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 B

BIN
textures/node_smile.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 B

BIN
textures/node_star.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 B

BIN
textures/node_stop.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B