1
0
mirror of https://github.com/adrido/darkage.git synced 2025-06-28 14:36:22 +02:00

3 Commits

Author SHA1 Message Date
c334970311 removed sandstone_cobble and desert_stone_cobble because its in default
removed sandstone_cobble and desert_stone_cobble because its in default
the moreblocks mod is now only a option
added alias for sandstone_cobble and desert_stone_cobble
2013-07-12 17:26:24 +02:00
9ccd5caf09 Update README.md 2013-05-13 16:21:40 +02:00
0b908c3d67 bugfix (1.0.2)
deleted dofile from init.lua
2013-05-11 05:41:07 +02:00
9 changed files with 713 additions and 412 deletions

22
.gitattributes vendored Normal file
View File

@ -0,0 +1,22 @@
# Auto detect text files and perform LF normalization
* text=auto
# Custom for Visual Studio
*.cs diff=csharp
*.sln merge=union
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union
# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain

163
.gitignore vendored Normal file
View File

@ -0,0 +1,163 @@
#################
## Eclipse
#################
*.pydevproject
.project
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.classpath
.settings/
.loadpath
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# CDT-specific
.cproject
# PDT-specific
.buildpath
#################
## Visual Studio
#################
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.sln.docstates
# Build results
[Dd]ebug/
[Rr]elease/
*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.vspscc
.builds
*.dotCover
## TODO: If you have NuGet Package Restore enabled, uncomment this
#packages/
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
# Visual Studio profiler
*.psess
*.vsp
# ReSharper is a .NET coding add-in
_ReSharper*
# Installshield output folder
[Ee]xpress
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish
# Others
[Bb]in
[Oo]bj
sql
TestResults
*.Cache
ClientBin
stylecop.*
~$*
*.dbmdl
Generated_Code #added for RIA/Silverlight projects
# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
############
## Windows
############
# Windows image file caches
Thumbs.db
# Folder config file
Desktop.ini
#############
## Python
#############
*.py[co]
# Packages
*.egg
*.egg-info
dist
build
eggs
parts
bin
var
sdist
develop-eggs
.installed.cfg
# Installer logs
pip-log.txt
# Unit test / coverage reports
.coverage
.tox
#Translations
*.mo
#Mr Developer
.mr.developer.cfg
# Mac crap
.DS_Store

View File

