From 2195da170e5e56ffce205094bae98a675f2c1ed4 Mon Sep 17 00:00:00 2001 From: ROllerozxa Date: Tue, 20 Jul 2021 21:49:54 +0200 Subject: [PATCH] Implement block sounds! :flushed: --- fetchassets.py | 8 +++- mods/minecraft/blocks.lua | 72 ++++++++++++++++++++++++------- mods/minecraft/blocks/chest.lua | 3 ++ mods/minecraft/blocks/doors.lua | 2 + mods/minecraft/blocks/furnace.lua | 2 + mods/minecraft/blocks/ladder.lua | 1 + mods/minecraft/blocks/sponge.lua | 3 +- mods/minecraft/blocks/torch.lua | 1 + mods/minecraft/init.lua | 3 ++ mods/minecraft/sounds.lua | 25 +++++++++++ mods/minecraft/sounds/.gitkeep | 0 11 files changed, 102 insertions(+), 18 deletions(-) create mode 100644 mods/minecraft/sounds.lua create mode 100644 mods/minecraft/sounds/.gitkeep diff --git a/fetchassets.py b/fetchassets.py index 79a53f8..b6d00c7 100644 --- a/fetchassets.py +++ b/fetchassets.py @@ -8,7 +8,7 @@ def download(url, name): def check_sound_and_download(url, name): if not Path(name).exists(): - print("File \"%s\"doesn't exist, let's download it." % name) + print("File \"%s\" doesn't exist, let's download it." % name) download(url, name) else: print("File \"%s\" already exists." % name) @@ -24,6 +24,12 @@ def main(): for i in range(1,4): check_sound_and_download("https://betacraft.pl/MinecraftResources/newmusic/piano%s.ogg" % i, Path("mods/minecraft_music/sounds/piano%s.ogg" % i)) + # step sounds + step_sounds = [ 'cloth', 'grass', 'gravel', 'sand', 'snow', 'stone', 'wood' ] + for step_sound in step_sounds: + for i in range(1,5): + check_sound_and_download("https://betacraft.pl/MinecraftResources/newsound/step/%s%s.ogg" % (step_sound, i), Path("mods/minecraft/sounds/%s.%s.ogg" % (step_sound, i))) + if __name__ == "__main__": main() diff --git a/mods/minecraft/blocks.lua b/mods/minecraft/blocks.lua index 33cef57..36a5566 100644 --- a/mods/minecraft/blocks.lua +++ b/mods/minecraft/blocks.lua @@ -2,7 +2,8 @@ minetest.register_node("minecraft:stone", { description = "Stone", tiles = {"terrain.png^[sheet:16x16:1,0"}, groups = {cracky=3}, - drop = "minecraft:cobble" + drop = "minecraft:cobble", + sounds = block_sound('stone'), }) minetest.register_node("minecraft:grass", { @@ -12,19 +13,26 @@ minetest.register_node("minecraft:grass", { {name = "terrain.png^[sheet:16x16:3,0", tileable_vertical = false}}, groups = {crumbly=3, soil=1, cultivatable=1}, + sounds = block_sound('grass'), }) minetest.register_node("minecraft:dirt", { description = "Dirt", tiles ={"terrain.png^[sheet:16x16:2,0"}, groups = {crumbly=3, soil=1, cultivatable=1}, + sounds = block_sound('gravel'), }) minetest.register_node("minecraft:oak", { description = "Wood", - tiles = {"terrain.png^[sheet:16x16:5,1", "terrain.png^[sheet:16x16:5,1", "terrain.png^[sheet:16x16:4,1"}, + tiles = { + "terrain.png^[sheet:16x16:5,1", + "terrain.png^[sheet:16x16:5,1", + "terrain.png^[sheet:16x16:4,1" + }, is_ground_content = false, groups = {choppy=2,oddly_breakable_by_hand=2}, + sounds = block_sound('wood'), }) minetest.register_node("minecraft:leaves", { @@ -44,6 +52,7 @@ minetest.register_node("minecraft:leaves", { }, } }, + sounds = block_sound('grass'), }) minetest.register_node("minecraft:plank", { @@ -51,6 +60,7 @@ minetest.register_node("minecraft:plank", { tiles = {"terrain.png^[sheet:16x16:4,0"}, is_ground_content = false, groups = {choppy=2,oddly_breakable_by_hand=2}, + sounds = block_sound('wood'), }) minetest.register_node("minecraft:glass", { @@ -62,18 +72,21 @@ minetest.register_node("minecraft:glass", { is_ground_content = false, sunlight_propagates = true, groups = {cracky=3,oddly_breakable_by_hand=3}, + sounds = block_sound('glass'), }) minetest.register_node("minecraft:sand", { description = "Sand", tiles ={"terrain.png^[sheet:16x16:2,1"}, groups = {falling_node=1,crumbly=3}, + sounds = block_sound('sand'), }) minetest.register_node("minecraft:gravel", { description = "Gravel", tiles ={"terrain.png^[sheet:16x16:3,1"}, groups = {falling_node=1,crumbly=3}, + sounds = block_sound('gravel'), }) minetest.register_node("minecraft:cobble", { @@ -81,6 +94,7 @@ minetest.register_node("minecraft:cobble", { tiles ={"terrain.png^[sheet:16x16:0,1"}, is_ground_content = false, groups = {cracky=3}, + sounds = block_sound('stone'), }) minetest.register_node("minecraft:mossycobble", { @@ -88,6 +102,7 @@ minetest.register_node("minecraft:mossycobble", { tiles ={"terrain.png^[sheet:16x16:4,2"}, is_ground_content = false, groups = {cracky=3}, + sounds = block_sound('stone'), }) minetest.register_node("minecraft:bedrock", { @@ -95,6 +110,7 @@ minetest.register_node("minecraft:bedrock", { tiles ={"terrain.png^[sheet:16x16:1,1"}, is_ground_content = false, groups = {unbreakable=1}, + sounds = block_sound('stone'), }) minetest.register_node("minecraft:bricks", { @@ -102,6 +118,7 @@ minetest.register_node("minecraft:bricks", { tiles ={"terrain.png^[sheet:16x16:7,0"}, is_ground_content = false, groups = {cracky=3}, + sounds = block_sound('stone'), }) minetest.register_node("minecraft:bookshelf", { @@ -109,32 +126,37 @@ minetest.register_node("minecraft:bookshelf", { tiles = {"terrain.png^[sheet:16x16:4,0", "terrain.png^[sheet:16x16:4,0", "terrain.png^[sheet:16x16:3,2"}, is_ground_content = false, groups = {choppy=2,oddly_breakable_by_hand=2}, + sounds = block_sound('wood'), }) minetest.register_node("minecraft:coal_ore", { description = "Coal Ore", tiles = {"terrain.png^[sheet:16x16:2,2"}, groups = {cracky = 3}, - drop = "minecraft:coal" + drop = "minecraft:coal", + sounds = block_sound('stone'), }) minetest.register_node("minecraft:iron_ore", { description = "Iron Ore", tiles = {"terrain.png^[sheet:16x16:1,2"}, groups = {cracky=2,level=1}, + sounds = block_sound('stone'), }) minetest.register_node("minecraft:gold_ore", { description = "Gold Ore", tiles = {"terrain.png^[sheet:16x16:0,2"}, groups = {cracky=2,level=1}, + sounds = block_sound('stone'), }) minetest.register_node("minecraft:diamond_ore", { description = "Diamond Ore", tiles = {"terrain.png^[sheet:16x16:2,3"}, groups = {cracky=1,level=2}, - drop = "minecraft:diamond" + drop = "minecraft:diamond", + sounds = block_sound('stone'), }) minetest.register_node("minecraft:plank_stairs", { @@ -151,7 +173,8 @@ minetest.register_node("minecraft:plank_stairs", { {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, -- NodeBox1 {-0.5, -0.5, 0, 0.5, 0.5, 0.5}, -- NodeBox2 } - } + }, + sounds = block_sound('wood'), }) minetest.register_node("minecraft:cobble_stairs", { @@ -168,7 +191,8 @@ minetest.register_node("minecraft:cobble_stairs", { {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, -- NodeBox1 {-0.5, -0.5, 0, 0.5, 0.5, 0.5}, -- NodeBox2 } - } + }, + sounds = block_sound('stone'), }) minetest.register_node("minecraft:plank_slab", { @@ -183,7 +207,8 @@ minetest.register_node("minecraft:plank_slab", { fixed = { {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, -- NodeBox1 } - } + }, + sounds = block_sound('wood'), }) minetest.register_node("minecraft:cobble_slab", { @@ -198,7 +223,8 @@ minetest.register_node("minecraft:cobble_slab", { fixed = { {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, -- NodeBox1 } - } + }, + sounds = block_sound('stone'), }) minetest.register_node("minecraft:stone_slab", { @@ -220,7 +246,8 @@ minetest.register_node("minecraft:stone_slab", { fixed = { {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, -- NodeBox1 } - } + }, + sounds = block_sound('stone'), }) minetest.register_node("minecraft:stone_slab_block", { @@ -235,7 +262,8 @@ minetest.register_node("minecraft:stone_slab_block", { }, is_ground_content = false, groups = {cracky=3}, - drop = "minecraft:stone_slab" + drop = "minecraft:stone_slab", + sounds = block_sound('stone'), }) @@ -251,6 +279,7 @@ minetest.register_node("minecraft:iron_block", { "terrain.png^[sheet:16x16:6,2", -- z- }, groups = {cracky=2,level=1}, + sounds = block_sound('metal'), }) minetest.register_node("minecraft:gold_block", { @@ -264,6 +293,7 @@ minetest.register_node("minecraft:gold_block", { "terrain.png^[sheet:16x16:7,2", -- z- }, groups = {cracky=2,level=1}, + sounds = block_sound('metal'), }) minetest.register_node("minecraft:diamond_block", { @@ -277,6 +307,7 @@ minetest.register_node("minecraft:diamond_block", { "terrain.png^[sheet:16x16:8,2", -- z- }, groups = {cracky=1,level=2}, + sounds = block_sound('metal'), }) minetest.register_node("minecraft:crafting_table", { @@ -308,12 +339,14 @@ minetest.register_node("minecraft:crafting_table", { minetest.show_formspec(player:get_player_name(), "main", form) end, + sounds = block_sound('wood'), }) minetest.register_node("minecraft:obsidian", { description = "Obsidian", tiles = {"terrain.png^[sheet:16x16:5,2"}, groups = {cracky=1, level=3}, + sounds = block_sound('stone'), }) minetest.register_node("minecraft:tnt", { @@ -322,7 +355,8 @@ minetest.register_node("minecraft:tnt", { "terrain.png^[sheet:16x16:10,0", "terrain.png^[sheet:16x16:8,0"}, is_ground_content = false, - groups = {dig_immediate=2} + groups = {dig_immediate=2}, + sounds = block_sound('grass'), }) minetest.register_node("minecraft:flower", { @@ -334,7 +368,8 @@ minetest.register_node("minecraft:flower", { tiles = {"terrain.png^[sheet:16x16:13,0"}, groups = {dig_immediate=3,snappy=3,attached_node = 1}, inventory_image = "terrain.png^[sheet:16x16:13,0", - waving = 1 + waving = 1, + sounds = block_sound('grass'), }) minetest.register_node("minecraft:rose", { @@ -346,7 +381,8 @@ minetest.register_node("minecraft:rose", { tiles = {"terrain.png^[sheet:16x16:12,0"}, groups = {dig_immediate=3,snappy=3,attached_node = 1}, inventory_image = "terrain.png^[sheet:16x16:12,0", - waving = 1 + waving = 1, + sounds = block_sound('grass'), }) minetest.register_node("minecraft:mushroom", { @@ -358,7 +394,8 @@ minetest.register_node("minecraft:mushroom", { tiles = {"terrain.png^[sheet:16x16:12,1"}, groups = {dig_immediate=3,attached_node = 1}, inventory_image = "terrain.png^[sheet:16x16:12,1", - waving = 1 + waving = 1, + sounds = block_sound('grass'), }) minetest.register_node("minecraft:mushroom2", { @@ -370,13 +407,15 @@ minetest.register_node("minecraft:mushroom2", { tiles = {"terrain.png^[sheet:16x16:13,1"}, groups = {dig_immediate=3,attached_node = 1}, inventory_image = "terrain.png^[sheet:16x16:13,1", - waving = 1 + waving = 1, + sounds = block_sound('grass'), }) minetest.register_node("minecraft:wool", { description = "Wool", tiles = {"terrain.png^[sheet:16x16:0,4"}, - groups = {snappy=1,choppy=2,oddly_breakable_by_hand=3} + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=3}, + sounds = block_sound('cloth'), }) minetest.register_node("minecraft:spawner", { @@ -387,6 +426,7 @@ minetest.register_node("minecraft:spawner", { is_ground_content = false, groups = {choppy=1}, drop = "", + sounds = block_sound('metal'), }) -- More blocks that are in their separate code file. diff --git a/mods/minecraft/blocks/chest.lua b/mods/minecraft/blocks/chest.lua index 4b67eba..5af025d 100644 --- a/mods/minecraft/blocks/chest.lua +++ b/mods/minecraft/blocks/chest.lua @@ -155,6 +155,8 @@ minetest.register_node(small_name, { drop = small_name, groups = {handy=1,axey=1, container=2, deco_block=1, material_wood=1,flammable=-1,not_in_creative_inventory=1,choppy=2}, + sounds = block_sound('wood'), + is_ground_content = false, on_construct = function(pos) local param2 = minetest.get_node(pos).param2 @@ -258,6 +260,7 @@ minetest.register_node(left_name, { groups = {handy=1,axey=1, container=5,not_in_creative_inventory=1, material_wood=1,flammable=-1,double_chest=1,choppy=2}, drop = small_name, is_ground_content = false, + sounds = block_sound('wood'), on_construct = function(pos) local n = minetest.get_node(pos) local param2 = n.param2 diff --git a/mods/minecraft/blocks/doors.lua b/mods/minecraft/blocks/doors.lua index b2a8f27..c863673 100644 --- a/mods/minecraft/blocks/doors.lua +++ b/mods/minecraft/blocks/doors.lua @@ -298,6 +298,8 @@ function doors.register(name, def) def.collision_box = {type = "fixed", fixed = {-1/2,-1/2,-1/2,1/2,3/2,-5/16}} def.use_texture_alpha = "clip" + def.sounds = block_sound('wood') + def.mesh = "door_a.obj" minetest.register_node(":" .. name .. "_a", def) diff --git a/mods/minecraft/blocks/furnace.lua b/mods/minecraft/blocks/furnace.lua index e7c01fe..c9750b1 100644 --- a/mods/minecraft/blocks/furnace.lua +++ b/mods/minecraft/blocks/furnace.lua @@ -335,6 +335,7 @@ minetest.register_node("minecraft:furnace", { allow_metadata_inventory_put = allow_metadata_inventory_put, allow_metadata_inventory_move = allow_metadata_inventory_move, allow_metadata_inventory_take = allow_metadata_inventory_take, + sounds = block_sound('stone') }) minetest.register_node("minecraft:lit_furnace", { @@ -355,4 +356,5 @@ minetest.register_node("minecraft:lit_furnace", { allow_metadata_inventory_put = allow_metadata_inventory_put, allow_metadata_inventory_move = allow_metadata_inventory_move, allow_metadata_inventory_take = allow_metadata_inventory_take, + sounds = block_sound('stone') }) \ No newline at end of file diff --git a/mods/minecraft/blocks/ladder.lua b/mods/minecraft/blocks/ladder.lua index 3c80040..7e56acb 100644 --- a/mods/minecraft/blocks/ladder.lua +++ b/mods/minecraft/blocks/ladder.lua @@ -13,6 +13,7 @@ minetest.register_node("minecraft:ladder", { sunlight_propagates = true, walkable = true, climbable = true, + sounds = block_sound('wood'), node_box = { type = "wallmounted", wall_side = { -0.5, -0.5, -0.5, -7/16, 0.5, 0.5 }, diff --git a/mods/minecraft/blocks/sponge.lua b/mods/minecraft/blocks/sponge.lua index 8dc7e03..64beae0 100644 --- a/mods/minecraft/blocks/sponge.lua +++ b/mods/minecraft/blocks/sponge.lua @@ -5,7 +5,8 @@ minetest.register_node("minecraft:sponge", { groups = {crumbly=3}, on_construct = function(pos) sponge_behavior(pos) - end + end, + sounds = block_sound('grass') }) minetest.register_abm({ diff --git a/mods/minecraft/blocks/torch.lua b/mods/minecraft/blocks/torch.lua index eb51730..07276bd 100644 --- a/mods/minecraft/blocks/torch.lua +++ b/mods/minecraft/blocks/torch.lua @@ -38,6 +38,7 @@ local floordef = { light_source = minetest.LIGHT_MAX, groups = groups, drop = itemstring, + sounds = block_sound('wood'), selection_box = { type = "wallmounted", wall_top = {-1/16, -1/16, -1/16, 1/16, 0.5, 1/16}, diff --git a/mods/minecraft/init.lua b/mods/minecraft/init.lua index 2ff8917..5428ad6 100644 --- a/mods/minecraft/init.lua +++ b/mods/minecraft/init.lua @@ -1,11 +1,14 @@ dofile(minetest.get_modpath("minecraft") .. "/misc/farming.lua") +dofile(minetest.get_modpath("minecraft") .. "/sounds.lua") + dofile(minetest.get_modpath("minecraft") .. "/blocks.lua") dofile(minetest.get_modpath("minecraft") .. "/helpers.lua") dofile(minetest.get_modpath("minecraft") .. "/items.lua") dofile(minetest.get_modpath("minecraft") .. "/mapgen.lua") dofile(minetest.get_modpath("minecraft") .. "/recipes.lua") + -- devs drop apples on death! minetest.register_on_dieplayer(function(entity, reason) if entity:get_player_name() == "ROllerozxa" or entity:get_player_name() == "Danil_2461" then diff --git a/mods/minecraft/sounds.lua b/mods/minecraft/sounds.lua new file mode 100644 index 0000000..baed571 --- /dev/null +++ b/mods/minecraft/sounds.lua @@ -0,0 +1,25 @@ + +-- Returns a table with sounds for the given material. +function block_sound(material) + -- TODO: metal sounds + if material == "metal" then + material = "stone" + end + + local table = { + footstep = { + name = material, + gain = 1.0 + }, + dug = { + name = material, + gain = 1.0 + }, + place = { + name = material, + gain = 1.0 + } + } + + return table +end \ No newline at end of file diff --git a/mods/minecraft/sounds/.gitkeep b/mods/minecraft/sounds/.gitkeep new file mode 100644 index 0000000..e69de29