many worldgen mods and gonna try technic now

This commit is contained in:
tangent committed 2026-09-13 03:30:48 -06:00
1 parent bac6ac94a3
commit 548749cb1a
4811 files changed
+163271 -1

No files matched your search

+24
View File
@@ -0,0 +1,24 @@
Sounds and textures are under various licenses, see the license.txt file in the /sounds and /textures directories for details.
License for Code
----------------
Copyright (C) 2018 FaceDeer
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+215
View File
@@ -0,0 +1,215 @@
local modname = minetest.get_current_modname()
local S = minetest.get_translator(modname)
local modpath = minetest.get_modpath(modname)
dofile(modpath.."/wisp.lua")
local gas_desc
local gas_usage
local seep_desc
local seep_usage
if minetest.get_modpath("doc") then
gas_desc = S("Gaseous hydrocarbons formed from the detritus of long dead plants and animals processed by heat and pressure deep within the earth.")
gas_usage = S("Gas is highly hazardous. Heavier than air, it pools in deep caverns and asphyxiates the unwary.")
if minetest.get_modpath("tnt") then
gas_usage = gas_usage .. " " .. S("When exposed to air and an ignition source it can produce a deadly explosion.")
end
seep_desc = S("Some coal deposits have cracks that seep a steady flow of mine gas.")
seep_usage = S("Mining out such a deposit seals the crack.")
end
minetest.register_alias("oil:gas", "mine_gas:gas")
minetest.register_alias("oil:gas_seep", "mine_gas:gas_seep")
minetest.register_node("mine_gas:gas", {
description = S("Mine Gas"),
_doc_items_longdesc = gas_desc,
_doc_items_usagehelp = gas_usage,
walkable = false,
pointable = false,
diggable = false,
is_ground_content = false,
buildable_to = true,
drawtype = "glasslike",
drowning = 1,
post_effect_color = {a = 20, r = 20, g = 20, b = 250},
tiles = {"mine_gas.png^[opacity:28"},
use_texture_alpha = "blend",
groups = {not_in_creative_inventory=1, ropes_can_extend_into=1, not_solid=1, not_opaque=1},
paramtype = "light",
drop = {},
sunlight_propagates = true,
--on_blast = function() end, -- unaffected by explosions
})
minetest.register_node("mine_gas:gas_seep", {
description = S("Gas Seep"),
_doc_items_longdesc = seep_desc,
_doc_items_usagehelp = seep_usage,
tiles = {df_dependencies.texture_stone.."^"..df_dependencies.texture_mineral_coal.."^[combine:16x80:0,-16=crack_anylength.png"},
groups = {cracky = 3, pickaxey=1, building_block=1, material_stone=1},
drop = df_dependencies.node_name_coal_lump,
sounds = df_dependencies.sound_stone(),
is_ground_content = true,
_mcl_blast_resistance = 5,
_mcl_hardness = 3,
})
minetest.register_on_dignode(function(pos, oldnode, digger)
if minetest.get_item_group(oldnode.name, "digtron") > 0 then
-- skip digtron moved nodes
return;
end
local np = minetest.find_node_near(pos, 1,{"mine_gas:gas"})
if np ~= nil then
minetest.set_node(pos, {name = "mine_gas:gas"})
return
end
end)
local directions = {
{x=1, y=0, z=0},
{x=-1, y=0, z=0},
{x=0, y=0, z=1},
{x=0, y=0, z=-1},
}
local gas_node = {name="mine_gas:gas"}
minetest.register_abm({
label = "mine_gas:gas movement",
nodenames = {"mine_gas:gas"},
neighbors = {"group:liquid", "air"},
interval = 1.0,
chance = 1,
catch_up = true,
action = function(pos, node)
local next_pos = {x=pos.x, y=pos.y+1, z=pos.z}
local next_node = minetest.get_node(next_pos)
if minetest.get_item_group(next_node.name, "liquid") > 0 then
minetest.swap_node(next_pos, gas_node)
minetest.swap_node(pos, next_node)
else
next_pos.y = pos.y-1
next_node = minetest.get_node(next_pos)
if next_node.name == "air" then
minetest.swap_node(next_pos, gas_node)
minetest.swap_node(pos, next_node)
else
local dir = directions[math.random(1,4)]
local next_pos = vector.add(pos, dir)
local next_node = minetest.get_node(next_pos)
if next_node.name == "air" or minetest.get_item_group(next_node.name, "liquid") > 0 then
if next_node.name == "air" or math.random() < 0.5 then -- gas never "climbs" above air.
minetest.swap_node(next_pos, gas_node)
minetest.swap_node(pos, next_node)
else
-- this can get gas to rise up out of the surface of liquid, preventing it from forming a permanent hole.
next_pos.y = next_pos.y + 1
next_node = minetest.get_node(next_pos)
if next_node.name == "air" then
minetest.swap_node(next_pos, gas_node)
minetest.swap_node(pos, next_node)
end
end
end
end
end
end,
})
local soundfile_cool_lava = df_dependencies.soundfile_cool_lava
minetest.register_abm({
label = "mine_gas:gas snuffing torches",
nodenames = {"group:torch"},
neighbors = {"mine_gas:gas"},
interval = 1.0,
chance = 1,
catch_up = true,
action = function(pos, node)
if not minetest.find_node_near(pos, 1, "air") then
local torch_node = minetest.get_node(pos)
local drops = minetest.get_node_drops(torch_node.name, "")
for _, dropped_item in pairs(drops) do
minetest.add_item(pos, dropped_item)
end
minetest.set_node(pos, {name="mine_gas:gas"})
minetest.sound_play(
soundfile_cool_lava,
{pos = pos, max_hear_distance = 16, gain = 0.1}
)
end
end,
})
local tnt_boom = df_dependencies.tnt_boom
if tnt_boom then
minetest.register_abm({
label = "mine_gas:gas ignition",
nodenames = {"group:torch", "group:igniter", "group:fire"}, -- checking for ignition sources because there will be fewer than there are gas nodes
neighbors = {"mine_gas:gas"},
interval = 1.0,
chance = 1,
catch_up = true,
action = function(pos, node)
if minetest.find_node_near(pos, 1, "air") then
tnt_boom(pos, {radius=1, damage_radius=6})
-- One in a hundred explosions will spawn a gas wisp
if math.random() < 0.01 then
minetest.set_node(pos, {name="mine_gas:gas_wisp"})
end
end
end,
})
end
local orthogonal = {
{x=0,y=0,z=1},
{x=0,y=1,z=0},
{x=1,y=0,z=0},
{x=0,y=0,z=-1},
{x=0,y=-1,z=0},
{x=-1,y=0,z=0},
}
local stone_with_coal = df_dependencies.node_name_stone_with_coal
minetest.register_lbm({
label = "shut down gas seeps near lava",
name = "mine_gas:shut_down_lava_adjacent",
nodenames = {"mine_gas:gas_seep"},
run_at_every_load = true,
action = function(pos, node)
minetest.after(math.random()*60, function()
if minetest.find_node_near(pos, 30, "group:lava") then
minetest.set_node(pos, {name=stone_with_coal})
end
end)
end,
})
minetest.register_abm({
label = "mine_gas:gas seep",
nodenames = {"mine_gas:gas_seep"},
neighbors = {"air"},
interval = 1.0,
chance = 1,
catch_up = true,
action = function(pos, node)
local target_pos = vector.add(pos,orthogonal[math.random(1,6)])
if minetest.get_node(target_pos).name == "air" then
minetest.swap_node(target_pos, {name="mine_gas:gas"})
if math.random() < 0.5 then
minetest.sound_play(
"mine_gas_seep_hiss",
{pos = pos, max_hear_distance = 8, gain = 0.05}
)
end
end
end,
})
@@ -0,0 +1,36 @@
# textdomain: mine_gas
### init.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Gas Seep=Gassickern
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Gas is highly hazardous. Heavier than air, it pools in deep caverns and asphyxiates the unwary.=Gas ist sehr gefährlich. Schwerer als Luft, sammelt es sich in tiefen Höhlen und erstickt die Unachtsamen.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Gaseous hydrocarbons formed from the detritus of long dead plants and animals processed by heat and pressure deep within the earth.=Gasförmige Kohlenwasserstoffe, die aus dem Abfall langer toter Pflanzen und Tiere entstehen, die durch Hitze und Druck tief in der Erde verarbeitet werden.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Mine Gas=Minengas
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Mining out such a deposit seals the crack.=Durch den Abbau einer solchen Ablagerung wird der Riss versiegelt.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Some coal deposits have cracks that seep a steady flow of mine gas.=Einige Kohlevorkommen weisen Risse auf, die einen stetigen Fluss von Minengas versickern lassen.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
When exposed to air and an ignition source it can produce a deadly explosion.=Wenn es Luft und einer Zündquelle ausgesetzt wird, kann es zu einer tödlichen Explosion kommen.
### wisp.lua ###
Gas Wisp=
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Gas Wisps have no known use, and fortunately they are not hostile or very dangerous.=Gas-Wisps haben keine bekannte Verwendung und sind glücklicherweise nicht feindlich oder sehr gefährlich.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Mysterious blue flames may occasionally be found flickering on the edges of oil lakes, burning without oxygen and seeming to maintain their size as they drift about through the unbreathable atmosphere.=Gelegentlich flackern mysteriöse blaue Flammen an den Rändern von Ölseen, brennen ohne Sauerstoff und scheinen ihre Größe beizubehalten, wenn sie durch die unatmbare Atmosphäre treiben.
@@ -0,0 +1,35 @@
# textdomain: mine_gas
### init.lua ###
Gas Seep=
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Gas is highly hazardous. Heavier than air, it pools in deep caverns and asphyxiates the unwary.=Il gas è altamente pericoloso. Più pesante dell'aria, si accumula in profonde caverne e asfissia gli incauti.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Gaseous hydrocarbons formed from the detritus of long dead plants and animals processed by heat and pressure deep within the earth.=Idrocarburi gassosi formati dai detriti di piante e animali morti da tempo lavorati dal calore e dalla pressione nelle profondità della terra.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Mine Gas=Il mio gas
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Mining out such a deposit seals the crack.=L'estrazione di un tale deposito sigilla la fessura.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Some coal deposits have cracks that seep a steady flow of mine gas.=Alcuni depositi di carbone hanno crepe che filtrano un flusso costante di gas di miniera.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
When exposed to air and an ignition source it can produce a deadly explosion.=Se esposto all'aria e ad una fonte di ignizione può produrre un'esplosione mortale.
### wisp.lua ###
Gas Wisp=
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Gas Wisps have no known use, and fortunately they are not hostile or very dangerous.=I Gas Wisps non hanno un uso noto e fortunatamente non sono ostili o molto pericolosi.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Mysterious blue flames may occasionally be found flickering on the edges of oil lakes, burning without oxygen and seeming to maintain their size as they drift about through the unbreathable atmosphere.=Occasionalmente si possono trovare misteriose fiamme blu tremolanti sui bordi dei laghi petroliferi, che bruciano senza ossigeno e sembrano mantenere le loro dimensioni mentre vagano nell'atmosfera irrespirabile.
@@ -0,0 +1,27 @@
# textdomain: mine_gas
### init.lua ###
Gas Seep=
Gas is highly hazardous. Heavier than air, it pools in deep caverns and asphyxiates the unwary.=
Gaseous hydrocarbons formed from the detritus of long dead plants and animals processed by heat and pressure deep within the earth.=
Mine Gas=
Mining out such a deposit seals the crack.=
Some coal deposits have cracks that seep a steady flow of mine gas.=
When exposed to air and an ignition source it can produce a deadly explosion.=
### wisp.lua ###
Gas Wisp=
Gas Wisps have no known use, and fortunately they are not hostile or very dangerous.=
Mysterious blue flames may occasionally be found flickering on the edges of oil lakes, burning without oxygen and seeming to maintain their size as they drift about through the unbreathable atmosphere.=
+4
View File
@@ -0,0 +1,4 @@
name = mine_gas
description = An explosive, asphyxiating heavier-than-air gas to add hazards to caves
depends = df_dependencies
optional_depends = tnt, doc
@@ -0,0 +1,2 @@
mine_gas_seep_hiss.1 is from https://freesound.org/people/wubitog/sounds/234782/ under the public domain (CC0)
mine_gas_seep_hiss.2 is from https://freesound.org/people/kgatto/sounds/240263/ by kgatto under the CC-BY-3.0 license
@@ -0,0 +1 @@
All textures not specifically listed here are created by FaceDeer and released under both the MIT license and under the Creative Commons CC0 license.
Binary file not shown.

