mods that hopefully work for a TechAge-based pack

This commit is contained in:
2026-09-09 06:27:51 -06:00
parent 4e6b08d194
commit c27db2a537
6234 changed files with 375578 additions and 0 deletions
@@ -0,0 +1,15 @@
Credits of sound files:
Note: Most sounds have not been used verbatim, but tweaked a little to be more suitable for the noteblock mod.
* mesecons_noteblock_litecrash.ogg
* License: CC BY 3.0
* by freesound.org user ani_music
* Source: https://freesound.org/people/ani_music/sounds/219612/
Everything else:
Created by Mesecons authors, licensed CC BY 3.0.
--------------------
License links:
* CC BY 3.0: http://creativecommons.org/licenses/by/3.0/
@@ -0,0 +1,13 @@
This effector makes a sound if powered and can be used for making music. Normally it makes piano sounds. The sound frequency can be changed by punching the block (only works for piano). There are some special sounds that depend on the block below:
<table colspace="5">
<tr><th>Block Below</th><th>Effect</th></tr>
<tr><td>Glass or Obsidian Glass</td><td>Hi-hat</td></tr>
<tr><td>Any stone</td><td>Kick</td></tr>
<tr><td>Chest or Locked Chest</td><td>Snare</td></tr>
<tr><td>Any tree</td><td>Crash</td></tr>
<tr><td>Any wooden planks</td><td>Lite Crash</td></tr>
<tr><td>Coal Block</td><td>Explosion sound (fixed pitch)</td></tr>
<tr><td>Lava Source</td><td>Fire sound (fixed pitch)</td></tr>
<tr><td>Steel Block</td><td>Piano (high pitch, one octave higher than normal)</td></tr>
<tr><td>Any other block</td><td>Piano (low pitch)</td></tr>
</table>
Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

+120
View File
@@ -0,0 +1,120 @@
local S = minetest.get_translator(minetest.get_current_modname())
minetest.register_node("mesecons_noteblock:noteblock", {
description = S("Noteblock"),
tiles = {"mesecons_noteblock.png"},
is_ground_content = false,
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2},
on_punch = function(pos, node, puncher) -- change sound when punched
if minetest.is_protected(pos, puncher and puncher:get_player_name() or "") then
return
end
node.param2 = (node.param2+1)%12
mesecon.noteblock_play(pos, node.param2)
minetest.set_node(pos, node)
end,
sounds = mesecon.node_sound.wood,
mesecons = {effector = { -- play sound when activated
action_on = function(pos, node)
mesecon.noteblock_play(pos, node.param2)
end
}},
place_param2 = 11, -- initialize at C note
on_blast = mesecon.on_blastnode,
})
minetest.register_craft({
output = "mesecons_noteblock:noteblock 1",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"group:mesecon_conductor_craftable", "mesecons_gamecompat:steel_ingot", "group:mesecon_conductor_craftable"},
{"group:wood", "group:wood", "group:wood"},
}
})
local soundnames = {
[0] = "mesecons_noteblock_csharp",
"mesecons_noteblock_d",
"mesecons_noteblock_dsharp",
"mesecons_noteblock_e",
"mesecons_noteblock_f",
"mesecons_noteblock_fsharp",
"mesecons_noteblock_g",
"mesecons_noteblock_gsharp",
"mesecons_noteblock_a",
"mesecons_noteblock_asharp",
"mesecons_noteblock_b",
"mesecons_noteblock_c" -- << noteblock is initialized here
}
local node_sounds = {}
for alias, sound in pairs({
["mesecons_gamecompat:lava_source"] = mesecon.sound_name.fire,
["mesecons_gamecompat:chest"] = "mesecons_noteblock_snare",
["mesecons_gamecompat:chest_locked"] = "mesecons_noteblock_snare",
["mesecons_gamecompat:coalblock"] = mesecon.sound_name.explode,
["mesecons_gamecompat:glass"] = "mesecons_noteblock_hihat",
["mesecons_gamecompat:obsidian_glass"] = "mesecons_noteblock_hihat",
}) do
local nodename = minetest.registered_aliases[alias]
if nodename then
node_sounds[nodename] = sound
end
end
local node_sounds_group = {
["stone"] = "mesecons_noteblock_kick",
["tree"] = "mesecons_noteblock_crash",
["wood"] = "mesecons_noteblock_litecrash",
}
local steelblock_nodename = minetest.registered_aliases["mesecons_gamecompat:steelblock"]
mesecon.noteblock_play = function(pos, param2)
pos.y = pos.y-1
local nodeunder = minetest.get_node(pos).name
local soundname = node_sounds[nodeunder]
local use_pitch = true
local pitch
-- Special sounds
if not soundname then
for k,v in pairs(node_sounds_group) do
local g = minetest.get_item_group(nodeunder, k)
if g ~= 0 then
soundname = v
break
end
end
end
-- Piano
if not soundname then
soundname = soundnames[param2]
if not soundname then
minetest.log("error", "[mesecons_noteblock] No soundname found, test param2")
return
end
if nodeunder == steelblock_nodename then
soundname = soundname.. 2
end
use_pitch = false
end
-- Disable pitch for fire and explode because they'd sound too odd
if soundname == "fire_fire" or soundname == "tnt_explode" then
use_pitch = false
end
if use_pitch then
-- Calculate pitch
-- Adding 1 to param2 because param2=11 is *lowest* pitch sound
local val = (param2+1)%12
pitch = 2^((val-6)/12)
end
pos.y = pos.y+1
if soundname == "fire_fire" then
-- Smoothly fade out fire sound
local handle = minetest.sound_play(soundname, {pos = pos, loop = true})
minetest.after(3.0, minetest.sound_fade, handle, -1.5, 0.0)
else
minetest.sound_play(soundname, {pos = pos, pitch = pitch}, true)
end
end
@@ -0,0 +1,2 @@
# textdomain: mesecons_noteblock
Noteblock=Notenblock
@@ -0,0 +1,4 @@
# textdomain: mesecons_noteblock
### init.lua ###
Noteblock=Sonbloko
@@ -0,0 +1,4 @@
# textdomain: mesecons_noteblock
### init.lua ###
Noteblock=Bloc de musique
@@ -0,0 +1,4 @@
# textdomain: mesecons_noteblock
### init.lua ###
Noteblock=Нотный блок
@@ -0,0 +1,4 @@
# textdomain: mesecons_noteblock
### init.lua ###
Noteblock=Нотний блок
@@ -0,0 +1,4 @@
# textdomain: mesecons_noteblock
### init.lua ###
Noteblock=
@@ -0,0 +1,2 @@
name = mesecons_noteblock
depends = mesecons, mesecons_gamecompat
Binary file not shown.

After

Width:  |  Height:  |  Size: 836 B