4 Minetest's official Peanut Butter & Jelly Pup mod
8 local enable = minetest.setting_getbool("pbj_pup_enable")
9 if enable == false then
13 local function howl(ttl, player)
22 minetest.sound_play("pbj_pup_howl", {object = player, loop = false})
23 minetest.do_item_eat(5, nil, ItemStack("pbj_pup:pbj_pup"), player, nil)
25 minetest.after(15, howl, ttl, player)
31 minetest.register_node("pbj_pup:pbj_pup", {
32 description = "PB&J Pup",
42 light_source = default.LIGHT_MAX,
43 paramtype2 = "facedir",
44 groups = {cracky = 2},
45 is_ground_content = false,
46 legacy_facedir_simple = true,
47 sounds = default.node_sound_defaults(),
49 on_use = function(itemstack, user, pointed_thing)
56 minetest.register_node("pbj_pup:pbj_pup_candies", {
57 description = "PB&J Pup Candies",
59 name = "pbj_pup_candies_animated.png",
61 type = "vertical_frames",
68 light_source = default.LIGHT_MAX,
69 paramtype2 = "facedir",
70 groups = {cracky = 2},
71 is_ground_content = false,
73 sounds = default.node_sound_defaults(),
74 on_use = function(itemstack, user, pointed_thing)
75 minetest.do_item_eat(5, nil, itemstack, user, pointed_thing)
76 minetest.sound_play("pbj_pup_barks", {object = user, loop = false})
85 local gen = minetest.setting_getbool("pbj_pup_generate")
86 if gen == nil or gen then
87 local function place(pos, facedir, length)
91 local tailvec = minetest.facedir_to_dir(facedir)
92 local p = {x = pos.x, y = pos.y, z = pos.z}
93 minetest.set_node(p, {name = "pbj_pup:pbj_pup", param2 = facedir})
97 minetest.set_node(p, {name = "pbj_pup:pbj_pup_candies", param2 = facedir})
101 local function generate(minp, maxp, seed)
102 local height_min = -31000
103 local height_max = -32
104 if maxp.y < height_min or minp.y > height_max then
107 local y_min = math.max(minp.y, height_min)
108 local y_max = math.min(maxp.y, height_max)
109 local volume = (maxp.x - minp.x + 1) * (y_max - y_min + 1) * (maxp.z - minp.z + 1)
110 local pr = PseudoRandom(seed + 9324342)
111 local max_num = math.floor(volume / (16 * 16 * 16))
112 for i = 1, max_num do
113 if pr:next(0, 1000) == 0 then
114 local x0 = pr:next(minp.x, maxp.x)
115 local y0 = pr:next(minp.y, maxp.y)
116 local z0 = pr:next(minp.z, maxp.z)
117 local p0 = {x = x0, y = y0, z = z0}
118 place(p0, pr:next(0, 3), pr:next(3, 15))
123 minetest.register_on_generated(generate)
129 if minetest.setting_getbool("pbj_pup_alias_nyancat") then
130 minetest.register_alias("default:nyancat", "pbj_pup:pbj_pup")
131 minetest.register_alias("default:nyancat_rainbow","pbj_pup:pbj_pup_candies")
132 minetest.register_alias("nyancat", "pbj_pup:pbj_pup")
133 minetest.register_alias("nyancat_rainbow", "pbj_pup:pbj_pup_candies")
134 minetest.register_alias("nyancat:nyancat", "pbj_pup:pbj_pup")
135 minetest.register_alias("nyancat:nyancat_rainbow", "pbj_pup:pbj_pup_candies")