After

Width:  |  Height:  |  Size: 83 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 567 B

+89
View File
@@ -0,0 +1,89 @@
local modname = minetest.get_current_modname()
local S = minetest.get_translator(modname)
local wisp_desc
local wisp_usage
if minetest.get_modpath("doc") then
wisp_desc = S("Mysterious blue flames may occasionally be found flickering on the edges of oil lakes, burning without oxygen and seeming to maintain their size as they drift about through the unbreathable atmosphere.")
wisp_usage = S("Gas Wisps have no known use, and fortunately they are not hostile or very dangerous.")
end
minetest.register_node("mine_gas:gas_wisp", {
description = S("Gas Wisp"),
_doc_items_longdesc = wisp_desc,
_doc_items_usagehelp = wisp_usage,
walkable = false,
is_ground_content = false,
diggable = false,
buildable_to = true,
drawtype = "plantlike",
waving = 1,
drowning = 1,
damage_per_second = 4,
post_effect_color = {a = 20, r = 20, g = 20, b = 250},
tiles = {{name = "mine_gas_wisp.png", animation =
{
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5,
},
}},
light_source = 10,
use_texture_alpha = "clip",
groups = {not_in_creative_inventory=0},
paramtype = "light",
paramtype2 = "meshoptions",
place_param2 = 0,
-- * bit 4 (0x10, decimal 16) - Makes the plant mesh 1.4x larger
inventory_image = "mine_gas_wisp_inventory.png",
drop = {},
sunlight_propagates = true,
on_blast = function() end, -- unaffected by explosions
_mcl_blast_resistance = 3600000,
_mcl_hardness = 0,
})
minetest.register_abm({
label = "mine_gas:gas wisp movement",
nodenames = {"mine_gas:gas_wisp"},
neighbors = {"mine_gas:gas"},
interval = 1.0,
chance = 10,
catch_up = true,
action = function(pos, node)
local next_pos = {x=pos.x+math.random(1,3)-2, y=pos.y+math.random(1,3)-2, z=pos.z+math.random(1,3)-2}
local next_node = minetest.get_node(next_pos)
if next_node.name == "mine_gas:gas" then
minetest.swap_node(next_pos, node)
minetest.swap_node(pos, next_node)
end
pos = next_pos
end,
})
minetest.register_abm({
label = "mine_gas:gas wisp extinguish",
nodenames = {"mine_gas:gas_wisp"},
neighbors = {"air"},
interval = 10,
chance = 1,
catch_up = true,
action = function(pos, node)
for y = -1, 1 do
for x = -1, 1 do
for z = -1, 1 do
local node_name = minetest.get_node({x=pos.x+x, y=pos.y+y, z=pos.z+z}).name
if node_name == "mine_gas:gas" or minetest.get_item_group(node_name, "flammable") > 0 then
-- there's gas or a flammable adjacent, don't extinguish
return
end
end
end
end
-- no gas adjacent, extinguish
minetest.set_node(pos, {name="air"})
end,
})