Updated homedecor
Before Width: | Height: | Size: 947 B After Width: | Height: | Size: 766 B |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 356 B After Width: | Height: | Size: 344 B |
Before Width: | Height: | Size: 441 B After Width: | Height: | Size: 390 B |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 398 B After Width: | Height: | Size: 386 B |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.3 KiB |
@ -1,21 +1,21 @@
|
||||
|
||||
-- Amiga 500 lookalike
|
||||
computer.register("computer:shefriendSOO", {
|
||||
description = "SheFriendSOO";
|
||||
tiles_off = { front=true; };
|
||||
description = "SheFriendSOO",
|
||||
tiles_off = { front=true },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
-- X Y Z W H L
|
||||
{ 0, 0, 17, 32, 32, 12 }, -- Monitor Screen
|
||||
{ 3, 3, 29, 26, 26, 3 }, -- Monitor Tube
|
||||
{ 0, 0, 0, 32, 4, 17 }, -- Keyboard
|
||||
});
|
||||
});
|
||||
{ 0, 0, 0, 32, 4, 17 } -- Keyboard
|
||||
})
|
||||
})
|
||||
|
||||
-- Some generic laptop
|
||||
minetest.register_node("computer:vanio", {
|
||||
drawtype = "mesh",
|
||||
mesh = "computer_laptop.obj",
|
||||
description = "Pony Vanio",
|
||||
inventory_image = "computer_laptop_inv.png",
|
||||
tiles = {"computer_laptop.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
@ -26,7 +26,7 @@ minetest.register_node("computer:vanio", {
|
||||
type = "fixed",
|
||||
fixed = {-0.35, -0.5, -0.35, 0.35, 0.05, 0.35},
|
||||
},
|
||||
on_rightclick = function (pos, node, clicker, itemstack)
|
||||
on_rightclick = function(pos, node, clicker, itemstack)
|
||||
node.name = "computer:vanio_off"
|
||||
minetest.set_node(pos, node)
|
||||
end
|
||||
@ -45,7 +45,7 @@ minetest.register_node("computer:vanio_off", {
|
||||
fixed = {-0.35, -0.5, -0.35, 0.35, -0.4, 0.25},
|
||||
},
|
||||
drop = "computer:vanio",
|
||||
on_rightclick = function (pos, node, clicker, itemstack)
|
||||
on_rightclick = function(pos, node, clicker, itemstack)
|
||||
node.name = "computer:vanio"
|
||||
minetest.set_node(pos, node)
|
||||
end
|
||||
@ -53,8 +53,9 @@ minetest.register_node("computer:vanio_off", {
|
||||
|
||||
-- Sony PlayStation lookalike
|
||||
computer.register("computer:slaystation", {
|
||||
description = "Pony SlayStation";
|
||||
tiles_off = { top=true; };
|
||||
description = "Pony SlayStation",
|
||||
inventory_image = "computer_ps1_inv.png",
|
||||
tiles_off = { top=true },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
-- X Y Z W H L
|
||||
{ 0, 0, 11, 32, 6, 21 }, -- Console
|
||||
@ -63,14 +64,15 @@ computer.register("computer:slaystation", {
|
||||
{ 5, 0, 4, 5, 2, 5 }, -- Controller 1 Center
|
||||
{ 18, 0, 1, 4, 2, 9 }, -- Controller 2 L Grip
|
||||
{ 27, 0, 1, 4, 2, 9 }, -- Controller 2 R Grip
|
||||
{ 22, 0, 4, 5, 2, 5 }, -- Controller 2 Center
|
||||
});
|
||||
});
|
||||
{ 22, 0, 4, 5, 2, 5 } -- Controller 2 Center
|
||||
})
|
||||
})
|
||||
|
||||
-- Sony PlayStation 2 lookalike
|
||||
computer.register("computer:slaystation2", {
|
||||
description = "Pony SlayStation 2";
|
||||
tiles_off = { front=true; };
|
||||
description = "Pony SlayStation 2",
|
||||
inventory_image = "computer_ps2_inv.png",
|
||||
tiles_off = { front=true },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
-- X Y Z W H L
|
||||
{ 2, 2, 11, 28, 3, 19 }, -- Console (Upper part)
|
||||
@ -80,31 +82,33 @@ computer.register("computer:slaystation2", {
|
||||
{ 5, 0, 1, 5, 2, 8 }, -- Controller 1 Center
|
||||
{ 18, 0, 1, 4, 2, 9 }, -- Controller 2 L Grip
|
||||
{ 27, 0, 1, 4, 2, 9 }, -- Controller 2 R Grip
|
||||
{ 22, 0, 1, 5, 2, 8 }, -- Controller 2 Center
|
||||
});
|
||||
});
|
||||
{ 22, 0, 1, 5, 2, 8 } -- Controller 2 Center
|
||||
})
|
||||
})
|
||||
|
||||
-- Sinclair ZX Spectrum lookalike
|
||||
computer.register("computer:specter", {
|
||||
description = "SX Specter";
|
||||
tiles_off = { };
|
||||
description = "SX Specter",
|
||||
inventory_image = "computer_specter_inv.png",
|
||||
tiles_off = { },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
-- X Y Z W H L
|
||||
{ 3, 0, 0, 26, 4, 17 }, -- Keyboard
|
||||
{ 18, 0, 18, 12, 6, 14 }, -- Tape Player
|
||||
});
|
||||
});
|
||||
{ 18, 0, 18, 12, 6, 14 } -- Tape Player
|
||||
})
|
||||
})
|
||||
|
||||
-- Nintendo Wii lookalike
|
||||
computer.register("computer:wee", {
|
||||
description = "Nientiendo Wee";
|
||||
tiles_off = { front=true; };
|
||||
description = "Nientiendo Wee",
|
||||
inventory_image = "computer_wii_inv.png",
|
||||
tiles_off = { front=true },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
-- X Y Z W H L
|
||||
{ 11, 0, 3, 10, 6, 26 }, -- Base
|
||||
{ 12, 6, 4, 8, 22, 24 }, -- Top
|
||||
});
|
||||
});
|
||||
{ 12, 6, 4, 8, 22, 24 } -- Top
|
||||
})
|
||||
})
|
||||
|
||||
-- Apple iPad lookalike
|
||||
minetest.register_node("computer:piepad", {
|
||||
@ -113,214 +117,92 @@ minetest.register_node("computer:piepad", {
|
||||
tiles = {"computer_piepad_inv.png"},
|
||||
inventory_image = "computer_piepad_inv.png",
|
||||
wield_image = "computer_piepad_inv.png",
|
||||
sunlight_propagates = false,
|
||||
paramtype = "light",
|
||||
paramtype2 = "wallmounted",
|
||||
light_source = 10,
|
||||
light_source = 8,
|
||||
walkable = false,
|
||||
groups = { snappy=3, cracky=3, choppy=3, oddly_breakable_by_hand=3},
|
||||
groups = {oddly_breakable_by_hand=2},
|
||||
selection_box = {type = "wallmounted"},
|
||||
sounds = default.node_sound_wood_defaults()
|
||||
})
|
||||
|
||||
-- Commodore 64 lookalike
|
||||
computer.register("computer:admiral64", {
|
||||
description = "Admiral64";
|
||||
tiles_off = { };
|
||||
description = "Admiral64",
|
||||
inventory_image = "computer_ad64_inv.png",
|
||||
tiles_off = { },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
-- X Y Z W H L
|
||||
{ 0, 0, 0, 32, 4, 18 }, -- Keyboard
|
||||
});
|
||||
});
|
||||
{ 0, 0, 0, 32, 4, 18 } -- Keyboard
|
||||
})
|
||||
})
|
||||
|
||||
-- Commodore 128 lookalike
|
||||
computer.register("computer:admiral128", {
|
||||
description = "Admiral128";
|
||||
tiles_off = { };
|
||||
description = "Admiral128",
|
||||
inventory_image = "computer_ad128_inv.png",
|
||||
tiles_off = { },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
-- X Y Z W H L
|
||||
{ 0, 0, 0, 32, 4, 27 }, -- Keyboard
|
||||
});
|
||||
});
|
||||
|
||||
---------------------------------------------------------------------------------
|
||||
----------------------------added by crazyginger72-------------------------------
|
||||
---------------------------------------------------------------------------------
|
||||
{ 0, 0, 0, 32, 4, 27 } -- Keyboard
|
||||
})
|
||||
})
|
||||
|
||||
-- Generic Flat Screen LCD (16x9) with keyboard
|
||||
minetest.register_node("computer:monitor_on", {
|
||||
description = "Monitor and keyboard",
|
||||
tiles = {"computer_monitor_t.png","computer_monitor_bt.png",
|
||||
"computer_monitor_l.png","computer_monitor_r.png",
|
||||
"computer_monitor_b.png","computer_monitor_f_desktop.png"}, --"computer_monitor_f_on.png"}, --till i get a boot abm inplace
|
||||
paramtype = "light",
|
||||
light_source = 4,
|
||||
paramtype2 = "facedir",
|
||||
walkable = false,
|
||||
is_ground_content = true,
|
||||
groups = {snappy=3,not_in_creative_inventory=1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.3125, 0.1875, 0.5, 0.375, 0.223116},
|
||||
{-0.25, -0.5, 0.125, 0.25, -0.466981, 0.5},
|
||||
{-0.125, -0.5, 0.3125, 0.125, 0.0283019, 0.346698},
|
||||
{-0.375, -0.3125, 0.208965, 0.375, 0.240566, 0.3125},
|
||||
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, -0.125},
|
||||
{-0.1875, -0.5, 0.25, 0.1875, -0.410377, 0.375},
|
||||
},
|
||||
},
|
||||
drop = 'computer:monitor',
|
||||
on_rightclick = function ( pos, node, clicker, itemstack)
|
||||
node.name = "computer:monitor";
|
||||
minetest.set_node(pos, node);
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("computer:monitor_bios", {
|
||||
description = "Monitor and keyboard",
|
||||
tiles = {"computer_monitor_t.png","computer_monitor_bt.png","computer_monitor_l.png",
|
||||
"computer_monitor_r.png","computer_monitor_b.png","computer_monitor_f_bios.png"},
|
||||
paramtype = "light",
|
||||
light_source = 4,
|
||||
paramtype2 = "facedir",
|
||||
walkable = false,
|
||||
is_ground_content = true,
|
||||
groups = {snappy=3,not_in_creative_inventory=1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.3125, 0.1875, 0.5, 0.375, 0.223116},
|
||||
{-0.25, -0.5, 0.125, 0.25, -0.466981, 0.5},
|
||||
{-0.125, -0.5, 0.3125, 0.125, 0.0283019, 0.346698},
|
||||
{-0.375, -0.3125, 0.208965, 0.375, 0.240566, 0.3125},
|
||||
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, -0.125},
|
||||
{-0.1875, -0.5, 0.25, 0.1875, -0.410377, 0.375},
|
||||
},
|
||||
},
|
||||
drop = 'computer:monitor',
|
||||
})
|
||||
|
||||
minetest.register_node("computer:monitor_loading", {
|
||||
description = "Monitor and keyboard",
|
||||
tiles = {"computer_monitor_t.png","computer_monitor_bt.png","computer_monitor_l.png",
|
||||
"computer_monitor_r.png","computer_monitor_b.png","computer_monitor_f_loading.png"},
|
||||
paramtype = "light",
|
||||
light_source = 4,
|
||||
paramtype2 = "facedir",
|
||||
walkable = false,
|
||||
is_ground_content = true,
|
||||
groups = {snappy=3,not_in_creative_inventory=1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.3125, 0.1875, 0.5, 0.375, 0.223116},
|
||||
{-0.25, -0.5, 0.125, 0.25, -0.466981, 0.5},
|
||||
{-0.125, -0.5, 0.3125, 0.125, 0.0283019, 0.346698},
|
||||
{-0.375, -0.3125, 0.208965, 0.375, 0.240566, 0.3125},
|
||||
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, -0.125},
|
||||
{-0.1875, -0.5, 0.25, 0.1875, -0.410377, 0.375},
|
||||
},
|
||||
},
|
||||
drop = 'computer:monitor',
|
||||
})
|
||||
|
||||
minetest.register_node("computer:monitor_login", {
|
||||
description = "Monitor and keyboard",
|
||||
tiles = {"computer_monitor_t.png","computer_monitor_bt.png","computer_monitor_l.png",
|
||||
"computer_monitor_r.png","computer_monitor_b.png","computer_monitor_f_login.png"},
|
||||
paramtype = "light",
|
||||
light_source = 4,
|
||||
paramtype2 = "facedir",
|
||||
walkable = false,
|
||||
is_ground_content = true,
|
||||
groups = {snappy=3,not_in_creative_inventory=1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.3125, 0.1875, 0.5, 0.375, 0.223116},
|
||||
{-0.25, -0.5, 0.125, 0.25, -0.466981, 0.5},
|
||||
{-0.125, -0.5, 0.3125, 0.125, 0.0283019, 0.346698},
|
||||
{-0.375, -0.3125, 0.208965, 0.375, 0.240566, 0.3125},
|
||||
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, -0.125},
|
||||
{-0.1875, -0.5, 0.25, 0.1875, -0.410377, 0.375},
|
||||
},
|
||||
},
|
||||
drop = 'computer:monitor',
|
||||
})
|
||||
|
||||
minetest.register_node("computer:monitor_desktop", {
|
||||
description = "Monitor and keyboard",
|
||||
tiles = {"computer_monitor_t.png","computer_monitor_bt.png","computer_monitor_l.png",
|
||||
"computer_monitor_r.png","computer_monitor_b.png","computer_monitor_f_desktop.png"},
|
||||
paramtype = "light",
|
||||
light_source = 4,
|
||||
paramtype2 = "facedir",
|
||||
walkable = false,
|
||||
is_ground_content = true,
|
||||
groups = {snappy=3,not_in_creative_inventory=1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.3125, 0.1875, 0.5, 0.375, 0.223116},
|
||||
{-0.25, -0.5, 0.125, 0.25, -0.466981, 0.5},
|
||||
{-0.125, -0.5, 0.3125, 0.125, 0.0283019, 0.346698},
|
||||
{-0.375, -0.3125, 0.208965, 0.375, 0.240566, 0.3125},
|
||||
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, -0.125},
|
||||
{-0.1875, -0.5, 0.25, 0.1875, -0.410377, 0.375},
|
||||
},
|
||||
},
|
||||
drop = 'computer:monitor',
|
||||
})
|
||||
local mo_sbox = {
|
||||
type = "fixed",
|
||||
fixed = { -0.5, -0.5, -0.43, 0.5, 0.2, 0.25 }
|
||||
}
|
||||
|
||||
minetest.register_node("computer:monitor", {
|
||||
description = "Monitor and keyboard",
|
||||
tiles = {"computer_monitor_t_off.png","computer_monitor_bt.png","computer_monitor_l.png",
|
||||
"computer_monitor_r.png","computer_monitor_b.png","computer_monitor_f_off.png"},
|
||||
inventory_image = "computer_monitor_inv.png",
|
||||
drawtype = "mesh",
|
||||
mesh = "computer_monitor.obj",
|
||||
tiles = {"computer_black.png", "monitor_plastic.png", "computer_black.png", "monitor_plastic.png"},
|
||||
paramtype = "light",
|
||||
light_source = 4,
|
||||
paramtype2 = "facedir",
|
||||
walkable = false,
|
||||
is_ground_content = true,
|
||||
groups = {snappy=3},
|
||||
sound = default.node_sound_wood_defaults(),
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.3125, 0.1875, 0.5, 0.375, 0.223116},
|
||||
{-0.25, -0.5, 0.125, 0.25, -0.466981, 0.5},
|
||||
{-0.125, -0.5, 0.3125, 0.125, 0.0283019, 0.346698},
|
||||
{-0.375, -0.3125, 0.208965, 0.375, 0.240566, 0.3125},
|
||||
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, -0.125},
|
||||
{-0.1875, -0.5, 0.25, 0.1875, -0.410377, 0.375},
|
||||
},
|
||||
},
|
||||
on_rightclick = function ( pos, node, clicker, itemstack)
|
||||
node.name = "computer:monitor_on";
|
||||
minetest.set_node(pos, node);
|
||||
selection_box = mo_sbox,
|
||||
on_rightclick = function(pos, node, clicker, itemstack)
|
||||
node.name = "computer:monitor_on"
|
||||
minetest.set_node(pos, node)
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("computer:monitor_on", {
|
||||
description = "Monitor and keyboard",
|
||||
drawtype = "mesh",
|
||||
mesh = "computer_monitor.obj",
|
||||
tiles = {"monitor_display.png^[transformFX", "monitor_plastic.png", "computer_black.png", "monitor_plastic.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
light_source = 9,
|
||||
walkable = false,
|
||||
groups = {snappy=3, not_in_creative_inventory=1},
|
||||
selection_box = mo_sbox,
|
||||
drop = "computer:monitor",
|
||||
on_rightclick = function(pos, node, clicker, itemstack)
|
||||
node.name = "computer:monitor"
|
||||
minetest.set_node(pos, node)
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_alias("computer:monitor_bios", "computer:monitor")
|
||||
minetest.register_alias("computer:monitor_loading", "computer:monitor")
|
||||
minetest.register_alias("computer:monitor_login", "computer:monitor")
|
||||
minetest.register_alias("computer:monitor_desktop", "computer:monitor")
|
||||
|
||||
--WIFI Router (linksys look-a-like)
|
||||
minetest.register_node("computer:router", {
|
||||
description = "WIFI Router",
|
||||
inventory_image = "computer_router_inv.png",
|
||||
tiles = {"computer_router_t.png","computer_router_bt.png","computer_router_l.png","computer_router_r.png","computer_router_b.png",
|
||||
{name="computer_router_f_animated.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=1.0}},}, --"computer_router_f.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = false,
|
||||
is_ground_content = true,
|
||||
groups = {snappy=3},
|
||||
sound = default.node_sound_wood_defaults(),
|
||||
drawtype = "nodebox",
|
||||
@ -330,84 +212,42 @@ minetest.register_node("computer:router", {
|
||||
{-0.25, -0.5, -0.0625, 0.25, -0.375, 0.3125},
|
||||
{-0.1875, -0.4375, 0.3125, -0.125, -0.1875, 0.375},
|
||||
{0.125, -0.4375, 0.3125, 0.1875, -0.1875, 0.375},
|
||||
{-0.0625, -0.4375, 0.3125, 0.0625, -0.25, 0.375},
|
||||
},
|
||||
},
|
||||
{-0.0625, -0.4375, 0.3125, 0.0625, -0.25, 0.375}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
local pct_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -0.1875, -0.5, -0.36, 0.1875, 0.34, 0.46 }
|
||||
}
|
||||
|
||||
--Modern PC Tower
|
||||
minetest.register_node("computer:tower_on", {
|
||||
description = "Computer Tower",
|
||||
tiles = {"computer_tower_t.png","computer_tower_bt.png","computer_tower_l.png",
|
||||
"computer_tower_r.png","computer_tower_b.png","computer_tower_f_on.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = true,
|
||||
is_ground_content = true,
|
||||
groups = {snappy=3,not_in_creative_inventory=1},
|
||||
sound = default.node_sound_wood_defaults(),
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.1875, -0.5, -0.3125, 0.1875, 0.3125, 0.4375},
|
||||
{-0.1875, -0.5, -0.353774, 0.1875, 0, -0.0625},
|
||||
{-0.1875, 0.247641, -0.353774, 0.1875, 0.3125, 0.1875},
|
||||
},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.1875, -0.5, -0.3125, 0.1875, 0.3125, 0.4375},
|
||||
},
|
||||
},
|
||||
drop = 'computer:tower',
|
||||
on_rightclick = function ( pos, node, clicker, itemstack)
|
||||
node.name = "computer:tower";
|
||||
minetest.set_node(pos, node);
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("computer:tower", {
|
||||
description = "Computer Tower",
|
||||
tiles = {"computer_tower_t.png","computer_tower_bt.png","computer_tower_l.png","computer_tower_r.png",
|
||||
"computer_tower_b.png","computer_tower_f_off.png"},
|
||||
inventory_image = "computer_tower_inv.png",
|
||||
drawtype = "mesh",
|
||||
mesh = "computer_tower.obj",
|
||||
tiles = {"computer_tower.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = true,
|
||||
is_ground_content = true,
|
||||
groups = {snappy=3},
|
||||
sound = default.node_sound_wood_defaults(),
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.1875, -0.5, -0.3125, 0.1875, 0.3125, 0.4375},
|
||||
{-0.1875, -0.5, -0.353774, 0.1875, 0, -0.0625},
|
||||
{-0.1875, 0.247641, -0.353774, 0.1875, 0.3125, 0.1875},
|
||||
},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.1875, -0.5, -0.3125, 0.1875, 0.3125, 0.4375},
|
||||
},
|
||||
},
|
||||
on_rightclick = function ( pos, node, clicker, itemstack)
|
||||
node.name = "computer:tower_on";
|
||||
minetest.set_node(pos, node);
|
||||
end
|
||||
selection_box = pct_cbox,
|
||||
collision_box = pct_cbox
|
||||
})
|
||||
|
||||
minetest.register_alias("computer:tower_on", "computer:tower")
|
||||
|
||||
-- Printer/scaner combo
|
||||
minetest.register_node("computer:printer", {
|
||||
description = "Printer Scaner Combo",
|
||||
inventory_image = "computer_printer_inv.png",
|
||||
tiles = {"computer_printer_t.png","computer_printer_bt.png","computer_printer_l.png",
|
||||
"computer_printer_r.png","computer_printer_b.png","computer_printer_f.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = true,
|
||||
is_ground_content = true,
|
||||
groups = {snappy=3},
|
||||
sound = default.node_sound_wood_defaults(),
|
||||
drawtype = "nodebox",
|
||||
@ -421,9 +261,9 @@ minetest.register_node("computer:printer", {
|
||||
{-0.4375, -0.5, -0.0625, 0.4375, -0.0625, 0.375},
|
||||
{-0.375, -0.4375, 0.25, 0.375, -0.0625, 0.4375},
|
||||
{-0.25, -0.25, 0.4375, 0.25, 0.0625, 0.5},
|
||||
{-0.25, -0.481132, -0.3125, 0.25, -0.4375, 0},
|
||||
},
|
||||
{-0.25, -0.481132, -0.3125, 0.25, -0.4375, 0}
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
--Rack Server
|
||||
@ -439,23 +279,21 @@ minetest.register_node("computer:server", {
|
||||
'computer_server_f_off.png'
|
||||
},
|
||||
inventory_image = "computer_server_inv.png",
|
||||
sunlight_propagates = false,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = true,
|
||||
groups = {snappy=3},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.25, 0.5, 1.125, 0.4375},
|
||||
},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.25, 0.5, 1.125, 0.4375},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.25, 0.5, 1.125, 0.4375}
|
||||
},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.25, 0.5, 1.125, 0.4375}
|
||||
},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_rightclick = function ( pos, node, clicker, itemstack)
|
||||
node.name = "computer:server_on";
|
||||
minetest.set_node(pos, node);
|
||||
on_rightclick = function(pos, node, clicker, itemstack)
|
||||
node.name = "computer:server_on"
|
||||
minetest.set_node(pos, node)
|
||||
end,
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
local pos = pointed_thing.above
|
||||
@ -479,23 +317,21 @@ minetest.register_node("computer:server_on", {
|
||||
'computer_server_f_on.png',
|
||||
},
|
||||
inventory_image = "computer_server_inv.png",
|
||||
sunlight_propagates = false,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = true,
|
||||
groups = {snappy=3,not_in_creative_inventory=1},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.25, 0.5, 1.125, 0.4375},
|
||||
},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.25, 0.5, 1.125, 0.4375},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.25, 0.5, 1.125, 0.4375}
|
||||
},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.25, 0.5, 1.125, 0.4375}
|
||||
},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
drop = 'computer:server',
|
||||
on_rightclick = function ( pos, node, clicker, itemstack)
|
||||
node.name = "computer:server";
|
||||
minetest.set_node(pos, node);
|
||||
on_rightclick = function(pos, node, clicker, itemstack)
|
||||
node.name = "computer:server"
|
||||
minetest.set_node(pos, node)
|
||||
end
|
||||
})
|
||||
|
@ -1,100 +1,101 @@
|
||||
computer = { };
|
||||
computer = { }
|
||||
|
||||
computer.register = function ( name, def )
|
||||
local nodename = name;
|
||||
if (name:sub(1, 1) == ":") then name = name:sub(2); end
|
||||
local modname, basename = name:match("^([^:]+):(.*)");
|
||||
local TEXPFX = modname.."_"..basename.."_";
|
||||
local ONSTATE = modname..":"..basename;
|
||||
local OFFSTATE = modname..":"..basename.."_off";
|
||||
local def = def;
|
||||
computer.register = function (name, def)
|
||||
local nodename = name
|
||||
if (name:sub(1, 1) == ":") then name = name:sub(2) end
|
||||
local modname, basename = name:match("^([^:]+):(.*)")
|
||||
local TEXPFX = modname.."_"..basename.."_"
|
||||
local ONSTATE = modname..":"..basename
|
||||
local OFFSTATE = modname..":"..basename.."_off"
|
||||
local def = def
|
||||
minetest.register_node(ONSTATE, {
|
||||
drawtype = "nodebox";
|
||||
paramtype = "light";
|
||||
paramtype2 = "facedir";
|
||||
description = def.description;
|
||||
groups = { snappy=2, choppy=2, oddly_breakable_by_hand=2 };
|
||||
drawtype = "nodebox",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
description = def.description,
|
||||
inventory_image = def.inventory_image,
|
||||
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2},
|
||||
tiles = {
|
||||
TEXPFX.."tp.png",
|
||||
TEXPFX.."bt.png",
|
||||
TEXPFX.."rt.png",
|
||||
TEXPFX.."lt.png",
|
||||
TEXPFX.."bk.png",
|
||||
TEXPFX.."ft.png",
|
||||
};
|
||||
node_box = def.node_box;
|
||||
selection_box = def.node_box;
|
||||
on_rightclick = function ( pos, node, clicker, itemstack)
|
||||
TEXPFX.."ft.png"
|
||||
},
|
||||
node_box = def.node_box,
|
||||
selection_box = def.node_box,
|
||||
on_rightclick = function (pos, node, clicker, itemstack)
|
||||
if (def.on_turn_off) then
|
||||
if (def.on_turn_off(pos, node, clicker, itemstack)) then return; end
|
||||
if (def.on_turn_off(pos, node, clicker, itemstack)) then return end
|
||||
end
|
||||
node.name = OFFSTATE;
|
||||
minetest.set_node(pos, node);
|
||||
end;
|
||||
});
|
||||
node.name = OFFSTATE
|
||||
minetest.set_node(pos, node)
|
||||
end
|
||||
})
|
||||
minetest.register_node(OFFSTATE, {
|
||||
drawtype = "nodebox";
|
||||
paramtype = "light";
|
||||
paramtype2 = "facedir";
|
||||
groups = { snappy=2, choppy=2, oddly_breakable_by_hand=2,
|
||||
not_in_creative_inventory=1 };
|
||||
drawtype = "nodebox",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, not_in_creative_inventory=1},
|
||||
tiles = {
|
||||
(TEXPFX.."tp"..(def.tiles_off.top and "_off" or "")..".png"),
|
||||
(TEXPFX.."bt"..(def.tiles_off.bottom and "_off" or "")..".png"),
|
||||
(TEXPFX.."rt"..(def.tiles_off.right and "_off" or "")..".png"),
|
||||
(TEXPFX.."lt"..(def.tiles_off.left and "_off" or "")..".png"),
|
||||
(TEXPFX.."bk"..(def.tiles_off.back and "_off" or "")..".png"),
|
||||
(TEXPFX.."ft"..(def.tiles_off.front and "_off" or "")..".png"),
|
||||
};
|
||||
node_box = def.node_box_off or def.node_box;
|
||||
selection_box = def.node_box_off or def.node_box;
|
||||
on_rightclick = function ( pos, node, clicker, itemstack)
|
||||
(TEXPFX.."ft"..(def.tiles_off.front and "_off" or "")..".png")
|
||||
},
|
||||
node_box = def.node_box_off or def.node_box,
|
||||
selection_box = def.node_box_off or def.node_box,
|
||||
on_rightclick = function (pos, node, clicker, itemstack)
|
||||
if (def.on_turn_on) then
|
||||
if (def.on_turn_on(pos, node, clicker, itemstack)) then return; end
|
||||
if (def.on_turn_on(pos, node, clicker, itemstack)) then return end
|
||||
end
|
||||
node.name = ONSTATE;
|
||||
minetest.set_node(pos, node);
|
||||
end;
|
||||
drop = ONSTATE;
|
||||
});
|
||||
node.name = ONSTATE
|
||||
minetest.set_node(pos, node)
|
||||
end,
|
||||
drop = ONSTATE
|
||||
})
|
||||
end
|
||||
|
||||
computer.register_handheld = function ( name, def )
|
||||
local nodename = name;
|
||||
if (name:sub(1, 1) == ":") then name = name:sub(2); end
|
||||
local modname, basename = name:match("^([^:]+):(.*)");
|
||||
local TEXPFX = modname.."_"..basename.."_inv";
|
||||
local ONSTATE = modname..":"..basename;
|
||||
local OFFSTATE = modname..":"..basename.."_off";
|
||||
local on_use = def.on_use;
|
||||
computer.register_handheld = function (name, def)
|
||||
local nodename = name
|
||||
if (name:sub(1, 1) == ":") then name = name:sub(2) end
|
||||
local modname, basename = name:match("^([^:]+):(.*)")
|
||||
local TEXPFX = modname.."_"..basename.."_inv"
|
||||
local ONSTATE = modname..":"..basename
|
||||
local OFFSTATE = modname..":"..basename.."_off"
|
||||
local on_use = def.on_use
|
||||
minetest.register_craftitem(ONSTATE, {
|
||||
description = def.description;
|
||||
inventory_image = TEXPFX..".png";
|
||||
wield_image = TEXPFX..".png";
|
||||
});
|
||||
description = def.description,
|
||||
inventory_image = TEXPFX..".png",
|
||||
wield_image = TEXPFX..".png"
|
||||
})
|
||||
end
|
||||
|
||||
computer.pixelnodebox = function ( size, boxes )
|
||||
local fixed = { };
|
||||
local i, box;
|
||||
computer.pixelnodebox = function (size, boxes)
|
||||
local fixed = { }
|
||||
local i, box
|
||||
for i, box in ipairs(boxes) do
|
||||
local x, y, z, w, h, l = unpack(box);
|
||||
local x, y, z, w, h, l = unpack(box)
|
||||
fixed[#fixed + 1] = {
|
||||
(x / size) - 0.5,
|
||||
(y / size) - 0.5,
|
||||
(z / size) - 0.5,
|
||||
((x + w) / size) - 0.5,
|
||||
((y + h) / size) - 0.5,
|
||||
((z + l) / size) - 0.5,
|
||||
};
|
||||
((z + l) / size) - 0.5
|
||||
}
|
||||
end
|
||||
return {
|
||||
type = "fixed";
|
||||
fixed = fixed;
|
||||
};
|
||||
type = "fixed",
|
||||
fixed = fixed
|
||||
}
|
||||
end
|
||||
|
||||
local MODPATH = minetest.get_modpath("computer");
|
||||
dofile(MODPATH.."/computers.lua");
|
||||
dofile(MODPATH.."/miscitems.lua");
|
||||
dofile(MODPATH.."/recipes.lua");
|
||||
local MODPATH = minetest.get_modpath("computer")
|
||||
dofile(MODPATH.."/computers.lua")
|
||||
dofile(MODPATH.."/miscitems.lua")
|
||||
dofile(MODPATH.."/recipes.lua")
|
||||
dofile(MODPATH.."/tetris.lua")
|
||||
|
1618
mods/homedecor_modpack/computer/models/computer_monitor.obj
Normal file
33
mods/homedecor_modpack/computer/models/computer_tower.obj
Normal file
@ -0,0 +1,33 @@
|
||||
# Blender v2.72 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
mtllib computer_tower.mtl
|
||||
o Cube.001
|
||||
v -0.182508 -0.499998 0.450000
|
||||
v -0.182508 -0.499998 -0.349946
|
||||
v 0.182508 -0.499998 -0.349946
|
||||
v 0.182508 -0.499998 0.450000
|
||||
v -0.182508 0.335734 0.450000
|
||||
v 0.182508 0.335734 0.450000
|
||||
v 0.182508 0.335734 -0.349946
|
||||
v -0.182508 0.335734 -0.349947
|
||||
vt 0.999994 0.750017
|
||||
vt 0.500006 0.749983
|
||||
vt 0.500002 0.499996
|
||||
vt 0.999997 0.500009
|
||||
vt 0.499989 0.999941
|
||||
vt 0.999986 0.999931
|
||||
vt 0.500005 0.000003
|
||||
vt 0.000007 0.500002
|
||||
vt -0.000003 0.000003
|
||||
vt 0.250005 0.999991
|
||||
vt 0.250005 0.499995
|
||||
vt 0.999993 0.000002
|
||||
vt 0.000017 0.999997
|
||||
usemtl Material.001
|
||||
s off
|
||||
f 1/1 2/2 3/3 4/4
|
||||
f 5/5 6/2 7/1 8/6
|
||||
f 1/7 5/3 8/8 2/9
|
||||
f 2/3 8/5 7/10 3/11
|
||||
f 3/12 7/4 6/3 4/7
|
||||
f 5/13 1/8 4/11 6/10
|
34
mods/homedecor_modpack/computer/models/tetris_arcade.obj
Normal file
@ -0,0 +1,34 @@
|
||||
# Blender v2.72 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
mtllib vending_machine.mtl
|
||||
o Cube
|
||||
v 0.499998 -0.499998 -0.499998
|
||||
v 0.499998 -0.499998 0.499998
|
||||
v -0.499998 -0.499998 0.499998
|
||||
v -0.499998 -0.499998 -0.499998
|
||||
v 0.499998 1.499994 -0.499998
|
||||
v 0.499998 1.499994 0.499998
|
||||
v -0.499998 1.499994 0.499998
|
||||
v -0.499998 1.499994 -0.499998
|
||||
vt 0.250050 0.250050
|
||||
vt 0.000100 0.250050
|
||||
vt 0.000100 0.000100
|
||||
vt 0.250050 0.000100
|
||||
vt 0.250050 0.749950
|
||||
vt 0.250050 0.999900
|
||||
vt 0.000100 0.999900
|
||||
vt 0.000100 0.749950
|
||||
vt 0.999900 0.250049
|
||||
vt 0.999900 0.749949
|
||||
vt 0.749950 0.749950
|
||||
vt 0.749950 0.250050
|
||||
vt 0.500000 0.749950
|
||||
vt 0.500000 0.250050
|
||||
usemtl Material
|
||||
s off
|
||||
f 1/1 2/2 3/3 4/4
|
||||
f 5/5 8/6 7/7 6/8
|
||||
f 1/1 5/5 6/8 2/2
|
||||
f 2/9 6/10 7/11 3/12
|
||||
f 3/12 7/11 8/13 4/14
|
||||
f 5/5 1/1 4/14 8/13
|
@ -3,132 +3,141 @@
|
||||
-- License is WTFPL (see README.txt).
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:shefriendSOO";
|
||||
output = "computer:shefriendSOO",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", },
|
||||
{ "homedecor:plastic_sheeting", "default:glass", "homedecor:plastic_sheeting", },
|
||||
{ "homedecor:plastic_sheeting", "default:wood", "homedecor:plastic_sheeting", },
|
||||
};
|
||||
});
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "default:glass", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "default:wood", "homedecor:plastic_sheeting" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:slaystation";
|
||||
output = "computer:slaystation",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", },
|
||||
{ "homedecor:plastic_sheeting", "default:wood", "homedecor:plastic_sheeting", },
|
||||
};
|
||||
});
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "default:wood", "homedecor:plastic_sheeting" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:vanio";
|
||||
output = "computer:vanio",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "", "", },
|
||||
{ "homedecor:plastic_sheeting", "", "" },
|
||||
{ "default:glass", "", "" },
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", },
|
||||
};
|
||||
});
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:specter";
|
||||
output = "computer:specter",
|
||||
recipe = {
|
||||
{ "", "", "homedecor:plastic_sheeting", },
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", },
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", },
|
||||
};
|
||||
});
|
||||
{ "", "", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:slaystation2";
|
||||
output = "computer:slaystation2",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", },
|
||||
{ "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting", },
|
||||
};
|
||||
});
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:admiral64";
|
||||
output = "computer:admiral64",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", },
|
||||
{ "default:wood", "default:wood", "default:wood", },
|
||||
};
|
||||
});
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
|
||||
{ "default:wood", "default:wood", "default:wood" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:admiral128";
|
||||
output = "computer:admiral128",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", },
|
||||
{ "default:steel_ingot", "default:steel_ingot", "default:steel_ingot", },
|
||||
};
|
||||
});
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
|
||||
{ "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:wee";
|
||||
output = "computer:wee",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", },
|
||||
{ "homedecor:plastic_sheeting", "default:copper_ingot", "homedecor:plastic_sheeting", },
|
||||
};
|
||||
});
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "default:copper_ingot", "homedecor:plastic_sheeting" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:piepad";
|
||||
output = "computer:piepad",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", },
|
||||
{ "homedecor:plastic_sheeting", "default:glass", "homedecor:plastic_sheeting", },
|
||||
};
|
||||
});
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "default:glass", "homedecor:plastic_sheeting" }
|
||||
}
|
||||
})
|
||||
|
||||
--new stuff
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:monitor";
|
||||
output = "computer:monitor",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "default:glass","", },
|
||||
{ "homedecor:plastic_sheeting", "default:glass","", },
|
||||
{ "homedecor:plastic_sheeting", "default:mese_crystal_fragment", "homedecor:plastic_sheeting", },
|
||||
};
|
||||
});
|
||||
{ "homedecor:plastic_sheeting", "default:glass","" },
|
||||
{ "homedecor:plastic_sheeting", "default:glass","" },
|
||||
{ "homedecor:plastic_sheeting", "default:mese_crystal_fragment", "homedecor:plastic_sheeting" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:router";
|
||||
output = "computer:router",
|
||||
recipe = {
|
||||
{ "default:steel_ingot","","", },
|
||||
{ "default:steel_ingot" ,"homedecor:plastic_sheeting", "homedecor:plastic_sheeting", },
|
||||
{ "default:mese_crystal_fragment","homedecor:plastic_sheeting", "homedecor:plastic_sheeting", },
|
||||
};
|
||||
});
|
||||
{ "default:steel_ingot","","" },
|
||||
{ "default:steel_ingot" ,"homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
|
||||
{ "default:mese_crystal_fragment","homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:tower";
|
||||
output = "computer:tower",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting", },
|
||||
{ "homedecor:plastic_sheeting", "default:mese_crystal", "homedecor:plastic_sheeting", },
|
||||
{ "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting", },
|
||||
};
|
||||
});
|
||||
{ "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "default:mese_crystal", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:printer";
|
||||
output = "computer:printer",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "default:steel_ingot","", },
|
||||
{ "homedecor:plastic_sheeting", "default:mese_crystal", "homedecor:plastic_sheeting", },
|
||||
{ "homedecor:plastic_sheeting", "default:coal_lump", "homedecor:plastic_sheeting", },
|
||||
};
|
||||
});
|
||||
{ "homedecor:plastic_sheeting", "default:steel_ingot","" },
|
||||
{ "homedecor:plastic_sheeting", "default:mese_crystal", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "default:coal_lump", "homedecor:plastic_sheeting" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:printer";
|
||||
output = "computer:printer",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "default:steel_ingot","", },
|
||||
{ "homedecor:plastic_sheeting", "default:mese_crystal", "homedecor:plastic_sheeting", },
|
||||
{ "homedecor:plastic_sheeting", "dye:black", "homedecor:plastic_sheeting", },
|
||||
};
|
||||
});
|
||||
{ "homedecor:plastic_sheeting", "default:steel_ingot","" },
|
||||
{ "homedecor:plastic_sheeting", "default:mese_crystal", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "dye:black", "homedecor:plastic_sheeting", }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:server";
|
||||
output = "computer:server",
|
||||
recipe = {
|
||||
{ "computer:tower", "computer:tower", "computer:tower", },
|
||||
{ "computer:tower", "computer:tower", "computer:tower", },
|
||||
{ "computer:tower", "computer:tower", "computer:tower", },
|
||||
};
|
||||
});
|
||||
{ "computer:tower", "computer:tower", "computer:tower" },
|
||||
{ "computer:tower", "computer:tower", "computer:tower" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:tetris_arcade",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "homedecor:power_crystal", "homedecor:plastic_sheeting", },
|
||||
{ "dye:black", "default:glass", "dye:black" },
|
||||
{ "homedecor:plastic_sheeting", "homedecor:power_crystal", "homedecor:plastic_sheeting" }
|
||||
}
|
||||
})
|
||||
|
282
mods/homedecor_modpack/computer/tetris.lua
Normal file
@ -0,0 +1,282 @@
|
||||
local shapes = {
|
||||
{ { x = {0, 1, 0, 1}, y = {0, 0, 1, 1} } },
|
||||
|
||||
{ { x = {1, 1, 1, 1}, y = {0, 1, 2, 3} },
|
||||
{ x = {0, 1, 2, 3}, y = {1, 1, 1, 1} } },
|
||||
|
||||
{ { x = {0, 0, 1, 1}, y = {0, 1, 1, 2} },
|
||||
{ x = {1, 2, 0, 1}, y = {0, 0, 1, 1} } },
|
||||
|
||||
{ { x = {1, 0, 1, 0}, y = {0, 1, 1, 2} },
|
||||
{ x = {0, 1, 1, 2}, y = {0, 0, 1, 1} } },
|
||||
|
||||
{ { x = {1, 2, 1, 1}, y = {0, 0, 1, 2} },
|
||||
{ x = {0, 1, 2, 2}, y = {1, 1, 1, 2} },
|
||||
{ x = {1, 1, 0, 1}, y = {0, 1, 2, 2} },
|
||||
{ x = {0, 0, 1, 2}, y = {0, 1, 1, 1} } },
|
||||
|
||||
{ { x = {1, 1, 1, 2}, y = {0, 1, 2, 2} },
|
||||
{ x = {0, 1, 2, 0}, y = {1, 1, 1, 2} },
|
||||
{ x = {0, 1, 1, 1}, y = {0, 0, 1, 2} },
|
||||
{ x = {0, 1, 2, 2}, y = {1, 1, 1, 0} } },
|
||||
|
||||
{ { x = {1, 0, 1, 2}, y = {0, 1, 1, 1} },
|
||||
{ x = {1, 1, 1, 2}, y = {0, 1, 2, 1} },
|
||||
{ x = {0, 1, 2, 1}, y = {1, 1, 1, 2} },
|
||||
{ x = {0, 1, 1, 1}, y = {1, 0, 1, 2} } } }
|
||||
|
||||
local colors = { "computer_cyan.png", "computer_magenta.png", "computer_red.png",
|
||||
"computer_blue.png", "computer_green.png", "computer_orange.png", "computer_yellow.png" }
|
||||
|
||||
local background = "image[0,0;3.55,6.66;computer_black.png]"
|
||||
local buttons = "button[3,4.5;0.6,0.6;left;<]"
|
||||
.."button[3.6,4.5;0.6,0.6;rotateleft;L]"
|
||||
.."button[4.2,4.5;0.6,0.6;down;v]"
|
||||
.."button[4.2,5.3;0.6,0.6;drop;V]"
|
||||
.."button[4.8,4.5;0.6,0.6;rotateright;R]"
|
||||
.."button[5.4,4.5;0.6,0.6;right;>]"
|
||||
.."button[3.5,3;2,2;new;New Game]"
|
||||
|
||||
local formsize = "size[5.9,5.7]"
|
||||
local boardx, boardy = 0, 0
|
||||
local sizex, sizey, size = 0.29, 0.29, 0.31
|
||||
|
||||
local comma = ","
|
||||
local semi = ";"
|
||||
local close = "]"
|
||||
|
||||
local concat = table.concat
|
||||
local insert = table.insert
|
||||
|
||||
local draw_shape = function(id, x, y, rot, posx, posy)
|
||||
local d = shapes[id][rot]
|
||||
local scr = {}
|
||||
local ins = #scr
|
||||
|
||||
for i=1,4 do
|
||||
local tmp = { "image[",
|
||||
(d.x[i]+x)*sizex+posx, comma,
|
||||
(d.y[i]+y)*sizey+posy, semi,
|
||||
size, comma, size, semi,
|
||||
colors[id], close }
|
||||
|
||||
ins = ins + 1
|
||||
scr[ins] = concat(tmp)
|
||||
end
|
||||
|
||||
return concat(scr)
|
||||
end
|
||||
|
||||
local function step(pos, fields)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local t = minetest.deserialize(meta:get_string("tetris"))
|
||||
|
||||
local function new_game(pos)
|
||||
local nex = math.random(7)
|
||||
|
||||
t = {
|
||||
board = {},
|
||||
boardstring = "",
|
||||
previewstring = draw_shape(nex, 0, 0, 1, 4, 1),
|
||||
score = 0,
|
||||
cur = math.random(7),
|
||||
nex = nex,
|
||||
x=4, y=0, rot=1
|
||||
}
|
||||
|
||||
local timer = minetest.get_node_timer(pos)
|
||||
timer:set(0.3, 0)
|
||||
end
|
||||
|
||||
local function update_boardstring()
|
||||
local scr = {}
|
||||
local ins = #scr
|
||||
|
||||
for i, line in pairs(t.board) do
|
||||
for _, tile in pairs(line) do
|
||||
local tmp = { "image[",
|
||||
tile[1]*sizex+boardx, comma,
|
||||
i*sizey+boardy, semi,
|
||||
size, comma, size, semi,
|
||||
colors[tile[2]], close }
|
||||
|
||||
ins = ins + 1
|
||||
scr[ins] = concat(tmp)
|
||||
end
|
||||
end
|
||||
|
||||
t.boardstring = concat(scr)
|
||||
end
|
||||
|
||||
local function add()
|
||||
local d = shapes[t.cur][t.rot]
|
||||
|
||||
for i=1,4 do
|
||||
local l = d.y[i] + t.y
|
||||
if not t.board[l] then t.board[l] = {} end
|
||||
insert(t.board[l], {d.x[i] + t.x, t.cur})
|
||||
end
|
||||
end
|
||||
|
||||
local function scroll(l)
|
||||
for i=l, 1, -1 do
|
||||
t.board[i] = t.board[i-1] or {}
|
||||
end
|
||||
end
|
||||
|
||||
local function check_lines()
|
||||
for i, line in pairs(t.board) do
|
||||
if #line >= 10 then
|
||||
scroll(i)
|
||||
t.score = t.score + 20
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function check_position(x, y, rot)
|
||||
local d = shapes[t.cur][rot]
|
||||
|
||||
for i=1,4 do
|
||||
local cx, cy = d.x[i]+x, d.y[i]+y
|
||||
|
||||
if cx < 0 or cx > 9 or cy < 0 or cy > 19 then
|
||||
return false
|
||||
end
|
||||
|
||||
for _, tile in pairs(t.board[ cy ] or {}) do
|
||||
if tile[1] == cx then return false end
|
||||
end
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
local function stuck()
|
||||
if check_position(t.x, t.y+1, t.rot) then return false end
|
||||
return true
|
||||
end
|
||||
|
||||
local function tick()
|
||||
if stuck() then
|
||||
if t.y <= 0 then
|
||||
return false end
|
||||
add()
|
||||
check_lines()
|
||||
update_boardstring()
|
||||
t.cur, t.nex = t.nex, math.random(7)
|
||||
t.x, t.y, t.rot = 4, 0, 1
|
||||
t.previewstring = draw_shape(t.nex, 0, 0, 1, 4.1, 0.6)
|
||||
else
|
||||
t.y = t.y + 1
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
local function move(dx, dy)
|
||||
local newx, newy = t.x+dx, t.y+dy
|
||||
if not check_position(newx, newy, t.rot) then return end
|
||||
t.x, t.y = newx, newy
|
||||
end
|
||||
|
||||
local function rotate(dr)
|
||||
local no = #(shapes[t.cur])
|
||||
local newrot = (t.rot+dr) % no
|
||||
|
||||
if newrot<1 then newrot = newrot+no end
|
||||
if not check_position(t.x, t.y, newrot) then return end
|
||||
t.rot = newrot
|
||||
end
|
||||
|
||||
local function key()
|
||||
if fields.left then
|
||||
move(-1, 0)
|
||||
end
|
||||
if fields.rotateleft then
|
||||
rotate(-1)
|
||||
end
|
||||
if fields.down then
|
||||
t.score = t.score + 1
|
||||
move(0, 1)
|
||||
end
|
||||
if fields.drop then
|
||||
while not stuck() do
|
||||
t.score = t.score + 2
|
||||
move(0, 1)
|
||||
end
|
||||
end
|
||||
if fields.rotateright then
|
||||
rotate(1)
|
||||
end
|
||||
if fields.right then
|
||||
move(1, 0)
|
||||
end
|
||||
end
|
||||
|
||||
local run = true
|
||||
|
||||
if fields then
|
||||
if fields.new then
|
||||
new_game(pos)
|
||||
else
|
||||
key(fields)
|
||||
end
|
||||
else
|
||||
run = tick()
|
||||
end
|
||||
|
||||
if t ~= nil then
|
||||
local scr = { formsize, background,
|
||||
t.boardstring, t.previewstring,
|
||||
draw_shape(t.cur, t.x, t.y, t.rot, boardx, boardy),
|
||||
"label[3.8,0.1;Next...]label[3.8,2.7;Score: ",
|
||||
t.score, close, buttons }
|
||||
|
||||
|
||||
meta:set_string("formspec", concat(scr)
|
||||
..default.gui_bg..default.gui_bg_img..default.gui_slots)
|
||||
meta:set_string("tetris", minetest.serialize(t))
|
||||
end
|
||||
|
||||
return run
|
||||
end
|
||||
|
||||
minetest.register_node("computer:tetris_arcade", {
|
||||
description="Tetris Arcade",
|
||||
drawtype = "mesh",
|
||||
mesh = "tetris_arcade.obj",
|
||||
tiles = {"tetris_arcade.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {snappy=3},
|
||||
on_rotate = screwdriver.rotate_simple,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, 1.5, 0.5}
|
||||
},
|
||||
collision_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, 1.5, 0.5}
|
||||
},
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", formsize.."button[2,2.5;2,2;new;New Game]"
|
||||
..default.gui_bg..default.gui_bg_img..default.gui_slots)
|
||||
end,
|
||||
on_timer = function(pos)
|
||||
return step(pos, nil)
|
||||
end,
|
||||
on_receive_fields = function(pos, formanme, fields, sender)
|
||||
step(pos, fields)
|
||||
end,
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
local pos = pointed_thing.above
|
||||
if minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name ~= "air" then
|
||||
minetest.chat_send_player(placer:get_player_name(), "No room for place the Arcade!")
|
||||
return end
|
||||
local dir = placer:get_look_dir()
|
||||
local node = {name="computer:tetris_arcade", param1=0, param2 = minetest.dir_to_facedir(dir)}
|
||||
minetest.set_node(pos, node)
|
||||
itemstack:take_item()
|
||||
return itemstack
|
||||
end
|
||||
})
|
BIN
mods/homedecor_modpack/computer/textures/computer_ad128_inv.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
mods/homedecor_modpack/computer/textures/computer_ad64_inv.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 5.7 KiB |
BIN
mods/homedecor_modpack/computer/textures/computer_black.png
Normal file
After Width: | Height: | Size: 82 B |
BIN
mods/homedecor_modpack/computer/textures/computer_blue.png
Normal file
After Width: | Height: | Size: 114 B |
BIN
mods/homedecor_modpack/computer/textures/computer_cyan.png
Normal file
After Width: | Height: | Size: 114 B |
BIN
mods/homedecor_modpack/computer/textures/computer_green.png
Normal file
After Width: | Height: | Size: 114 B |
BIN
mods/homedecor_modpack/computer/textures/computer_laptop_inv.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
mods/homedecor_modpack/computer/textures/computer_magenta.png
Normal file
After Width: | Height: | Size: 114 B |
Before Width: | Height: | Size: 109 B |
Before Width: | Height: | Size: 102 B |
Before Width: | Height: | Size: 105 B |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 824 B |
Before Width: | Height: | Size: 549 B |
Before Width: | Height: | Size: 102 B |
Before Width: | Height: | Size: 123 B |
After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 83 B |
Before Width: | Height: | Size: 83 B |
Before Width: | Height: | Size: 156 B |
Before Width: | Height: | Size: 153 B |
Before Width: | Height: | Size: 168 B |
BIN
mods/homedecor_modpack/computer/textures/computer_orange.png
Normal file
After Width: | Height: | Size: 114 B |
After Width: | Height: | Size: 2.4 KiB |
BIN
mods/homedecor_modpack/computer/textures/computer_ps1_inv.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
mods/homedecor_modpack/computer/textures/computer_ps2_inv.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
mods/homedecor_modpack/computer/textures/computer_red.png
Normal file
After Width: | Height: | Size: 114 B |
BIN
mods/homedecor_modpack/computer/textures/computer_router_inv.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 2.3 KiB |
BIN
mods/homedecor_modpack/computer/textures/computer_tower.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 355 B |
Before Width: | Height: | Size: 83 B |
Before Width: | Height: | Size: 282 B |
Before Width: | Height: | Size: 286 B |
BIN
mods/homedecor_modpack/computer/textures/computer_tower_inv.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 148 B |
Before Width: | Height: | Size: 201 B |
Before Width: | Height: | Size: 83 B |
BIN
mods/homedecor_modpack/computer/textures/computer_wii_inv.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
mods/homedecor_modpack/computer/textures/computer_yellow.png
Normal file
After Width: | Height: | Size: 114 B |
BIN
mods/homedecor_modpack/computer/textures/monitor_display.png
Normal file
After Width: | Height: | Size: 6.3 KiB |
BIN
mods/homedecor_modpack/computer/textures/monitor_plastic.png
Normal file
After Width: | Height: | Size: 164 B |
BIN
mods/homedecor_modpack/computer/textures/tetris_arcade.png
Normal file
After Width: | Height: | Size: 9.1 KiB |
Before Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 122 B |
Before Width: | Height: | Size: 129 B |
Before Width: | Height: | Size: 259 B |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 167 B |
Before Width: | Height: | Size: 296 B |
Before Width: | Height: | Size: 324 B |
Before Width: | Height: | Size: 322 B |
Before Width: | Height: | Size: 350 B |
Before Width: | Height: | Size: 149 B |
Before Width: | Height: | Size: 128 B |
Before Width: | Height: | Size: 403 B |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 128 B |
Before Width: | Height: | Size: 374 B |
Before Width: | Height: | Size: 128 B |
Before Width: | Height: | Size: 129 B |
Before Width: | Height: | Size: 128 B |
Before Width: | Height: | Size: 436 B |
Before Width: | Height: | Size: 162 B |
@ -1,21 +1,7 @@
|
||||
JP's Fork of LazyJ's Minetest Mod, "Fake Fire"
|
||||
by : JP.
|
||||
|
||||
Replaced LazyJ's smoke nodes pictures by smoke particles. Lighter, prettier, configurable smoke.
|
||||
|
||||
======================================================================
|
||||
|
||||
|
||||
LazyJ's Fork of Semmett9's Minetest Mod, "Fake Fire"
|
||||
by:
|
||||
LazyJ
|
||||
|
||||
This is my fork of Semmett9's "Fake Fire" mod. Some code clean-up, a
|
||||
bunch of changes and a few new things have been added.
|
||||
|
||||
|
||||
|
||||
======================================================================
|
||||
Semmett9's "Fake Fire" mod. kilbith's fork.
|
||||
Some textures by LazyJ.
|
||||
Fancy mesh fire model/texture by NathanS (CC-0).
|
||||
==============================================================
|
||||
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
|
@ -1,62 +0,0 @@
|
||||
##### JP's Fork of LazyJ's Minetest Mod, "Fake Fire"
|
||||
|
||||
Replaced LazyJ's smoke nodes pictures by smoke particles. Lighter, prettier, configurable smoke.
|
||||
|
||||
|
||||
|
||||
##### LazyJ's Fork of Semmett9's "Fake Fire" Mod
|
||||
|
||||
This fork of 'Fake Fire' is based off of Semmett9's 2014_03_14 release of the
|
||||
mod.
|
||||
|
||||
At LinuxGaming.us, we have a creative-leaning Minetest server. Destruction by
|
||||
arson is not something we like. When the Fake Fire mod was installed we finally
|
||||
could make warm hearths and campfires without fear of burning down our builds.
|
||||
We could also use Fake Fire to simulate things burning without worrying our
|
||||
neighbors about the fires spreading and destroying their stuff.
|
||||
|
||||
As a creative bunch of Minetesters, we often come up with new ideas for things.
|
||||
This fork of "Fake Fire" incorporates some of those ideas.
|
||||
|
||||
|
||||
Semmett9's original version of this mod can be found here:
|
||||
|
||||
* Minetest.net
|
||||
http://forum.minetest.net/viewtopic.php?id=6145
|
||||
|
||||
* Ad.Fly
|
||||
http://adf.ly/RbzwV
|
||||
|
||||
Yes, it has advertisements. That's what helps to pay for hosting Semmett9's
|
||||
website and server costs. Everything has a cost. Someone pays. Even when it
|
||||
comes to so-called free, open-source software. Someone pays. Everything has a
|
||||
cost. Try running your own business and you will understand. There are no
|
||||
free lunches in life.
|
||||
|
||||
Ok, done ranting. ;)-
|
||||
|
||||
|
||||
~ LazyJ, 2014_06_19
|
||||
|
||||
|
||||
|
||||
Minetest version: 0.4.9
|
||||
Depends: default
|
||||
Recommended Additional Mods: none
|
||||
License: GPL v2
|
||||
Source Code: http://github.com/LazyJ/fake_fire
|
||||
Download (.zip): http://github.com/LazyJ/fake_fire/archive/master.zip
|
||||
|
||||
Install:
|
||||
* After downloading, unzip the file.
|
||||
* Rename the directory "fake_fire_fork-master" to "fake_fire"
|
||||
* Copy the "fake_fire" directory into either
|
||||
../minetest/worlds/yourworld'sname/worldmods/
|
||||
or
|
||||
../minetest/mods/
|
||||
* If you put "fake_fire" in the ../minetest/mods/ directory, either
|
||||
enable the mod from within Minetest's "Configure" button
|
||||
(main menu, bottom right) or by adding this line to the
|
||||
world's "world.mt" file:
|
||||
load_mod_fake_fire = true
|
||||
|
@ -1,86 +0,0 @@
|
||||
CHANGELOG
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
2014_07_27:
|
||||
|
||||
* Replaced LazyJ's smoke nodes pictures by smoke particles. Lighter, prettier, configurable smoke.
|
||||
* Code clean-up.
|
||||
|
||||
|
||||
2014_06_21:
|
||||
|
||||
* Added changelog.txt, 2014_06_19. Some changes are much older than this.
|
||||
I've been making little tweaks to it for several months and finally decided
|
||||
to give it an overhaul.
|
||||
* Code clean-up.
|
||||
* Split the init.lua file stuff into separate files and moved them into the
|
||||
"modfiles" folder.
|
||||
* I had added a lump of coal to be dropped when the flame was dug but, as
|
||||
one of our moderators pointed out, once word got out, new players would
|
||||
snuff-out every fake_fire they found just to get easy coal. The coal drop
|
||||
was removed.
|
||||
* Changed the flint crafting recipe to require 2 gravel instead of one.
|
||||
This resolves a crafting conflict with another mod. The recipe is also
|
||||
shapless now.
|
||||
* Added crafting recipes for 1 cobble to 1 gravel, then 1 gravel to 1 sand.
|
||||
For Wazuland2 these recipes are commented out because another mod takes
|
||||
care of them (the reason for changing the flint recipe).
|
||||
* Health-damage disabled. This fork is strictly for decoration.
|
||||
* Waving added to flames and smoke.
|
||||
* Rising, disappearing smoke-puffs added. Smoke columns will rise to 14
|
||||
spaces above the flame or chimney top.
|
||||
* Smoke can be punched to remove.
|
||||
* Never-ending flint and steel disabled. May add it as a priv later.
|
||||
* Extinguishing with water and lava(??) disabled. Again, this fork is
|
||||
strictly for decoration so dousing the flames with water or lava would just
|
||||
make a big, needless mess. Much easier and cleaner to just punch the flame.
|
||||
* Flame images are hidden from creative inventory but are still provided
|
||||
for in the code and image files if you want them to be visible. Just remove
|
||||
the "not_in_creative_inventory" part from the groups of the flame types and
|
||||
they will be visible again. Having the images in inventory is useful when
|
||||
playing in creative mode or if you want to torture griefers who put in the
|
||||
time and effort to get the materials to make the fire hoping to be able to
|
||||
burn things only to discover that it is *fake* and *harmless*. Bwa-hahaha!
|
||||
* Added ice-fire, a blue-colored flame that only ignites on snow and ice
|
||||
stuff.
|
||||
* Added added ability to switch between smoking and non-smoking flames by
|
||||
punching them. Default is non-smoking.
|
||||
* Added stone and sandstone chimney caps that can produce smoke when punched
|
||||
(smoking and non-smoking versions). Useful for small builds where a 3x3
|
||||
chimney would be too oversized in proportion to the reset of the build.
|
||||
* Added animated, glowing embers. This hearth-warming block emits a
|
||||
mid-level light and simulates the hot coals under a flame. Flames are not
|
||||
required and the embers blocks are smokeless.
|
||||
|
||||
|
||||
|
||||
2014_06_23:
|
||||
|
||||
* Flames - "sunlight_propagates = true,"
|
||||
-- Adding sunlight_propagtes and leaving comments as a future reference.
|
||||
-- If true, sunlight will go infinitely through this (no shadow is cast).
|
||||
-- Because fire produces light it should be "true" so fire *doesn't* have
|
||||
-- a shadow.
|
||||
|
||||
* Embers - "sunlight_propagates = true,"
|
||||
-- Adding sunlight_propagtes and leaving comments as a future reference.
|
||||
-- If true, sunlight will go infinitely through this (no shadow is cast).
|
||||
-- Because embers produce some light it should be somewhat "true" but this
|
||||
-- is an area where Minetest lacks in subtlety so I'm opting for 100% that
|
||||
-- embers *don't* have a shadow.
|
||||
|
||||
* Bug Fix - Server Crash when Flint-Steel Clicked on Nothing (sky).
|
||||
-- Players can see farther than they can reach. Even though the player
|
||||
-- was aiming for a node several spaces ahead of them, Minetest's targeting
|
||||
-- range doesn't extend that far. The player saw the node they were aiming
|
||||
-- at, Minetest's target range ended and Minetest saw "nothing"
|
||||
-- (a nil value). The bug was a conflict in the code so when that
|
||||
-- particular nil value popped up, Minetest was confused by the bug, threw
|
||||
-- up it's hands in frustration and said "I quit!" by crashing.
|
||||
|
||||
* Original init.lua Added
|
||||
-- What I thought was the original init.lua file turned out to be one I had
|
||||
-- tinkered with months ago. So I extracted the actual original init.lua
|
||||
-- file from a zip file of the original mod. Why bother including it in my
|
||||
-- fork? Because it's a reference to compare to and learn from.
|
||||
|
@ -1,3 +1,233 @@
|
||||
dofile(minetest.get_modpath("fake_fire").."/modfiles/nodes.lua")
|
||||
dofile(minetest.get_modpath("fake_fire").."/modfiles/crafts.lua")
|
||||
dofile(minetest.get_modpath("fake_fire").."/modfiles/abms.lua")
|
||||
local function start_smoke(pos, node, clicker, chimney)
|
||||
local this_spawner_meta = minetest.get_meta(pos)
|
||||
local id = this_spawner_meta:get_int("smoky")
|
||||
local s_handle = this_spawner_meta:get_int("sound")
|
||||
local above = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name
|
||||
|
||||
if id ~= 0 then
|
||||
if s_handle then
|
||||
minetest.after(0, function(s_handle)
|
||||
minetest.sound_stop(s_handle)
|
||||
end, s_handle)
|
||||
end
|
||||
minetest.delete_particlespawner(id)
|
||||
this_spawner_meta:set_int("smoky", nil)
|
||||
this_spawner_meta:set_int("sound", nil)
|
||||
return
|
||||
end
|
||||
|
||||
if above == "air" and (not id or id == 0) then
|
||||
id = minetest.add_particlespawner({
|
||||
amount = 4, time = 0, collisiondetection = false,
|
||||
minpos = {x=pos.x-0.25, y=pos.y+0.4, z=pos.z-0.25},
|
||||
maxpos = {x=pos.x+0.25, y=pos.y+5, z=pos.z+0.25},
|
||||
minvel = {x=-0.2, y=0.3, z=-0.2}, maxvel = {x=0.2, y=1, z=0.2},
|
||||
minacc = {x=0,y=0,z=0}, maxacc = {x=0,y=0.5,z=0},
|
||||
minexptime = 1, maxexptime = 3,
|
||||
minsize = 4, maxsize = 8,
|
||||
texture = "smoke_particle.png",
|
||||
})
|
||||
if chimney == 1 then
|
||||
s_handle = nil
|
||||
this_spawner_meta:set_int("smoky", id)
|
||||
this_spawner_meta:set_int("sound", nil)
|
||||
else
|
||||
s_handle = minetest.sound_play("fire_small", {
|
||||
pos = pos,
|
||||
max_hear_distance = 5,
|
||||
loop = true
|
||||
})
|
||||
this_spawner_meta:set_int("smoky", id)
|
||||
this_spawner_meta:set_int("sound", s_handle)
|
||||
end
|
||||
return end
|
||||
end
|
||||
|
||||
local function stop_smoke(pos)
|
||||
local this_spawner_meta = minetest.get_meta(pos)
|
||||
local id = this_spawner_meta:get_int("smoky")
|
||||
local s_handle = this_spawner_meta:get_int("sound")
|
||||
|
||||
if id ~= 0 then
|
||||
minetest.delete_particlespawner(id)
|
||||
end
|
||||
|
||||
if s_handle then
|
||||
minetest.after(0, function(s_handle)
|
||||
minetest.sound_stop(s_handle)
|
||||
end, s_handle)
|
||||
end
|
||||
|
||||
this_spawner_meta:set_int("smoky", nil)
|
||||
this_spawner_meta:set_int("sound", nil)
|
||||
end
|
||||
|
||||
-- FLAME TYPES
|
||||
local flame_types = {"fake", "ice"}
|
||||
|
||||
for _, f in ipairs(flame_types) do
|
||||
minetest.register_node("fake_fire:"..f.."_fire", {
|
||||
inventory_image = f.."_fire_inv.png",
|
||||
description = f.." fire",
|
||||
drawtype = "plantlike",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {dig_immediate=3, not_in_creative_inventory=1},
|
||||
sunlight_propagates = true,
|
||||
buildable_to = true,
|
||||
walkable = false,
|
||||
light_source = 14,
|
||||
waving = 1,
|
||||
tiles = {
|
||||
{name=f.."_fire_animated.png", animation={type="vertical_frames",
|
||||
aspect_w=16, aspect_h=16, length=1.5}},
|
||||
},
|
||||
on_rightclick = function (pos, node, clicker)
|
||||
start_smoke(pos, node, clicker)
|
||||
end,
|
||||
on_destruct = function (pos)
|
||||
stop_smoke(pos)
|
||||
minetest.sound_play("fire_extinguish", {
|
||||
pos = pos, max_hear_distance = 5
|
||||
})
|
||||
end,
|
||||
drop = ""
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_node("fake_fire:fancy_fire", {
|
||||
inventory_image = "fancy_fire_inv.png",
|
||||
description = "Fancy Fire",
|
||||
drawtype = "mesh",
|
||||
mesh = "fancy_fire.obj",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {dig_immediate=3},
|
||||
sunlight_propagates = true,
|
||||
light_source = 14,
|
||||
walkable = false,
|
||||
damage_per_second = 4,
|
||||
on_rotate = screwdriver.rotate_simple,
|
||||
tiles = {
|
||||
{name="fake_fire_animated.png",
|
||||
animation={type='vertical_frames', aspect_w=16, aspect_h=16, length=1}}, {name='fake_fire_logs.png'}},
|
||||
on_rightclick = function (pos, node, clicker)
|
||||
start_smoke(pos, node, clicker)
|
||||
end,
|
||||
on_destruct = function (pos)
|
||||
stop_smoke(pos)
|
||||
minetest.sound_play("fire_extinguish", {
|
||||
pos = pos, max_hear_distance = 5
|
||||
})
|
||||
end,
|
||||
drop = {
|
||||
max_items = 3,
|
||||
items = {
|
||||
{
|
||||
items = { "default:torch", "default:torch", "building_blocks:sticks" },
|
||||
rarity = 1,
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
-- EMBERS
|
||||
minetest.register_node("fake_fire:embers", {
|
||||
description = "Glowing Embers",
|
||||
tiles = {
|
||||
{name="embers_animated.png", animation={type="vertical_frames",
|
||||
aspect_w=16, aspect_h=16, length=2}},
|
||||
},
|
||||
light_source = 9,
|
||||
groups = {crumbly=3},
|
||||
paramtype = "light",
|
||||
sounds = default.node_sound_dirt_defaults(),
|
||||
})
|
||||
|
||||
-- CHIMNEYS
|
||||
local materials = {"stone", "sandstone"}
|
||||
|
||||
for _, m in ipairs(materials) do
|
||||
minetest.register_node("fake_fire:chimney_top_"..m, {
|
||||
description = "Chimney Top - "..m,
|
||||
tiles = {"default_"..m..".png^chimney_top.png", "default_"..m..".png"},
|
||||
groups = {snappy=3},
|
||||
paramtype = "light",
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
|
||||
},
|
||||
on_rightclick = function (pos, node, clicker)
|
||||
local chimney = 1
|
||||
start_smoke(pos, node, clicker, chimney)
|
||||
end,
|
||||
on_destruct = function (pos)
|
||||
stop_smoke(pos)
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = 'fake_fire:chimney_top_'..m,
|
||||
recipe = {"default:torch", "stairs:slab_"..m}
|
||||
})
|
||||
end
|
||||
|
||||
-- FLINT and STEEL
|
||||
minetest.register_tool("fake_fire:flint_and_steel", {
|
||||
description = "Flint and steel",
|
||||
inventory_image = "flint_and_steel.png",
|
||||
liquids_pointable = false,
|
||||
stack_max = 1,
|
||||
tool_capabilities = {
|
||||
full_punch_interval = 1.0,
|
||||
max_drop_level=0,
|
||||
groupcaps={flamable = {uses=65, maxlevel=1}}
|
||||
},
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
if pointed_thing.type == "node" and minetest.get_node(pointed_thing.above).name == "air" then
|
||||
if not minetest.is_protected(pointed_thing.above, user:get_player_name()) then
|
||||
if string.find(minetest.get_node(pointed_thing.under).name, "ice") then
|
||||
minetest.set_node(pointed_thing.above, {name="fake_fire:ice_fire"})
|
||||
else
|
||||
minetest.set_node(pointed_thing.above, {name="fake_fire:fake_fire"})
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(user:get_player_name(), "This area is protected!")
|
||||
end
|
||||
else
|
||||
return
|
||||
end
|
||||
|
||||
itemstack:add_wear(65535/65)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
-- CRAFTS
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = 'fake_fire:flint_and_steel',
|
||||
recipe = {"default:obsidian_shard", "default:steel_ingot"}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = 'fake_fire:embers',
|
||||
recipe = {"default:torch", "group:wood", "default:torch"}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = 'fake_fire:fancy_fire',
|
||||
recipe = {"default:torch", "building_blocks:sticks", "default:torch" }
|
||||
})
|
||||
|
||||
-- ALIASES
|
||||
minetest.register_alias("fake_fire:smokeless_fire", "fake_fire:fake_fire")
|
||||
minetest.register_alias("fake_fire:smokeless_ice_fire", "fake_fire:ice_fire")
|
||||
minetest.register_alias("fake_fire:smokeless_chimney_top_stone", "fake_fire:chimney_top_stone")
|
||||
minetest.register_alias("fake_fire:smokeless_chimney_top_sandstone", "fake_fire:chimney_top_sandstone")
|
||||
minetest.register_alias("fake_fire:flint", "fake_fire:flint_and_steel")
|
||||
|
133
mods/homedecor_modpack/fake_fire/models/fancy_fire.obj
Normal file
@ -0,0 +1,133 @@
|
||||
# Blender v2.72 (sub 2) OBJ File: 'campfire.blend'
|
||||
# www.blender.org
|
||||
v 0.353153 -0.337287 0.000000
|
||||
v -0.366847 -0.337287 0.000000
|
||||
v -0.366847 0.382713 -0.000000
|
||||
v -0.186847 -0.337287 0.311769
|
||||
v 0.173153 -0.337287 -0.311769
|
||||
v -0.186846 0.382713 0.311769
|
||||
v 0.173154 0.382713 -0.311769
|
||||
v -0.186846 -0.337287 -0.311769
|
||||
v 0.173154 -0.337287 0.311769
|
||||
v -0.186846 0.382713 -0.311769
|
||||
v 0.173153 0.382713 0.311769
|
||||
v 0.353153 0.382713 0.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
g Flames.001_Cube.004_Fire
|
||||
s off
|
||||
f 4/1 5/2 7/3 6/4
|
||||
f 8/1 9/2 11/3 10/4
|
||||
f 1/1 2/2 3/3 12/4
|
||||
v 0.151217 -0.347540 0.439253
|
||||
v 0.151217 -0.207593 0.411057
|
||||
v 0.008458 -0.207593 0.411057
|
||||
v 0.008458 -0.347540 0.439253
|
||||
v 0.151217 -0.526542 -0.449208
|
||||
v 0.151217 -0.386595 -0.477403
|
||||
v 0.008458 -0.386595 -0.477403
|
||||
v 0.008458 -0.526542 -0.449208
|
||||
v -0.419949 -0.512482 0.485423
|
||||
v -0.419949 -0.369723 0.485423
|
||||
v -0.444739 -0.369723 0.344833
|
||||
v -0.444739 -0.512482 0.344833
|
||||
v 0.472595 -0.512482 0.328044
|
||||
v 0.472595 -0.369723 0.328044
|
||||
v 0.447805 -0.369723 0.187453
|
||||
v 0.447805 -0.512482 0.187453
|
||||
v 0.033402 -0.347540 0.433815
|
||||
v 0.025205 -0.207593 0.406838
|
||||
v -0.111388 -0.207593 0.448342
|
||||
v -0.103191 -0.347540 0.475320
|
||||
v -0.224900 -0.526542 -0.416268
|
||||
v -0.233097 -0.386595 -0.443246
|
||||
v -0.369690 -0.386595 -0.401741
|
||||
v -0.361493 -0.526542 -0.374763
|
||||
v 0.254175 -0.345963 0.293196
|
||||
v 0.254175 -0.277187 0.265611
|
||||
v 0.181422 -0.282425 0.252550
|
||||
v 0.181422 -0.351201 0.280135
|
||||
v 0.343511 -0.517901 -0.135488
|
||||
v 0.343511 -0.449125 -0.163073
|
||||
v 0.270757 -0.454364 -0.176133
|
||||
v 0.270757 -0.523140 -0.148548
|
||||
v -0.418506 -0.513914 0.100698
|
||||
v -0.418472 -0.439812 0.100704
|
||||
v -0.392481 -0.439819 0.031309
|
||||
v -0.392514 -0.513921 0.031304
|
||||
v 0.022046 -0.514125 0.265705
|
||||
v 0.022080 -0.440022 0.265710
|
||||
v 0.048071 -0.440029 0.196316
|
||||
v 0.048038 -0.514131 0.196310
|
||||
v -0.249910 -0.307656 -0.062181
|
||||
v -0.249882 -0.234638 -0.074807
|
||||
v -0.278776 -0.246254 -0.142048
|
||||
v -0.278804 -0.319272 -0.129422
|
||||
v 0.183295 -0.339072 -0.242901
|
||||
v 0.183323 -0.266053 -0.255527
|
||||
v 0.154429 -0.277669 -0.322768
|
||||
v 0.154401 -0.350687 -0.310143
|
||||
vt 0.418293 0.016195
|
||||
vt 0.418293 0.216092
|
||||
vt 0.218396 0.216092
|
||||
vt 0.218396 0.016195
|
||||
vt 0.002609 0.212891
|
||||
vt 0.002609 0.012994
|
||||
vt 0.989254 0.012994
|
||||
vt 0.989254 0.212891
|
||||
vt 0.010050 0.219323
|
||||
vt 0.010050 0.019426
|
||||
vt 0.996695 0.019426
|
||||
vt 0.996695 0.219323
|
||||
vt 0.618448 0.016195
|
||||
vt 0.618448 0.216092
|
||||
vt 0.418551 0.216092
|
||||
vt 0.418551 0.016195
|
||||
vt 0.010050 0.228781
|
||||
vt 0.010050 0.028884
|
||||
vt 0.996695 0.028884
|
||||
vt 0.996695 0.228781
|
||||
vt 0.005089 0.207467
|
||||
vt 0.005089 0.007570
|
||||
vt 0.991734 0.007570
|
||||
vt 0.991734 0.207467
|
||||
g Campfire_Cube.003_Logs-Stone
|
||||
s off
|
||||
f 20/5 19/6 18/7 17/8
|
||||
f 14/9 13/10 17/11 18/12
|
||||
f 15/13 14/14 18/15 19/16
|
||||
f 13/17 14/18 15/19 16/20
|
||||
f 13/21 16/22 20/23 17/24
|
||||
f 16/25 15/26 19/27 20/28
|
||||
f 28/5 27/6 26/7 25/8
|
||||
f 22/9 21/10 25/11 26/12
|
||||
f 23/13 22/14 26/15 27/16
|
||||
f 21/17 22/18 23/19 24/20
|
||||
f 21/21 24/22 28/23 25/24
|
||||
f 24/25 23/26 27/27 28/28
|
||||
f 36/5 35/6 34/7 33/8
|
||||
f 30/9 29/10 33/11 34/12
|
||||
f 31/13 30/14 34/15 35/16
|
||||
f 29/17 30/18 31/19 32/20
|
||||
f 29/21 32/22 36/23 33/24
|
||||
f 32/25 31/26 35/27 36/28
|
||||
f 44/5 43/6 42/7 41/8
|
||||
f 38/9 37/10 41/11 42/12
|
||||
f 39/13 38/14 42/15 43/16
|
||||
f 37/17 38/18 39/19 40/20
|
||||
f 37/21 40/22 44/23 41/24
|
||||
f 40/25 39/26 43/27 44/28
|
||||
f 52/5 51/6 50/7 49/8
|
||||
f 46/9 45/10 49/11 50/12
|
||||
f 47/13 46/14 50/15 51/16
|
||||
f 45/17 46/18 47/19 48/20
|
||||
f 45/21 48/22 52/23 49/24
|
||||
f 48/25 47/26 51/27 52/28
|
||||
f 60/5 59/6 58/7 57/8
|
||||
f 54/9 53/10 57/11 58/12
|
||||
f 55/13 54/14 58/15 59/16
|
||||
f 53/17 54/18 55/19 56/20
|
||||
f 53/21 56/22 60/23 57/24
|
||||
f 56/25 55/26 59/27 60/28
|
@ -1,26 +0,0 @@
|
||||
minetest.register_abm({
|
||||
nodenames = {
|
||||
"fake_fire:fake_fire",
|
||||
"fake_fire:ice_fire",
|
||||
"fake_fire:chimney_top_stone",
|
||||
"fake_fire:chimney_top_sandstone"
|
||||
},
|
||||
interval = 1,
|
||||
chance = 2,
|
||||
action = function(pos, node)
|
||||
if minetest.get_node({x=pos.x, y=pos.y+1.0, z=pos.z}).name == "air"
|
||||
and minetest.get_node({x=pos.x, y=pos.y+2.0, z=pos.z}).name == "air" then
|
||||
local image_number = math.random(4)
|
||||
minetest.add_particlespawner({
|
||||
amount = 6, time = 1, collisiondetection = false,
|
||||
minpos = {x=pos.x-0.25, y=pos.y+0.4, z=pos.z-0.25},
|
||||
maxpos = {x=pos.x+0.25, y=pos.y+8, z=pos.z+0.25},
|
||||
minvel = {x=-0.2, y=0.3, z=-0.2}, maxvel = {x=0.2, y=1, z=0.2},
|
||||
minacc = {x=0,y=0,z=0}, maxacc = {x=0,y=0,z=0},
|
||||
minexptime = 0.5, maxexptime = 3,
|
||||
minsize = 2, maxsize = 10,
|
||||
texture = "smoke_particle_"..image_number..".png",
|
||||
})
|
||||
end
|
||||
end
|
||||
})
|
@ -1,89 +0,0 @@
|
||||
-- RECIPE ITEM - FLINT
|
||||
minetest.register_craftitem("fake_fire:flint", {
|
||||
description = "flint",
|
||||
inventory_image = "flint.png",
|
||||
stack_max = 99,
|
||||
liquids_pointable = false,
|
||||
})
|
||||
|
||||
-- FLINT
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = 'fake_fire:flint',
|
||||
recipe = {
|
||||
"default:gravel",
|
||||
"default:gravel",
|
||||
}
|
||||
})
|
||||
|
||||
-- FLINT & STEEL
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = 'fake_fire:flint_and_steel',
|
||||
recipe = {
|
||||
"fake_fire:flint",
|
||||
"default:steel_ingot",
|
||||
}
|
||||
})
|
||||
|
||||
-- EMBERS
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = 'fake_fire:embers',
|
||||
recipe = {
|
||||
"default:torch",
|
||||
"group:wood",
|
||||
}
|
||||
})
|
||||
|
||||
-- STONE CHIMNEY TOP
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = 'fake_fire:smokeless_chimney_top_stone',
|
||||
recipe = {
|
||||
"default:torch",
|
||||
"stairs:slab_stone",
|
||||
}
|
||||
})
|
||||
|
||||
-- SANDSTONE CHIMNEY TOP
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = 'fake_fire:smokeless_chimney_top_sandstone',
|
||||
recipe = {
|
||||
"default:torch",
|
||||
"stairs:slab_sandstone",
|
||||
}
|
||||
})
|
||||
|
||||
-- Cobble to Gravel
|
||||
minetest.register_craft({
|
||||
output = 'default:gravel',
|
||||
recipe = {
|
||||
{'default:cobble'},
|
||||
}
|
||||
})
|
||||
|
||||
-- Gravel to Sand
|
||||
minetest.register_craft({
|
||||
output = 'default:sand',
|
||||
recipe = {
|
||||
{'default:gravel'},
|
||||
}
|
||||
})
|
||||
|
||||
-- Desert Sand to Sand
|
||||
minetest.register_craft({
|
||||
output = 'default:sand',
|
||||
recipe = {
|
||||
{'default:desert_sand'},
|
||||
}
|
||||
})
|
||||
|
||||
-- Sand to Desert Sand
|
||||
minetest.register_craft({
|
||||
output = 'default:desert_sand',
|
||||
recipe = {
|
||||
{'default:sand'},
|
||||
}
|
||||
})
|