@ -33,10 +33,19 @@ Version 1.0.1
Version 1.0 Version 1.0
* a lot of more nodes because using moreblocks stairgen * compatibility with stairsplus added
* 2 sorts of medieval glass added * added new item iron_stick
* chalk can crafted from chalk powder * added craft reziep for iron stick
* fixed some craft reziep conflicts * changed reziep of iron_bars to avoid conflicts with ironbars mod
* changed reziep of chain to avoid conflicts with 3d furniture mod
* changed reziep of darkage:stonebrick to avoid conflicts with moreblocks
* dissabled marble_tile to avoid the message "texture not found"
* added compatibililty with stairsplus (now its moreblocks)
* added darkage:glass a nice looking glass that must be in this mod
* changed the sound_node_leaves_default to wood_default from box and wooden shelfes
* added craft reziep for darkage:chalk
* improved the textures of reinforced wood and chalk to save a bit more loadtime on servers
* added another reziep for darkage straw (this can be crafted now, if farming is installed, with farming:harvested_weed
Version 0.3 Version 0.3
@ -359,4 +368,4 @@ http://minetest.net/
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO. 0. You just DO WHAT THE FUCK YOU WANT TO.

2
alias.lua Normal file
View File

@ -0,0 +1,2 @@
minetest.register_alias("darkage:sandstone_cobble", "default:sandstonebrick")
minetest.register_alias("darkage:desert_stone_cobble", "default:desert_stonebrick")

View File

@ -1,2 +1,3 @@
default default
moreblocks farming?
moreblocks?

130
init.lua
View File

@ -3,9 +3,12 @@ print (" ---- Dark Age is Loading! ---- ")
dofile(minetest.get_modpath("darkage").."/mapgen.lua") dofile(minetest.get_modpath("darkage").."/mapgen.lua")
dofile(minetest.get_modpath("darkage").."/building.lua") dofile(minetest.get_modpath("darkage").."/building.lua")
dofile(minetest.get_modpath("darkage").."/furniture.lua") dofile(minetest.get_modpath("darkage").."/furniture.lua")
dofile(minetest.get_modpath("darkage").."/compatibility.lua") dofile(minetest.get_modpath("darkage").."/alias.lua")
--dofile(minetest.get_modpath("darkage").."/stairs.lua") if minetest.get_modpath("moreblocks") then
dofile(minetest.get_modpath("darkage").."/stairsplus.lua") dofile(minetest.get_modpath("darkage").."/stairsplus.lua")--only if moreblocks installed
else
dofile(minetest.get_modpath("darkage").."/stairs.lua")
end
---------- ----------
-- Items -- Items
---------- ----------
@ -55,13 +58,13 @@ minetest.register_node("darkage:cobble_with_plaster", {
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
}) })
minetest.register_node("darkage:desert_stone_cobble", { --minetest.register_node("darkage:desert_stone_cobble", {
description = "Desert Stone Cobble", -- description = "Desert Stone Cobble",
tiles = {"darkage_desert_stone_cobble.png"}, -- tiles = {"darkage_desert_stone_cobble.png"},
is_ground_content = true, -- is_ground_content = true,
groups = {cracky=3}, -- groups = {cracky=3},
sounds = default.node_sound_stone_defaults() -- sounds = default.node_sound_stone_defaults()
}) --})
minetest.register_node("darkage:desert_stone_with_iron", { minetest.register_node("darkage:desert_stone_with_iron", {
description = "Desert Iron Ore", description = "Desert Iron Ore",
@ -156,13 +159,15 @@ minetest.register_node("darkage:ors_cobble", {
}) })
minetest.register_node("darkage:sandstone_cobble", { --minetest.register_node("darkage:sandstone_cobble", {
description = "Sandstone Cobble", -- description = "Sandstone Cobble",
tiles = {"darkage_sandstone_cobble.png"}, -- tiles = {"darkage_sandstone_cobble.png"},
is_ground_content = true, -- is_ground_content = true,
groups = {crumbly=2,cracky=2}, -- groups = {crumbly=2,cracky=2},
sounds = default.node_sound_stone_defaults() -- sounds = default.node_sound_stone_defaults()
}) --})
minetest.register_node("darkage:serpentine", { minetest.register_node("darkage:serpentine", {
description = "Serpentine", description = "Serpentine",
@ -268,19 +273,19 @@ minetest.register_node("darkage:marble", {
--------------- ---------------
-- Overrides -- Overrides
--------------- ---------------
minetest.registered_nodes["default:desert_stone"].drop= { --minetest.registered_nodes["default:desert_stone"].drop= {
max_items = 1, -- max_items = 1,
items = { -- items = {
{ -- {
-- player will get cobbles with 1/3 chance -- -- player will get cobbles with 1/3 chance
items = {'darkage:desert_stone_cobble'}, -- items = {'darkage:desert_stone_cobble'},
rarity = 2, -- rarity = 2,
}, -- },
{ -- {
items = {'default:desert_stone'}, -- items = {'default:desert_stone'},
} -- }
} -- }
} --}
--------------- ---------------
@ -338,6 +343,14 @@ minetest.register_craft({
} }
}) })
minetest.register_craft({
output = 'darkage:chalk 2',
recipe = {
{'darkage:chalk_powder','darkage:chalk_powder'},
{'darkage:chalk_powder','darkage:chalk_powder'},
}
})
minetest.register_craft({ minetest.register_craft({
output = 'darkage:cobble_with_plaster 2', output = 'darkage:cobble_with_plaster 2',
recipe = { recipe = {
@ -378,13 +391,13 @@ minetest.register_craft({
} }
}) })
minetest.register_craft({ --minetest.register_craft({
output = 'darkage:ors_cobble 4', -- output = 'darkage:ors_cobble 4',
recipe = { -- recipe = {
{'darkage:sandstone_cobble','darkage:sandstone_cobble'}, -- {'darkage:sandstone_cobble','darkage:sandstone_cobble'},
{'default:iron_lump','darkage:sandstone_cobble'}, -- {'default:iron_lump','darkage:sandstone_cobble'},
} -- }
}) --})
minetest.register_craft({ minetest.register_craft({
output = 'darkage:silt 3', output = 'darkage:silt 3',
@ -435,6 +448,19 @@ minetest.register_craft({
} }
}) })
if minetest.get_modpath("farming") then
--only if farming installed
minetest.register_craft({
output = 'darkage:straw 4',
recipe = {
{'farming:wheat_harvested','farming:wheat_harvested'},
{'farming:wheat_harvested','farming:wheat_harvested'},
}
})
else
--nothing else
end
minetest.register_craft({ minetest.register_craft({
output = 'darkage:straw_bale', output = 'darkage:straw_bale',
recipe = { recipe = {
@ -457,11 +483,11 @@ minetest.register_craft({
recipe = "darkage:basalt_cobble", recipe = "darkage:basalt_cobble",
}) })
minetest.register_craft({ --minetest.register_craft({
type = "cooking", -- type = "cooking",
output = "default:desert_stone", -- output = "default:desert_stone",
recipe = "darkage:desert_stone_cobble", -- recipe = "darkage:desert_stone_cobble",
}) --})
minetest.register_craft({ minetest.register_craft({
type = "cooking", type = "cooking",
@ -469,11 +495,11 @@ minetest.register_craft({
recipe = "default:leaves", recipe = "default:leaves",
}) })
minetest.register_craft({ --minetest.register_craft({
type = "cooking", -- type = "cooking",
output = "darkage:sandstone_cobble", -- output = "darkage:sandstone_cobble",
recipe = "default:sandstone", -- recipe = "default:sandstone",
}) --})
minetest.register_craft({ minetest.register_craft({
type = "cooking", type = "cooking",
@ -494,11 +520,11 @@ minetest.register_craft({
}) })
minetest.register_craft({ --minetest.register_craft({
type = "cooking", -- type = "cooking",
output = "darkage:sandstone_cobble", -- output = "darkage:sandstone_cobble",
recipe = "default:sandstone", -- recipe = "default:sandstone",
}) --})
minetest.register_craft({ minetest.register_craft({
type = "cooking", type = "cooking",

View File

@ -1,255 +1,255 @@
--Makes a stratus of rocks --Makes a stratus of rocks
--name of the rock to generate --name of the rock to generate
--wherein kind of node to replace, for example default:stone --wherein kind of node to replace, for example default:stone
--minp, maxp the corners of the map to be generated --minp, maxp the corners of the map to be generated
--seed random seed --seed random seed
--stratus_chance inverse probability in a given radius 1:2, 1:3 etc --stratus_chance inverse probability in a given radius 1:2, 1:3 etc
--radius horizontal radius of the stratus --radius horizontal radius of the stratus
--radius_y vertical radius of the stratus --radius_y vertical radius of the stratus
--deep how deep can be from the ground --deep how deep can be from the ground
local function generate_stratus(name, wherein, ceilin, ceil, minp, maxp, seed, stratus_chance, radius, radius_y, deep, height_min, height_max) local function generate_stratus(name, wherein, ceilin, ceil, minp, maxp, seed, stratus_chance, radius, radius_y, deep, height_min, height_max)
if maxp.y < height_min or minp.y > height_max then if maxp.y < height_min or minp.y > height_max then
return return
end end
-- it will be only generate a stratus for every 100 m of area -- it will be only generate a stratus for every 100 m of area
local stratus_per_volume=1 local stratus_per_volume=1
local area=45 local area=45
local y_min = math.max(minp.y, height_min) local y_min = math.max(minp.y, height_min)
local y_max = math.min(maxp.y, height_max) local y_max = math.min(maxp.y, height_max)
local volume = ((maxp.x-minp.x+1)/area)*((y_max-y_min+1)/area)*((maxp.z-minp.z+1)/area) local volume = ((maxp.x-minp.x+1)/area)*((y_max-y_min+1)/area)*((maxp.z-minp.z+1)/area)
local pr = PseudoRandom(seed) local pr = PseudoRandom(seed)
local blocks = math.floor(stratus_per_volume*volume) local blocks = math.floor(stratus_per_volume*volume)
print(" <<"..dump(name)..">>"); print(" <<"..dump(name)..">>");
if blocks == 0 then if blocks == 0 then
blocks = 1 blocks = 1
end end
print(" blocks: "..dump(blocks).." in vol: "..dump(volume).." ("..dump(maxp.x-minp.x+1)..","..dump(y_max-y_min+1)..","..dump(maxp.z-minp.z+1)..")") print(" blocks: "..dump(blocks).." in vol: "..dump(volume).." ("..dump(maxp.x-minp.x+1)..","..dump(y_max-y_min+1)..","..dump(maxp.z-minp.z+1)..")")
for i=1,blocks do for i=1,blocks do
local x = pr:next(1,stratus_chance) local x = pr:next(1,stratus_chance)
if x == 1 then if x == 1 then
-- TODO deep -- TODO deep
local y0=y_max-radius_y+1 local y0=y_max-radius_y+1
if y0 < y_min then if y0 < y_min then
y0=y_min y0=y_min
else else
y0=pr:next(y_min, y0) y0=pr:next(y_min, y0)
end end
local x0 = maxp.x-radius+1 local x0 = maxp.x-radius+1
if x0 < minp.x then if x0 < minp.x then
x0 = minp.x x0 = minp.x
else else
x0 = pr:next(minp.x, x0) x0 = pr:next(minp.x, x0)
end end
local z0 = maxp.z-radius+1 local z0 = maxp.z-radius+1
if z0 < minp.z then if z0 < minp.z then
x0 = minp.z x0 = minp.z
else else
z0 = pr:next(minp.z, z0) z0 = pr:next(minp.z, z0)
end end
local p0 = {x=x0, y=y0, z=z0} local p0 = {x=x0, y=y0, z=z0}
local n = minetest.env:get_node(p0).name local n = minetest.env:get_node(p0).name
local i = 0 local i = 0
--print(" upper node "..n) --print(" upper node "..n)
x = 0 x = 0
for k, v in ipairs(ceilin) do for k, v in ipairs(ceilin) do
if n == v then if n == v then
x = 1 x = 1
break break
end end
end end
if x == 1 then if x == 1 then
-- search for the node to replace -- search for the node to replace
--print(" Searching nodes to replace from "..dump(y0-1).." to "..dump(y_min)) --print(" Searching nodes to replace from "..dump(y0-1).." to "..dump(y_min))
for y1=y0-1,y_min,-1 do for y1=y0-1,y_min,-1 do
p0.y=y1 p0.y=y1
n = minetest.env:get_node(p0).name n = minetest.env:get_node(p0).name
x = 0 x = 0
for k, v in ipairs(wherein) do for k, v in ipairs(wherein) do
if n == v then if n == v then
x = 1 x = 1
break break
end end
end end
if x == 1 then if x == 1 then
y0=y1-deep y0=y1-deep
if y0 < y_min then if y0 < y_min then
y0 = y_min y0 = y_min
end end
break break
end end
end end
local rx=pr:next(radius/2,radius)+1 local rx=pr:next(radius/2,radius)+1
local rz=pr:next(radius/2,radius)+1 local rz=pr:next(radius/2,radius)+1
local ry=pr:next(radius_y/2,radius_y)+1 local ry=pr:next(radius_y/2,radius_y)+1
--print(" area of generation ("..dump(rx)..","..dump(rz)..","..dump(ry)..")") --print(" area of generation ("..dump(rx)..","..dump(rz)..","..dump(ry)..")")
for x1=0,rx do for x1=0,rx do
rz = rz + 3 - pr:next(1,6) rz = rz + 3 - pr:next(1,6)
if rz < 1 then if rz < 1 then
rz = 1 rz = 1
end end
for z1=pr:next(1,3),rz do for z1=pr:next(1,3),rz do
local ry0=ry+ pr:next(1,3) local ry0=ry+ pr:next(1,3)
for y1=pr:next(1,3),ry0 do for y1=pr:next(1,3),ry0 do
local x2 = x0+x1 local x2 = x0+x1
local y2 = y0+y1 local y2 = y0+y1
local z2 = z0+z1 local z2 = z0+z1
local p2 = {x=x2, y=y2, z=z2} local p2 = {x=x2, y=y2, z=z2}
n = minetest.env:get_node(p2).name n = minetest.env:get_node(p2).name
x = 0 x = 0
for k, v in ipairs(wherein) do for k, v in ipairs(wherein) do
if n == v then if n == v then
x = 1 x = 1
break break
end end
end end
if x == 1 then if x == 1 then
if ceil == nil then if ceil == nil then
minetest.env:set_node(p2, {name=name}) minetest.env:set_node(p2, {name=name})
i = i +1 i = i +1
else else
local p3 = {p2.x,p2.y+1,p2} local p3 = {p2.x,p2.y+1,p2}
if minetest.env:get_node(p3).name == ceil then if minetest.env:get_node(p3).name == ceil then
minetest.env:set_node(p2, {name=name}) minetest.env:set_node(p2, {name=name})
i = i +1 i = i +1
end end
end end
end end
end end
end end
end end
print(" generated "..dump(i).." blocks in ("..dump(x0)..","..dump(y0)..","..dump(z0)..")") print(" generated "..dump(i).." blocks in ("..dump(x0)..","..dump(y0)..","..dump(z0)..")")
end end
end end
end end
--print("generate_ore done") --print("generate_ore done")
end end
local function generate_claylike(name, minp, maxp, seed, chance, minh, maxh, dirt) local function generate_claylike(name, minp, maxp, seed, chance, minh, maxh, dirt)
if maxp.y >= maxh+1 and minp.y <= minh-1 then if maxp.y >= maxh+1 and minp.y <= minh-1 then
local pr = PseudoRandom(seed) local pr = PseudoRandom(seed)
local divlen = 4 local divlen = 4
local divs = (maxp.x-minp.x)/divlen+1; local divs = (maxp.x-minp.x)/divlen+1;
for yy=minh,maxh do for yy=minh,maxh do
local x = pr:next(1,chance) local x = pr:next(1,chance)
if x == 1 then if x == 1 then
for divx=0+1,divs-1-1 do for divx=0+1,divs-1-1 do
for divz=0+1,divs-1-1 do for divz=0+1,divs-1-1 do
local cx = minp.x + math.floor((divx+0.5)*divlen) local cx = minp.x + math.floor((divx+0.5)*divlen)
local cz = minp.z + math.floor((divz+0.5)*divlen) local cz = minp.z + math.floor((divz+0.5)*divlen)
local up = minetest.env:get_node({x=cx,y=yy,z=cz}).name local up = minetest.env:get_node({x=cx,y=yy,z=cz}).name
local down = minetest.env:get_node({x=cx,y=yy-1,z=cz}).name local down = minetest.env:get_node({x=cx,y=yy-1,z=cz}).name
if ( up == "default:water_source" or up == "air" ) and if ( up == "default:water_source" or up == "air" ) and
( down == "default:sand" or (dirt == 1 and (down == "default:dirt" or down == "default:dirt_with_grass" ))) then ( down == "default:sand" or (dirt == 1 and (down == "default:dirt" or down == "default:dirt_with_grass" ))) then
local is_shallow = true local is_shallow = true
local num_water_around = 0 local num_water_around = 0
if minetest.env:get_node({x=cx-divlen*2,y=yy,z=cz}).name == "default:water_source" then if minetest.env:get_node({x=cx-divlen*2,y=yy,z=cz}).name == "default:water_source" then
num_water_around = num_water_around + 1 end num_water_around = num_water_around + 1 end
if minetest.env:get_node({x=cx+divlen*2,y=yy,z=cz}).name == "default:water_source" then if minetest.env:get_node({x=cx+divlen*2,y=yy,z=cz}).name == "default:water_source" then
num_water_around = num_water_around + 1 end num_water_around = num_water_around + 1 end
if minetest.env:get_node({x=cx,y=yy,z=cz-divlen*2}).name == "default:water_source" then if minetest.env:get_node({x=cx,y=yy,z=cz-divlen*2}).name == "default:water_source" then
num_water_around = num_water_around + 1 end num_water_around = num_water_around + 1 end
if minetest.env:get_node({x=cx,y=yy,z=cz+divlen*2}).name == "default:water_source" then if minetest.env:get_node({x=cx,y=yy,z=cz+divlen*2}).name == "default:water_source" then
num_water_around = num_water_around + 1 end num_water_around = num_water_around + 1 end
if num_water_around >= 3 then if num_water_around >= 3 then
is_shallow = false is_shallow = false
end end
if is_shallow then if is_shallow then
for x1=-divlen,divlen do for x1=-divlen,divlen do
for z1=-divlen,divlen do for z1=-divlen,divlen do
local p={x=cx+x1,y=yy-1,z=cz+z1} local p={x=cx+x1,y=yy-1,z=cz+z1}
down = minetest.env:get_node(p).name down = minetest.env:get_node(p).name
if down == "default:sand" or (dirt == 1 and (down == "default:dirt" or down == "default:dirt_with_grass")) then if down == "default:sand" or (dirt == 1 and (down == "default:dirt" or down == "default:dirt_with_grass")) then
minetest.env:set_node(p, {name=name}) minetest.env:set_node(p, {name=name})
end end
end end
end end
end end
end end
end end
end end
end end
end end
end end
end end
local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, chunk_size, ore_per_chunk, height_min, height_max) local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, chunk_size, ore_per_chunk, height_min, height_max)
if maxp.y < height_min or minp.y > height_max then if maxp.y < height_min or minp.y > height_max then
return return
end end
local y_min = math.max(minp.y, height_min) local y_min = math.max(minp.y, height_min)
local y_max = math.min(maxp.y, height_max) local y_max = math.min(maxp.y, height_max)
local volume = (maxp.x-minp.x+1)*(y_max-y_min+1)*(maxp.z-minp.z+1) local volume = (maxp.x-minp.x+1)*(y_max-y_min+1)*(maxp.z-minp.z+1)
local pr = PseudoRandom(seed) local pr = PseudoRandom(seed)
local num_chunks = math.floor(chunks_per_volume * volume) local num_chunks = math.floor(chunks_per_volume * volume)
local inverse_chance = math.floor(chunk_size*chunk_size*chunk_size / ore_per_chunk) local inverse_chance = math.floor(chunk_size*chunk_size*chunk_size / ore_per_chunk)
--print("generate_ore num_chunks: "..dump(num_chunks)) --print("generate_ore num_chunks: "..dump(num_chunks))
for i=1,num_chunks do for i=1,num_chunks do
local y0 = pr:next(y_min, y_max-chunk_size+1) local y0 = pr:next(y_min, y_max-chunk_size+1)
if y0 >= height_min and y0 <= height_max then if y0 >= height_min and y0 <= height_max then
local x0 = pr:next(minp.x, maxp.x-chunk_size+1) local x0 = pr:next(minp.x, maxp.x-chunk_size+1)
local z0 = pr:next(minp.z, maxp.z-chunk_size+1) local z0 = pr:next(minp.z, maxp.z-chunk_size+1)
local p0 = {x=x0, y=y0, z=z0} local p0 = {x=x0, y=y0, z=z0}
for x1=0,chunk_size-1 do for x1=0,chunk_size-1 do
for y1=0,chunk_size-1 do for y1=0,chunk_size-1 do
for z1=0,chunk_size-1 do for z1=0,chunk_size-1 do
if pr:next(1,inverse_chance) == 1 then if pr:next(1,inverse_chance) == 1 then
local x2 = x0+x1 local x2 = x0+x1
local y2 = y0+y1 local y2 = y0+y1
local z2 = z0+z1 local z2 = z0+z1
local p2 = {x=x2, y=y2, z=z2} local p2 = {x=x2, y=y2, z=z2}
if minetest.env:get_node(p2).name == wherein then if minetest.env:get_node(p2).name == wherein then
minetest.env:set_node(p2, {name=name}) minetest.env:set_node(p2, {name=name})
end end
end end
end end
end end
end end
end end
end end
--print("generate_ore done") --print("generate_ore done")
end end
minetest.register_on_generated(function(minp, maxp, seed) minetest.register_on_generated(function(minp, maxp, seed)
-- Generate stratus -- Generate stratus
print("DARKAGE: Generate stratus"); print("DARKAGE: Generate stratus");
generate_ore("darkage:desert_stone_with_iron", "default:desert_stone", minp, maxp, seed+0, 1/7/7/7, 3, 5, -15, 40) generate_ore("darkage:desert_stone_with_iron", "default:desert_stone", minp, maxp, seed+0, 1/7/7/7, 3, 5, -15, 40)
generate_claylike("darkage:mud", minp, maxp, seed+1, 4, 0, 2, 0) generate_claylike("darkage:mud", minp, maxp, seed+1, 4, 0, 2, 0)
generate_claylike("darkage:silt", minp, maxp, seed+2, 4, -1, 1, 1) generate_claylike("darkage:silt", minp, maxp, seed+2, 4, -1, 1, 1)
generate_stratus("darkage:chalk", generate_stratus("darkage:chalk",
{"default:stone"}, {"default:stone"},
{"default:stone","air"}, nil, {"default:stone","air"}, nil,
minp, maxp, seed+3, 4, 25, 8, 0, -20, 50) minp, maxp, seed+3, 4, 25, 8, 0, -20, 50)
generate_stratus("darkage:ors", generate_stratus("darkage:ors",
{"default:stone"}, {"default:stone"},
{"default:stone","air","default:water_source"}, nil, {"default:stone","air","default:water_source"}, nil,
minp, maxp, seed+4, 4, 25, 7, 50, -200, 500) minp, maxp, seed+4, 4, 25, 7, 50, -200, 500)
generate_stratus("darkage:shale", generate_stratus("darkage:shale",
{"default:stone"}, {"default:stone"},
{"default:stone","air"}, nil, {"default:stone","air"}, nil,
minp, maxp, seed+5, 4, 23, 7, 50, -50, 20) minp, maxp, seed+5, 4, 23, 7, 50, -50, 20)
generate_stratus("darkage:slate", generate_stratus("darkage:slate",
{"default:stone"}, {"default:stone"},
{"default:stone","air"}, nil, {"default:stone","air"}, nil,
minp, maxp, seed+6, 6, 23, 5, 50, -500, 0) minp, maxp, seed+6, 6, 23, 5, 50, -500, 0)
generate_stratus("darkage:schist", generate_stratus("darkage:schist",
{"default:stone"}, {"default:stone"},
{"default:stone","air"}, nil, {"default:stone","air"}, nil,
minp, maxp, seed+7, 6, 19, 6, 50, -31000, -10) minp, maxp, seed+7, 6, 19, 6, 50, -31000, -10)
generate_stratus("darkage:basalt", generate_stratus("darkage:basalt",
{"default:stone"}, {"default:stone"},
{"default:stone","air"}, nil, {"default:stone","air"}, nil,
minp, maxp, seed+8, 5, 20, 5, 20, -31000, -50) minp, maxp, seed+8, 5, 20, 5, 20, -31000, -50)
generate_stratus("darkage:marble", generate_stratus("darkage:marble",
{"default:stone"}, {"default:stone"},
{"default:stone","air"}, nil, {"default:stone","air"}, nil,
minp, maxp, seed+9, 4, 25, 6, 50, -31000, -75) minp, maxp, seed+9, 4, 25, 6, 50, -31000, -75)
generate_stratus("darkage:serpentine", generate_stratus("darkage:serpentine",
{"default:stone"}, {"default:stone"},
{"default:stone","air"}, nil, {"default:stone","air"}, nil,
minp, maxp, seed+10, 4, 28, 8, 50, -31000, -350) minp, maxp, seed+10, 4, 28, 8, 50, -31000, -350)
generate_stratus("darkage:gneiss", generate_stratus("darkage:gneiss",
{"default:stone"}, {"default:stone"},
{"default:stone","air"}, nil, {"default:stone","air"}, nil,
minp, maxp, seed+11, 4, 15, 5, 50, -31000, -250) minp, maxp, seed+11, 4, 15, 5, 50, -31000, -250)
end) end)

View File

@ -1,17 +1,111 @@
darkage = {}; darkage = {}
function darkage.register_stairs(modname, subname, groups, images, desc)
table.insert(circular_saw.known_stairs, modname..":"..subname); function darkage.register_stairs(modname, item, groups, images, description)
recipeitem = modname..":"..subname; local recipeitem = modname..":"..item
desc_stair = desc.." stair"; local itemname = modname..":stair_"..item
desc_slab = desc.." slab"; minetest.register_node(itemname, {
desc_panel = desc.." panel"; description = description.." stair",
desc_micro = desc.." micro"; drawtype = "nodebox",
drop = subname tiles = images,
register_stair(modname, subname, recipeitem, groups, images, desc_stair, drop) paramtype = "light",
register_slab(modname, subname, recipeitem, groups, images, desc_slab, drop) paramtype2 = "facedir",
register_panel(modname, subname, recipeitem, groups, images, desc_panel, drop) is_ground_content = true,
register_micro(modname, subname, recipeitem, groups, images, desc_micro, drop) groups = groups,
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
{-0.5, 0, 0, 0.5, 0.5, 0.5},
},
},
})
minetest.register_craft({
output = itemname .. ' 4',
recipe = {
{recipeitem, "", ""},
{recipeitem, recipeitem, ""},
{recipeitem, recipeitem, recipeitem},
},
})
-- Flipped recipe for the silly minecrafters
minetest.register_craft({
output = itemname .. ' 4',
recipe = {
{"", "", recipeitem},
{"", recipeitem, recipeitem},
{recipeitem, recipeitem, recipeitem},
},
})
itemname=modname..":slab_" .. item
minetest.register_node(itemname, {
description = description.." slab",
drawtype = "nodebox",
tiles = images,
paramtype = "light",
is_ground_content = true,
groups = groups,
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
},
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
},
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node" then
return itemstack
end
-- If it's being placed on an another similar one, replace it with
-- a full block
local slabpos = nil
local slabnode = nil
local p0 = pointed_thing.under
local p1 = pointed_thing.above
local n0 = minetest.env:get_node(p0)
local n1 = minetest.env:get_node(p1)
if n0.name == itemname then
slabpos = p0
slabnode = n0
elseif n1.name == itemname then
slabpos = p1
slabnode = n1
end
if slabpos then
-- Remove the slab at slabpos
minetest.env:remove_node(slabpos)
-- Make a fake stack of a single item and try to place it
local fakestack = ItemStack(recipeitem)
pointed_thing.above = slabpos
fakestack = minetest.item_place(fakestack, placer, pointed_thing)
-- If the item was taken from the fake stack, decrement original
if not fakestack or fakestack:is_empty() then
itemstack:take_item(1)
-- Else put old node back
else
minetest.env:set_node(slabpos, slabnode)
end
return itemstack
end
-- Otherwise place regularly
return minetest.item_place(itemstack, placer, pointed_thing)
end,
})
minetest.register_craft({
output = itemname .. ' 3',
recipe = {
{recipeitem, recipeitem, recipeitem},
},
})
end end
darkage.register_stairs("darkage","basalt_cobble", darkage.register_stairs("darkage","basalt_cobble",
{cracky=3}, {cracky=3},
{"darkage_basalt_cobble.png"}, {"darkage_basalt_cobble.png"},
@ -42,25 +136,9 @@ darkage.register_stairs("darkage","ors_cobble",
"Old Red Sandtone" "Old Red Sandtone"
) )
darkage.register_stairs("darkage","desert_stone_cobble", --darkage.register_stairs("darkage","desert_stone_cobble",
{cracky=3}, -- {cracky=3},
{"darkage_desert_stone_cobble.png"}, -- {"darkage_desert_stone_cobble.png"},
"Desert Stone Cobble" -- "Desert Stone Cobble"
) --)
darkage.register_stairs("darkage","slate_cobble",
{cracky=3},
{"darkage_slate_cobble.png"},
"Slate Cobble"
)
darkage.register_stairs("darkage","sandstone_cobble",
{cracky=3},
{"darkage_sandstone_cobble.png"},
"Sandstone Cobble"
)
darkage.register_stairs("darkage","gneiss_cobble",
{cracky=3},
{"darkage_gneiss_cobble.png"},
"Gneiss Cobble"
)

View File

@ -1,66 +1,66 @@
darkage = {}; darkage = {};
function darkage.register_stairs(modname, subname, groups, images, desc) function darkage.register_stairs(modname, subname, groups, images, desc)
table.insert(circular_saw.known_stairs, modname..":"..subname); table.insert(circular_saw.known_stairs, modname..":"..subname);
recipeitem = modname..":"..subname; recipeitem = modname..":"..subname;
desc_stair = desc.." stair"; desc_stair = desc.." stair";
desc_slab = desc.." slab"; desc_slab = desc.." slab";
desc_panel = desc.." panel"; desc_panel = desc.." panel";
desc_micro = desc.." micro"; desc_micro = desc.." micro";
drop = subname drop = subname
register_stair(modname, subname, recipeitem, groups, images, desc_stair, drop) register_stair(modname, subname, recipeitem, groups, images, desc_stair, drop)
register_slab(modname, subname, recipeitem, groups, images, desc_slab, drop) register_slab(modname, subname, recipeitem, groups, images, desc_slab, drop)
register_panel(modname, subname, recipeitem, groups, images, desc_panel, drop) register_panel(modname, subname, recipeitem, groups, images, desc_panel, drop)
register_micro(modname, subname, recipeitem, groups, images, desc_micro, drop) register_micro(modname, subname, recipeitem, groups, images, desc_micro, drop)
end end
darkage.register_stairs("darkage","basalt_cobble", darkage.register_stairs("darkage","basalt_cobble",
{cracky=3}, {cracky=3},
{"darkage_basalt_cobble.png"}, {"darkage_basalt_cobble.png"},
"Basalt Cobble" "Basalt Cobble"
) )
darkage.register_stairs("darkage","slate_tale", darkage.register_stairs("darkage","slate_tale",
{cracky=3}, {cracky=3},
{"darkage_slate_tale.png"}, {"darkage_slate_tale.png"},
"Slate Tale" "Slate Tale"
) )
darkage.register_stairs("darkage","straw", darkage.register_stairs("darkage","straw",
{snappy=3, flammable=2}, {snappy=3, flammable=2},
{"darkage_straw.png"}, {"darkage_straw.png"},
"Straw" "Straw"
) )
darkage.register_stairs("darkage","stone_brick", darkage.register_stairs("darkage","stone_brick",
{cracky=3}, {cracky=3},
{"darkage_stone_brick.png"}, {"darkage_stone_brick.png"},
"Stone Brick" "Stone Brick"
) )
darkage.register_stairs("darkage","ors_cobble", darkage.register_stairs("darkage","ors_cobble",
{cracky=3}, {cracky=3},
{"darkage_ors_cobble.png"}, {"darkage_ors_cobble.png"},
"Old Red Sandtone" "Old Red Sandtone"
) )
darkage.register_stairs("darkage","desert_stone_cobble", --darkage.register_stairs("darkage","desert_stone_cobble",
{cracky=3}, -- {cracky=3},
{"darkage_desert_stone_cobble.png"}, -- {"darkage_desert_stone_cobble.png"},
"Desert Stone Cobble" -- "Desert Stone Cobble"
) --)
darkage.register_stairs("darkage","slate_cobble", darkage.register_stairs("darkage","slate_cobble",
{cracky=3}, {cracky=3},
{"darkage_slate_cobble.png"}, {"darkage_slate_cobble.png"},
"Slate Cobble" "Slate Cobble"
) )
darkage.register_stairs("darkage","sandstone_cobble", --darkage.register_stairs("darkage","sandstone_cobble",
{cracky=3}, -- {cracky=3},
{"darkage_sandstone_cobble.png"}, -- {"darkage_sandstone_cobble.png"},
"Sandstone Cobble" -- "Sandstone Cobble"
) --)
darkage.register_stairs("darkage","gneiss_cobble", darkage.register_stairs("darkage","gneiss_cobble",
{cracky=3}, {cracky=3},
{"darkage_gneiss_cobble.png"}, {"darkage_gneiss_cobble.png"},
"Gneiss Cobble" "Gneiss Cobble"
) )