Grasses 0.1.6
Less tall grass (more room for other plants). Neuramacers textures: default_grass_5.png & default_papyrus.png.master
|
@ -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
|
|
@ -0,0 +1,215 @@
|
||||||
|
#################
|
||||||
|
## 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/
|
||||||
|
x64/
|
||||||
|
build/
|
||||||
|
[Bb]in/
|
||||||
|
[Oo]bj/
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*.ilk
|
||||||
|
*.meta
|
||||||
|
*.obj
|
||||||
|
*.pch
|
||||||
|
*.pdb
|
||||||
|
*.pgc
|
||||||
|
*.pgd
|
||||||
|
*.rsp
|
||||||
|
*.sbr
|
||||||
|
*.tlb
|
||||||
|
*.tli
|
||||||
|
*.tlh
|
||||||
|
*.tmp
|
||||||
|
*.tmp_proj
|
||||||
|
*.log
|
||||||
|
*.vspscc
|
||||||
|
*.vssscc
|
||||||
|
.builds
|
||||||
|
*.pidb
|
||||||
|
*.log
|
||||||
|
*.scc
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
ipch/
|
||||||
|
*.aps
|
||||||
|
*.ncb
|
||||||
|
*.opensdf
|
||||||
|
*.sdf
|
||||||
|
*.cachefile
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
*.psess
|
||||||
|
*.vsp
|
||||||
|
*.vspx
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
*.gpState
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
_ReSharper*/
|
||||||
|
*.[Rr]e[Ss]harper
|
||||||
|
|
||||||
|
# TeamCity is a build add-in
|
||||||
|
_TeamCity*
|
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool
|
||||||
|
*.dotCover
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
*.ncrunch*
|
||||||
|
.*crunch*.local.xml
|
||||||
|
|
||||||
|
# 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/
|
||||||
|
|
||||||
|
# Publish Web Output
|
||||||
|
*.Publish.xml
|
||||||
|
*.pubxml
|
||||||
|
|
||||||
|
# NuGet Packages Directory
|
||||||
|
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
|
||||||
|
#packages/
|
||||||
|
|
||||||
|
# Windows Azure Build Output
|
||||||
|
csx
|
||||||
|
*.build.csdef
|
||||||
|
|
||||||
|
# Windows Store app package directory
|
||||||
|
AppPackages/
|
||||||
|
|
||||||
|
# Others
|
||||||
|
sql/
|
||||||
|
*.Cache
|
||||||
|
ClientBin/
|
||||||
|
[Ss]tyle[Cc]op.*
|
||||||
|
~$*
|
||||||
|
*~
|
||||||
|
*.dbmdl
|
||||||
|
*.[Pp]ublish.xml
|
||||||
|
*.pfx
|
||||||
|
*.publishsettings
|
||||||
|
|
||||||
|
# RIA/Silverlight projects
|
||||||
|
Generated_Code/
|
||||||
|
|
||||||
|
# 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
|
||||||
|
UpgradeLog*.htm
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
App_Data/*.mdf
|
||||||
|
App_Data/*.ldf
|
||||||
|
|
||||||
|
#############
|
||||||
|
## Windows detritus
|
||||||
|
#############
|
||||||
|
|
||||||
|
# Windows image file caches
|
||||||
|
Thumbs.db
|
||||||
|
ehthumbs.db
|
||||||
|
|
||||||
|
# Folder config file
|
||||||
|
Desktop.ini
|
||||||
|
|
||||||
|
# Recycle Bin used on file shares
|
||||||
|
$RECYCLE.BIN/
|
||||||
|
|
||||||
|
# Mac crap
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
|
||||||
|
#############
|
||||||
|
## Python
|
||||||
|
#############
|
||||||
|
|
||||||
|
*.py[co]
|
||||||
|
|
||||||
|
# Packages
|
||||||
|
*.egg
|
||||||
|
*.egg-info
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
eggs/
|
||||||
|
parts/
|
||||||
|
var/
|
||||||
|
sdist/
|
||||||
|
develop-eggs/
|
||||||
|
.installed.cfg
|
||||||
|
|
||||||
|
# Installer logs
|
||||||
|
pip-log.txt
|
||||||
|
|
||||||
|
# Unit test / coverage reports
|
||||||
|
.coverage
|
||||||
|
.tox
|
||||||
|
|
||||||
|
#Translations
|
||||||
|
*.mo
|
||||||
|
|
||||||
|
#Mr Developer
|
||||||
|
.mr.developer.cfg
|
|
@ -0,0 +1,360 @@
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Dry Plants - Recipes 0.1.0 -- Short Grass -> Dirt
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- by Mossmanikin
|
||||||
|
-- License (everything): WTFPL
|
||||||
|
-- Looked at code from: darkage, default, farming, sickle, stairs
|
||||||
|
-- Dependencies: default, farming
|
||||||
|
-- Supports: flint, stoneage, sumpf
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Short Grass
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "default:dirt",
|
||||||
|
recipe = {
|
||||||
|
{"dryplants:grass_short"},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Cut Grass
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- grass recipes (remove roots)
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "dryplants:grass",
|
||||||
|
recipe = {
|
||||||
|
{"default:grass_1"},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "dryplants:grass",
|
||||||
|
recipe = {
|
||||||
|
{"default:junglegrass"},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if minetest.get_modpath("sumpf") ~= nil then
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "dryplants:grass",
|
||||||
|
recipe = {
|
||||||
|
{"sumpf:gras"},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Sickle
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "dryplants:sickle",
|
||||||
|
recipe = {
|
||||||
|
{"group:stone",""},
|
||||||
|
{"", "default:stick"},
|
||||||
|
{"default:stick",""}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if minetest.get_modpath("flint") ~= nil then
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "dryplants:sickle",
|
||||||
|
recipe = {
|
||||||
|
{"flint:flintstone",""},
|
||||||
|
{"", "default:stick"},
|
||||||
|
{"default:stick",""}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end
|
||||||
|
if minetest.get_modpath("stoneage") ~= nil then
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "dryplants:sickle",
|
||||||
|
recipe = {
|
||||||
|
{"stoneage:silex",""},
|
||||||
|
{"", "default:stick"},
|
||||||
|
{"default:stick",""}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Hay
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
--cooking
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "cooking",
|
||||||
|
output = "dryplants:hay",
|
||||||
|
recipe = "dryplants:grass",
|
||||||
|
cooktime = 2,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "fuel",
|
||||||
|
recipe = "dryplants:hay",
|
||||||
|
burntime = 1,
|
||||||
|
})
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Wet Reed
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_craft({ -- papyrus -> wetreed
|
||||||
|
output = "dryplants:wetreed 2",
|
||||||
|
recipe = {
|
||||||
|
{"default:papyrus","default:papyrus"},
|
||||||
|
{"default:papyrus","default:papyrus"},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
minetest.register_craft({ -- reedmace_sapling -> wetreed
|
||||||
|
output = "dryplants:wetreed 2",
|
||||||
|
recipe = {
|
||||||
|
{"dryplants:reedmace_sapling","dryplants:reedmace_sapling"},
|
||||||
|
{"dryplants:reedmace_sapling","dryplants:reedmace_sapling"},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
minetest.register_craft({ -- reedmace_top -> wetreed
|
||||||
|
output = "dryplants:wetreed 2",
|
||||||
|
recipe = {
|
||||||
|
{"dryplants:reedmace_top","dryplants:reedmace_top"},
|
||||||
|
{"dryplants:reedmace_top","dryplants:reedmace_top"},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
minetest.register_craft({ -- reedmace -> wetreed
|
||||||
|
output = "dryplants:wetreed 2",
|
||||||
|
recipe = {
|
||||||
|
{"dryplants:reedmace","dryplants:reedmace"},
|
||||||
|
{"dryplants:reedmace","dryplants:reedmace"},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
minetest.register_craft({ -- reedmace_bottom -> wetreed
|
||||||
|
output = "dryplants:wetreed 2",
|
||||||
|
recipe = {
|
||||||
|
{"dryplants:reedmace_bottom","dryplants:reedmace_bottom"},
|
||||||
|
{"dryplants:reedmace_bottom","dryplants:reedmace_bottom"},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
local ReeD = {
|
||||||
|
{"wetreed"},
|
||||||
|
{"reed"}
|
||||||
|
}
|
||||||
|
for i in pairs(ReeD) do
|
||||||
|
local reed = "dryplants:"..ReeD[i][1]
|
||||||
|
local slab = reed.."_slab"
|
||||||
|
local roof = reed.."_roof"
|
||||||
|
local corner = roof.."_corner"
|
||||||
|
local corner_2 = corner.."_2"
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Block
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_craft({ -- slab -> block
|
||||||
|
output = reed,
|
||||||
|
recipe = {
|
||||||
|
{slab},
|
||||||
|
{slab},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
minetest.register_craft({ -- roof -> block
|
||||||
|
output = reed,
|
||||||
|
recipe = {
|
||||||
|
{roof},
|
||||||
|
{roof},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
minetest.register_craft({ -- corner -> block
|
||||||
|
type = "shapeless",
|
||||||
|
output = reed.." 3",
|
||||||
|
recipe = {corner,corner,corner,corner,corner,corner,corner,corner}, -- 8x
|
||||||
|
})
|
||||||
|
minetest.register_craft({ -- corner_2 -> block
|
||||||
|
type = "shapeless",
|
||||||
|
output = reed.." 3",
|
||||||
|
recipe = {corner_2,corner_2,corner_2,corner_2,corner_2,corner_2,corner_2,corner_2}, -- 8x
|
||||||
|
})
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Slab
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_craft({ -- block -> slab
|
||||||
|
output = slab.." 6",
|
||||||
|
recipe = {
|
||||||
|
{reed,reed,reed},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
minetest.register_craft({ -- roof -> slab
|
||||||
|
output = slab,
|
||||||
|
recipe = {
|
||||||
|
{roof},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
minetest.register_craft({ -- corner -> slab
|
||||||
|
output = slab.." 3",
|
||||||
|
recipe = {
|
||||||
|
{corner,corner},
|
||||||
|
{corner,corner},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
minetest.register_craft({ -- corner_2 -> slab
|
||||||
|
output = slab.." 3",
|
||||||
|
recipe = {
|
||||||
|
{corner_2,corner_2},
|
||||||
|
{corner_2,corner_2},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Roof
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_craft({ -- block -> roof
|
||||||
|
output = roof.." 4",
|
||||||
|
recipe = {
|
||||||
|
{reed,""},
|
||||||
|
{"",reed},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
minetest.register_craft({ -- block -> roof
|
||||||
|
output = roof.." 4",
|
||||||
|
recipe = {
|
||||||
|
{"",reed},
|
||||||
|
{reed,""},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
minetest.register_craft({ -- slab -> roof
|
||||||
|
output = roof,
|
||||||
|
recipe = {
|
||||||
|
{slab},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Roof Corner
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_craft({ -- block -> corner
|
||||||
|
output = corner.." 8",
|
||||||
|
recipe = {
|
||||||
|
{"",reed,""},
|
||||||
|
{reed,"",reed},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
minetest.register_craft({ -- corner_2 -> corner
|
||||||
|
output = corner,
|
||||||
|
recipe = {
|
||||||
|
{corner_2},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Roof Corner 2
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_craft({ -- block -> corner_2
|
||||||
|
output = corner_2.." 8",
|
||||||
|
recipe = {
|
||||||
|
{reed,"",reed},
|
||||||
|
{"",reed,""},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
minetest.register_craft({ -- corner -> corner_2
|
||||||
|
output = corner_2,
|
||||||
|
recipe = {
|
||||||
|
{corner},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Reed
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_craft({ -- hay -> reed
|
||||||
|
output = "dryplants:reed 2",
|
||||||
|
recipe = {
|
||||||
|
{"dryplants:hay","dryplants:hay"},
|
||||||
|
{"dryplants:hay","dryplants:hay"},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
--cooking
|
||||||
|
minetest.register_craft({ -- wetreed -> reed
|
||||||
|
type = "cooking",
|
||||||
|
output = "dryplants:reed",
|
||||||
|
recipe = "dryplants:wetreed",
|
||||||
|
cooktime = 2,
|
||||||
|
})
|
||||||
|
--fuel
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "fuel",
|
||||||
|
recipe = "dryplants:reed",
|
||||||
|
burntime = 4,
|
||||||
|
})
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Reed Slab
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
--cooking
|
||||||
|
minetest.register_craft({ -- wetreed_slab -> reed_slab
|
||||||
|
type = "cooking",
|
||||||
|
output = "dryplants:reed_slab",
|
||||||
|
recipe = "dryplants:wetreed_slab",
|
||||||
|
cooktime = 1,
|
||||||
|
})
|
||||||
|
--fuel
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "fuel",
|
||||||
|
recipe = "dryplants:reed_slab",
|
||||||
|
burntime = 2,
|
||||||
|
})
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Reed Roof
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
--cooking
|
||||||
|
minetest.register_craft({ -- wetreed_roof -> reed_roof
|
||||||
|
type = "cooking",
|
||||||
|
output = "dryplants:reed_roof",
|
||||||
|
recipe = "dryplants:wetreed_roof",
|
||||||
|
cooktime = 1,
|
||||||
|
})
|
||||||
|
--fuel
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "fuel",
|
||||||
|
recipe = "dryplants:reed_roof",
|
||||||
|
burntime = 2,
|
||||||
|
})
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Reed Roof Corner
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
--cooking
|
||||||
|
minetest.register_craft({ -- wetreed_roof_corner -> reed_roof_corner
|
||||||
|
type = "cooking",
|
||||||
|
output = "dryplants:reed_roof_corner",
|
||||||
|
recipe = "dryplants:wetreed_roof_corner",
|
||||||
|
cooktime = 1,
|
||||||
|
})
|
||||||
|
--fuel
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "fuel",
|
||||||
|
recipe = "dryplants:reed_roof_corner",
|
||||||
|
burntime = 2,
|
||||||
|
})
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Wet Reed Roof Corner 2
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
--cooking
|
||||||
|
minetest.register_craft({ -- wetreed_roof_corner -> reed_roof_corner
|
||||||
|
type = "cooking",
|
||||||
|
output = "dryplants:reed_roof_corner_2",
|
||||||
|
recipe = "dryplants:wetreed_roof_corner_2",
|
||||||
|
cooktime = 1,
|
||||||
|
})
|
||||||
|
--fuel
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "fuel",
|
||||||
|
recipe = "dryplants:reed_roof_corner_2",
|
||||||
|
burntime = 2,
|
||||||
|
})
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Dandelion Leave
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
--[[minetest.register_craftitem("dryplants:dandelion_leave", {
|
||||||
|
description = "Dandelion Leave",
|
||||||
|
inventory_image = "dryplants_dandelion_leave.png",
|
||||||
|
on_use = minetest.item_eat(1),
|
||||||
|
})
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "shapeless",
|
||||||
|
output = "dryplants:dandelion_leave 4",
|
||||||
|
recipe = {"flowers:dandelion_yellow"},
|
||||||
|
replacements = {
|
||||||
|
{"flowers:dandelion_yellow", "dye:yellow"}
|
||||||
|
},
|
||||||
|
})]]
|
|
@ -0,0 +1,3 @@
|
||||||
|
default
|
||||||
|
farming
|
||||||
|
plants_lib
|
|
@ -0,0 +1,185 @@
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
local title = "Grasses" -- former "Dry plants"
|
||||||
|
local version = "0.1.6"
|
||||||
|
local mname = "dryplants"
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- by Mossmanikin
|
||||||
|
-- textures & ideas partly by Neuromancer
|
||||||
|
|
||||||
|
-- License (everything): WTFPL
|
||||||
|
-- Contains code from: default, farming
|
||||||
|
-- Looked at code from: darkage, sickle, stairs
|
||||||
|
-- Dependencies: default, farming, plants_lib
|
||||||
|
-- Supports:
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
abstract_dryplants = {}
|
||||||
|
|
||||||
|
dofile(minetest.get_modpath("dryplants").."/crafting.lua")
|
||||||
|
dofile(minetest.get_modpath("dryplants").."/settings.txt")
|
||||||
|
dofile(minetest.get_modpath("dryplants").."/reed.lua")
|
||||||
|
if REEDMACE_GENERATES == true then
|
||||||
|
dofile(minetest.get_modpath("dryplants").."/reedmace.lua")
|
||||||
|
end
|
||||||
|
if SMALL_JUNCUS_GENERATES == true then
|
||||||
|
dofile(minetest.get_modpath("dryplants").."/juncus.lua")
|
||||||
|
end
|
||||||
|
if EXTRA_TALL_GRASS_GENERATES == true then
|
||||||
|
dofile(minetest.get_modpath("dryplants").."/moregrass.lua")
|
||||||
|
end
|
||||||
|
--dofile(minetest.get_modpath("dryplants").."/meadowvariation.lua")
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Sickle
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- turns nodes with group flora=1 & flower=0 into cut grass
|
||||||
|
local function sickle_on_use(itemstack, user, pointed_thing, uses)
|
||||||
|
local pt = pointed_thing
|
||||||
|
-- check if pointing at a node
|
||||||
|
if not pt then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if pt.type ~= "node" then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local under = minetest.get_node(pt.under)
|
||||||
|
local p = {x=pt.under.x, y=pt.under.y+1, z=pt.under.z}
|
||||||
|
local above = minetest.get_node(p)
|
||||||
|
|
||||||
|
-- return if any of the nodes is not registered
|
||||||
|
if not minetest.registered_nodes[under.name] then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if not minetest.registered_nodes[above.name] then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local node = minetest.env:get_node(pt.under)
|
||||||
|
-- check if something that can be cut using fine tools
|
||||||
|
if minetest.get_item_group(under.name, "snappy") > 0 then
|
||||||
|
-- check if flora but no flower
|
||||||
|
if minetest.get_item_group(under.name, "flora") == 1 and minetest.get_item_group(under.name, "flower") == 0 then
|
||||||
|
-- turn the node into cut grass, wear out item and play sound
|
||||||
|
minetest.set_node(pt.under, {name="dryplants:grass"})
|
||||||
|
else -- otherwise get the drop
|
||||||
|
local inv = user:get_inventory()
|
||||||
|
local name = minetest.env: get_node(pt.under).name
|
||||||
|
|
||||||
|
local the_drop = minetest.registered_nodes[name].drop
|
||||||
|
|
||||||
|
if the_drop ~= nil then
|
||||||
|
if inv:room_for_item("main", the_drop) then
|
||||||
|
inv:add_item("main", the_drop)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if inv:room_for_item("main", name) then
|
||||||
|
inv:add_item("main", name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
minetest.env:remove_node(pt.under)
|
||||||
|
end
|
||||||
|
minetest.sound_play("default_dig_crumbly", {
|
||||||
|
pos = pt.under,
|
||||||
|
gain = 0.5,
|
||||||
|
})
|
||||||
|
itemstack:add_wear(65535/(uses-1))
|
||||||
|
return itemstack
|
||||||
|
elseif string.find(node.name, "default:dirt_with_grass") then
|
||||||
|
minetest.set_node(pt.under, {name="dryplants:grass_short"})
|
||||||
|
minetest.set_node(pt.above, {name="dryplants:grass"})
|
||||||
|
minetest.sound_play("default_dig_crumbly", {
|
||||||
|
pos = pt.under,
|
||||||
|
gain = 0.5,
|
||||||
|
})
|
||||||
|
itemstack:add_wear(65535/(uses-1))
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- the tool
|
||||||
|
minetest.register_tool("dryplants:sickle", {
|
||||||
|
description = "Sickle",
|
||||||
|
inventory_image = "dryplants_sickle.png",
|
||||||
|
on_use = function(itemstack, user, pointed_thing)
|
||||||
|
return sickle_on_use(itemstack, user, pointed_thing, 220)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Cut Grass
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:grass", {
|
||||||
|
description = "Cut Grass",
|
||||||
|
inventory_image = "dryplants_grass.png",
|
||||||
|
wield_image = "dryplants_grass.png",
|
||||||
|
paramtype = "light",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
tiles = {"dryplants_grass.png"},
|
||||||
|
drawtype = "nodebox",
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-0.5 , -0.5 , -0.5 , 0.5 , -0.4375, 0.5 },
|
||||||
|
},
|
||||||
|
groups = {snappy=3, flammable=2},
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Cut Grass becomes Hay over time
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_abm({
|
||||||
|
nodenames = {"dryplants:grass"},
|
||||||
|
interval = HAY_DRYING_TIME, --1200, -- 20 minutes: a minetest-day/night-cycle
|
||||||
|
chance = 1,
|
||||||
|
action = function(pos)
|
||||||
|
minetest.env:add_node(pos, {name="dryplants:hay"})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Hay
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:hay", {
|
||||||
|
description = "Hay",
|
||||||
|
inventory_image = "dryplants_hay.png",
|
||||||
|
wield_image = "dryplants_hay.png",
|
||||||
|
paramtype = "light",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
tiles = {"dryplants_hay.png"},
|
||||||
|
drawtype = "nodebox",
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-0.5 , -0.5 , -0.5 , 0.5 , -0.4375, 0.5 },
|
||||||
|
},
|
||||||
|
groups = {snappy=3, flammable=2},
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Short Grass
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:grass_short", {
|
||||||
|
description = "Short Grass",
|
||||||
|
tiles = {"default_grass.png^dryplants_grass_short.png", "default_dirt.png", "default_dirt.png^default_grass_side.png^dryplants_grass_short_side.png"},
|
||||||
|
is_ground_content = true,
|
||||||
|
groups = {crumbly=3,soil=1,not_in_creative_inventory=1},
|
||||||
|
--drop = 'default:dirt',
|
||||||
|
sounds = default.node_sound_dirt_defaults({
|
||||||
|
footstep = {name="default_grass_footstep", gain=0.4},
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Short Grass becomes Dirt with Grass over time
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_abm({
|
||||||
|
nodenames = {"dryplants:grass_short"},
|
||||||
|
interval = GRASS_REGROWING_TIME, --1200, -- 20 minutes: a minetest-day/night-cycle
|
||||||
|
chance = 100/GRASS_REGROWING_CHANCE,
|
||||||
|
action = function(pos)
|
||||||
|
minetest.env:add_node(pos, {name="default:dirt_with_grass"})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...")
|
||||||
|
-----------------------------------------------------------------------------------------------
|
|
@ -0,0 +1,127 @@
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Grasses - Juncus 0.0.5
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- by Mossmanikin
|
||||||
|
-- textures & ideas partly by Neuromancer
|
||||||
|
|
||||||
|
-- License (everything): WTFPL
|
||||||
|
-- Contains code from: plants_lib
|
||||||
|
-- Looked at code from: default
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
abstract_dryplants.grow_juncus = function(pos)
|
||||||
|
local juncus_type = math.random(2,3)
|
||||||
|
local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
|
||||||
|
if minetest.env:get_node(right_here).name == "air" -- instead of check_air = true,
|
||||||
|
or minetest.env:get_node(right_here).name == "default:junglegrass" then
|
||||||
|
if juncus_type == 2 then
|
||||||
|
minetest.env:add_node(right_here, {name="dryplants:juncus_02"})
|
||||||
|
else
|
||||||
|
minetest.env:add_node(right_here, {name="dryplants:juncus"})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_node("dryplants:juncus", {
|
||||||
|
description = "Juncus",
|
||||||
|
drawtype = "plantlike",
|
||||||
|
visual_scale = 2,
|
||||||
|
paramtype = "light",
|
||||||
|
tiles = {"dryplants_juncus_03.png"},
|
||||||
|
inventory_image = "dryplants_juncus_inv.png",
|
||||||
|
walkable = false,
|
||||||
|
groups = {
|
||||||
|
snappy=3,
|
||||||
|
flammable=2,
|
||||||
|
attached_node=1,
|
||||||
|
flora=1
|
||||||
|
--not_in_creative_inventory=1
|
||||||
|
},
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16},
|
||||||
|
},
|
||||||
|
on_place = function(itemstack, placer, pointed_thing)
|
||||||
|
local pos = pointed_thing.under
|
||||||
|
local juncus_type = math.random(2,3)
|
||||||
|
local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
|
||||||
|
if juncus_type == 2 then
|
||||||
|
minetest.env:add_node(right_here, {name="dryplants:juncus_02"})
|
||||||
|
else
|
||||||
|
minetest.env:add_node(right_here, {name="dryplants:juncus"})
|
||||||
|
end
|
||||||
|
if not minetest.setting_getbool("creative_mode") then
|
||||||
|
itemstack:take_item()
|
||||||
|
end
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
minetest.register_node("dryplants:juncus_02", {
|
||||||
|
description = "Juncus",
|
||||||
|
drawtype = "plantlike",
|
||||||
|
visual_scale = 2,
|
||||||
|
paramtype = "light",
|
||||||
|
tiles = {"dryplants_juncus_02.png"},
|
||||||
|
walkable = false,
|
||||||
|
groups = {
|
||||||
|
snappy=3,
|
||||||
|
flammable=2,
|
||||||
|
attached_node=1,
|
||||||
|
flora=1,
|
||||||
|
not_in_creative_inventory=1
|
||||||
|
},
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16},
|
||||||
|
},
|
||||||
|
drop = "dryplants:juncus",
|
||||||
|
})
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- GENERATE SMALL JUNCUS
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- near water or swamp
|
||||||
|
plantslib:register_generate_plant({
|
||||||
|
surface = {
|
||||||
|
"default:dirt_with_grass",
|
||||||
|
--"default:desert_sand",
|
||||||
|
--"default:sand",
|
||||||
|
"stoneage:grass_with_silex",
|
||||||
|
"sumpf:peat",
|
||||||
|
"sumpf:sumpf"
|
||||||
|
},
|
||||||
|
max_count = JUNCUS_NEAR_WATER_PER_MAPBLOCK,
|
||||||
|
rarity = 101 - JUNCUS_NEAR_WATER_RARITY,
|
||||||
|
min_elevation = 1, -- above sea level
|
||||||
|
near_nodes = {"default:water_source","sumpf:dirtywater_source","sumpf:sumpf"},
|
||||||
|
near_nodes_size = 2,
|
||||||
|
near_nodes_vertical = 1,
|
||||||
|
near_nodes_count = 1,
|
||||||
|
plantlife_limit = -0.9,
|
||||||
|
check_air = false,
|
||||||
|
},
|
||||||
|
"abstract_dryplants.grow_juncus"
|
||||||
|
)
|
||||||
|
-- at dunes/beach
|
||||||
|
plantslib:register_generate_plant({
|
||||||
|
surface = {
|
||||||
|
--"default:dirt_with_grass",
|
||||||
|
--"default:desert_sand",
|
||||||
|
"default:sand",
|
||||||
|
--"stoneage:grass_with_silex",
|
||||||
|
--"sumpf:peat",
|
||||||
|
--"sumpf:sumpf"
|
||||||
|
},
|
||||||
|
max_count = JUNCUS_AT_BEACH_PER_MAPBLOCK,
|
||||||
|
rarity = 101 - JUNCUS_AT_BEACH_RARITY,
|
||||||
|
min_elevation = 1, -- above sea level
|
||||||
|
near_nodes = {"default:dirt_with_grass"},
|
||||||
|
near_nodes_size = 2,
|
||||||
|
near_nodes_vertical = 1,
|
||||||
|
near_nodes_count = 1,
|
||||||
|
plantlife_limit = -0.9,
|
||||||
|
check_air = false,
|
||||||
|
},
|
||||||
|
"abstract_dryplants.grow_juncus"
|
||||||
|
)
|
|
@ -0,0 +1,27 @@
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Grasses - Meadow Variation 0.0.1
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- by Mossmanikin
|
||||||
|
|
||||||
|
-- License (everything): WTFPL
|
||||||
|
-- Contains code from: plants_lib
|
||||||
|
-- Looked at code from: default
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
abstract_dryplants.grow_grass_variation = function(pos)
|
||||||
|
local right_here = {x=pos.x, y=pos.y, z=pos.z}
|
||||||
|
minetest.add_node(right_here, {name="dryplants:grass_short"})
|
||||||
|
end
|
||||||
|
|
||||||
|
plantslib:register_generate_plant({
|
||||||
|
surface = {
|
||||||
|
"default:dirt_with_grass",
|
||||||
|
},
|
||||||
|
max_count = 4800,
|
||||||
|
rarity = 25,
|
||||||
|
min_elevation = 1, -- above sea level
|
||||||
|
plantlife_limit = -0.9,
|
||||||
|
check_air = false,
|
||||||
|
},
|
||||||
|
"abstract_dryplants.grow_grass_variation"
|
||||||
|
)
|
|
@ -0,0 +1,35 @@
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Grasses - More Tall Grass 0.0.2
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- by Mossmanikin
|
||||||
|
|
||||||
|
-- License (everything): WTFPL
|
||||||
|
-- Contains code from: plants_lib
|
||||||
|
-- Looked at code from: default
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
abstract_dryplants.grow_grass = function(pos)
|
||||||
|
local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
|
||||||
|
local grass_size = math.random(1,5)
|
||||||
|
if minetest.get_node(right_here).name == "air" -- instead of check_air = true,
|
||||||
|
or minetest.get_node(right_here).name == "default:junglegrass" then
|
||||||
|
minetest.add_node(right_here, {name="default:grass_"..grass_size})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
plantslib:register_generate_plant({
|
||||||
|
surface = {
|
||||||
|
"default:dirt_with_grass",
|
||||||
|
"dryplants:grass_short",
|
||||||
|
"stoneage:grass_with_silex",
|
||||||
|
"sumpf:peat",
|
||||||
|
"sumpf:sumpf"
|
||||||
|
},
|
||||||
|
max_count = TALL_GRASS_PER_MAPBLOCK,
|
||||||
|
rarity = 101 - TALL_GRASS_RARITY,
|
||||||
|
min_elevation = 1, -- above sea level
|
||||||
|
plantlife_limit = -0.9,
|
||||||
|
check_air = false,
|
||||||
|
},
|
||||||
|
"abstract_dryplants.grow_grass"
|
||||||
|
)
|
|
@ -0,0 +1,380 @@
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Dry Plants - Reed 0.0.5
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- by Mossmanikin
|
||||||
|
-- License (everything): WTFPL
|
||||||
|
-- Looked at code from: darkage, default, stairs
|
||||||
|
-- Dependencies: default
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_alias("stairs:stair_wetreed", "dryplants:wetreed_roof")
|
||||||
|
minetest.register_alias("stairs:slab_wetreed", "dryplants:wetreed_slab")
|
||||||
|
minetest.register_alias("stairs:stair_reed", "dryplants:reed_roof")
|
||||||
|
minetest.register_alias("stairs:slab_reed", "dryplants:reed_slab")
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Wet Reed
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:wetreed", {
|
||||||
|
description = "Wet Reed",
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
tiles = {"dryplants_reed_wet.png"},
|
||||||
|
groups = {snappy=3, flammable=2},
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Wet Reed Slab
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:wetreed_slab", {
|
||||||
|
description = "Wet Reed Slab",
|
||||||
|
drawtype = "nodebox",
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
tiles = {"dryplants_reed_wet.png"},
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-1/2, -1/2, -1/2, 1/2, 0, 1/2},
|
||||||
|
},
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-1/2, -1/2, -1/2, 1/2, 0, 1/2},
|
||||||
|
},
|
||||||
|
groups = {snappy=3, flammable=2},
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Wet Reed Roof
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:wetreed_roof", {
|
||||||
|
description = "Wet Reed Roof",
|
||||||
|
drawtype = "nodebox",
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
tiles = {"dryplants_reed_wet.png"},
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
-- { left , bottom , front , right , top , back }
|
||||||
|
fixed = {
|
||||||
|
{-1/2, 0, 0, 1/2, 1/2, 1/2},
|
||||||
|
{-1/2, -1/2, -1/2, 1/2, 0, 0},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-1/2, 0, 0, 1/2, 1/2, 1/2},
|
||||||
|
{-1/2, -1/2, -1/2, 1/2, 0, 0},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
groups = {snappy=3, flammable=2},
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
if AUTO_ROOF_CORNER == true then
|
||||||
|
|
||||||
|
local CoRNeR = {
|
||||||
|
-- MaTeRiaL
|
||||||
|
{"wetreed"},
|
||||||
|
{"reed"}
|
||||||
|
}
|
||||||
|
|
||||||
|
for i in pairs(CoRNeR) do
|
||||||
|
|
||||||
|
local MaTeRiaL = CoRNeR[i][1]
|
||||||
|
local roof = "dryplants:"..MaTeRiaL.."_roof"
|
||||||
|
local corner = "dryplants:"..MaTeRiaL.."_roof_corner"
|
||||||
|
local corner_2 = "dryplants:"..MaTeRiaL.."_roof_corner_2"
|
||||||
|
|
||||||
|
minetest.register_abm({
|
||||||
|
nodenames = {roof},
|
||||||
|
interval = 1,
|
||||||
|
chance = 1,
|
||||||
|
action = function(pos)
|
||||||
|
|
||||||
|
local node_east = minetest.env:get_node({x=pos.x+1, y=pos.y, z=pos.z })
|
||||||
|
local node_west = minetest.env:get_node({x=pos.x-1, y=pos.y, z=pos.z })
|
||||||
|
local node_north = minetest.env:get_node({x=pos.x, y=pos.y, z=pos.z+1})
|
||||||
|
local node_south = minetest.env:get_node({x=pos.x, y=pos.y, z=pos.z-1})
|
||||||
|
-- corner 1
|
||||||
|
if ((node_west.name == roof and node_west.param2 == 0)
|
||||||
|
or (node_west.name == corner and node_west.param2 == 1))
|
||||||
|
and ((node_north.name == roof and node_north.param2 == 3)
|
||||||
|
or (node_north.name == corner and node_north.param2 == 3))
|
||||||
|
then
|
||||||
|
minetest.env:add_node(pos, {name=corner, param2=0})
|
||||||
|
end
|
||||||
|
|
||||||
|
if ((node_north.name == roof and node_north.param2 == 1)
|
||||||
|
or (node_north.name == corner and node_north.param2 == 2))
|
||||||
|
and ((node_east.name == roof and node_east.param2 == 0)
|
||||||
|
or (node_east.name == corner and node_east.param2 == 0))
|
||||||
|
then
|
||||||
|
minetest.env:add_node(pos, {name=corner, param2=1})
|
||||||
|
end
|
||||||
|
|
||||||
|
if ((node_east.name == roof and node_east.param2 == 2)
|
||||||
|
or (node_east.name == corner and node_east.param2 == 3))
|
||||||
|
and ((node_south.name == roof and node_south.param2 == 1)
|
||||||
|
or (node_south.name == corner and node_south.param2 == 1))
|
||||||
|
then
|
||||||
|
minetest.env:add_node(pos, {name=corner, param2=2})
|
||||||
|
end
|
||||||
|
|
||||||
|
if ((node_south.name == roof and node_south.param2 == 3)
|
||||||
|
or (node_south.name == corner and node_south.param2 == 0))
|
||||||
|
and ((node_west.name == roof and node_west.param2 == 2)
|
||||||
|
or (node_west.name == corner and node_west.param2 == 2))
|
||||||
|
then
|
||||||
|
minetest.env:add_node(pos, {name=corner, param2=3})
|
||||||
|
end
|
||||||
|
-- corner 2
|
||||||
|
if ((node_west.name == roof and node_west.param2 == 2)
|
||||||
|
or (node_west.name == corner_2 and node_west.param2 == 1))
|
||||||
|
and ((node_north.name == roof and node_north.param2 == 1)
|
||||||
|
or (node_north.name == corner_2 and node_north.param2 == 3))
|
||||||
|
then
|
||||||
|
minetest.env:add_node(pos, {name=corner_2, param2=0})
|
||||||
|
end
|
||||||
|
|
||||||
|
if ((node_north.name == roof and node_north.param2 == 3)
|
||||||
|
or (node_north.name == corner_2 and node_north.param2 == 2))
|
||||||
|
and ((node_east.name == roof and node_east.param2 == 2)
|
||||||
|
or (node_east.name == corner_2 and node_east.param2 == 0))
|
||||||
|
then
|
||||||
|
minetest.env:add_node(pos, {name=corner_2, param2=1})
|
||||||
|
end
|
||||||
|
|
||||||
|
if ((node_east.name == roof and node_east.param2 == 0)
|
||||||
|
or (node_east.name == corner_2 and node_east.param2 == 3))
|
||||||
|
and ((node_south.name == roof and node_south.param2 == 3)
|
||||||
|
or (node_south.name == corner_2 and node_south.param2 == 1))
|
||||||
|
then
|
||||||
|
minetest.env:add_node(pos, {name=corner_2, param2=2})
|
||||||
|
end
|
||||||
|
|
||||||
|
if ((node_south.name == roof and node_south.param2 == 1)
|
||||||
|
or (node_south.name == corner_2 and node_south.param2 == 0))
|
||||||
|
and ((node_west.name == roof and node_west.param2 == 0)
|
||||||
|
or (node_west.name == corner_2 and node_west.param2 == 2))
|
||||||
|
then
|
||||||
|
minetest.env:add_node(pos, {name=corner_2, param2=3})
|
||||||
|
end
|
||||||
|
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Wet Reed Roof Corner
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:wetreed_roof_corner", {
|
||||||
|
description = "Wet Reed Roof Corner",
|
||||||
|
drawtype = "nodebox",
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
tiles = {"dryplants_reed_wet.png"},
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
-- { left , bottom , front , right , top , back }
|
||||||
|
fixed = {
|
||||||
|
{-1/2, 0, 0, 0, 1/2, 1/2},
|
||||||
|
{0, -1/2, 0, 1/2, 0, 1/2},
|
||||||
|
{-1/2, -1/2, -1/2, 0, 0, 0},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-1/2, 0, 0, 0, 1/2, 1/2},
|
||||||
|
{0, -1/2, 0, 1/2, 0, 1/2},
|
||||||
|
{-1/2, -1/2, -1/2, 0, 0, 0},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
groups = {snappy=3, flammable=2},
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Wet Reed Roof Corner 2
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:wetreed_roof_corner_2", {
|
||||||
|
description = "Wet Reed Roof Corner 2",
|
||||||
|
drawtype = "nodebox",
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
tiles = {"dryplants_reed_wet.png"},
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
-- { left , bottom , front , right , top , back }
|
||||||
|
fixed = {
|
||||||
|
{-1/2, -1/2, 0, 0, 0, 1/2},
|
||||||
|
{0, 0, 0, 1/2, 1/2, 1/2},
|
||||||
|
{-1/2, 0, -1/2, 0, 1/2, 0},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-1/2, -1/2, 0, 0, 0, 1/2},
|
||||||
|
{0, 0, 0, 1/2, 1/2, 1/2},
|
||||||
|
{-1/2, 0, -1/2, 0, 1/2, 0},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
groups = {snappy=3, flammable=2},
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Wet Reed becomes (dry) Reed over time
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
if REED_WILL_DRY == true then
|
||||||
|
|
||||||
|
local DRyiNG = {
|
||||||
|
-- WeT DRy
|
||||||
|
{"dryplants:wetreed", "dryplants:reed"},
|
||||||
|
{"dryplants:wetreed_slab", "dryplants:reed_slab"},
|
||||||
|
{"dryplants:wetreed_roof", "dryplants:reed_roof"},
|
||||||
|
{"dryplants:wetreed_roof_corner", "dryplants:reed_roof_corner"},
|
||||||
|
{"dryplants:wetreed_roof_corner_2", "dryplants:reed_roof_corner_2"}
|
||||||
|
}
|
||||||
|
for i in pairs(DRyiNG) do
|
||||||
|
|
||||||
|
local WeT = DRyiNG[i][1]
|
||||||
|
local DRy = DRyiNG[i][2]
|
||||||
|
|
||||||
|
minetest.register_abm({
|
||||||
|
nodenames = {WeT},
|
||||||
|
interval = REED_DRYING_TIME, --1200, -- 20 minutes: a minetest-day/night-cycle
|
||||||
|
chance = 1,
|
||||||
|
action = function(pos)
|
||||||
|
local direction = minetest.get_node(pos).param2
|
||||||
|
minetest.env:add_node(pos, {name=DRy, param2=direction})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Reed
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:reed", {
|
||||||
|
description = "Reed",
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
tiles = {"dryplants_reed.png"},
|
||||||
|
groups = {snappy=3, flammable=2},
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Reed Slab
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:reed_slab", {
|
||||||
|
description = "Reed Slab",
|
||||||
|
drawtype = "nodebox",
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
tiles = {"dryplants_reed.png"},
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-1/2, -1/2, -1/2, 1/2, 0, 1/2},
|
||||||
|
},
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-1/2, -1/2, -1/2, 1/2, 0, 1/2},
|
||||||
|
},
|
||||||
|
groups = {snappy=3, flammable=2},
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Reed Roof
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:reed_roof", {
|
||||||
|
description = "Reed Roof",
|
||||||
|
drawtype = "nodebox",
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
tiles = {"dryplants_reed.png"},
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
-- { left , bottom , front , right , top , back }
|
||||||
|
fixed = {
|
||||||
|
{-1/2, 0, 0, 1/2, 1/2, 1/2},
|
||||||
|
{-1/2, -1/2, -1/2, 1/2, 0, 0},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-1/2, 0, 0, 1/2, 1/2, 1/2},
|
||||||
|
{-1/2, -1/2, -1/2, 1/2, 0, 0},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
groups = {snappy=3, flammable=2},
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Reed Roof Corner
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:reed_roof_corner", {
|
||||||
|
description = "Reed Roof Corner",
|
||||||
|
drawtype = "nodebox",
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
tiles = {"dryplants_reed.png"},
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
-- { left , bottom , front , right , top , back }
|
||||||
|
fixed = {
|
||||||
|
{-1/2, 0, 0, 0, 1/2, 1/2},
|
||||||
|
{0, -1/2, 0, 1/2, 0, 1/2},
|
||||||
|
{-1/2, -1/2, -1/2, 0, 0, 0},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-1/2, 0, 0, 0, 1/2, 1/2},
|
||||||
|
{0, -1/2, 0, 1/2, 0, 1/2},
|
||||||
|
{-1/2, -1/2, -1/2, 0, 0, 0},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
groups = {snappy=3, flammable=2},
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Reed Roof Corner 2
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:reed_roof_corner_2", {
|
||||||
|
description = "Reed Roof Corner 2",
|
||||||
|
drawtype = "nodebox",
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
tiles = {"dryplants_reed.png"},
|
||||||
|
node_box = {
|
||||||
|
type = "fixed",
|
||||||
|
-- { left , bottom , front , right , top , back }
|
||||||
|
fixed = {
|
||||||
|
{-1/2, -1/2, 0, 0, 0, 1/2},
|
||||||
|
{0, 0, 0, 1/2, 1/2, 1/2},
|
||||||
|
{-1/2, 0, -1/2, 0, 1/2, 0},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-1/2, -1/2, 0, 0, 0, 1/2},
|
||||||
|
{0, 0, 0, 1/2, 1/2, 1/2},
|
||||||
|
{-1/2, 0, -1/2, 0, 1/2, 0},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
groups = {snappy=3, flammable=2},
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
})
|
|
@ -0,0 +1,410 @@
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- Grasses - Reedmace 0.1.1
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- by Mossmanikin
|
||||||
|
-- textures & ideas partly by Neuromancer
|
||||||
|
|
||||||
|
-- License (everything): WTFPL
|
||||||
|
-- Contains code from: plants_lib
|
||||||
|
-- Looked at code from: default, trees
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
-- NOTES (from wikipedia, some of this might get implemented)
|
||||||
|
-- rhizomes are edible
|
||||||
|
-- outer portion of young plants can be peeled and the heart can be eaten raw or boiled and eaten like asparagus
|
||||||
|
-- leaf bases can be eaten raw or cooked
|
||||||
|
-- sheath can be removed from the developing green flower spike, which can then be boiled and eaten like corn on the cob
|
||||||
|
-- pollen can be collected and used as a flour supplement or thickener
|
||||||
|
-- Typha stems and leaves can be used to make paper
|
||||||
|
-- The seed hairs were used by some Native American groups as tinder for starting fires
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- REEDMACE SHAPES
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
abstract_dryplants.grow_reedmace = function(pos)
|
||||||
|
local size = math.random(1,3)
|
||||||
|
local spikes = math.random(1,3)
|
||||||
|
local pos_01 = {x = pos.x, y = pos.y + 1, z = pos.z}
|
||||||
|
local pos_02 = {x = pos.x, y = pos.y + 2, z = pos.z}
|
||||||
|
local pos_03 = {x = pos.x, y = pos.y + 3, z = pos.z}
|
||||||
|
if minetest.env:get_node(pos_01).name == "air" -- bug fix
|
||||||
|
or minetest.env:get_node(pos_01).name == "dryplants:reedmace_sapling" then
|
||||||
|
if minetest.env:get_node(pos_02).name ~= "air" then
|
||||||
|
minetest.env:add_node(pos_01, {name="dryplants:reedmace_top"})
|
||||||
|
elseif minetest.env:get_node(pos_03).name ~= "air" then
|
||||||
|
minetest.env:add_node(pos_01, {name="dryplants:reedmace_height_2"})
|
||||||
|
elseif size == 1 then
|
||||||
|
minetest.env:add_node(pos_01, {name="dryplants:reedmace_top"})
|
||||||
|
elseif size == 2 then
|
||||||
|
minetest.env:add_node(pos_01, {name="dryplants:reedmace_height_2"})
|
||||||
|
elseif size == 3 then
|
||||||
|
if spikes == 1 then
|
||||||
|
minetest.env:add_node(pos_01, {name="dryplants:reedmace_height_3_spikes"})
|
||||||
|
else
|
||||||
|
minetest.env:add_node(pos_01, {name="dryplants:reedmace_height_3"})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
abstract_dryplants.grow_reedmace_water = function(pos)
|
||||||
|
local size = math.random(1,3)
|
||||||
|
local spikes = math.random(1,3)
|
||||||
|
local pos_01 = {x = pos.x, y = pos.y + 1, z = pos.z}
|
||||||
|
local pos_02 = {x = pos.x, y = pos.y + 2, z = pos.z}
|
||||||
|
local pos_03 = {x = pos.x, y = pos.y + 3, z = pos.z}
|
||||||
|
local pos_04 = {x = pos.x, y = pos.y + 4, z = pos.z}
|
||||||
|
minetest.add_entity(pos_01, "dryplants:reedmace_water_entity")
|
||||||
|
if minetest.env:get_node(pos_02).name == "air" then -- bug fix
|
||||||
|
if minetest.env:get_node(pos_03).name ~= "air" then
|
||||||
|
minetest.env:add_node(pos_02, {name="dryplants:reedmace_top"})
|
||||||
|
elseif minetest.env:get_node(pos_04).name ~= "air" then
|
||||||
|
minetest.env:add_node(pos_02, {name="dryplants:reedmace_height_2"})
|
||||||
|
elseif size == 1 then
|
||||||
|
minetest.env:add_node(pos_02, {name="dryplants:reedmace_top"})
|
||||||
|
elseif size == 2 then
|
||||||
|
minetest.env:add_node(pos_02, {name="dryplants:reedmace_height_2"})
|
||||||
|
elseif size == 3 then
|
||||||
|
if spikes == 1 then
|
||||||
|
minetest.env:add_node(pos_02, {name="dryplants:reedmace_height_3_spikes"})
|
||||||
|
else
|
||||||
|
minetest.env:add_node(pos_02, {name="dryplants:reedmace_height_3"})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- REEDMACE SPIKES
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:reedmace_spikes", {
|
||||||
|
description = "Reedmace",
|
||||||
|
drawtype = "plantlike",
|
||||||
|
paramtype = "light",
|
||||||
|
tiles = {"dryplants_reedmace_spikes.png"},
|
||||||
|
inventory_image = "dryplants_reedmace_spikes.png",
|
||||||
|
walkable = false,
|
||||||
|
groups = {
|
||||||
|
snappy=3,
|
||||||
|
flammable=2,
|
||||||
|
not_in_creative_inventory=1
|
||||||
|
},
|
||||||
|
drop = 'dryplants:reedmace_sapling',
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- REEDMACE height: 1
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:reedmace_top", {
|
||||||
|
description = "Reedmace, height: 1",
|
||||||
|
drawtype = "plantlike",
|
||||||
|
paramtype = "light",
|
||||||
|
tiles = {"dryplants_reedmace_top.png"},
|
||||||
|
inventory_image = "dryplants_reedmace_top.png",
|
||||||
|
walkable = false,
|
||||||
|
groups = {
|
||||||
|
snappy=3,
|
||||||
|
flammable=2,
|
||||||
|
not_in_creative_inventory=1
|
||||||
|
},
|
||||||
|
drop = 'dryplants:reedmace_sapling',
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- REEDMACE height: 2
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:reedmace_height_2", {
|
||||||
|
description = "Reedmace, height: 2",
|
||||||
|
drawtype = "plantlike",
|
||||||
|
visual_scale = 2,
|
||||||
|
paramtype = "light",
|
||||||
|
tiles = {"dryplants_reedmace_height_2.png"},
|
||||||
|
inventory_image = "dryplants_reedmace_top.png",
|
||||||
|
walkable = false,
|
||||||
|
groups = {
|
||||||
|
snappy=3,
|
||||||
|
flammable=2--,
|
||||||
|
--not_in_creative_inventory=1
|
||||||
|
},
|
||||||
|
drop = 'dryplants:reedmace_sapling',
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- REEDMACE height: 3
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:reedmace_height_3", {
|
||||||
|
description = "Reedmace, height: 3",
|
||||||
|
drawtype = "plantlike",
|
||||||
|
visual_scale = 2,
|
||||||
|
paramtype = "light",
|
||||||
|
tiles = {"dryplants_reedmace_height_3.png"},
|
||||||
|
inventory_image = "dryplants_reedmace_top.png",
|
||||||
|
walkable = false,
|
||||||
|
groups = {
|
||||||
|
snappy=3,
|
||||||
|
flammable=2--,
|
||||||
|
--not_in_creative_inventory=1
|
||||||
|
},
|
||||||
|
drop = 'dryplants:reedmace_sapling',
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- REEDMACE height: 3 & Spikes
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:reedmace_height_3_spikes", {
|
||||||
|
description = "Reedmace, height: 3 & Spikes",
|
||||||
|
drawtype = "plantlike",
|
||||||
|
visual_scale = 2,
|
||||||
|
paramtype = "light",
|
||||||
|
tiles = {"dryplants_reedmace_height_3_spikes.png"},
|
||||||
|
inventory_image = "dryplants_reedmace_top.png",
|
||||||
|
walkable = false,
|
||||||
|
groups = {
|
||||||
|
snappy=3,
|
||||||
|
flammable=2--,
|
||||||
|
--not_in_creative_inventory=1
|
||||||
|
},
|
||||||
|
drop = 'dryplants:reedmace_sapling',
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- REEDMACE STEMS
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:reedmace", {
|
||||||
|
description = "Reedmace",
|
||||||
|
drawtype = "plantlike",
|
||||||
|
paramtype = "light",
|
||||||
|
tiles = {"dryplants_reedmace.png"},
|
||||||
|
inventory_image = "dryplants_reedmace.png",
|
||||||
|
walkable = false,
|
||||||
|
groups = {
|
||||||
|
snappy=3,
|
||||||
|
flammable=2,
|
||||||
|
not_in_creative_inventory=1
|
||||||
|
},
|
||||||
|
drop = 'dryplants:reedmace_sapling',
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
|
||||||
|
},
|
||||||
|
after_destruct = function(pos,oldnode)
|
||||||
|
local node = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z})
|
||||||
|
if node.name == "dryplants:reedmace_top"
|
||||||
|
or node.name == "dryplants:reedmace_spikes" then
|
||||||
|
minetest.dig_node({x=pos.x,y=pos.y+1,z=pos.z})
|
||||||
|
minetest.add_item(pos,"dryplants:reedmace_sapling")
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- REEDMACE BOTTOM
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:reedmace_bottom", {
|
||||||
|
description = "Reedmace",
|
||||||
|
drawtype = "plantlike",
|
||||||
|
paramtype = "light",
|
||||||
|
tiles = {"dryplants_reedmace_bottom.png"},
|
||||||
|
inventory_image = "dryplants_reedmace_bottom.png",
|
||||||
|
walkable = false,
|
||||||
|
groups = {
|
||||||
|
snappy=3,
|
||||||
|
flammable=2,
|
||||||
|
not_in_creative_inventory=1
|
||||||
|
},
|
||||||
|
drop = 'dryplants:reedmace_sapling',
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
|
||||||
|
},
|
||||||
|
after_destruct = function(pos,oldnode)
|
||||||
|
local node = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z})
|
||||||
|
if node.name == "dryplants:reedmace"
|
||||||
|
or node.name == "dryplants:reedmace_top"
|
||||||
|
or node.name == "dryplants:reedmace_spikes" then
|
||||||
|
minetest.dig_node({x=pos.x,y=pos.y+1,z=pos.z})
|
||||||
|
minetest.add_item(pos,"dryplants:reedmace_sapling")
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- REEDMACE "SAPLING" (the drop from the above)
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:reedmace_sapling", {
|
||||||
|
description = "Reedmace",
|
||||||
|
drawtype = "plantlike",
|
||||||
|
paramtype = "light",
|
||||||
|
tiles = {"dryplants_reedmace_sapling.png"},
|
||||||
|
inventory_image = "dryplants_reedmace_sapling.png",
|
||||||
|
walkable = false,
|
||||||
|
groups = {
|
||||||
|
snappy=3,
|
||||||
|
flammable=2,
|
||||||
|
attached_node=1
|
||||||
|
},
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- abm
|
||||||
|
minetest.register_abm({
|
||||||
|
nodenames = "dryplants:reedmace_sapling",
|
||||||
|
interval = REEDMACE_GROWING_TIME,
|
||||||
|
chance = 100/REEDMACE_GROWING_CHANCE,
|
||||||
|
action = function(pos, node, _, _)
|
||||||
|
if string.find(minetest.env:get_node({x = pos.x + 1, y = pos.y, z = pos.z }).name, "default:water")
|
||||||
|
or string.find(minetest.env:get_node({x = pos.x, y = pos.y, z = pos.z + 1}).name, "default:water")
|
||||||
|
or string.find(minetest.env:get_node({x = pos.x - 1, y = pos.y, z = pos.z }).name, "default:water")
|
||||||
|
or string.find(minetest.env:get_node({x = pos.x, y = pos.y, z = pos.z - 1}).name, "default:water") then
|
||||||
|
if minetest.env:get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name == "air" then
|
||||||
|
abstract_dryplants.grow_reedmace_water({x = pos.x, y = pos.y - 1, z = pos.z})
|
||||||
|
end
|
||||||
|
minetest.env:add_node({x=pos.x, y=pos.y, z=pos.z}, {name="default:water_source"})
|
||||||
|
else
|
||||||
|
abstract_dryplants.grow_reedmace({x = pos.x, y = pos.y - 1, z = pos.z})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- REEDMACE WATER (for entity)
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_node("dryplants:reedmace_water", {
|
||||||
|
description = "Reedmace",
|
||||||
|
drawtype = "plantlike",
|
||||||
|
paramtype = "light",
|
||||||
|
tiles = {"dryplants_reedmace_water.png"},
|
||||||
|
inventory_image = "dryplants_reedmace_water.png",
|
||||||
|
groups = {not_in_creative_inventory=1},
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- REEDMACE WATER ENTITY
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
minetest.register_entity("dryplants:reedmace_water_entity",{
|
||||||
|
visual = "wielditem",
|
||||||
|
visual_size = {x=2/3, y=2/3, z=2/3},
|
||||||
|
textures = {"dryplants:reedmace_water"},
|
||||||
|
collisionbox = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3},
|
||||||
|
on_punch = function(self, puncher)
|
||||||
|
if puncher:is_player() and puncher:get_inventory() then
|
||||||
|
if not minetest.setting_getbool("creative_mode") then
|
||||||
|
puncher:get_inventory():add_item("main", "dryplants:reedmace_sapling")
|
||||||
|
end
|
||||||
|
self.object:remove()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- SPAWN REEDMACE
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
--[[plantslib:spawn_on_surfaces({
|
||||||
|
spawn_delay = 1200,
|
||||||
|
spawn_plants = {"dryplants:reedmace_sapling"},
|
||||||
|
spawn_chance = 400,
|
||||||
|
spawn_surfaces = {
|
||||||
|
"default:dirt_with_grass",
|
||||||
|
"default:desert_sand",
|
||||||
|
"default:sand",
|
||||||
|
"dryplants:grass_short",
|
||||||
|
"stoneage:grass_with_silex"
|
||||||
|
},
|
||||||
|
seed_diff = 329,
|
||||||
|
near_nodes = {"default:water_source"},
|
||||||
|
near_nodes_size = 2,
|
||||||
|
near_nodes_vertical = 1,
|
||||||
|
near_nodes_count = 1,
|
||||||
|
})]]
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- GENERATE REEDMACE
|
||||||
|
-----------------------------------------------------------------------------------------------
|
||||||
|
-- near water or swamp
|
||||||
|
plantslib:register_generate_plant({
|
||||||
|
surface = {
|
||||||
|
"default:dirt_with_grass",
|
||||||
|
"default:desert_sand",
|
||||||
|
"stoneage:grass_with_silex",
|
||||||
|
"sumpf:peat",
|
||||||
|
"sumpf:sumpf"
|
||||||
|
},
|
||||||
|
max_count = REEDMACE_NEAR_WATER_PER_MAPBLOCK,
|
||||||
|
rarity = 101 - REEDMACE_NEAR_WATER_RARITY,
|
||||||
|
--rarity = 60,
|
||||||
|
min_elevation = 1, -- above sea level
|
||||||
|
near_nodes = {"default:water_source","sumpf:dirtywater_source","sumpf:sumpf"},
|
||||||
|
near_nodes_size = 2,
|
||||||
|
near_nodes_vertical = 1,
|
||||||
|
near_nodes_count = 1,
|
||||||
|
plantlife_limit = -0.9,
|
||||||
|
},
|
||||||
|
"abstract_dryplants.grow_reedmace"
|
||||||
|
)
|
||||||
|
-- in water
|
||||||
|
plantslib:register_generate_plant({
|
||||||
|
surface = {
|
||||||
|
"default:dirt",
|
||||||
|
"default:dirt_with_grass",
|
||||||
|
--"default:desert_sand",
|
||||||
|
--"stoneage:grass_with_silex",
|
||||||
|
"stoneage:sand_with_silex",
|
||||||
|
"sumpf:peat",
|
||||||
|
"sumpf:sumpf"
|
||||||
|
},
|
||||||
|
max_count = REEDMACE_IN_WATER_PER_MAPBLOCK,
|
||||||
|
rarity = 101 - REEDMACE_IN_WATER_RARITY,
|
||||||
|
--rarity = 35,
|
||||||
|
min_elevation = 0, -- a bit below sea level
|
||||||
|
max_elevation = 0, -- ""
|
||||||
|
near_nodes = {"default:water_source","sumpf:dirtywater_source"},
|
||||||
|
near_nodes_size = 1,
|
||||||
|
near_nodes_count = 1,
|
||||||
|
plantlife_limit = -0.9,
|
||||||
|
},
|
||||||
|
"abstract_dryplants.grow_reedmace_water"
|
||||||
|
)
|
||||||
|
-- for oases & tropical beaches & tropical swamps
|
||||||
|
plantslib:register_generate_plant({
|
||||||
|
surface = {
|
||||||
|
"default:sand",
|
||||||
|
"sumpf:sumpf"
|
||||||
|
},
|
||||||
|
max_count = REEDMACE_FOR_OASES_PER_MAPBLOCK,
|
||||||
|
rarity = 101 - REEDMACE_FOR_OASES_RARITY,
|
||||||
|
--rarity = 10,
|
||||||
|
neighbors = {"default:water_source","sumpf:dirtywater_source","sumpf:sumpf"},
|
||||||
|
ncount = 1,
|
||||||
|
min_elevation = 1, -- above sea level
|
||||||
|
near_nodes = {"default:desert_sand","sumpf:sumpf"},
|
||||||
|
near_nodes_size = 2,
|
||||||
|
near_nodes_vertical = 1,
|
||||||
|
near_nodes_count = 1,
|
||||||
|
plantlife_limit = -0.9,
|
||||||
|
},
|
||||||
|
"abstract_dryplants.grow_reedmace"
|
||||||
|
)
|
|
@ -0,0 +1,52 @@
|
||||||
|
-- Here you can enable/disable the different plants
|
||||||
|
REEDMACE_GENERATES = true
|
||||||
|
SMALL_JUNCUS_GENERATES = true
|
||||||
|
EXTRA_TALL_GRASS_GENERATES = true
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Amount of Reedmace near water or swamp
|
||||||
|
REEDMACE_NEAR_WATER_PER_MAPBLOCK = 35 -- plants per 80x80x80 nodes (absolute maximum number)
|
||||||
|
REEDMACE_NEAR_WATER_RARITY = 40 -- percent
|
||||||
|
|
||||||
|
-- Amount of Reedmace in water
|
||||||
|
REEDMACE_IN_WATER_PER_MAPBLOCK = 35 -- plants per 80x80x80 nodes (absolute maximum number)
|
||||||
|
REEDMACE_IN_WATER_RARITY = 65 -- percent
|
||||||
|
|
||||||
|
-- Amount of Reedmace for oases, tropical beaches and tropical swamps
|
||||||
|
REEDMACE_FOR_OASES_PER_MAPBLOCK = 35 -- plants per 80x80x80 nodes (absolute maximum number)
|
||||||
|
REEDMACE_FOR_OASES_RARITY = 90 -- percent
|
||||||
|
|
||||||
|
-- growing of reedmace sapling
|
||||||
|
REEDMACE_GROWING_TIME = 16800 -- seconds
|
||||||
|
REEDMACE_GROWING_CHANCE = 5 -- percent
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Amount of small Juncus near water or swamp
|
||||||
|
JUNCUS_NEAR_WATER_PER_MAPBLOCK = 70 -- plants per 80x80x80 nodes (absolute maximum number)
|
||||||
|
JUNCUS_NEAR_WATER_RARITY = 75 -- percent
|
||||||
|
|
||||||
|
-- Amount of small Juncus at dunes/beach
|
||||||
|
JUNCUS_AT_BEACH_PER_MAPBLOCK = 70 -- plants per 80x80x80 nodes (absolute maximum number)
|
||||||
|
JUNCUS_AT_BEACH_RARITY = 75 -- percent
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Tall Grass on dirt with grass
|
||||||
|
TALL_GRASS_PER_MAPBLOCK = 4800 -- plants per 80x80x80 nodes (absolute maximum number)
|
||||||
|
TALL_GRASS_RARITY = 67 -- percent
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- short grass becomes dirt with grass again
|
||||||
|
GRASS_REGROWING_TIME = 16800 -- seconds
|
||||||
|
GRASS_REGROWING_CHANCE = 0.5 -- percent
|
||||||
|
|
||||||
|
HAY_DRYING_TIME = 3600 -- seconds
|
||||||
|
|
||||||
|
REED_WILL_DRY = false -- wet reed nodes will become dry reed nodes
|
||||||
|
REED_DRYING_TIME = 3600 -- seconds
|
||||||
|
|
||||||
|
AUTO_ROOF_CORNER = true
|
||||||
|
|
After Width: | Height: | Size: 313 B |
After Width: | Height: | Size: 419 B |
After Width: | Height: | Size: 530 B |
After Width: | Height: | Size: 624 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 577 B |
After Width: | Height: | Size: 571 B |
After Width: | Height: | Size: 868 B |
After Width: | Height: | Size: 502 B |
After Width: | Height: | Size: 605 B |
After Width: | Height: | Size: 929 B |
After Width: | Height: | Size: 963 B |
After Width: | Height: | Size: 685 B |
After Width: | Height: | Size: 795 B |
After Width: | Height: | Size: 767 B |
After Width: | Height: | Size: 734 B |
After Width: | Height: | Size: 864 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 582 B |
After Width: | Height: | Size: 575 B |
After Width: | Height: | Size: 446 B |
After Width: | Height: | Size: 675 B |
After Width: | Height: | Size: 260 B |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 737 B |
After Width: | Height: | Size: 593 B |
After Width: | Height: | Size: 492 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 444 B |
After Width: | Height: | Size: 477 B |
After Width: | Height: | Size: 712 B |
After Width: | Height: | Size: 497 B |
After Width: | Height: | Size: 473 B |
After Width: | Height: | Size: 768 B |
After Width: | Height: | Size: 487 B |
After Width: | Height: | Size: 910 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 463 B |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 710 B |
After Width: | Height: | Size: 823 B |
After Width: | Height: | Size: 455 B |
After Width: | Height: | Size: 459 B |
After Width: | Height: | Size: 481 B |
After Width: | Height: | Size: 511 B |
After Width: | Height: | Size: 491 B |
After Width: | Height: | Size: 234 B |
After Width: | Height: | Size: 897 B |
After Width: | Height: | Size: 267 B |
After Width: | Height: | Size: 286 B |
After Width: | Height: | Size: 777 B |
After Width: | Height: | Size: 288 B |
After Width: | Height: | Size: 649 B |
After Width: | Height: | Size: 181 B |
After Width: | Height: | Size: 504 B |
After Width: | Height: | Size: 206 B |
After Width: | Height: | Size: 659 B |