diff --git a/files/Decorations/combostair/depends.txt b/files/ComboNodes/combostair/depends.txt similarity index 100% rename from files/Decorations/combostair/depends.txt rename to files/ComboNodes/combostair/depends.txt diff --git a/files/Decorations/combostair/init.lua b/files/ComboNodes/combostair/init.lua similarity index 100% rename from files/Decorations/combostair/init.lua rename to files/ComboNodes/combostair/init.lua diff --git a/files/Decorations/combostair/models/stair.obj b/files/ComboNodes/combostair/models/stair.obj similarity index 100% rename from files/Decorations/combostair/models/stair.obj rename to files/ComboNodes/combostair/models/stair.obj diff --git a/files/ComboNodes/combostair/models/stairleft.b3d b/files/ComboNodes/combostair/models/stairleft.b3d new file mode 100644 index 0000000..19e60e0 Binary files /dev/null and b/files/ComboNodes/combostair/models/stairleft.b3d differ diff --git a/files/ComboNodes/combostair/models/stairright.b3d b/files/ComboNodes/combostair/models/stairright.b3d new file mode 100644 index 0000000..8dc2bb6 Binary files /dev/null and b/files/ComboNodes/combostair/models/stairright.b3d differ diff --git a/files/Decorations/combostair/readme.txt b/files/ComboNodes/combostair/readme.txt similarity index 100% rename from files/Decorations/combostair/readme.txt rename to files/ComboNodes/combostair/readme.txt diff --git a/files/ComboNodes/combostairleft/depends.txt b/files/ComboNodes/combostairleft/depends.txt new file mode 100644 index 0000000..37e8e61 --- /dev/null +++ b/files/ComboNodes/combostairleft/depends.txt @@ -0,0 +1 @@ +stairs diff --git a/files/ComboNodes/combostairleft/init.lua b/files/ComboNodes/combostairleft/init.lua new file mode 100644 index 0000000..3da9d57 --- /dev/null +++ b/files/ComboNodes/combostairleft/init.lua @@ -0,0 +1,110 @@ +combostairleft = {index = { + ["color:blue"] = "stairsleft:stair_blue", + ["color:black"] = "stairsleft:stair_black", + ["color:green"] = "stairsleft:stair_green", + ["color:red"] = "stairsleft:stair_red", + ["color:yellow"] = "stairsleft:stair_yellow", + ["color:orange"] = "stairsleft:stair_orange", + ["color:pink"] = "stairsleft:stair_pink", + ["color:white"] = "stairsleft:stair_white", + + }} +local creative = minetest.setting_getbool("creative_mode") +for k,v1 in pairs(combostairleft.index) do + local v1_def = minetest.registered_nodes[v1] + local v1_groups = table.copy(v1_def.groups) + v1_groups.not_in_creative_inventory = 1 + local v1_tiles = table.copy(v1_def.tiles) + if not v1_tiles[2] then + v1_tiles[2] = v1_tiles[1] + end + if not v1_tiles[3] then + v1_tiles[3] = v1_tiles[2] + end + if not v1_tiles[4] then + v1_tiles[4] = v1_tiles[3] + end + if not v1_tiles[5] then + v1_tiles[5] = v1_tiles[4] + end + if not v1_tiles[6] then + v1_tiles[6] = v1_tiles[5] + end + for _,v2 in pairs(combostairleft.index) do + if v1 ~= v2 then + local v2_def = minetest.registered_nodes[v2] + local v2_tiles = table.copy(v2_def.tiles) + if not v2_tiles[2] then + v2_tiles[2] = v2_tiles[1] + end + if not v2_tiles[3] then + v2_tiles[3] = v2_tiles[2] + end + if not v2_tiles[4] then + v2_tiles[4] = v2_tiles[3] + end + if not v2_tiles[5] then + v2_tiles[5] = v2_tiles[4] + end + if not v2_tiles[6] then + v2_tiles[6] = v2_tiles[5] + end + minetest.register_node("combostairleft:"..v1:split(":")[2].."_onc_"..v2:split(":")[2], { + description = v1_def.description.." on "..v2_def.description, + tiles = {v1_tiles[1], v2_tiles[2]}, + paramtype = "light", + paramtype2 = "facedir", + drawtype = "mesh", + mesh = "stairleft.b3d", + + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + }, + + collision_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + }, + + sounds = v1_def.sounds, + groups = v1_groups, + drop = v1, + }) + end + end + minetest.override_item(v1, { + on_place = function(itemstack, placer, pointed_thing) + local pos = pointed_thing.under + if pointed_thing.type ~= "node" or minetest.is_protected(pos, placer:get_player_name()) then + return + end + local node = minetest.get_node(pos) + if node.name == v1 then + minetest.swap_node(pos, {name = k, param2 = 0}) + if not creative then + itemstack:take_item() + return itemstack + end + else + for _,v in pairs(combostairleft.index) do + if node.name == v then + minetest.swap_node(pos, {name = "combostairleft:"..v1:split(":")[2].."_onc_"..v:split(":")[2], param2 = node.param2}) + if not creative then + itemstack:take_item() + return itemstack + end + return + end + end + return minetest.item_place(itemstack, placer, pointed_thing, param2) + end + end, + }) +end diff --git a/files/ComboNodes/combostairleft/readme.txt b/files/ComboNodes/combostairleft/readme.txt new file mode 100644 index 0000000..a7a5df8 --- /dev/null +++ b/files/ComboNodes/combostairleft/readme.txt @@ -0,0 +1,31 @@ +Comboblock Fork for Blockcolor (Mrchiantos) +Comboblock Original (pithydon) + +License (Model) : CcO with Help MinetestVideo, Thank man. + +License (source code) : +======================================================================= +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/files/ComboNodes/combostairright/depends.txt b/files/ComboNodes/combostairright/depends.txt new file mode 100644 index 0000000..37e8e61 --- /dev/null +++ b/files/ComboNodes/combostairright/depends.txt @@ -0,0 +1 @@ +stairs diff --git a/files/ComboNodes/combostairright/init.lua b/files/ComboNodes/combostairright/init.lua new file mode 100644 index 0000000..858e08c --- /dev/null +++ b/files/ComboNodes/combostairright/init.lua @@ -0,0 +1,110 @@ +combostairright = {index = { + ["color:blue"] = "stairsright:stair_blue", + ["color:black"] = "stairsright:stair_black", + ["color:green"] = "stairsright:stair_green", + ["color:red"] = "stairsright:stair_red", + ["color:yellow"] = "stairsright:stair_yellow", + ["color:orange"] = "stairsright:stair_orange", + ["color:pink"] = "stairsright:stair_pink", + ["color:white"] = "stairsright:stair_white", + + }} +local creative = minetest.setting_getbool("creative_mode") +for k,v1 in pairs(combostairright.index) do + local v1_def = minetest.registered_nodes[v1] + local v1_groups = table.copy(v1_def.groups) + v1_groups.not_in_creative_inventory = 1 + local v1_tiles = table.copy(v1_def.tiles) + if not v1_tiles[2] then + v1_tiles[2] = v1_tiles[1] + end + if not v1_tiles[3] then + v1_tiles[3] = v1_tiles[2] + end + if not v1_tiles[4] then + v1_tiles[4] = v1_tiles[3] + end + if not v1_tiles[5] then + v1_tiles[5] = v1_tiles[4] + end + if not v1_tiles[6] then + v1_tiles[6] = v1_tiles[5] + end + for _,v2 in pairs(combostairright.index) do + if v1 ~= v2 then + local v2_def = minetest.registered_nodes[v2] + local v2_tiles = table.copy(v2_def.tiles) + if not v2_tiles[2] then + v2_tiles[2] = v2_tiles[1] + end + if not v2_tiles[3] then + v2_tiles[3] = v2_tiles[2] + end + if not v2_tiles[4] then + v2_tiles[4] = v2_tiles[3] + end + if not v2_tiles[5] then + v2_tiles[5] = v2_tiles[4] + end + if not v2_tiles[6] then + v2_tiles[6] = v2_tiles[5] + end + minetest.register_node("combostairright:"..v1:split(":")[2].."_onc_"..v2:split(":")[2], { + description = v1_def.description.." on "..v2_def.description, + tiles = {v1_tiles[1], v2_tiles[2]}, + paramtype = "light", + paramtype2 = "facedir", + drawtype = "mesh", + mesh = "stairright.b3d", + + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + }, + + collision_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + }, + + sounds = v1_def.sounds, + groups = v1_groups, + drop = v1, + }) + end + end + minetest.override_item(v1, { + on_place = function(itemstack, placer, pointed_thing) + local pos = pointed_thing.under + if pointed_thing.type ~= "node" or minetest.is_protected(pos, placer:get_player_name()) then + return + end + local node = minetest.get_node(pos) + if node.name == v1 then + minetest.swap_node(pos, {name = k, param2 = 0}) + if not creative then + itemstack:take_item() + return itemstack + end + else + for _,v in pairs(combostairright.index) do + if node.name == v then + minetest.swap_node(pos, {name = "combostairright:"..v1:split(":")[2].."_onc_"..v:split(":")[2], param2 = node.param2}) + if not creative then + itemstack:take_item() + return itemstack + end + return + end + end + return minetest.item_place(itemstack, placer, pointed_thing, param2) + end + end, + }) +end diff --git a/files/ComboNodes/combostairright/readme.txt b/files/ComboNodes/combostairright/readme.txt new file mode 100644 index 0000000..a7a5df8 --- /dev/null +++ b/files/ComboNodes/combostairright/readme.txt @@ -0,0 +1,31 @@ +Comboblock Fork for Blockcolor (Mrchiantos) +Comboblock Original (pithydon) + +License (Model) : CcO with Help MinetestVideo, Thank man. + +License (source code) : +======================================================================= +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/files/ComboNodes/modpack.txt b/files/ComboNodes/modpack.txt new file mode 100644 index 0000000..e69de29 diff --git a/files/Nodes/stairs/README.txt b/files/ComboNodes/stairs/README.txt similarity index 100% rename from files/Nodes/stairs/README.txt rename to files/ComboNodes/stairs/README.txt diff --git a/files/Nodes/stairs/depends.txt b/files/ComboNodes/stairs/depends.txt similarity index 100% rename from files/Nodes/stairs/depends.txt rename to files/ComboNodes/stairs/depends.txt diff --git a/files/Nodes/stairs/init.lua b/files/ComboNodes/stairs/init.lua similarity index 94% rename from files/Nodes/stairs/init.lua rename to files/ComboNodes/stairs/init.lua index 825c031..48e2358 100644 --- a/files/Nodes/stairs/init.lua +++ b/files/ComboNodes/stairs/init.lua @@ -6,6 +6,14 @@ stairs = {} +local source_list = { + {""}, + {"nocombo"}, +} + +for i in ipairs(source_list) do + local combo = source_list[i][1] + -- Register aliases for new pine node names @@ -47,7 +55,7 @@ end function stairs.register_stair(subname, recipeitem, groups, images, description, sounds, html, wieldcolors) groups.stair = 1 - minetest.register_node(":stairs:stair_" .. subname, { + minetest.register_node(":stairs:stair" .. combo .. "_" .. subname, { description = description, wield_image = wieldcolors, wield_scale = {x=1,y=1,z=0.5}, @@ -85,8 +93,8 @@ function stairs.register_stair(subname, recipeitem, groups, images, description, -- for replace ABM if replace then - minetest.register_node(":stairs:stair_" .. subname .. "upside_down", { - replace_name = "stairs:stair_" .. subname, + minetest.register_node(":stairs:stair" .. combo .. "_" .. subname .. "upside_down", { + replace_name = "stairs:stair" .. combo .. "_" .. subname, groups = {slabs_replace = 1}, }) end @@ -136,7 +144,7 @@ local slab_trans_dir = {[0] = 8, 0, 2, 1, 3, 4} function stairs.register_slab(subname, recipeitem, groups, images, description, sounds, html, wieldcolors) groups.slab = 1 - minetest.register_node(":stairs:slab_" .. subname, { + minetest.register_node(":stairs:slab" .. combo .. "_" .. subname, { description = description, wield_image = wieldcolors, wield_scale = {x=1,y=1,z=0.5}, @@ -208,8 +216,8 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, -- for replace ABM if replace then - minetest.register_node(":stairs:slab_" .. subname .. "upside_down", { - replace_name = "stairs:slab_".. subname, + minetest.register_node(":stairs:slab" .. combo .. "_" .. subname .. "upside_down", { + replace_name = "stairs:slab" .. combo .. "_".. subname, groups = {slabs_replace = 1}, }) end @@ -368,3 +376,5 @@ stairs.register_stair_and_slab( color8, "color_handwhite.png^(color_handwhite2.png^[colorize:#"..color8..":70)" ) + +end \ No newline at end of file diff --git a/files/Nodes/stairs/license.txt b/files/ComboNodes/stairs/license.txt similarity index 100% rename from files/Nodes/stairs/license.txt rename to files/ComboNodes/stairs/license.txt diff --git a/files/Nodes/stairs/models/stairs_stair.obj b/files/ComboNodes/stairs/models/stairs_stair.obj similarity index 100% rename from files/Nodes/stairs/models/stairs_stair.obj rename to files/ComboNodes/stairs/models/stairs_stair.obj diff --git a/files/ComboNodes/stairsleft/README.txt b/files/ComboNodes/stairsleft/README.txt new file mode 100644 index 0000000..d32cd71 --- /dev/null +++ b/files/ComboNodes/stairsleft/README.txt @@ -0,0 +1,16 @@ +Minetest Game mod: stairs +========================= +See license.txt for license information. + +Authors of source code +---------------------- +Originally by Kahrl (LGPL 2.1) and +celeron55, Perttu Ahola (LGPL 2.1) +Various Minetest developers and contributors (LGPL 2.1) + +Authors of media (models) +------------------------- +Jean-Patrick G. (kilbith) (CC BY-SA 3.0): + stairs_stair.obj + + diff --git a/files/ComboNodes/stairsleft/depends.txt b/files/ComboNodes/stairsleft/depends.txt new file mode 100644 index 0000000..9430a5a --- /dev/null +++ b/files/ComboNodes/stairsleft/depends.txt @@ -0,0 +1 @@ +color \ No newline at end of file diff --git a/files/ComboNodes/stairsleft/init.lua b/files/ComboNodes/stairsleft/init.lua new file mode 100644 index 0000000..e06f454 --- /dev/null +++ b/files/ComboNodes/stairsleft/init.lua @@ -0,0 +1,380 @@ +-- Minetest 0.4 mod: stairsleft +-- See README.txt for licensing and other information. + + +-- Global namespace for functions + +stairsleft = {} + +local source_list = { + {""}, + {"nocombo"}, +} + +for i in ipairs(source_list) do + local combo = source_list[i][1] + + +-- Register aliases for new pine node names + +minetest.register_alias("stairsleft:stair_pinewood", "stairsleft:stair_pine_wood") +minetest.register_alias("stairsleft:slab_pinewood", "stairsleft:slab_pine_wood") + + +-- Get setting for replace ABM + +local replace = minetest.settings:get_bool("enable_stairsleft_replace_abm") + +local function rotate_and_place(itemstack, placer, pointed_thing) + local p0 = pointed_thing.under + local p1 = pointed_thing.above + local param2 = 0 + + local placer_pos = placer:getpos() + if placer_pos then + param2 = minetest.dir_to_facedir(vector.subtract(p1, placer_pos)) + end + + local finepos = minetest.pointed_thing_to_face_pos(placer, pointed_thing) + local fpos = finepos.y % 1 + + if p0.y - 1 == p1.y or (fpos > 0 and fpos < 0.5) + or (fpos < -0.5 and fpos > -0.999999999) then + param2 = param2 + 20 + if param2 == 21 then + param2 = 23 + elseif param2 == 23 then + param2 = 21 + end + end + return minetest.item_place(itemstack, placer, pointed_thing, param2) +end + +-- Register stairsleft. +-- Node will be called stairsleft:stair_ + +function stairsleft.register_stair(subname, recipeitem, groups, images, description, sounds, html, wieldcolors) + groups.stair = 1 + minetest.register_node(":stairsleft:stair" .. combo .. "_" .. subname, { + description = description, + wield_image = wieldcolors, + wield_scale = {x=1,y=1,z=0.5}, + drawtype = "mesh", + inventory_image = "stairsleft.png^[colorize:#".. html ..":70", + mesh = "stairleft.b3d", + tiles = images, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = groups, + sounds = sounds, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + }, + collision_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + }, + on_place = function(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" then + return itemstack + end + + return rotate_and_place(itemstack, placer, pointed_thing) + end, + }) + + -- for replace ABM + if replace then + minetest.register_node(":stairsleft:stair" .. combo .. "_" .. subname .. "upside_down", { + replace_name = "stairsleft:stair" .. combo .. "_" .. subname, + groups = {slabs_replace = 1}, + }) + end + + if recipeitem then + minetest.register_craft({ + output = 'stairsleft:stair_' .. subname .. ' 8', + recipe = { + {recipeitem, "", ""}, + {recipeitem, recipeitem, ""}, + {recipeitem, recipeitem, recipeitem}, + }, + }) + + -- Flipped recipe for the silly minecrafters + minetest.register_craft({ + output = 'stairsleft:stair_' .. subname .. ' 8', + recipe = { + {"", "", recipeitem}, + {"", recipeitem, recipeitem}, + {recipeitem, recipeitem, recipeitem}, + }, + }) + + -- Fuel + local baseburntime = minetest.get_craft_result({ + method = "fuel", + width = 1, + items = {recipeitem} + }).time + if baseburntime > 0 then + minetest.register_craft({ + type = "fuel", + recipe = 'stairsleft:stair_' .. subname, + burntime = math.floor(baseburntime * 0.75), + }) + end + end +end + + +-- Slab facedir to placement 6d matching table +local slab_trans_dir = {[0] = 8, 0, 2, 1, 3, 4} + +-- Register slabs. +-- Node will be called stairsleft:slab_ + +function stairsleft.register_slab(subname, recipeitem, groups, images, description, sounds, html, wieldcolors) + groups.slab = 1 + minetest.register_node(":stairsleft:slab_" .. subname, { + description = description, + wield_image = wieldcolors, + wield_scale = {x=1,y=1,z=0.5}, + inventory_image = "slabs.png^[colorize:#".. html ..":70", + drawtype = "nodebox", + tiles = images, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = groups, + sounds = sounds, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + }, + on_place = function(itemstack, placer, pointed_thing) + local under = minetest.get_node(pointed_thing.under) + local wield_item = itemstack:get_name() + local creative_enabled = (creative and creative.is_enabled_for + and creative.is_enabled_for(placer:get_player_name())) + + if under and under.name:find("stairsleft:slab_") then + -- place slab using under node orientation + local dir = minetest.dir_to_facedir(vector.subtract( + pointed_thing.above, pointed_thing.under), true) + + local p2 = under.param2 + + -- combine two slabs if possible + if slab_trans_dir[math.floor(p2 / 4)] == dir + and wield_item == under.name then + + if not recipeitem then + return itemstack + end + local player_name = placer:get_player_name() + if minetest.is_protected(pointed_thing.under, player_name) and not + minetest.check_player_privs(placer, "protection_bypass") then + minetest.record_protection_violation(pointed_thing.under, + player_name) + return + end + minetest.set_node(pointed_thing.under, {name = recipeitem, param2 = p2}) + if not creative_enabled then + itemstack:take_item() + end + return itemstack + end + + -- Placing a slab on an upside down slab should make it right-side up. + if p2 >= 20 and dir == 8 then + p2 = p2 - 20 + -- same for the opposite case: slab below normal slab + elseif p2 <= 3 and dir == 4 then + p2 = p2 + 20 + end + + -- else attempt to place node with proper param2 + minetest.item_place_node(ItemStack(wield_item), placer, pointed_thing, p2) + if not creative_enabled then + itemstack:take_item() + end + return itemstack + else + return rotate_and_place(itemstack, placer, pointed_thing) + end + end, + }) + + -- for replace ABM + if replace then + minetest.register_node(":stairsleft:slab_" .. subname .. "upside_down", { + replace_name = "stairsleft:slab_".. subname, + groups = {slabs_replace = 1}, + }) + end + + if recipeitem then + minetest.register_craft({ + output = 'stairsleft:slab_' .. subname .. ' 6', + recipe = { + {recipeitem, recipeitem, recipeitem}, + }, + }) + + -- Fuel + local baseburntime = minetest.get_craft_result({ + method = "fuel", + width = 1, + items = {recipeitem} + }).time + if baseburntime > 0 then + minetest.register_craft({ + type = "fuel", + recipe = 'stairsleft:slab_' .. subname, + burntime = math.floor(baseburntime * 0.5), + }) + end + end +end + + +-- Optionally replace old "upside_down" nodes with new param2 versions. +-- Disabled by default. + +if replace then + minetest.register_abm({ + label = "Slab replace", + nodenames = {"group:slabs_replace"}, + interval = 16, + chance = 1, + action = function(pos, node) + node.name = minetest.registered_nodes[node.name].replace_name + node.param2 = node.param2 + 20 + if node.param2 == 21 then + node.param2 = 23 + elseif node.param2 == 23 then + node.param2 = 21 + end + minetest.set_node(pos, node) + end, + }) +end + + +-- Stair/slab registration function. +-- Nodes will be called stairsleft:{stair,slab}_ + +function stairsleft.register_stair_and_slab(subname, recipeitem, + groups, images, desc_stair, desc_slab, sounds, html, wieldcolors) + stairsleft.register_stair(subname, recipeitem, groups, images, desc_stair, sounds, html, wieldcolors) + stairsleft.register_slab(subname, recipeitem, groups, images, desc_slab, sounds, html, wieldcolors) +end + +-- Register default stairsleft and slabs + +stairsleft.register_stair_and_slab( + "blue", + "color:blue", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + {"color_white2.png^[colorize:#"..color2..":70"}, + "Blue Stair", + "Blue Slab", + default.node_sound_wood_defaults(), + color2, + "color_handwhite.png^(color_handwhite2.png^[colorize:#"..color2..":70)" +) + +stairsleft.register_stair_and_slab( + "red", + "color:red", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + {"color_white2.png^[colorize:#"..color6..":70"}, + "Red Stair", + "Red Slab", + default.node_sound_wood_defaults(), + color6, + "color_handwhite.png^(color_handwhite2.png^[colorize:#"..color6..":70)" +) + +stairsleft.register_stair_and_slab( + "white", + "color:white", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + {"color_white2.png^[colorize:#"..color4..":70"}, + "White Stair", + "White Slab", + default.node_sound_wood_defaults(), + color4, + "color_handwhite.png^(color_handwhite2.png^[colorize:#"..color4..":70)" +) + +stairsleft.register_stair_and_slab( + "black", + "color:black", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + {"color_white2.png^[colorize:#"..color1..":70"}, + "Black Stair", + "Black Slab", + default.node_sound_wood_defaults(), + color1, + "color_handwhite.png^(color_handwhite2.png^[colorize:#"..color1..":70)" +) + +stairsleft.register_stair_and_slab( + "green", + "color:green", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + {"color_white2.png^[colorize:#"..color3..":70"}, + "Green Stair", + "Green Slab", + default.node_sound_wood_defaults(), + color3, + "color_handwhite.png^(color_handwhite2.png^[colorize:#"..color3..":70)" +) + +stairsleft.register_stair_and_slab( + "yellow", + "color:yellow", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + {"color_white2.png^[colorize:#"..color7..":70"}, + "Yellow Stair", + "Yellow Slab", + default.node_sound_wood_defaults(), + color7, + "color_handwhite.png^(color_handwhite2.png^[colorize:#"..color7..":70)" +) + +stairsleft.register_stair_and_slab( + "orange", + "color:orange", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + {"color_white2.png^[colorize:#"..color5..":70"}, + "Orange Stair", + "Orange Slab", + default.node_sound_wood_defaults(), + color5, + "color_handwhite.png^(color_handwhite2.png^[colorize:#"..color5..":70)" +) + +stairsleft.register_stair_and_slab( + "pink", + "color:pink", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + {"color_white2.png^[colorize:#"..color8..":70"}, + "Pink Stair", + "Pink Slab", + default.node_sound_wood_defaults(), + color8, + "color_handwhite.png^(color_handwhite2.png^[colorize:#"..color8..":70)" +) + +end \ No newline at end of file diff --git a/files/ComboNodes/stairsleft/license.txt b/files/ComboNodes/stairsleft/license.txt new file mode 100644 index 0000000..8f16bbd --- /dev/null +++ b/files/ComboNodes/stairsleft/license.txt @@ -0,0 +1,51 @@ +License of source code +---------------------- + +GNU Lesser General Public License, version 2.1 +Copyright (C) 2011-2016 Kahrl +Copyright (C) 2011-2016 celeron55, Perttu Ahola +Copyright (C) 2012-2016 Various Minetest developers and contributors + +This program is free software; you can redistribute it and/or modify it under the terms +of the GNU Lesser General Public License as published by the Free Software Foundation; +either version 2.1 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU Lesser General Public License for more details: +https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html + + +Licenses of media (models) +-------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2015-2016 Jean-Patrick G. (kilbith) + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/files/ComboNodes/stairsright/README.txt b/files/ComboNodes/stairsright/README.txt new file mode 100644 index 0000000..d32cd71 --- /dev/null +++ b/files/ComboNodes/stairsright/README.txt @@ -0,0 +1,16 @@ +Minetest Game mod: stairs +========================= +See license.txt for license information. + +Authors of source code +---------------------- +Originally by Kahrl (LGPL 2.1) and +celeron55, Perttu Ahola (LGPL 2.1) +Various Minetest developers and contributors (LGPL 2.1) + +Authors of media (models) +------------------------- +Jean-Patrick G. (kilbith) (CC BY-SA 3.0): + stairs_stair.obj + + diff --git a/files/ComboNodes/stairsright/depends.txt b/files/ComboNodes/stairsright/depends.txt new file mode 100644 index 0000000..9430a5a --- /dev/null +++ b/files/ComboNodes/stairsright/depends.txt @@ -0,0 +1 @@ +color \ No newline at end of file diff --git a/files/ComboNodes/stairsright/init.lua b/files/ComboNodes/stairsright/init.lua new file mode 100644 index 0000000..714e8b6 --- /dev/null +++ b/files/ComboNodes/stairsright/init.lua @@ -0,0 +1,380 @@ +-- Minetest 0.4 mod: stairsright +-- See README.txt for licensing and other information. + + +-- Global namespace for functions + +stairsright = {} + +local source_list = { + {""}, + {"nocombo"}, +} + +for i in ipairs(source_list) do + local combo = source_list[i][1] + + +-- Register aliases for new pine node names + +minetest.register_alias("stairsright:stair_pinewood", "stairsright:stair_pine_wood") +minetest.register_alias("stairsright:slab_pinewood", "stairsright:slab_pine_wood") + + +-- Get setting for replace ABM + +local replace = minetest.settings:get_bool("enable_stairsright_replace_abm") + +local function rotate_and_place(itemstack, placer, pointed_thing) + local p0 = pointed_thing.under + local p1 = pointed_thing.above + local param2 = 0 + + local placer_pos = placer:getpos() + if placer_pos then + param2 = minetest.dir_to_facedir(vector.subtract(p1, placer_pos)) + end + + local finepos = minetest.pointed_thing_to_face_pos(placer, pointed_thing) + local fpos = finepos.y % 1 + + if p0.y - 1 == p1.y or (fpos > 0 and fpos < 0.5) + or (fpos < -0.5 and fpos > -0.999999999) then + param2 = param2 + 20 + if param2 == 21 then + param2 = 23 + elseif param2 == 23 then + param2 = 21 + end + end + return minetest.item_place(itemstack, placer, pointed_thing, param2) +end + +-- Register stairsright. +-- Node will be called stairsright:stair_ + +function stairsright.register_stair(subname, recipeitem, groups, images, description, sounds, html, wieldcolors) + groups.stair = 1 + minetest.register_node(":stairsright:stair" .. combo .. "_" .. subname, { + description = description, + wield_image = wieldcolors, + wield_scale = {x=1,y=1,z=0.5}, + drawtype = "mesh", + inventory_image = "stairsright.png^[colorize:#".. html ..":70", + mesh = "stairright.b3d", + tiles = images, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = groups, + sounds = sounds, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + }, + collision_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + }, + on_place = function(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" then + return itemstack + end + + return rotate_and_place(itemstack, placer, pointed_thing) + end, + }) + + -- for replace ABM + if replace then + minetest.register_node(":stairsright:stair" .. combo .. "_" .. subname .. "upside_down", { + replace_name = "stairsright:stair" .. combo .. "_" .. subname, + groups = {slabs_replace = 1}, + }) + end + + if recipeitem then + minetest.register_craft({ + output = 'stairsright:stair_' .. subname .. ' 8', + recipe = { + {recipeitem, "", ""}, + {recipeitem, recipeitem, ""}, + {recipeitem, recipeitem, recipeitem}, + }, + }) + + -- Flipped recipe for the silly minecrafters + minetest.register_craft({ + output = 'stairsright:stair_' .. subname .. ' 8', + recipe = { + {"", "", recipeitem}, + {"", recipeitem, recipeitem}, + {recipeitem, recipeitem, recipeitem}, + }, + }) + + -- Fuel + local baseburntime = minetest.get_craft_result({ + method = "fuel", + width = 1, + items = {recipeitem} + }).time + if baseburntime > 0 then + minetest.register_craft({ + type = "fuel", + recipe = 'stairsright:stair_' .. subname, + burntime = math.floor(baseburntime * 0.75), + }) + end + end +end + + +-- Slab facedir to placement 6d matching table +local slab_trans_dir = {[0] = 8, 0, 2, 1, 3, 4} + +-- Register slabs. +-- Node will be called stairsright:slab_ + +function stairsright.register_slab(subname, recipeitem, groups, images, description, sounds, html, wieldcolors) + groups.slab = 1 + minetest.register_node(":stairsright:right_" .. subname, { + description = description, + wield_image = wieldcolors, + wield_scale = {x=1,y=1,z=0.5}, + inventory_image = "slabs.png^[colorize:#".. html ..":70", + drawtype = "nodebox", + tiles = images, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = groups, + sounds = sounds, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + }, + on_place = function(itemstack, placer, pointed_thing) + local under = minetest.get_node(pointed_thing.under) + local wield_item = itemstack:get_name() + local creative_enabled = (creative and creative.is_enabled_for + and creative.is_enabled_for(placer:get_player_name())) + + if under and under.name:find("stairsright:slab_") then + -- place slab using under node orientation + local dir = minetest.dir_to_facedir(vector.subtract( + pointed_thing.above, pointed_thing.under), true) + + local p2 = under.param2 + + -- combine two slabs if possible + if slab_trans_dir[math.floor(p2 / 4)] == dir + and wield_item == under.name then + + if not recipeitem then + return itemstack + end + local player_name = placer:get_player_name() + if minetest.is_protected(pointed_thing.under, player_name) and not + minetest.check_player_privs(placer, "protection_bypass") then + minetest.record_protection_violation(pointed_thing.under, + player_name) + return + end + minetest.set_node(pointed_thing.under, {name = recipeitem, param2 = p2}) + if not creative_enabled then + itemstack:take_item() + end + return itemstack + end + + -- Placing a slab on an upside down slab should make it right-side up. + if p2 >= 20 and dir == 8 then + p2 = p2 - 20 + -- same for the opposite case: slab below normal slab + elseif p2 <= 3 and dir == 4 then + p2 = p2 + 20 + end + + -- else attempt to place node with proper param2 + minetest.item_place_node(ItemStack(wield_item), placer, pointed_thing, p2) + if not creative_enabled then + itemstack:take_item() + end + return itemstack + else + return rotate_and_place(itemstack, placer, pointed_thing) + end + end, + }) + + -- for replace ABM + if replace then + minetest.register_node(":stairsright:slab_" .. subname .. "upside_down", { + replace_name = "stairsright:slab_".. subname, + groups = {slabs_replace = 1}, + }) + end + + if recipeitem then + minetest.register_craft({ + output = 'stairsright:slab_' .. subname .. ' 6', + recipe = { + {recipeitem, recipeitem, recipeitem}, + }, + }) + + -- Fuel + local baseburntime = minetest.get_craft_result({ + method = "fuel", + width = 1, + items = {recipeitem} + }).time + if baseburntime > 0 then + minetest.register_craft({ + type = "fuel", + recipe = 'stairsright:slab_' .. subname, + burntime = math.floor(baseburntime * 0.5), + }) + end + end +end + + +-- Optionally replace old "upside_down" nodes with new param2 versions. +-- Disabled by default. + +if replace then + minetest.register_abm({ + label = "Slab replace", + nodenames = {"group:slabs_replace"}, + interval = 16, + chance = 1, + action = function(pos, node) + node.name = minetest.registered_nodes[node.name].replace_name + node.param2 = node.param2 + 20 + if node.param2 == 21 then + node.param2 = 23 + elseif node.param2 == 23 then + node.param2 = 21 + end + minetest.set_node(pos, node) + end, + }) +end + + +-- Stair/slab registration function. +-- Nodes will be called stairsright:{stair,slab}_ + +function stairsright.register_stair_and_slab(subname, recipeitem, + groups, images, desc_stair, desc_slab, sounds, html, wieldcolors) + stairsright.register_stair(subname, recipeitem, groups, images, desc_stair, sounds, html, wieldcolors) + stairsright.register_slab(subname, recipeitem, groups, images, desc_slab, sounds, html, wieldcolors) +end + +-- Register default stairsright and slabs + +stairsright.register_stair_and_slab( + "blue", + "color:blue", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + {"color_white2.png^[colorize:#"..color2..":70"}, + "Blue Stair Right", + "Blue Slab", + default.node_sound_wood_defaults(), + color2, + "color_handwhite.png^(color_handwhite2.png^[colorize:#"..color2..":70)" +) + +stairsright.register_stair_and_slab( + "red", + "color:red", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + {"color_white2.png^[colorize:#"..color6..":70"}, + "Red Stair Right", + "Red Slab", + default.node_sound_wood_defaults(), + color6, + "color_handwhite.png^(color_handwhite2.png^[colorize:#"..color6..":70)" +) + +stairsright.register_stair_and_slab( + "white", + "color:white", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + {"color_white2.png^[colorize:#"..color4..":70"}, + "White Stair Right", + "White Slab", + default.node_sound_wood_defaults(), + color4, + "color_handwhite.png^(color_handwhite2.png^[colorize:#"..color4..":70)" +) + +stairsright.register_stair_and_slab( + "black", + "color:black", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + {"color_white2.png^[colorize:#"..color1..":70"}, + "Black Stair Right", + "Black Slab", + default.node_sound_wood_defaults(), + color1, + "color_handwhite.png^(color_handwhite2.png^[colorize:#"..color1..":70)" +) + +stairsright.register_stair_and_slab( + "green", + "color:green", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + {"color_white2.png^[colorize:#"..color3..":70"}, + "Green Stair Right", + "Green Slab", + default.node_sound_wood_defaults(), + color3, + "color_handwhite.png^(color_handwhite2.png^[colorize:#"..color3..":70)" +) + +stairsright.register_stair_and_slab( + "yellow", + "color:yellow", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + {"color_white2.png^[colorize:#"..color7..":70"}, + "Yellow Stair Right", + "Yellow Slab", + default.node_sound_wood_defaults(), + color7, + "color_handwhite.png^(color_handwhite2.png^[colorize:#"..color7..":70)" +) + +stairsright.register_stair_and_slab( + "orange", + "color:orange", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + {"color_white2.png^[colorize:#"..color5..":70"}, + "Orange Stair Right", + "Orange Slab", + default.node_sound_wood_defaults(), + color5, + "color_handwhite.png^(color_handwhite2.png^[colorize:#"..color5..":70)" +) + +stairsright.register_stair_and_slab( + "pink", + "color:pink", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + {"color_white2.png^[colorize:#"..color8..":70"}, + "Pink Stair Right", + "Pink Slab", + default.node_sound_wood_defaults(), + color8, + "color_handwhite.png^(color_handwhite2.png^[colorize:#"..color8..":70)" +) + +end \ No newline at end of file diff --git a/files/ComboNodes/stairsright/license.txt b/files/ComboNodes/stairsright/license.txt new file mode 100644 index 0000000..8f16bbd --- /dev/null +++ b/files/ComboNodes/stairsright/license.txt @@ -0,0 +1,51 @@ +License of source code +---------------------- + +GNU Lesser General Public License, version 2.1 +Copyright (C) 2011-2016 Kahrl +Copyright (C) 2011-2016 celeron55, Perttu Ahola +Copyright (C) 2012-2016 Various Minetest developers and contributors + +This program is free software; you can redistribute it and/or modify it under the terms +of the GNU Lesser General Public License as published by the Free Software Foundation; +either version 2.1 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU Lesser General Public License for more details: +https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html + + +Licenses of media (models) +-------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2015-2016 Jean-Patrick G. (kilbith) + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/files/Menu/inventory_plus/build.lua b/files/Menu/inventory_plus/build.lua index e8676ba..c347885 100644 --- a/files/Menu/inventory_plus/build.lua +++ b/files/Menu/inventory_plus/build.lua @@ -462,6 +462,51 @@ end end ) +-- ComBo Blocks + +-- Stairs (Border Left) + +minetest.register_on_player_receive_fields(function(player, formname, fields) + local name = player:get_player_name() + if fields.stairsleft then --main page + + player:get_inventory():set_list("main", {}) + +player:get_inventory():add_item('main', 'stairsleft:stair_white') +player:get_inventory():add_item('main', 'stairsleft:stair_black') +player:get_inventory():add_item('main', 'stairsleft:stair_red') +player:get_inventory():add_item('main', 'stairsleft:stair_orange') +player:get_inventory():add_item('main', 'stairsleft:stair_yellow') +player:get_inventory():add_item('main', 'stairsleft:stair_pink') +player:get_inventory():add_item('main', 'stairsleft:stair_green') +player:get_inventory():add_item('main', 'stairsleft:stair_blue') + +end +end +) + +-- Stairs (Border Right) + +minetest.register_on_player_receive_fields(function(player, formname, fields) + local name = player:get_player_name() + if fields.stairsright then --main page + + player:get_inventory():set_list("main", {}) + +player:get_inventory():add_item('main', 'stairsright:stair_white') +player:get_inventory():add_item('main', 'stairsright:stair_black') +player:get_inventory():add_item('main', 'stairsright:stair_red') +player:get_inventory():add_item('main', 'stairsright:stair_orange') +player:get_inventory():add_item('main', 'stairsright:stair_yellow') +player:get_inventory():add_item('main', 'stairsright:stair_pink') +player:get_inventory():add_item('main', 'stairsright:stair_green') +player:get_inventory():add_item('main', 'stairsright:stair_blue') + +end +end +) + + -- Stairs minetest.register_on_player_receive_fields(function(player, formname, fields) @@ -483,26 +528,6 @@ end end ) --- Top Slabs - -minetest.register_on_player_receive_fields(function(player, formname, fields) - local name = player:get_player_name() - if fields.tslabs then --main page - - player:get_inventory():set_list("main", {}) - -player:get_inventory():add_item('main', 'stackslabs:top_slabwhite') -player:get_inventory():add_item('main', 'stackslabs:top_slabblack') -player:get_inventory():add_item('main', 'stackslabs:top_slabred') -player:get_inventory():add_item('main', 'stackslabs:top_slaborange') -player:get_inventory():add_item('main', 'stackslabs:top_slabyellow') -player:get_inventory():add_item('main', 'stackslabs:top_slabpink') -player:get_inventory():add_item('main', 'stackslabs:top_slabgreen') -player:get_inventory():add_item('main', 'stackslabs:top_slabblue') - -end -end -) -- Bottom Slabs @@ -525,4 +550,92 @@ end end ) --- End Build Nodes +-- No ComBo Blocks + +-- Stairs (Border Left) + +minetest.register_on_player_receive_fields(function(player, formname, fields) + local name = player:get_player_name() + if fields.stairsleftnocombo then --main page + + player:get_inventory():set_list("main", {}) + +player:get_inventory():add_item('main', 'stairsleft:stairnocombo_white') +player:get_inventory():add_item('main', 'stairsleft:stairnocombo_black') +player:get_inventory():add_item('main', 'stairsleft:stairnocombo_red') +player:get_inventory():add_item('main', 'stairsleft:stairnocombo_orange') +player:get_inventory():add_item('main', 'stairsleft:stairnocombo_yellow') +player:get_inventory():add_item('main', 'stairsleft:stairnocombo_pink') +player:get_inventory():add_item('main', 'stairsleft:stairnocombo_green') +player:get_inventory():add_item('main', 'stairsleft:stairnocombo_blue') + +end +end +) + +-- Stairs (Border Right) + +minetest.register_on_player_receive_fields(function(player, formname, fields) + local name = player:get_player_name() + if fields.stairsrightnocombo then --main page + + player:get_inventory():set_list("main", {}) + +player:get_inventory():add_item('main', 'stairsright:stairnocombo_white') +player:get_inventory():add_item('main', 'stairsright:stairnocombo_black') +player:get_inventory():add_item('main', 'stairsright:stairnocombo_red') +player:get_inventory():add_item('main', 'stairsright:stairnocombo_orange') +player:get_inventory():add_item('main', 'stairsright:stairnocombo_yellow') +player:get_inventory():add_item('main', 'stairsright:stairnocombo_pink') +player:get_inventory():add_item('main', 'stairsright:stairnocombo_green') +player:get_inventory():add_item('main', 'stairsright:stairnocombo_blue') + +end +end +) + + +-- Stairs + +minetest.register_on_player_receive_fields(function(player, formname, fields) + local name = player:get_player_name() + if fields.stairsnocombo then --main page + + player:get_inventory():set_list("main", {}) + +player:get_inventory():add_item('main', 'stairs:stairnocombo_white') +player:get_inventory():add_item('main', 'stairs:stairnocombo_black') +player:get_inventory():add_item('main', 'stairs:stairnocombo_red') +player:get_inventory():add_item('main', 'stairs:stairnocombo_orange') +player:get_inventory():add_item('main', 'stairs:stairnocombo_yellow') +player:get_inventory():add_item('main', 'stairs:stairnocombo_pink') +player:get_inventory():add_item('main', 'stairs:stairnocombo_green') +player:get_inventory():add_item('main', 'stairs:stairnocombo_blue') + +end +end +) + + +-- Bottom Slabs + +minetest.register_on_player_receive_fields(function(player, formname, fields) + local name = player:get_player_name() + if fields.slabsnocombo then --main page + + player:get_inventory():set_list("main", {}) + +player:get_inventory():add_item('main', 'stairs:slabnocombo_white') +player:get_inventory():add_item('main', 'stairs:slabnocombo_black') +player:get_inventory():add_item('main', 'stairs:slabnocombo_red') +player:get_inventory():add_item('main', 'stairs:slabnocombo_orange') +player:get_inventory():add_item('main', 'stairs:slabnocombo_yellow') +player:get_inventory():add_item('main', 'stairs:slabnocombo_pink') +player:get_inventory():add_item('main', 'stairs:slabnocombo_green') +player:get_inventory():add_item('main', 'stairs:slabnocombo_blue') + +end +end +) + +-- End Build Nodes \ No newline at end of file diff --git a/files/Menu/inventory_plus/menu.lua b/files/Menu/inventory_plus/menu.lua index b78b4b3..5ccdd0e 100644 --- a/files/Menu/inventory_plus/menu.lua +++ b/files/Menu/inventory_plus/menu.lua @@ -90,27 +90,27 @@ inventory_plus.get_formspec = function(player, page) .. "image_button_exit[0,0.5;1,1;blocks.png;blocks;]" .. "tooltip[blocks;Block]" - .. "image_button_exit[1,0.5;1,1;stairs.png;stairs;]" - .. "tooltip[stairs;Stair]" + .. "image_button_exit[1,0.5;1,1;stairs.png;stairsnocombo;]" + .. "tooltip[stairsnocombo;Stair (no combo)]" - .. "image_button_exit[2,0.5;1,1;slabs.png;slabs;]" - .. "tooltip[slabs;Slab]" + .. "image_button_exit[2,0.5;1,1;stairsleft.png;stairsleftnocombo;]" + .. "tooltip[stairsleftnocombo;Stair Left (no combo)]" - .. "image_button_exit[3,0.5;1,1;windows.png;windows;]" + .. "image_button_exit[3,0.5;1,1;stairsright.png;stairsrightnocombo;]" + .. "tooltip[stairsrightnocombo;Stair Right (no combo)]" + + .. "image_button_exit[4,0.5;1,1;slabs.png;slabsnocombo;]" + .. "tooltip[slabsnocombo;Slab (no combo)]" + + .. "image_button_exit[5,0.5;1,1;windows.png;windows;]" .. "tooltip[windows;Window]" - .. "image_button_exit[4,0.5;1,1;lights.png;lights;]" + .. "image_button_exit[6,0.5;1,1;lights.png;lights;]" .. "tooltip[lights;Light]" - .. "image_button_exit[5,0.5;1,1;waters.png;waters;]" - .. "tooltip[waters;Water]" - - .. "image_button_exit[6,0.5;1,1;doors.png;doors;] " + .. "image_button_exit[7,0.5;1,1;doors.png;doors;] " .. "tooltip[doors;Door]" - .. "image_button_exit[7,0.5;1,1;carpets.png;carpets;]" - .. "tooltip[carpets;Carpet]" - .. "image_button_exit[0,2.5;1,1;trapdoor.png;trapdoor;]" .. "tooltip[trapdoor;Trapdoor]" @@ -168,6 +168,8 @@ inventory_plus.get_formspec = function(player, page) .. "image_button_exit[2,6.5;1,1;nones.png;none;]" .. "tooltip[none;None]" + .. "image_button[5,6.5;3,1;;nodesnocombo1;Combo Nodes]" + .. "tooltip[nodesnocombo1;Combo Nodes]" .. "" @@ -188,6 +190,12 @@ inventory_plus.get_formspec = function(player, page) .. "image_button_exit[0,0.5;1,1;edgecorner.png;edgecorner;]" .. "tooltip[edgecorner;Edge corner]" + + .. "image_button_exit[1,0.5;1,1;carpets.png;carpets;]" + .. "tooltip[carpets;Carpet]" + + .. "image_button_exit[2,0.5;1,1;waters.png;waters;]" + .. "tooltip[waters;Water]" .. "image_button[0,6.5;1,1;gauche.png;nodes;]" .. "tooltip[nodes;Nodes Page 1]" @@ -202,6 +210,45 @@ inventory_plus.get_formspec = function(player, page) end +-- nodes nocombo + +if page == "nodesnocombo1" then + + local inv = player:get_inventory() or nil + + if not inv then + print ("NO INVENTORY FOUND") + return + end + + formspec = formspec + + .. "image_button_exit[1,0.5;1,1;stairs.png;stairs;]" + .. "tooltip[stairs;Stair]" + + .. "image_button_exit[2,0.5;1,1;stairsleft.png;stairsleft;]" + .. "tooltip[stairsleft;Stair Left]" + + .. "image_button_exit[3,0.5;1,1;stairsright.png;stairsright;]" + .. "tooltip[stairsright;Stair Right]" + + .. "image_button_exit[4,0.5;1,1;slabs.png;slabs;]" + .. "tooltip[slabs;Slab]" + + +.. "image_button[0,6.5;1,1;gauche.png;nodes;]" +.. "tooltip[nodes; Normal Nodes]" + +.. "image_button_exit[1,6.5;1,1;rotate.png;rotate;]" +.. "tooltip[rotate;Rotate]" + +.. "image_button_exit[2,6.5;1,1;nones.png;none;]" +.. "tooltip[none;None]" + +.. "" + +end + if page == "animals" then local inv = player:get_inventory() or nil @@ -735,6 +782,22 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) return end + if fields.nodes2 then + + inventory_plus.set_inventory_formspec(player, + inventory_plus.get_formspec(player, "nodes2")) + + return + end + + if fields.nodesnocombo1 then + + inventory_plus.set_inventory_formspec(player, + inventory_plus.get_formspec(player, "nodesnocombo1")) + + return + end + if fields.lettermenu then inventory_plus.set_inventory_formspec(player, @@ -767,14 +830,6 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) return end -if fields.nodes2 then - - inventory_plus.set_inventory_formspec(player, - inventory_plus.get_formspec(player, "nodes2")) - - return - end - if fields.furnitures then inventory_plus.set_inventory_formspec(player, diff --git a/files/Menu/inventory_plus/textures/stairs.png b/files/Menu/inventory_plus/textures/stairs.png index 1b8df9d..694a77b 100644 Binary files a/files/Menu/inventory_plus/textures/stairs.png and b/files/Menu/inventory_plus/textures/stairs.png differ diff --git a/files/Menu/inventory_plus/textures/stairsleft.png b/files/Menu/inventory_plus/textures/stairsleft.png new file mode 100644 index 0000000..5858163 Binary files /dev/null and b/files/Menu/inventory_plus/textures/stairsleft.png differ diff --git a/files/Menu/inventory_plus/textures/stairsright.png b/files/Menu/inventory_plus/textures/stairsright.png new file mode 100644 index 0000000..83bc855 Binary files /dev/null and b/files/Menu/inventory_plus/textures/stairsright.png differ