EinsDreiDreiSieben/mods/.pbj_pup/init.lua

127 lines
2.8 KiB
Lua

-- mod check and sound settings
local def = core.get_modpath("default")
local mcl = core.get_modpath("mcl_core")
local snd = mcl and mcl_sounds.node_sound_glass_defaults() or default.node_sound_glass_defaults()
-- Nyan Cat node
core.register_node(":nyancat:nyancat", {
description = "Nyan Cat",
tiles = {
"nyancat_side.png",
"nyancat_side.png",
"nyancat_side.png",
"nyancat_side.png",
"nyancat_back.png",
"nyancat_front.png",
},
paramtype = "light",
light_source = 15,
paramtype2 = "facedir",
groups = { cracky = 2, handy = 1 },
is_ground_content = false,
sounds = snd,
_mcl_hardness = 1,
})
-- Rainbow node
core.register_node(":nyancat:nyancat_rainbow", {
description = "Rainbow",
tiles = {
"nyancat_rainbow.png^[transformR90",
"nyancat_rainbow.png^[transformR90",
"nyancat_rainbow.png",
},
paramtype = "light",
light_source = 15,
paramtype2 = "facedir",
groups = { cracky = 2, handy = 1 },
is_ground_content = false,
sounds = snd,
_mcl_hardness = 1,
})
-- Fuels
core.register_craft({
type = "fuel",
recipe = "nyancat:nyancat",
burntime = 10,
})
core.register_craft({
type = "fuel",
recipe = "nyancat:nyancat_rainbow",
burntime = 10,
})
-- helper function to place Nyan/Pup/Moo with rainbow tail
local types = { "nyancat:nyancat" }
local function place(pos, facedir, length)
if facedir > 3 then
facedir = 0
end
local tailvec = core.facedir_to_dir(facedir)
local p = { x = pos.x, y = pos.y, z = pos.z }
local num = math.random(#types)
core.swap_node(p, { name = types[num], param2 = facedir })
for i = 1, length do
p.x = p.x + tailvec.x
p.z = p.z + tailvec.z
core.swap_node(p, { name = "nyancat:nyancat_rainbow", param2 = facedir })
end
end
-- Do we generate PB&J Pup and Nyan Cat's in world?
local function generate(minp, maxp, seed)
local height_min = -31000
local height_max = -32
local chance = 1000
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
core.register_on_generated(generate)
if def then
default.generate_nyancats = generate
end --Legacy
-- Legacy
core.register_alias("default:nyancat", "nyancat:nyancat")
core.register_alias("default:nyancat_rainbow", "nyancat:nyancat_rainbow")
if def then
default.make_nyancat = place
end
print("[MOD] PB&J Pup loaded")