diff --git a/new_api/default/init.lua b/new_api/default/init.lua index c850597..b408e8c 100644 --- a/new_api/default/init.lua +++ b/new_api/default/init.lua @@ -24,10 +24,10 @@ minetest.register_item(":", { full_punch_interval = 1.0, max_drop_level = 0, groupcaps = { - fleshy = {times={[2]=2.00, [3]=1.00}, maxwear=0, maxlevel=1}, - crumbly = {times={[3]=0.70}, maxwear=0, maxlevel=1}, - snappy = {times={[3]=0.40}, maxwear=0, maxlevel=1}, - oddly_breakable_by_hand = {times={[1]=3.50,[2]=2.00,[3]=0.70}, maxwear=0, maxlevel=3}, + fleshy = {times={[2]=2.00, [3]=1.00}, uses=0, maxlevel=1}, + crumbly = {times={[2]=3.00, [3]=0.70}, uses=0, maxlevel=1}, + snappy = {times={[3]=0.40}, uses=0, maxlevel=1}, + oddly_breakable_by_hand = {times={[1]=7.00,[2]=4.00,[3]=1.40}, uses=0, maxlevel=3}, } } }) @@ -38,7 +38,7 @@ minetest.register_tool("default:pick_wood", { tool_capabilities = { max_drop_level=0, groupcaps={ - cracky={times={[2]=1.50, [3]=0.80}, maxwear=0.1, maxlevel=1} + cracky={times={[2]=2.00, [3]=1.20}, uses=10, maxlevel=1} } }, }) @@ -48,7 +48,7 @@ minetest.register_tool("default:pick_stone", { tool_capabilities = { max_drop_level=0, groupcaps={ - cracky={times={[1]=1.50, [2]=0.80, [3]=0.60}, maxwear=0.05, maxlevel=1} + cracky={times={[1]=2.00, [2]=1.20, [3]=0.80}, uses=20, maxlevel=1} } }, }) @@ -58,7 +58,7 @@ minetest.register_tool("default:pick_steel", { tool_capabilities = { max_drop_level=1, groupcaps={ - cracky={times={[1]=1.00, [2]=0.60, [3]=0.40}, maxwear=0.1, maxlevel=2} + cracky={times={[1]=4.00, [2]=1.60, [3]=1.00}, uses=10, maxlevel=2} } }, }) @@ -69,9 +69,9 @@ minetest.register_tool("default:pick_mese", { full_punch_interval = 1.0, max_drop_level=3, groupcaps={ - cracky={times={[1]=0.2, [2]=0.2, [3]=0.2}, maxwear=0.05, maxlevel=3}, - crumbly={times={[1]=0.2, [2]=0.2, [3]=0.2}, maxwear=0.05, maxlevel=3}, - snappy={times={[1]=0.2, [2]=0.2, [3]=0.2}, maxwear=0.05, maxlevel=3} + cracky={times={[1]=2.0, [2]=1.0, [3]=0.5}, uses=20, maxlevel=3}, + crumbly={times={[1]=2.0, [2]=1.0, [3]=0.5}, uses=20, maxlevel=3}, + snappy={times={[1]=2.0, [2]=1.0, [3]=0.5}, uses=20, maxlevel=3} } }, }) @@ -81,7 +81,7 @@ minetest.register_tool("default:shovel_wood", { tool_capabilities = { max_drop_level=0, groupcaps={ - crumbly={times={[1]=1.50, [2]=0.80, [3]=0.50}, maxwear=0.1, maxlevel=1} + crumbly={times={[1]=2.00, [2]=0.80, [3]=0.50}, uses=10, maxlevel=1} } }, }) @@ -91,7 +91,7 @@ minetest.register_tool("default:shovel_stone", { tool_capabilities = { max_drop_level=0, groupcaps={ - crumbly={times={[1]=0.80, [2]=0.50, [3]=0.30}, maxwear=0.05, maxlevel=1} + crumbly={times={[1]=1.20, [2]=0.50, [3]=0.30}, uses=20, maxlevel=1} } }, }) @@ -101,7 +101,7 @@ minetest.register_tool("default:shovel_steel", { tool_capabilities = { max_drop_level=1, groupcaps={ - crumbly={times={[1]=0.50, [2]=0.35, [3]=0.30}, maxwear=0.1, maxlevel=2} + crumbly={times={[1]=1.00, [2]=0.70, [3]=0.60}, uses=10, maxlevel=2} } }, }) @@ -111,8 +111,8 @@ minetest.register_tool("default:axe_wood", { tool_capabilities = { max_drop_level=0, groupcaps={ - choppy={times={[2]=1.40, [3]=0.80}, maxwear=0.1, maxlevel=1}, - fleshy={times={[2]=1.50, [3]=0.80}, maxwear=0.1, maxlevel=1} + choppy={times={[2]=1.40, [3]=0.80}, uses=10, maxlevel=1}, + fleshy={times={[2]=1.50, [3]=0.80}, uses=10, maxlevel=1} } }, }) @@ -122,8 +122,8 @@ minetest.register_tool("default:axe_stone", { tool_capabilities = { max_drop_level=0, groupcaps={ - choppy={times={[1]=1.50, [2]=1.00, [3]=0.60}, maxwear=0.05, maxlevel=1}, - fleshy={times={[2]=1.30, [3]=0.70}, maxwear=0.05, maxlevel=1} + choppy={times={[1]=1.50, [2]=1.00, [3]=0.60}, uses=20, maxlevel=1}, + fleshy={times={[2]=1.30, [3]=0.70}, uses=20, maxlevel=1} } }, }) @@ -133,8 +133,8 @@ minetest.register_tool("default:axe_steel", { tool_capabilities = { max_drop_level=1, groupcaps={ - choppy={times={[1]=1.00, [2]=0.80, [3]=0.50}, maxwear=0.1, maxlevel=2}, - fleshy={times={[2]=1.10, [3]=0.60}, maxwear=0.03, maxlevel=1} + choppy={times={[1]=2.00, [2]=1.60, [3]=1.00}, uses=10, maxlevel=2}, + fleshy={times={[2]=1.10, [3]=0.60}, uses=40, maxlevel=1} } }, }) @@ -145,9 +145,9 @@ minetest.register_tool("default:sword_wood", { full_punch_interval = 1.0, max_drop_level=0, groupcaps={ - fleshy={times={[2]=1.10, [3]=0.60}, maxwear=0.1, maxlevel=1}, - snappy={times={[2]=1.00, [3]=0.50}, maxwear=0.1, maxlevel=1}, - choppy={times={[3]=1.00}, maxwear=0.05, maxlevel=0} + fleshy={times={[2]=1.10, [3]=0.60}, uses=10, maxlevel=1}, + snappy={times={[2]=1.00, [3]=0.50}, uses=10, maxlevel=1}, + choppy={times={[3]=1.00}, uses=20, maxlevel=0} } } }) @@ -158,9 +158,9 @@ minetest.register_tool("default:sword_stone", { full_punch_interval = 1.0, max_drop_level=0, groupcaps={ - fleshy={times={[2]=0.80, [3]=0.40}, maxwear=0.05, maxlevel=1}, - snappy={times={[2]=0.80, [3]=0.40}, maxwear=0.05, maxlevel=1}, - choppy={times={[3]=0.90}, maxwear=0.05, maxlevel=0} + fleshy={times={[2]=0.80, [3]=0.40}, uses=20, maxlevel=1}, + snappy={times={[2]=0.80, [3]=0.40}, uses=20, maxlevel=1}, + choppy={times={[3]=0.90}, uses=20, maxlevel=0} } } }) @@ -171,9 +171,9 @@ minetest.register_tool("default:sword_steel", { full_punch_interval = 1.0, max_drop_level=1, groupcaps={ - fleshy={times={[1]=1.00, [2]=0.40, [3]=0.20}, maxwear=0.1, maxlevel=2}, - snappy={times={[2]=0.70, [3]=0.30}, maxwear=0.03, maxlevel=1}, - choppy={times={[3]=0.70}, maxwear=0.03, maxlevel=0} + fleshy={times={[1]=2.00, [2]=0.80, [3]=0.40}, uses=10, maxlevel=2}, + snappy={times={[2]=0.70, [3]=0.30}, uses=40, maxlevel=1}, + choppy={times={[3]=0.70}, uses=40, maxlevel=0} } } }) @@ -623,6 +623,79 @@ minetest.register_craft({ -- Node definitions -- +-- Default node sounds + +function default.node_sound_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="", gain=1.0} + table.dug = table.dug or + {name="default_dug_node", gain=1.0} + return table +end + +function default.node_sound_stone_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_hard_footstep", gain=0.2} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_dirt_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="", gain=0.5} + --table.dug = table.dug or + -- {name="default_dirt_break", gain=0.5} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_sand_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_grass_footstep", gain=0.25} + --table.dug = table.dug or + -- {name="default_dirt_break", gain=0.25} + table.dug = table.dug or + {name="", gain=0.25} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_wood_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_hard_footstep", gain=0.3} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_leaves_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_grass_footstep", gain=0.25} + table.dig = table.dig or + {name="default_dig_crumbly", gain=0.4} + table.dug = table.dug or + {name="", gain=1.0} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_glass_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_stone_footstep", gain=0.25} + table.dug = table.dug or + {name="default_break_glass", gain=1.0} + default.node_sound_defaults(table) + return table +end + +-- + minetest.register_node("default:stone", { description = "Stone", tile_images = {"default_stone.png"}, @@ -630,6 +703,7 @@ minetest.register_node("default:stone", { groups = {cracky=3}, drop = 'default:cobble', legacy_mineral = true, + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:stone_with_coal", { @@ -638,6 +712,7 @@ minetest.register_node("default:stone_with_coal", { is_ground_content = true, groups = {cracky=3}, drop = 'default:coal_lump', + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:stone_with_iron", { @@ -646,6 +721,7 @@ minetest.register_node("default:stone_with_iron", { is_ground_content = true, groups = {cracky=3}, drop = 'default:iron_lump', + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:dirt_with_grass", { @@ -654,6 +730,9 @@ minetest.register_node("default:dirt_with_grass", { is_ground_content = true, groups = {crumbly=3}, drop = 'default:dirt', + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_grass_footstep", gain=0.4}, + }), }) minetest.register_node("default:dirt_with_grass_footsteps", { @@ -662,6 +741,9 @@ minetest.register_node("default:dirt_with_grass_footsteps", { is_ground_content = true, groups = {crumbly=3}, drop = 'default:dirt', + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_grass_footstep", gain=0.4}, + }), }) minetest.register_node("default:dirt", { @@ -669,6 +751,7 @@ minetest.register_node("default:dirt", { tile_images = {"default_dirt.png"}, is_ground_content = true, groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults(), }) minetest.register_node("default:sand", { @@ -676,6 +759,7 @@ minetest.register_node("default:sand", { tile_images = {"default_sand.png"}, is_ground_content = true, groups = {crumbly=3}, + sounds = default.node_sound_sand_defaults(), }) minetest.register_node("default:gravel", { @@ -683,6 +767,9 @@ minetest.register_node("default:gravel", { tile_images = {"default_gravel.png"}, is_ground_content = true, groups = {crumbly=2}, + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_gravel_footstep", gain=0.45}, + }), }) minetest.register_node("default:sandstone", { @@ -691,6 +778,7 @@ minetest.register_node("default:sandstone", { is_ground_content = true, groups = {crumbly=2,cracky=2}, drop = 'default:sand', + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:clay", { @@ -699,6 +787,9 @@ minetest.register_node("default:clay", { is_ground_content = true, groups = {crumbly=3}, drop = 'default:clay_lump 4', + sounds = default.node_sound_dirt_defaults({ + footstep = "", + }), }) minetest.register_node("default:brick", { @@ -707,6 +798,7 @@ minetest.register_node("default:brick", { is_ground_content = true, groups = {cracky=3}, drop = 'default:clay_brick 4', + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:tree", { @@ -714,6 +806,7 @@ minetest.register_node("default:tree", { tile_images = {"default_tree_top.png", "default_tree_top.png", "default_tree.png"}, is_ground_content = true, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=1}, + sounds = default.node_sound_wood_defaults(), }) minetest.register_node("default:jungletree", { @@ -721,6 +814,7 @@ minetest.register_node("default:jungletree", { tile_images = {"default_jungletree_top.png", "default_jungletree_top.png", "default_jungletree.png"}, is_ground_content = true, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=1}, + sounds = default.node_sound_wood_defaults(), }) minetest.register_node("default:junglegrass", { @@ -733,6 +827,7 @@ minetest.register_node("default:junglegrass", { paramtype = "light", walkable = false, groups = {snappy=3}, + sounds = default.node_sound_leaves_defaults(), }) minetest.register_node("default:leaves", { @@ -757,6 +852,7 @@ minetest.register_node("default:leaves", { } } }, + sounds = default.node_sound_leaves_defaults(), }) minetest.register_node("default:cactus", { @@ -764,6 +860,7 @@ minetest.register_node("default:cactus", { tile_images = {"default_cactus_top.png", "default_cactus_top.png", "default_cactus_side.png"}, is_ground_content = true, groups = {snappy=2,choppy=3}, + sounds = default.node_sound_wood_defaults(), }) minetest.register_node("default:papyrus", { @@ -776,6 +873,7 @@ minetest.register_node("default:papyrus", { is_ground_content = true, walkable = false, groups = {snappy=3}, + sounds = default.node_sound_leaves_defaults(), }) minetest.register_node("default:bookshelf", { @@ -783,6 +881,7 @@ minetest.register_node("default:bookshelf", { tile_images = {"default_wood.png", "default_wood.png", "default_bookshelf.png"}, is_ground_content = true, groups = {snappy=2,choppy=3,oddly_breakable_by_hand=2}, + sounds = default.node_sound_wood_defaults(), }) minetest.register_node("default:glass", { @@ -794,6 +893,7 @@ minetest.register_node("default:glass", { sunlight_propagates = true, is_ground_content = true, groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, + sounds = default.node_sound_glass_defaults(), }) minetest.register_node("default:fence_wood", { @@ -809,6 +909,7 @@ minetest.register_node("default:fence_wood", { fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7}, }, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + sounds = default.node_sound_wood_defaults(), }) minetest.register_node("default:rail", { @@ -846,6 +947,7 @@ minetest.register_node("default:ladder", { }, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3}, legacy_wallmounted = true, + sounds = default.node_sound_wood_defaults(), }) minetest.register_node("default:wood", { @@ -853,19 +955,22 @@ minetest.register_node("default:wood", { tile_images = {"default_wood.png"}, is_ground_content = true, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + sounds = default.node_sound_wood_defaults(), }) minetest.register_node("default:mese", { description = "Mese", tile_images = {"default_mese.png"}, is_ground_content = true, - groups = {cracky=1}, + groups = {cracky=1,level=2}, + sounds = default.node_sound_defaults(), }) minetest.register_node("default:cloud", { description = "Cloud", tile_images = {"default_cloud.png"}, is_ground_content = true, + sounds = default.node_sound_defaults(), }) minetest.register_node("default:water_flowing", { @@ -981,6 +1086,7 @@ minetest.register_node("default:torch", { }, groups = {choppy=2,dig_immediate=3}, legacy_wallmounted = true, + sounds = default.node_sound_defaults(), }) minetest.register_node("default:sign_wall", { @@ -1002,6 +1108,7 @@ minetest.register_node("default:sign_wall", { }, groups = {choppy=2,dig_immediate=2}, legacy_wallmounted = true, + sounds = default.node_sound_defaults(), }) minetest.register_node("default:chest", { @@ -1012,6 +1119,7 @@ minetest.register_node("default:chest", { metadata_name = "chest", groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, legacy_facedir_simple = true, + sounds = default.node_sound_wood_defaults(), }) minetest.register_node("default:chest_locked", { @@ -1022,6 +1130,7 @@ minetest.register_node("default:chest_locked", { metadata_name = "locked_chest", groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, legacy_facedir_simple = true, + sounds = default.node_sound_wood_defaults(), }) minetest.register_node("default:furnace", { @@ -1032,6 +1141,7 @@ minetest.register_node("default:furnace", { metadata_name = "furnace", groups = {cracky=2}, legacy_facedir_simple = true, + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:cobble", { @@ -1039,6 +1149,7 @@ minetest.register_node("default:cobble", { tile_images = {"default_cobble.png"}, is_ground_content = true, groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:mossycobble", { @@ -1046,6 +1157,7 @@ minetest.register_node("default:mossycobble", { tile_images = {"default_mossycobble.png"}, is_ground_content = true, groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:steelblock", { @@ -1053,6 +1165,7 @@ minetest.register_node("default:steelblock", { tile_images = {"default_steel_block.png"}, is_ground_content = true, groups = {snappy=1,bendy=2}, + sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:nyancat", { @@ -1063,6 +1176,7 @@ minetest.register_node("default:nyancat", { paramtype2 = "facedir", groups = {cracky=2}, legacy_facedir_simple = true, + sounds = default.node_sound_defaults(), }) minetest.register_node("default:nyancat_rainbow", { @@ -1070,6 +1184,7 @@ minetest.register_node("default:nyancat_rainbow", { tile_images = {"default_nc_rb.png"}, inventory_image = "default_nc_rb.png", groups = {cracky=2}, + sounds = default.node_sound_defaults(), }) minetest.register_node("default:sapling", { @@ -1082,6 +1197,7 @@ minetest.register_node("default:sapling", { paramtype = "light", walkable = false, groups = {snappy=2,dig_immediate=3}, + sounds = default.node_sound_defaults(), }) minetest.register_node("default:apple", { @@ -1095,6 +1211,7 @@ minetest.register_node("default:apple", { walkable = false, groups = {fleshy=3,dig_immediate=3}, on_use = minetest.item_eat(4), + sounds = default.node_sound_defaults(), }) -- @@ -1181,6 +1298,29 @@ minetest.add_to_creative_inventory('default:water_source') minetest.add_to_creative_inventory('default:lava_source') minetest.add_to_creative_inventory('default:ladder') +-- +-- Aliases for the current map generator outputs +-- + +minetest.register_alias("mapgen_air", "air") +minetest.register_alias("mapgen_stone", "default:stone") +minetest.register_alias("mapgen_tree", "default:tree") +minetest.register_alias("mapgen_leaves", "default:leaves") +minetest.register_alias("mapgen_apple", "default:apple") +minetest.register_alias("mapgen_water_source", "default:water_source") +minetest.register_alias("mapgen_dirt", "default:dirt") +minetest.register_alias("mapgen_sand", "default:sand") +minetest.register_alias("mapgen_gravel", "default:gravel") +minetest.register_alias("mapgen_clay", "default:clay") +minetest.register_alias("mapgen_lava_source", "default:lava_source") +minetest.register_alias("mapgen_cobble", "default:cobble") +minetest.register_alias("mapgen_mossycobble", "default:mossycobble") +minetest.register_alias("mapgen_dirt_with_grass", "default:dirt_with_grass") +minetest.register_alias("mapgen_junglegrass", "default:junglegrass") +minetest.register_alias("mapgen_stone_with_coal", "default:stone_with_coal") +minetest.register_alias("mapgen_stone_with_iron", "default:stone_with_iron") +minetest.register_alias("mapgen_mese", "default:mese") + -- -- Some common functions -- diff --git a/new_api/default/sounds/default_grass_footstep.1.ogg b/new_api/default/sounds/default_grass_footstep.1.ogg new file mode 100644 index 0000000..ce625d9 Binary files /dev/null and b/new_api/default/sounds/default_grass_footstep.1.ogg differ diff --git a/new_api/default/textures/default_apple.png b/new_api/default/textures/default_apple.png index e6854ed..9593f28 100644 Binary files a/new_api/default/textures/default_apple.png and b/new_api/default/textures/default_apple.png differ diff --git a/new_api/default/textures/default_bookshelf.png b/new_api/default/textures/default_bookshelf.png index 5666f5a..5ecc50f 100644 Binary files a/new_api/default/textures/default_bookshelf.png and b/new_api/default/textures/default_bookshelf.png differ diff --git a/new_api/default/textures/default_brick.png b/new_api/default/textures/default_brick.png index 83209ca..32d77f3 100644 Binary files a/new_api/default/textures/default_brick.png and b/new_api/default/textures/default_brick.png differ diff --git a/new_api/default/textures/default_cactus_side.png b/new_api/default/textures/default_cactus_side.png index a33f688..fc479fd 100644 Binary files a/new_api/default/textures/default_cactus_side.png and b/new_api/default/textures/default_cactus_side.png differ diff --git a/new_api/default/textures/default_cactus_top.png b/new_api/default/textures/default_cactus_top.png index 11711d5..f9e68df 100644 Binary files a/new_api/default/textures/default_cactus_top.png and b/new_api/default/textures/default_cactus_top.png differ diff --git a/new_api/default/textures/default_chest_front.png b/new_api/default/textures/default_chest_front.png index e7d8f25..c5628af 100644 Binary files a/new_api/default/textures/default_chest_front.png and b/new_api/default/textures/default_chest_front.png differ diff --git a/new_api/default/textures/default_chest_lock.png b/new_api/default/textures/default_chest_lock.png index 4b59301..ae038fa 100644 Binary files a/new_api/default/textures/default_chest_lock.png and b/new_api/default/textures/default_chest_lock.png differ diff --git a/new_api/default/textures/default_chest_side.png b/new_api/default/textures/default_chest_side.png index 0002d87..916dd78 100644 Binary files a/new_api/default/textures/default_chest_side.png and b/new_api/default/textures/default_chest_side.png differ diff --git a/new_api/default/textures/default_chest_top.png b/new_api/default/textures/default_chest_top.png index 8871d41..58c7967 100644 Binary files a/new_api/default/textures/default_chest_top.png and b/new_api/default/textures/default_chest_top.png differ diff --git a/new_api/default/textures/default_clay_brick.png b/new_api/default/textures/default_clay_brick.png index 447d8aa..e36648e 100644 Binary files a/new_api/default/textures/default_clay_brick.png and b/new_api/default/textures/default_clay_brick.png differ diff --git a/new_api/default/textures/default_coal_lump.png b/new_api/default/textures/default_coal_lump.png index 2949f0f..bad901e 100644 Binary files a/new_api/default/textures/default_coal_lump.png and b/new_api/default/textures/default_coal_lump.png differ diff --git a/new_api/default/textures/default_cobble.png b/new_api/default/textures/default_cobble.png index d68503c..7d04474 100644 Binary files a/new_api/default/textures/default_cobble.png and b/new_api/default/textures/default_cobble.png differ diff --git a/new_api/default/textures/default_dirt.png b/new_api/default/textures/default_dirt.png index aa750da..7cb9c89 100644 Binary files a/new_api/default/textures/default_dirt.png and b/new_api/default/textures/default_dirt.png differ diff --git a/new_api/default/textures/default_fence.png b/new_api/default/textures/default_fence.png index e3c8176..0b99f0e 100644 Binary files a/new_api/default/textures/default_fence.png and b/new_api/default/textures/default_fence.png differ diff --git a/new_api/default/textures/default_glass.png b/new_api/default/textures/default_glass.png index e24ca80..ade0196 100644 Binary files a/new_api/default/textures/default_glass.png and b/new_api/default/textures/default_glass.png differ diff --git a/new_api/default/textures/default_grass.png b/new_api/default/textures/default_grass.png index 02fbc75..3610bb2 100644 Binary files a/new_api/default/textures/default_grass.png and b/new_api/default/textures/default_grass.png differ diff --git a/new_api/default/textures/default_grass_footsteps.png b/new_api/default/textures/default_grass_footsteps.png index c8aaeea..57e063d 100644 Binary files a/new_api/default/textures/default_grass_footsteps.png and b/new_api/default/textures/default_grass_footsteps.png differ diff --git a/new_api/default/textures/default_grass_side.png b/new_api/default/textures/default_grass_side.png index 2fd3324..4f4f680 100644 Binary files a/new_api/default/textures/default_grass_side.png and b/new_api/default/textures/default_grass_side.png differ diff --git a/new_api/default/textures/default_gravel.png b/new_api/default/textures/default_gravel.png index 4837d52..f08666a 100644 Binary files a/new_api/default/textures/default_gravel.png and b/new_api/default/textures/default_gravel.png differ diff --git a/new_api/default/textures/default_iron_lump.png b/new_api/default/textures/default_iron_lump.png index 53ce9af..edb9310 100644 Binary files a/new_api/default/textures/default_iron_lump.png and b/new_api/default/textures/default_iron_lump.png differ diff --git a/new_api/default/textures/default_jungletree.png b/new_api/default/textures/default_jungletree.png index aadaac0..ccd20ac 100644 Binary files a/new_api/default/textures/default_jungletree.png and b/new_api/default/textures/default_jungletree.png differ diff --git a/new_api/default/textures/default_jungletree_top.png b/new_api/default/textures/default_jungletree_top.png index 58baa63..2a9b513 100644 Binary files a/new_api/default/textures/default_jungletree_top.png and b/new_api/default/textures/default_jungletree_top.png differ diff --git a/new_api/default/textures/default_lava.png b/new_api/default/textures/default_lava.png index 630bc2a..cb02ada 100644 Binary files a/new_api/default/textures/default_lava.png and b/new_api/default/textures/default_lava.png differ diff --git a/new_api/default/textures/default_leaves.png b/new_api/default/textures/default_leaves.png index 3d14db2..7a25126 100644 Binary files a/new_api/default/textures/default_leaves.png and b/new_api/default/textures/default_leaves.png differ diff --git a/new_api/default/textures/default_mese.png b/new_api/default/textures/default_mese.png index ff371ea..4c876cd 100644 Binary files a/new_api/default/textures/default_mese.png and b/new_api/default/textures/default_mese.png differ diff --git a/new_api/default/textures/default_mossycobble.png b/new_api/default/textures/default_mossycobble.png index 644303b..fad1b33 100644 Binary files a/new_api/default/textures/default_mossycobble.png and b/new_api/default/textures/default_mossycobble.png differ diff --git a/new_api/default/textures/default_sand.png b/new_api/default/textures/default_sand.png index 62d8422..15101a7 100644 Binary files a/new_api/default/textures/default_sand.png and b/new_api/default/textures/default_sand.png differ diff --git a/new_api/default/textures/default_sandstone.png b/new_api/default/textures/default_sandstone.png index 95e9252..c4759b4 100644 Binary files a/new_api/default/textures/default_sandstone.png and b/new_api/default/textures/default_sandstone.png differ diff --git a/new_api/default/textures/default_sapling.png b/new_api/default/textures/default_sapling.png index 05496f6..73f5023 100644 Binary files a/new_api/default/textures/default_sapling.png and b/new_api/default/textures/default_sapling.png differ diff --git a/new_api/default/textures/default_sign_wall.png b/new_api/default/textures/default_sign_wall.png index 2acde70..06eac1e 100644 Binary files a/new_api/default/textures/default_sign_wall.png and b/new_api/default/textures/default_sign_wall.png differ diff --git a/new_api/default/textures/default_stone.png b/new_api/default/textures/default_stone.png index bfa3f1c..cad0dbe 100644 Binary files a/new_api/default/textures/default_stone.png and b/new_api/default/textures/default_stone.png differ diff --git a/new_api/default/textures/default_tool_mesepick.png b/new_api/default/textures/default_tool_mesepick.png index 95619a0..a1f3812 100644 Binary files a/new_api/default/textures/default_tool_mesepick.png and b/new_api/default/textures/default_tool_mesepick.png differ diff --git a/new_api/default/textures/default_tool_steelaxe.png b/new_api/default/textures/default_tool_steelaxe.png index f85fdea..0ad23c9 100644 Binary files a/new_api/default/textures/default_tool_steelaxe.png and b/new_api/default/textures/default_tool_steelaxe.png differ diff --git a/new_api/default/textures/default_tool_steelpick.png b/new_api/default/textures/default_tool_steelpick.png index 2215cea..7982daf 100644 Binary files a/new_api/default/textures/default_tool_steelpick.png and b/new_api/default/textures/default_tool_steelpick.png differ diff --git a/new_api/default/textures/default_tool_steelshovel.png b/new_api/default/textures/default_tool_steelshovel.png index 95e66fe..ed84138 100644 Binary files a/new_api/default/textures/default_tool_steelshovel.png and b/new_api/default/textures/default_tool_steelshovel.png differ diff --git a/new_api/default/textures/default_tool_steelsword.png b/new_api/default/textures/default_tool_steelsword.png index b0a7678..a745812 100644 Binary files a/new_api/default/textures/default_tool_steelsword.png and b/new_api/default/textures/default_tool_steelsword.png differ diff --git a/new_api/default/textures/default_tool_stoneaxe.png b/new_api/default/textures/default_tool_stoneaxe.png index 7f084f0..698ac91 100644 Binary files a/new_api/default/textures/default_tool_stoneaxe.png and b/new_api/default/textures/default_tool_stoneaxe.png differ diff --git a/new_api/default/textures/default_tool_stonepick.png b/new_api/default/textures/default_tool_stonepick.png index e344dc2..b34de6f 100644 Binary files a/new_api/default/textures/default_tool_stonepick.png and b/new_api/default/textures/default_tool_stonepick.png differ diff --git a/new_api/default/textures/default_tool_stoneshovel.png b/new_api/default/textures/default_tool_stoneshovel.png index b3f9df3..ba52431 100644 Binary files a/new_api/default/textures/default_tool_stoneshovel.png and b/new_api/default/textures/default_tool_stoneshovel.png differ diff --git a/new_api/default/textures/default_tool_stonesword.png b/new_api/default/textures/default_tool_stonesword.png index b5420a7..8f8191f 100644 Binary files a/new_api/default/textures/default_tool_stonesword.png and b/new_api/default/textures/default_tool_stonesword.png differ diff --git a/new_api/default/textures/default_tool_woodaxe.png b/new_api/default/textures/default_tool_woodaxe.png index 330b64c..3daa4af 100644 Binary files a/new_api/default/textures/default_tool_woodaxe.png and b/new_api/default/textures/default_tool_woodaxe.png differ diff --git a/new_api/default/textures/default_tool_woodpick.png b/new_api/default/textures/default_tool_woodpick.png index f4cdad3..ea728cc 100644 Binary files a/new_api/default/textures/default_tool_woodpick.png and b/new_api/default/textures/default_tool_woodpick.png differ diff --git a/new_api/default/textures/default_tool_woodshovel.png b/new_api/default/textures/default_tool_woodshovel.png index c169ca8..649ab4c 100644 Binary files a/new_api/default/textures/default_tool_woodshovel.png and b/new_api/default/textures/default_tool_woodshovel.png differ diff --git a/new_api/default/textures/default_tool_woodsword.png b/new_api/default/textures/default_tool_woodsword.png index 1f57e38..d6c6be3 100644 Binary files a/new_api/default/textures/default_tool_woodsword.png and b/new_api/default/textures/default_tool_woodsword.png differ diff --git a/new_api/default/textures/default_torch.png b/new_api/default/textures/default_torch.png index fcb883d..7a953c2 100644 Binary files a/new_api/default/textures/default_torch.png and b/new_api/default/textures/default_torch.png differ diff --git a/new_api/default/textures/default_torch_on_ceiling.png b/new_api/default/textures/default_torch_on_ceiling.png index 8deef96..6965d38 100644 Binary files a/new_api/default/textures/default_torch_on_ceiling.png and b/new_api/default/textures/default_torch_on_ceiling.png differ diff --git a/new_api/default/textures/default_torch_on_floor.png b/new_api/default/textures/default_torch_on_floor.png index 0b2195f..76d1dd5 100644 Binary files a/new_api/default/textures/default_torch_on_floor.png and b/new_api/default/textures/default_torch_on_floor.png differ diff --git a/new_api/default/textures/default_tree.png b/new_api/default/textures/default_tree.png index 9abb0cc..65abfc2 100644 Binary files a/new_api/default/textures/default_tree.png and b/new_api/default/textures/default_tree.png differ diff --git a/new_api/default/textures/default_tree_top.png b/new_api/default/textures/default_tree_top.png index 1792f52..2cdd94f 100644 Binary files a/new_api/default/textures/default_tree_top.png and b/new_api/default/textures/default_tree_top.png differ diff --git a/new_api/default/textures/default_wood.png b/new_api/default/textures/default_wood.png index f1050ec..57c1d7c 100644 Binary files a/new_api/default/textures/default_wood.png and b/new_api/default/textures/default_wood.png differ diff --git a/new_api/default/textures/heart.png b/new_api/default/textures/heart.png index 7161035..6bc183e 100644 Binary files a/new_api/default/textures/heart.png and b/new_api/default/textures/heart.png differ diff --git a/new_api/default/textures/player.png b/new_api/default/textures/player.png index fa57b48..90adf97 100644 Binary files a/new_api/default/textures/player.png and b/new_api/default/textures/player.png differ diff --git a/new_api/default/textures/player_back.png b/new_api/default/textures/player_back.png index 01fe737..530aa75 100644 Binary files a/new_api/default/textures/player_back.png and b/new_api/default/textures/player_back.png differ diff --git a/new_api/default/textures/treeprop.png b/new_api/default/textures/treeprop.png index 6599d93..77ea4d6 100644 Binary files a/new_api/default/textures/treeprop.png and b/new_api/default/textures/treeprop.png differ diff --git a/new_api/default/textures/wieldhand.png b/new_api/default/textures/wieldhand.png index b312af1..c4549e5 100644 Binary files a/new_api/default/textures/wieldhand.png and b/new_api/default/textures/wieldhand.png differ diff --git a/new_api/experimental/depends.txt b/new_api/experimental/depends.txt new file mode 100644 index 0000000..3a7daa1 --- /dev/null +++ b/new_api/experimental/depends.txt @@ -0,0 +1,2 @@ +default + diff --git a/new_api/experimental/init.lua b/new_api/experimental/init.lua new file mode 100644 index 0000000..11f32b3 --- /dev/null +++ b/new_api/experimental/init.lua @@ -0,0 +1,647 @@ +-- +-- Experimental things +-- + +-- For testing random stuff + +experimental = {} + +experimental.player_visual_index = 0 +function switch_player_visual() + for _, obj in pairs(minetest.get_connected_players()) do + if experimental.player_visual_index == 0 then + obj:set_properties({visual="upright_sprite"}) + else + obj:set_properties({visual="cube"}) + end + end + experimental.player_visual_index = (experimental.player_visual_index + 1) % 2 + minetest.after(1.0, switch_player_visual) +end +minetest.after(1.0, switch_player_visual) + +--[[ +stepsound = -1 +function test_sound() + print("test_sound") + stepsound = minetest.sound_play("default_grass_footstep", {gain=1.0}) + minetest.after(2.0, test_sound) + --minetest.after(0.1, test_sound_stop) +end +function test_sound_stop() + print("test_sound_stop") + minetest.sound_stop(stepsound) + minetest.after(2.0, test_sound) +end +test_sound() +--]] + +function on_step(dtime) + -- print("experimental on_step") + --[[ + objs = minetest.env:get_objects_inside_radius({x=0,y=0,z=0}, 10) + for k, obj in pairs(objs) do + name = obj:get_player_name() + if name then + print(name.." at "..dump(obj:getpos())) + print(name.." dir: "..dump(obj:get_look_dir())) + print(name.." pitch: "..dump(obj:get_look_pitch())) + print(name.." yaw: "..dump(obj:get_look_yaw())) + else + print("Some object at "..dump(obj:getpos())) + end + end + --]] + --[[ + if experimental.t1 == nil then + experimental.t1 = 0 + end + experimental.t1 = experimental.t1 + dtime + if experimental.t1 >= 2 then + experimental.t1 = experimental.t1 - 2 + minetest.log("time of day is "..minetest.env:get_timeofday()) + if experimental.day then + minetest.log("forcing day->night") + experimental.day = false + minetest.env:set_timeofday(0.0) + else + minetest.log("forcing night->day") + experimental.day = true + minetest.env:set_timeofday(0.5) + end + minetest.log("time of day is "..minetest.env:get_timeofday()) + end + --]] +end +minetest.register_globalstep(on_step) + +-- An example furnace-thing implemented in Lua + +--[[ +minetest.register_node("experimental:luafurnace", { + tile_images = {"default_lava.png", "default_furnace_side.png", + "default_furnace_side.png", "default_furnace_side.png", + "default_furnace_side.png", "default_furnace_front.png"}, + --inventory_image = "furnace_front.png", + inventory_image = minetest.inventorycube("default_furnace_front.png"), + paramtype = "facedir_simple", + metadata_name = "generic", + material = minetest.digprop_stonelike(3.0), +}) + +minetest.register_on_placenode(function(pos, newnode, placer) + if newnode.name == "experimental:luafurnace" then + local meta = minetest.env:get_meta(pos) + meta:inventory_set_list("fuel", {""}) + meta:inventory_set_list("src", {""}) + meta:inventory_set_list("dst", {"","","",""}) + meta:set_inventory_draw_spec( + "invsize[8,9;]" + .."list[current_name;fuel;2,3;1,1;]" + .."list[current_name;src;2,1;1,1;]" + .."list[current_name;dst;5,1;2,2;]" + .."list[current_player;main;0,5;8,4;]" + ) + + local total_cooked = 0; + meta:set_string("total_cooked", total_cooked) + meta:set_infotext("Lua Furnace: total cooked: "..total_cooked) + end +end) + +minetest.register_abm({ + nodenames = {"experimental:luafurnace"}, + interval = 1.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local meta = minetest.env:get_meta(pos) + for i, name in ipairs({ + "fuel_totaltime", + "fuel_time", + "src_totaltime", + "src_time" + }) do + if not meta:get_string(name) then + meta:set_string(name, 0) + end + end + + local inv = meta:get_inventory() + + local fuelitem = inv:get_stack("fuel", 1):peek_item() + local srcitem = inv:get_stack("src", 1):peek_item() + --print("fuelitem="..dump(fuelitem)) + --print("srcitem="..dump(srcitem)) + + local was_active = false + + local src_cooktime = -1 + local result_stackstring = nil + + if srcitem then + local prop = get_item_definition(srcitem) + if prop and prop.cookresult_itemstring ~= "" then + result_stackstring = prop.cookresult_itemstring + src_cooktime = prop.furnace_cooktime or 3 + end + end + + print("src_cooktime="..dump(src_cooktime)) + print("result_stackstring="..dump(result_stackstring)) + + if tonumber(meta:get_string("fuel_time")) < tonumber(meta:get_string("fuel_totaltime")) then + was_active = true + meta:set_string("fuel_time", tonumber(meta:get_string("fuel_time")) + 1) + meta:set_string("src_time", tonumber(meta:get_string("src_time")) + 1) + --print("result_stackstring="..dump(result_stackstring)) + --print('tonumber(meta:get_string("src_time"))='..dump(tonumber(meta:get_string("src_time")))) + --print("src_cooktime="..dump(src_cooktime)) + if result_stackstring and tonumber(meta:get_string("src_time")) >= src_cooktime and src_cooktime >= 0 then + -- Put result in "dst" list + success = inv:autoinsert_stackstring("dst", result_stackstring) + if not success then + print("Could not autoinsert '"..result_stackstring.."'") + end + -- If succeeded, take stuff from "src" list + if success then + srcstack = inv:get_stack("src", 1) + srcstack:take_item() + inv:set_stack("src", 1, srcstack) + end + meta:set_string("src_time", 0) + end + end + + if tonumber(meta:get_string("fuel_time")) < tonumber(meta:get_string("fuel_totaltime")) then + meta:set_infotext("Furnace active: "..(tonumber(meta:get_string("fuel_time"))/tonumber(meta:get_string("fuel_totaltime"))*100).."%") + return + end + + local srcitem = inv:get_stack("src", 1):peek_item() + + local src_cooktime = 0 + local result_stackstring = nil + + if srcitem then + local prop = get_item_definition(srcitem) + if prop and prop.cookresult_itemstring ~= "" then + result_stackstring = prop.cookresult_itemstring + src_cooktime = prop.furnace_cooktime or 3 + end + end + + local fuelitem = inv:get_stack("fuel", 1):peek_item() + + if not result_stackstring or not fuelitem then + if was_active then + meta:set_infotext("Furnace is empty") + end + return + end + + local burntime = -1 + if fuelitem then + local prop = get_item_definition(fuelitem) + if prop then + burntime = prop.furnace_burntime or -1 + end + end + + if burntime <= 0 then + meta:set_infotext("Furnace out of fuel") + return + end + + meta:set_string("fuel_totaltime", burntime) + meta:set_string("fuel_time", 0) + + local stack = inv:get_stack("fuel", 1) + stack:take_item() + inv:set_stack("fuel", 1, stack) + end, +}) +minetest.register_abm({ + nodenames = {"experimental:luafurnace"}, + interval = 1.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local meta = minetest.env:get_meta(pos) + local fuellist = meta:inventory_get_list("fuel") + local srclist = meta:inventory_get_list("src") + local dstlist = meta:inventory_get_list("dst") + if fuellist == nil or srclist == nil or dstlist == nil then + return + end + _, srcitem = stackstring_take_item(srclist[1]) + _, fuelitem = stackstring_take_item(fuellist[1]) + if not srcitem or not fuelitem then return end + if fuelitem.type == "node" then + local prop = minetest.registered_nodes[fuelitem.name] + if prop == nil then return end + if prop.furnace_burntime < 0 then return end + else + return + end + local resultstack = nil + if srcitem.type == "node" then + local prop = minetest.registered_nodes[srcitem.name] + if prop == nil then return end + if prop.cookresult_item == "" then return end + resultstack = prop.cookresult_item + else + return + end + + if resultstack == nil then + return + end + + dstlist[1], success = stackstring_put_stackstring(dstlist[1], resultstack) + if not success then + return + end + + fuellist[1], _ = stackstring_take_item(fuellist[1]) + srclist[1], _ = stackstring_take_item(srclist[1]) + + meta:inventory_set_list("fuel", fuellist) + meta:inventory_set_list("src", srclist) + meta:inventory_set_list("dst", dstlist) + + local total_cooked = meta:get_string("total_cooked") + total_cooked = tonumber(total_cooked) + 1 + meta:set_string("total_cooked", total_cooked) + meta:set_infotext("Lua Furnace: total cooked: "..total_cooked) + end, +}) +minetest.register_craft({ + output = 'node "experimental:luafurnace" 1', + recipe = { + {'node "default:cobble"', 'node "default:cobble"', 'node "default:cobble"'}, + {'node "default:cobble"', 'node "default:steel_ingot"', 'node "default:cobble"'}, + {'node "default:cobble"', 'node "default:cobble"', 'node "default:cobble"'}, + } +}) +--]] + +-- +-- Random stuff +-- + +--[[ +minetest.register_tool("experimental:horribletool", { + image = "default_lava.png", + basetime = 2.0 + dt_weight = 0.2 + dt_crackiness = 0.2 + dt_crumbliness = 0.2 + dt_cuttability = 0.2 + basedurability = 50 + dd_weight = -5 + dd_crackiness = -5 + dd_crumbliness = -5 + dd_cuttability = -5 +}) +--]] + +-- +-- TNT (not functional) +-- + +minetest.register_craft({ + output = 'experimental:tnt', + recipe = { + {'default:wood'}, + {'default:coal_lump'}, + {'default:wood'} + } +}) + +minetest.register_node("experimental:tnt", { + tile_images = {"default_tnt_top.png", "default_tnt_bottom.png", + "default_tnt_side.png", "default_tnt_side.png", + "default_tnt_side.png", "default_tnt_side.png"}, + inventory_image = minetest.inventorycube("default_tnt_top.png", + "default_tnt_side.png", "default_tnt_side.png"), + drop = '', -- Get nothing + material = { + diggability = "not", + }, +}) + +minetest.register_on_punchnode(function(p, node) + if node.name == "experimental:tnt" then + minetest.env:remove_node(p) + minetest.env:add_entity(p, "experimental:tnt") + nodeupdate(p) + end +end) + +local TNT = { + -- Static definition + physical = true, -- Collides with things + -- weight = 5, + collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}, + visual = "cube", + textures = {"default_tnt_top.png", "default_tnt_bottom.png", + "default_tnt_side.png", "default_tnt_side.png", + "default_tnt_side.png", "default_tnt_side.png"}, + -- Initial value for our timer + timer = 0, + -- Number of punches required to defuse + health = 1, + blinktimer = 0, + blinkstatus = true, +} + +-- Called when a TNT object is created +function TNT:on_activate(staticdata) + print("TNT:on_activate()") + self.object:setvelocity({x=0, y=4, z=0}) + self.object:setacceleration({x=0, y=-10, z=0}) + self.object:settexturemod("^[brighten") + self.object:set_armor_groups({immortal=1}) +end + +-- Called periodically +function TNT:on_step(dtime) + --print("TNT:on_step()") + self.timer = self.timer + dtime + self.blinktimer = self.blinktimer + dtime + if self.blinktimer > 0.5 then + self.blinktimer = self.blinktimer - 0.5 + if self.blinkstatus then + self.object:settexturemod("") + else + self.object:settexturemod("^[brighten") + end + self.blinkstatus = not self.blinkstatus + end +end + +-- Called when object is punched +function TNT:on_punch(hitter) + print("TNT:on_punch()") + self.health = self.health - 1 + if self.health <= 0 then + self.object:remove() + hitter:get_inventory():add_item("main", "experimental:tnt") + --hitter:set_hp(hitter:get_hp() - 1) + end +end + +-- Called when object is right-clicked +function TNT:on_rightclick(clicker) + --pos = self.object:getpos() + --pos = {x=pos.x, y=pos.y+0.1, z=pos.z} + --self.object:moveto(pos, false) +end + +--print("TNT dump: "..dump(TNT)) +--print("Registering TNT"); +minetest.register_entity("experimental:tnt", TNT) + +-- Add TNT's old name also +minetest.register_alias("TNT", "experimental:tnt") + +-- +-- The dummyball! +-- + +minetest.register_entity("experimental:dummyball", { + initial_properties = { + hp_max = 20, + physical = false, + collisionbox = {-0.4,-0.4,-0.4, 0.4,0.4,0.4}, + visual = "sprite", + visual_size = {x=1, y=1}, + textures = {"experimental_dummyball.png"}, + spritediv = {x=1, y=3}, + initial_sprite_basepos = {x=0, y=0}, + }, + + phase = 0, + phasetimer = 0, + + on_activate = function(self, staticdata) + minetest.log("Dummyball activated!") + end, + + on_step = function(self, dtime) + self.phasetimer = self.phasetimer + dtime + if self.phasetimer > 2.0 then + self.phasetimer = self.phasetimer - 2.0 + self.phase = self.phase + 1 + if self.phase >= 3 then + self.phase = 0 + end + self.object:setsprite({x=0, y=self.phase}) + phasearmor = { + [0]={cracky=3}, + [1]={crumbly=3}, + [2]={fleshy=3} + } + self.object:set_armor_groups(phasearmor[self.phase]) + end + end, + + on_punch = function(self, hitter) + end, +}) + +minetest.register_on_chat_message(function(name, message) + local cmd = "/dummyball" + if message:sub(0, #cmd) == cmd then + if not minetest.get_player_privs(name)["give"] then + minetest.chat_send_player(name, "you don't have permission to spawn (give)") + return true -- Handled chat message + end + if not minetest.get_player_privs(name)["interact"] then + minetest.chat_send_player(name, "you don't have permission to interact") + return true -- Handled chat message + end + local player = minetest.env:get_player_by_name(name) + if player == nil then + print("Unable to spawn entity, player is nil") + return true -- Handled chat message + end + local entityname = "experimental:dummyball" + local p = player:getpos() + p.y = p.y + 1 + minetest.env:add_entity(p, entityname) + minetest.chat_send_player(name, '"'..entityname + ..'" spawned.'); + return true -- Handled chat message + end +end) + +-- +-- A test entity for testing animated and yaw-modulated sprites +-- + +minetest.register_entity("experimental:testentity", { + -- Static definition + physical = true, -- Collides with things + -- weight = 5, + collisionbox = {-0.7,-1.35,-0.7, 0.7,1.0,0.7}, + --collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}, + visual = "sprite", + visual_size = {x=2, y=3}, + textures = {"dungeon_master.png^[makealpha:128,0,0^[makealpha:128,128,0"}, + spritediv = {x=6, y=5}, + initial_sprite_basepos = {x=0, y=0}, + + on_activate = function(self, staticdata) + print("testentity.on_activate") + self.object:setsprite({x=0,y=0}, 1, 0, true) + --self.object:setsprite({x=0,y=0}, 4, 0.3, true) + + -- Set gravity + self.object:setacceleration({x=0, y=-10, z=0}) + -- Jump a bit upwards + self.object:setvelocity({x=0, y=10, z=0}) + end, + + on_punch = function(self, hitter) + self.object:remove() + hitter:add_to_inventory('craft testobject1 1') + end, +}) + +-- +-- More random stuff +-- + +minetest.register_on_respawnplayer(function(player) + print("on_respawnplayer") + -- player:setpos({x=0, y=30, z=0}) + -- return true +end) + +minetest.register_on_generated(function(minp, maxp) + --print("on_generated: minp="..dump(minp).." maxp="..dump(maxp)) + --cp = {x=(minp.x+maxp.x)/2, y=(minp.y+maxp.y)/2, z=(minp.z+maxp.z)/2} + --minetest.env:add_node(cp, {name="sand"}) +end) + +-- Example setting get +--print("setting max_users = " .. dump(minetest.setting_get("max_users"))) +--print("setting asdf = " .. dump(minetest.setting_get("asdf"))) + +minetest.register_on_chat_message(function(name, message) + --[[print("on_chat_message: name="..dump(name).." message="..dump(message)) + local cmd = "/testcommand" + if message:sub(0, #cmd) == cmd then + print(cmd.." invoked") + return true + end + local cmd = "/help" + if message:sub(0, #cmd) == cmd then + print("script-overridden help command") + minetest.chat_send_all("script-overridden help command") + return true + end]] +end) + +-- Grow papyrus on TNT every 10 seconds +--[[minetest.register_abm({ + nodenames = {"TNT"}, + interval = 10.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + print("TNT ABM action") + pos.y = pos.y + 1 + minetest.env:add_node(pos, {name="papyrus"}) + end, +})]] + +-- Replace texts of alls signs with "foo" every 10 seconds +--[[minetest.register_abm({ + nodenames = {"sign_wall"}, + interval = 10.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + print("ABM: Sign text changed") + local meta = minetest.env:get_meta(pos) + meta:set_text("foo") + end, +})]] + +--[[local ncpos = nil +local ncq = 1 +local ncstuff = { + {2, 1, 0, 3}, {3, 0, 1, 2}, {4, -1, 0, 1}, {5, -1, 0, 1}, {6, 0, -1, 0}, + {7, 0, -1, 0}, {8, 1, 0, 3}, {9, 1, 0, 3}, {10, 1, 0, 3}, {11, 0, 1, 2}, + {12, 0, 1, 2}, {13, 0, 1, 2}, {14, -1, 0, 1}, {15, -1, 0, 1}, {16, -1, 0, 1}, + {17, -1, 0, 1}, {18, 0, -1, 0}, {19, 0, -1, 0}, {20, 0, -1, 0}, {21, 0, -1, 0}, + {22, 1, 0, 3}, {23, 1, 0, 3}, {24, 1, 0, 3}, {25, 1, 0, 3}, {10, 0, 1, 2} +} +local ncold = {} +local nctime = nil + +minetest.register_abm({ + nodenames = {"dirt_with_grass"}, + interval = 100000.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + if ncpos ~= nil then + return + end + + if pos.x % 16 ~= 8 or pos.z % 16 ~= 8 then + return + end + + pos.y = pos.y + 1 + n = minetest.env:get_node(pos) + print(dump(n)) + if n.name ~= "air" then + return + end + + pos.y = pos.y + 2 + ncpos = pos + nctime = os.clock() + minetest.env:add_node(ncpos, {name="nyancat"}) + end +}) + +minetest.register_abm({ + nodenames = {"nyancat"}, + interval = 1.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + if ncpos == nil then + return + end + if pos.x == ncpos.x and pos.y == ncpos.y and pos.z == ncpos.z then + clock = os.clock() + if clock - nctime < 0.1 then + return + end + nctime = clock + + s0 = ncstuff[ncq] + ncq = s0[1] + s1 = ncstuff[ncq] + p0 = pos + p1 = {x = p0.x + s0[2], y = p0.y, z = p0.z + s0[3]} + p2 = {x = p1.x + s1[2], y = p1.y, z = p1.z + s1[3]} + table.insert(ncold, 1, p0) + while #ncold >= 10 do + minetest.env:add_node(ncold[#ncold], {name="air"}) + table.remove(ncold, #ncold) + end + minetest.env:add_node(p0, {name="nyancat_rainbow"}) + minetest.env:add_node(p1, {name="nyancat", param1=s0[4]}) + minetest.env:add_node(p2, {name="air"}) + ncpos = p1 + end + end, +})--]] + +minetest.log("experimental modname="..dump(minetest.get_current_modname())) +minetest.log("experimental modpath="..dump(minetest.get_modpath("experimental"))) +minetest.log("experimental worldpath="..dump(minetest.get_worldpath())) + +-- END diff --git a/new_api/experimental/textures/experimental_dummyball.png b/new_api/experimental/textures/experimental_dummyball.png new file mode 100644 index 0000000..0846765 Binary files /dev/null and b/new_api/experimental/textures/experimental_dummyball.png differ diff --git a/new_api/give_initial_stuff/depends.txt b/new_api/give_initial_stuff/depends.txt new file mode 100644 index 0000000..3a7daa1 --- /dev/null +++ b/new_api/give_initial_stuff/depends.txt @@ -0,0 +1,2 @@ +default + diff --git a/new_api/give_initial_stuff/init.lua b/new_api/give_initial_stuff/init.lua new file mode 100644 index 0000000..fef23c3 --- /dev/null +++ b/new_api/give_initial_stuff/init.lua @@ -0,0 +1,15 @@ +minetest.register_on_newplayer(function(player) + print("[minimal] giving initial stuff to player") + player:get_inventory():add_item('main', 'default:pick_stone') + player:get_inventory():add_item('main', 'default:torch 99') + player:get_inventory():add_item('main', 'default:cobble 99') + player:get_inventory():add_item('main', 'default:wood 99') + player:get_inventory():add_item('main', 'default:axe_steel') + player:get_inventory():add_item('main', 'default:shovel_steel') + player:get_inventory():add_item('main', 'default:pick_wood') + player:get_inventory():add_item('main', 'default:pick_steel') + player:get_inventory():add_item('main', 'default:pick_mese') + player:get_inventory():add_item('main', 'default:mese 99') + player:get_inventory():add_item('main', 'default:water_source 99') +end) + diff --git a/new_api/test/init.lua b/new_api/test/init.lua new file mode 100644 index 0000000..051b479 --- /dev/null +++ b/new_api/test/init.lua @@ -0,0 +1,11 @@ +-- +-- Minimal Development Test +-- Mod: test +-- + +-- Try out PseudoRandom +pseudo = PseudoRandom(13) +assert(pseudo:next() == 22290) +assert(pseudo:next() == 13854) + +