^ str is a comma separated list of initial stuff
^ Adds items to the list of items to be given
+Nyancat API
+-----------
+
+`nyancat.place(pos, facedir, length)`
+
+^ Place a cat at `pos` facing `facedir` with tail length `length`
+ Only accepts facedir 0-3, if facedir > 3 then it will be interpreted as facedir = 0
+
+`nyancat.generate(minp, maxp, seed)`
+
+^ Called by `minetest.register_on_generated`. To disable nyancat generation,
+ you can redefine nyancat.generate() to be an empty function
TNT API
----------
default_water_flowing_animated.png
VanessaE (WTFPL):
- default_nc_back.png
- default_nc_front.png
- default_nc_rb.png
- default_nc_side.png
default_desert_sand.png
default_desert_stone.png
default_sand.png
minetest.register_alias("cobble", "default:cobble")
minetest.register_alias("mossycobble", "default:mossycobble")
minetest.register_alias("steelblock", "default:steelblock")
-minetest.register_alias("nyancat", "default:nyancat")
-minetest.register_alias("nyancat_rainbow", "default:nyancat_rainbow")
minetest.register_alias("sapling", "default:sapling")
minetest.register_alias("apple", "default:apple")
minetest.register_alias("default:ladder", "default:ladder_wood")
minetest.register_alias("default:sign_wall", "default:sign_wall_wood")
-
burntime = 30,
})
-minetest.register_craft({
- type = "fuel",
- recipe = "default:nyancat",
- burntime = 1,
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "default:nyancat_rainbow",
- burntime = 1,
-})
-
minetest.register_craft({
type = "fuel",
recipe = "group:sapling",
recipe = "default:dry_grass_1",
burntime = 2,
})
-
-- Clay
-- This first to avoid clay in sand blobs
- minetest.register_ore({
+ minetest.register_ore({
ore_type = "blob",
ore = "default:clay",
wherein = {"default:sand"},
-- Sand
- minetest.register_ore({
+ minetest.register_ore({
ore_type = "blob",
ore = "default:sand",
wherein = {"default:stone", "default:sandstone",
end
---
--- Generate nyan cats
---
-
--- All mapgens except singlenode
-
-function default.make_nyancat(pos, facedir, length)
- local tailvec = {x = 0, y = 0, z = 0}
- if facedir == 0 then
- tailvec.z = 1
- elseif facedir == 1 then
- tailvec.x = 1
- elseif facedir == 2 then
- tailvec.z = -1
- elseif facedir == 3 then
- tailvec.x = -1
- else
- facedir = 0
- tailvec.z = 1
- end
- local p = {x = pos.x, y = pos.y, z = pos.z}
- minetest.set_node(p, {name = "default:nyancat", param2 = facedir})
- for i = 1, length do
- p.x = p.x + tailvec.x
- p.z = p.z + tailvec.z
- minetest.set_node(p, {name = "default:nyancat_rainbow", param2 = facedir})
- end
-end
-
-function default.generate_nyancats(minp, maxp, seed)
- local height_min = -31000
- local height_max = -32
- if maxp.y < height_min or minp.y > height_max then
- return
- end
- local y_min = math.max(minp.y, height_min)
- 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 pr = PseudoRandom(seed + 9324342)
- local max_num_nyancats = math.floor(volume / (16 * 16 * 16))
- for i = 1, max_num_nyancats do
- if pr:next(0, 1000) == 0 then
- local x0 = pr:next(minp.x, maxp.x)
- local y0 = pr:next(minp.y, maxp.y)
- local z0 = pr:next(minp.z, maxp.z)
- local p0 = {x = x0, y = y0, z = z0}
- default.make_nyancat(p0, pr:next(0, 3), pr:next(3, 15))
- end
- end
-end
-
-
--
-- Detect mapgen to select functions
--
--- Mods using singlenode mapgen can call these functions to enable
--- the use of minetest.generate_ores or minetest.generate_decorations
-
local mg_name = minetest.get_mapgen_setting("mg_name")
if mg_name == "v6" then
default.register_ores()
default.register_mgv6_decorations()
- minetest.register_on_generated(default.generate_nyancats)
-elseif mg_name ~= "singlenode" then
+else
default.register_biomes()
default.register_ores()
default.register_decorations()
- minetest.register_on_generated(default.generate_nyancats)
end
----
default:cloud
-default:nyancat
-default:nyancat_rainbow
--]]
sounds = default.node_sound_defaults(),
groups = {not_in_creative_inventory = 1},
})
-
-minetest.register_node("default:nyancat", {
- description = "Nyan Cat",
- tiles = {"default_nc_side.png", "default_nc_side.png", "default_nc_side.png",
- "default_nc_side.png", "default_nc_back.png", "default_nc_front.png"},
- paramtype2 = "facedir",
- groups = {cracky = 2},
- is_ground_content = false,
- legacy_facedir_simple = true,
- sounds = default.node_sound_defaults(),
-})
-
-minetest.register_node("default:nyancat_rainbow", {
- description = "Nyan Cat Rainbow",
- tiles = {
- "default_nc_rb.png^[transformR90", "default_nc_rb.png^[transformR90",
- "default_nc_rb.png", "default_nc_rb.png"
- },
- paramtype2 = "facedir",
- groups = {cracky = 2},
- is_ground_content = false,
- sounds = default.node_sound_defaults(),
-})
--- /dev/null
+Minetest Game mod: nyancat
+==========================
+
+License of source code:
+-----------------------
+Copyright (C) 2011-2012 celeron55, 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)
+--------------------------------------
+Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
+http://creativecommons.org/licenses/by-sa/3.0/
+
+Authors of media files
+-----------------------
+Everything not listed in here:
+Copyright (C) 2010-2012 celeron55, Perttu Ahola <celeron55@gmail.com>
+
+VanessaE (WTFPL):
+ default_nc_back.png
+ default_nc_front.png
+ default_nc_rb.png
+ default_nc_side.png
--- /dev/null
+minetest.register_node("nyancat:nyancat", {
+ description = "Nyan Cat",
+ tiles = {"default_nc_side.png", "default_nc_side.png", "default_nc_side.png",
+ "default_nc_side.png", "default_nc_back.png", "default_nc_front.png"},
+ paramtype2 = "facedir",
+ groups = {cracky = 2},
+ is_ground_content = false,
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_defaults(),
+})
+
+minetest.register_node("nyancat:nyancat_rainbow", {
+ description = "Nyan Cat Rainbow",
+ tiles = {
+ "default_nc_rb.png^[transformR90", "default_nc_rb.png^[transformR90",
+ "default_nc_rb.png", "default_nc_rb.png"
+ },
+ paramtype2 = "facedir",
+ groups = {cracky = 2},
+ is_ground_content = false,
+ sounds = default.node_sound_defaults(),
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "nyancat:nyancat",
+ burntime = 1,
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "nyancat:nyancat_rainbow",
+ burntime = 1,
+})
+
+nyancat = {}
+
+function nyancat.place(pos, facedir, length)
+ if facedir > 3 then
+ facedir = 0
+ end
+ local tailvec = minetest.facedir_to_dir(facedir)
+ local p = {x = pos.x, y = pos.y, z = pos.z}
+ minetest.set_node(p, {name = "nyancat:nyancat", param2 = facedir})
+ for i = 1, length do
+ p.x = p.x + tailvec.x
+ p.z = p.z + tailvec.z
+ minetest.set_node(p, {name = "nyancat:nyancat_rainbow", param2 = facedir})
+ end
+end
+
+function nyancat.generate(minp, maxp, seed)
+ local height_min = -31000
+ local height_max = -32
+ if maxp.y < height_min or minp.y > height_max then
+ return
+ end
+ local y_min = math.max(minp.y, height_min)
+ 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 pr = PseudoRandom(seed + 9324342)
+ local max_num_nyancats = math.floor(volume / (16 * 16 * 16))
+ for i = 1, max_num_nyancats do
+ if pr:next(0, 1000) == 0 then
+ local x0 = pr:next(minp.x, maxp.x)
+ local y0 = pr:next(minp.y, maxp.y)
+ local z0 = pr:next(minp.z, maxp.z)
+ local p0 = {x = x0, y = y0, z = z0}
+ nyancat.place(p0, pr:next(0, 3), pr:next(3, 15))
+ end
+ end
+end
+
+minetest.register_on_generated(function(minp, maxp, seed)
+ nyancat.generate(minp, maxp, seed)
+end)
+
+-- Legacy
+minetest.register_alias("default:nyancat", "nyancat:nyancat")
+minetest.register_alias("default:nyancat_rainbow", "nyancat:nyancat_rainbow")
+minetest.register_alias("nyancat", "nyancat:nyancat")
+minetest.register_alias("nyancat_rainbow", "nyancat:nyancat_rainbow")
+default.make_nyancat = nyancat.place
+default.generate_nyancats = nyancat.generate