This commit is contained in:
VanessaE 2012-11-09 09:12:20 -08:00
commit 321e21e8a8
26 changed files with 331 additions and 58 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 303 B

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 410 B

After

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 203 B

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 260 B

After

Width:  |  Height:  |  Size: 226 B

20
mods/junglegrass/README Normal file
View File

@ -0,0 +1,20 @@
Since recent versions of Minetest no longer contain jungle biomes, and
hence no jungle grass, I created this mod to re-add said grass back into
the game, with a twist: There are now four different sizes of grasses,
all of which yield a single junglegrass object when gathered (so all
four sizes may be used where jungle grass is called for). The largest
size uses the game's standard jungle grass node, while the others are
defined by this mod.
Junglegrass will spawn on dirt, grass, sand, desert sand and the tops of
papyrus and cactus (though rarely), and will do so anywhere in the map.
Grass on the ground will grow and eventually die (or turn into dry
shrubs, in the desert), given enough time.
Adjusting the overall spawn/growth rate is easily done by tweaking the
MAX_RATIO variable at the top of init.lua. A larger value results in
less frequent events.
Dependencies: none (just the game's default stuff)
License: cc-by-sa 3.0 for the textures, WTFPL for everything else.

View File

@ -0,0 +1,24 @@
Changelog
---------
2012-08-03: Mild rewrite to adapt the mod to use perlin noise while spawning.
Also got rid of the random-numbers-inside-abm stuff, now using the abm's own
'chance' parameter instead. Tuned various settings to try to retain the same
overall density and growth rates as in the previous version. Moved this
changelog into a separate file.
2012-07-12: moved project to github.
2012-07-09 (a bit later): tuned the spawn/grow rates a bit more, made the
numbers more sane. Added a radius check to limit the density of the spawned
grasses (they won't grow near each other or near dry shrubs or cactus, though
they still grow on the top of said cacti).
2012-07-09: Added cactus, sand, and desert sand as spawning surfaces. Reduced
and tuned the spawn rates a bit to try to balance things out. Made that which
spawns on grass, dirt, or sand start out at any size, grow over time, and
eventually die off. Limited desert sand to only the first two sizes (the
smallest size will grow one step, eventually), which will eventually die and
turn into dry shrubs. Only the two smallest sizes can spawn on cactus or
papyrus (and they don't grow or die). Fixed slightly off-center smallest size.
Fixed selection boxes.

View File

@ -0,0 +1,3 @@
Based on flowers mod by ironzorg.
Converted to create junglegrass by Vanessa Ezekowitz
Adapted jungle grass textures by VanessaE, based on the original one.

View File

@ -0,0 +1,2 @@
default

231
mods/junglegrass/init.lua Normal file
View File

@ -0,0 +1,231 @@
-- Junglegrass mod by VanessaE (using ironzorg's flowers mod as a basis)
-- 2012-08-03
--
-- Now featuring perlin noise for better growth control! :-)
--
-- License: WTFPL for the code, cc-by-sa for the textures
math.randomseed(os.time())
local DEBUG = 0
local SEED = 52453235636 -- chosen by mashing the keyboard ;-) map seed + this = perlin noise seed
local ABUNDANCE = 0.6 -- lower = more abundant
local GROWING_DELAY = 500 -- higher = run the ABM less often
local RADIUS = 7 -- higher = less dense within the biome area
local GRASSES = {
"junglegrass:shortest",
"junglegrass:short",
"junglegrass:medium",
"default:junglegrass",
"default:dry_shrub",
"default:cactus",
}
local dbg = function(s)
if DEBUG == 1 then
print('[JUNGLEGRASS] ' .. s)
end
end
local is_node_loaded = function(nodenames, node_pos)
n = minetest.env:get_node_or_nil(node_pos)
if (n == nil) or (n.name == 'ignore') then
return false
end
return true
end
junglegrass_spawn_on_surfaces = function(growdelay, grownames, surfaces)
for _, surface in ipairs(surfaces) do
minetest.register_abm({
nodenames = { surface.name },
interval = growdelay,
chance = surface.chance,
action = function(pos, node, active_object_count, active_object_count_wider)
local p_top = { x = pos.x, y = pos.y + 1, z = pos.z }
local n_top = minetest.env:get_node(p_top)
local perlin = minetest.env:get_perlin(SEED, 3, 0.5, 150 ) -- using numbers suggested by Splizard
local noise = perlin:get2d({x=p_top.x, y=p_top.z})
if ( noise > ABUNDANCE )
and (n_top.name == "air")
and (is_node_loaded(grownames, p_top) == true)
and ((minetest.env:find_node_near(p_top, RADIUS, GRASSES) == nil ) or (surface.name == "default:cactus"))
then
local nnode = grownames[math.random(1, #grownames)]
dbg("Perlin noise value: "..noise)
dbg('Spawning '
.. nnode .. ' at ('
.. p_top.x .. ', '
.. p_top.y .. ', '
.. p_top.z .. ') on '
.. surface.name)
minetest.env:add_node(p_top, { name = nnode })
end
end
})
end
end
grow_on_surfaces = function(growdelay, grownames, surfaces)
for _, surface in ipairs(surfaces) do
minetest.register_abm({
nodenames = { surface.name },
interval = growdelay,
chance = surface.chance,
action = function(pos, node, active_object_count, active_object_count_wider)
local p_top = { x = pos.x, y = pos.y + 1, z = pos.z }
local n_top = minetest.env:get_node(p_top)
local nnode = grownames[math.random(1, #grownames)]
if (is_node_loaded(grownames, p_top) == true) then
if (n_top.name == "junglegrass:shortest") then
dbg('Growing shortest into short at ('
.. p_top.x .. ', '
.. p_top.y .. ', '
.. p_top.z .. ') on '
.. surface.name)
minetest.env:add_node(p_top, { name = "junglegrass:short" })
end
if (surface.name == "default:desert_sand") then
if (n_top.name == "junglegrass:short") or (n_top.name == "junglegrass:medium") or (n_top.name == "default:junglegrass") then
dbg(nnode .. ' in desert turns to dry shrub at ('
.. p_top.x .. ', '
.. p_top.y .. ', '
.. p_top.z .. ') on '
.. surface.name)
minetest.env:add_node(p_top, { name = "default:dry_shrub" })
end
else
if (n_top.name == "junglegrass:short") then
dbg('Growing short into medium at ('
.. p_top.x .. ', '
.. p_top.y .. ', '
.. p_top.z .. ') on '
.. surface.name)
minetest.env:add_node(p_top, { name = "junglegrass:medium" })
end
if (n_top.name == "junglegrass:medium") then
dbg('Growing medium into full size at ('
.. p_top.x .. ', '
.. p_top.y .. ', '
.. p_top.z .. ') on '
.. surface.name)
minetest.env:add_node(p_top, { name = "default:junglegrass" })
end
if (n_top.name == "default:junglegrass") then
dbg(nnode .. ' dies at ('
.. p_top.x .. ', '
.. p_top.y .. ', '
.. p_top.z .. ') on '
.. surface.name)
minetest.env:remove_node(p_top)
end
end
end
end
})
end
end
-- On regular fertile ground, any size can spawn
junglegrass_spawn_on_surfaces(GROWING_DELAY, {
"junglegrass:shortest",
"junglegrass:short",
"junglegrass:medium",
"default:junglegrass",
}, {
{name = "default:dirt_with_grass", chance = 2},
{name = "default:dirt", chance = 2},
{name = "default:sand", chance = 5},
})
-- On cactus, papyrus, and desert sand, only the two smallest sizes can spawn
junglegrass_spawn_on_surfaces(GROWING_DELAY, {
"junglegrass:shortest",
"junglegrass:short",
}, {
{name = "default:papyrus", chance = 1.5},
{name = "default:cactus", chance = 3},
{name = "default:desert_sand", chance = 10},
})
-- make the grasses grow and die
grow_on_surfaces(GROWING_DELAY, {
"junglegrass:shortest",
"junglegrass:short",
"junglegrass:medium",
"default:junglegrass",
}, {
{name = "default:dirt_with_grass", chance = 5},
{name = "default:dirt", chance = 5},
{name = "default:sand", chance = 5},
{name = "default:desert_sand", chance = 20}
})
-- The actual node definitions
minetest.register_node('junglegrass:medium', {
description = "Jungle Grass (medium height)",
drawtype = 'plantlike',
tile_images = { 'junglegrass_medium.png' },
inventory_image = 'junglegrass_medium.png',
wield_image = 'junglegrass_medium.png',
sunlight_propagates = true,
paramtype = 'light',
walkable = false,
groups = { snappy = 3,flammable=2 },
sounds = default.node_sound_leaves_defaults(),
drop = 'default:junglegrass',
selection_box = {
type = "fixed",
fixed = {-0.4, -0.5, -0.4, 0.4, 0.5, 0.4},
},
})
minetest.register_node('junglegrass:short', {
description = "Jungle Grass (short)",
drawtype = 'plantlike',
tile_images = { 'junglegrass_short.png' },
inventory_image = 'junglegrass_short.png',
wield_image = 'junglegrass_short.png',
sunlight_propagates = true,
paramtype = 'light',
walkable = false,
groups = { snappy = 3,flammable=2 },
sounds = default.node_sound_leaves_defaults(),
drop = 'default:junglegrass',
selection_box = {
type = "fixed",
fixed = {-0.4, -0.5, -0.4, 0.4, 0.3, 0.4},
},
})
minetest.register_node('junglegrass:shortest', {
description = "Jungle Grass (very short)",
drawtype = 'plantlike',
tile_images = { 'junglegrass_shortest.png' },
inventory_image = 'junglegrass_shortest.png',
wield_image = 'junglegrass_shortest.png',
sunlight_propagates = true,
paramtype = 'light',
walkable = false,
groups = { snappy = 3,flammable=2 },
sounds = default.node_sound_leaves_defaults(),
drop = 'default:junglegrass',
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3},
},
})
print("[Junglegrass] Loaded!")

View File

@ -0,0 +1,3 @@
All code is WTFPL.
All textures are cc-by-sa 3.0.

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 370 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 B

0
mods/vessels/README Normal file
View File

View File

@ -1,45 +0,0 @@
Minetest 0.4 mod: vessels
==========================
Crafts
-------
Glass bottle (yields 10)
G - G
G - G
- G -
Drinking Glass (yields 14)
G - G
G - G
G G G
Heavy Steel Bottle (yields 5)
S - S
S - S
- S -
License of source code:
-----------------------
Copyright (C) 2012 Vanessa Ezekowitz
Version 2012-09-02
Modifications by Perttu Ahola <celeron55@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
http://www.gnu.org/licenses/lgpl-2.1.html
License of media (textures and sounds)
--------------------------------------
WTFPL
Authors of media files
-----------------------
Unless specifically noted,
Copyright (C) 2012 Vanessa Ezekowitz

View File

@ -0,0 +1,10 @@
Changelog
---------
2012-07-26: Added a smelting step for recycling crafted items back into raw
materials. 2 Glass bottles/cups -> 1 "glass fragments" -> smelt into normal
glass block. 1 Steel bottle -> smelt to 1 steel ingot.
2012-07-26: Better bottle texture. Note that it is blended against the 50%
grey fields in the inventory display, so it will show artifacts if you try to
wield it. Don't do that. :-)

View File

@ -1,10 +1,34 @@
-- Minetest 0.4 mod: vessels
-- See README.txt for licensing and other information.
-- Vessels Mod by Vanessa Ezekowitz ~~ 2012-07-26
--
-- License: LGPL
--
--========================================
-- Crafts
--
-- Glass bottle (yields 10)
--
-- G - G
-- G - G
-- - G -
--
-- Drinking Glass (yields 14)
--
-- G - G
-- G - G
-- G G G
--
-- Heavy Steel Bottle (yields 5)
--
-- S - S
-- S - S
-- - S -
minetest.register_craftitem("vessels:glass_bottle", {
description = "Glass Bottle (empty)",
inventory_image = "vessels_glass_bottle.png",
groups = {vessel=1},
description = "Glass Bottle (empty)",
inventory_image = "vessels_glass_bottle_inv.png",
wield_image = "vessels_glass_bottle.png"
})
minetest.register_craft( {
@ -17,9 +41,9 @@ minetest.register_craft( {
})
minetest.register_craftitem("vessels:drinking_glass", {
description = "Drinking Glass (empty)",
inventory_image = "vessels_drinking_glass.png",
groups = {vessel=1},
description = "Drinking Glass (empty)",
inventory_image = "vessels_drinking_glass_inv.png",
wield_image = "vessels_drinking_glass.png"
})
minetest.register_craft( {
@ -32,9 +56,9 @@ minetest.register_craft( {
})
minetest.register_craftitem("vessels:steel_bottle", {
description = "Heavy Steel Bottle (empty)",
inventory_image = "vessels_steel_bottle.png",
groups = {vessel=1},
description = "Heavy Steel Bottle (empty)",
inventory_image = "vessels_steel_bottle_inv.png",
wield_image = "vessels_steel_bottle.png"
})
minetest.register_craft( {
@ -50,8 +74,8 @@ minetest.register_craft( {
-- Make sure we can recycle them
minetest.register_craftitem("vessels:glass_fragments", {
description = "Pile of Glass Fragments",
inventory_image = "vessels_glass_fragments.png",
description = "Pile of Glass Fragments",
inventory_image = "vessels_glass_fragments.png",
})
minetest.register_craft( {
@ -84,3 +108,4 @@ minetest.register_craft( {
recipe = "vessels:steel_bottle",
})
print("[Vessels] Loaded!")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 338 B

After

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 405 B

After

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 405 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 342 B

After

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 B