Added white trees (sorry, the texture is terrible), added furnace support (finally), and added cloning support (somewhat)

master
Joel Leclerc 2012-04-30 13:15:05 -06:00
parent e75d6a2f84
commit 4bbfe0032f
9 changed files with 78 additions and 5 deletions

View File

@ -22,6 +22,9 @@ minetest.registered_craftitems = {}
minetest.registered_tools = {}
minetest.registered_aliases = {}
minetest.registered_crafts = {}
minetest.registered_fuels = {}
minetest.registered_smeltables = {}
minetest.registered_clones = {}
-- For tables that are indexed by item name:
-- If table[X] does not exist, default to table[minetest.registered_aliases[X]]
@ -152,6 +155,8 @@ end
function minetest.register_node(name, nodedef)
nodedef.type = "node"
minetest.registered_clones[name] = {}
minetest.registered_clones[name][0] = name
minetest.register_item(name, nodedef)
end
@ -167,6 +172,50 @@ function minetest.register_craftitem(name, craftitemdef)
minetest.register_item(name, craftitemdef)
end
function minetest.register_craft(craftdef)
local tempcraftdef = craftdef
if craftdef.recipe ~= nil and craftdef.output ~= nil then
if craftdef.type == "cooking" then
if minetest.registered_clones[craftdef.recipe] ~= nil then
for i,v in ipairs(minetest.registered_clones[craftdef.recipe]) do
tempcraftdef.recipe = v
minetest.registered_smeltables[v] = craftdef.output
minetest.register_craft_raw(tempcraftdef)
end
else
minetest.registered_smeltables[craftdef.recipe] = craftdef.burntime
minetest.register_craft_raw(craftdef)
end
elseif craftdef.type == "fuel" then
if minetest.registered_clones[craftdef.recipe] ~= nil then
for i,v in ipairs(minetest.registered_clones[craftdef.recipe]) do
tempcraftdef.recipe = v
minetest.registered_fuels[v] = craftdef.burntime
minetest.register_craft_raw(tempcraftdef)
end
else
minetest.registered_fuels[craftdef.recipe] = craftdef.burntime
minetest.register_craft_raw(craftdef)
end
else
for i,v in ipairs(craftdef.recipe) do
for x,y in ipairs(v) do
if minetest.registered_clones[y] ~= nil then
for z,a in ipairs(minetest.registered_clones[y]) do
tempcraftdef.recipe[v][y] = a
minetest.registered_crafts[tempcraftdef.recipe] = craftdef.output
minetest.register_craft_raw(tempcraftdef)
end
else
minetest.registered_crafts[craftdef.recipe] = craftdef.output
minetest.register_craft_raw(craftdef)
end
end
end
end
end
end
function minetest.register_tool(name, tooldef)
tooldef.type = "tool"
tooldef.stack_max = 1
@ -228,6 +277,16 @@ for name in pairs(forbidden_item_names) do
register_alias_raw(name, "")
end
-- Clone a node, changing something
function minetest.register_node_clone(name, original_name, nodedefs)
local newnodedef = minetest.registered_nodes[original_name]
for ndn, nd in pairs(nodedefs) do
newnodedef[ndn] = nd;
end
minetest.registered_clones[original_name][table.getn(minetest.registered_clones[original_name])+1] = name
minetest.register_node(name, newnodedef)
end
-- Deprecated:
-- Aliases for minetest.register_alias (how ironic...)

View File

@ -850,6 +850,10 @@ minetest.register_node("default:tree", {
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node_clone("default:tree_white", "default:tree", {
tile_images = {"default_tree_top_white.png", "default_tree_top_white.png", "default_tree_white.png"},
})
minetest.register_node("default:jungletree", {
description = "Jungle Tree",
tile_images = {"default_jungletree_top.png", "default_jungletree_top.png", "default_jungletree.png"},

View File

@ -7,6 +7,7 @@
minetest.register_alias("mapgen_air", "air")
minetest.register_alias("mapgen_stone", "default:stone")
minetest.register_alias("mapgen_tree", "default:tree")
minetest.register_alias("mapgen_tree_white", "default:tree_white")
minetest.register_alias("mapgen_jungletree", "default:jungletree")
minetest.register_alias("mapgen_leaves", "default:leaves")
minetest.register_alias("mapgen_apple", "default:apple")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 341 B

After

Width:  |  Height:  |  Size: 428 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 410 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 B

View File

@ -1750,7 +1750,7 @@ void the_game(
guienv->setFocus(gui_chat_console);
}
}
if(input->wasKeyDown(getKeySetting("keymap_freemove")))
/*if(input->wasKeyDown(getKeySetting("keymap_freemove")))
{
if(g_settings->getBool("free_move"))
{
@ -1766,7 +1766,7 @@ void the_game(
if(!client.checkPrivilege("fly"))
statustext += L" (note: no 'fly' privilege)";
}
}
}*/
if(input->wasKeyDown(getKeySetting("keymap_fastmove")))
{
if(g_settings->getBool("fast_move"))
@ -2586,7 +2586,7 @@ void the_game(
(daynight_ratio * LIGHT_SUN) / 1000) / 255.0;
float direct_brightness = 0;
bool sunlight_seen = false;
if(g_settings->getBool("free_move")){
if(player->is_flying){
direct_brightness = time_brightness;
sunlight_seen = true;
} else {

View File

@ -230,7 +230,16 @@ void make_custom_tree(ManualMapVoxelManipulator &vmanip, v3s16 p0,
void make_tree(ManualMapVoxelManipulator &vmanip, v3s16 p0,
bool is_apple_tree, INodeDefManager *ndef)
{
MapNode treenode(ndef->getId("mapgen_tree"));
bool white_tree = myrand_range(0, 5) == 1;
MapNode treenode;
if (white_tree)
{
treenode = ndef->getId("mapgen_tree_white");
}
else
{
treenode = ndef->getId("mapgen_tree");
}
MapNode leavesnode(ndef->getId("mapgen_leaves"));
MapNode applenode(ndef->getId("mapgen_apple"));
mapnoderandom applestruct;

View File

@ -4296,7 +4296,7 @@ static const struct luaL_Reg minetest_f [] = {
{"log", l_log},
{"register_item_raw", l_register_item_raw},
{"register_alias_raw", l_register_alias_raw},
{"register_craft", l_register_craft},
{"register_craft_raw", l_register_craft},
{"setting_set", l_setting_set},
{"setting_get", l_setting_get},
{"setting_getbool", l_setting_getbool},