Mehr Mods hinzugefügt

This commit is contained in:
N-Nachtigal 2025-05-10 23:49:11 +02:00
parent 92a55732cf
commit 9e345a25fb
2805 changed files with 2096013 additions and 0 deletions

View file

@ -0,0 +1,32 @@
MIT License
Copyright (c) 2021 Skandarella
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Lincense for original Code (mobs redo + mobs_animal): (MIT) Copyright (c) 2014 Krupnov Pavel and 2016 TenPlus1
Modified Code by Liil/Wilhelmine/Liil (c) 2021
Textures, Models, Animation and some Sounds by Liil/Wilhelmine/Liil under (MIT) License (c) 2021
Majority of Sounds are from freesound.org under Creative Commons License. Thanks to Lauramel, Gleith, Theveomammoth11, Vataa, D-Jones, Pol, Robinhood76,
sesmo42, Missburusdeer2011, Hazure, Inspectorj, Benboncan, Spookymodem, Drobiumdesign, J-zazvurek, Benboncan, Felix-blume, Sihil, Kabit, Roubignolle, Egomassive, Florianreichelt, Pillonoise,
Acclivity, Rtb45, Breviceps, Roman-cgr, Sieuamthanh, Benboncan, Mewsel, Timbre, Qubodup, Justinamolsch, Inspectorj, Thunderquads, Sarena6487528, Soundbytez, Dobroide and Virnafiorella for the sounds!

View file

@ -0,0 +1,148 @@
local S = minetest.get_translator("livingfloatlands")
local random = math.random
mobs:register_mob("livingfloatlands:ankylosaurus", {
type = "animal",
passive = false,
attack_type = "dogfight",
group_attack = true,
attack_monsters = true,
reach = 5,
damage = 10,
hp_min = 650,
hp_max = 850,
armor = 100,
collisionbox = {-1.5, -0.01, -1.0, 1.1, 1.5, 1.0},
visual = "mesh",
mesh = "Ankylosaurus.b3d",
visual_size = {x = 1.0, y = 1.0},
textures = {
{"textureankylosaurus.png"},
{"textureankylosaurus2.png"},
},
sounds = {
random = "livingfloatlands_ankylosaurus",
attack = "default_punch.ogg",
distance = 15,
},
makes_footstep_sound = true,
walk_velocity = 1,
run_velocity = 2,
walk_chance = 20,
runaway = false,
knock_back = false,
jump = false,
jump_height = 6,
stepheight = 2,
stay_near = {{"livingfloatlands:paleodesert_fern", "livingfloatlands:puzzlegrass"}, 6},
drops = {
{name = "livingfloatlands:ornithischiaraw", chance = 1, min = 1, max = 1},
},
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fear_height = 3,
animation = {
speed_normal = 25,
stand_start = 0,
stand_end = 100,
walk_speed = 50,
walk_start = 100,
walk_end = 200,
punch_speed = 100,
punch_start = 250,
punch_end = 350,
die_start = 250,
die_end = 350,
die_speed = 50,
die_loop = false,
die_rotate = true,
},
follow = {"default:apple", "default:dry_dirt_with_dry_grass", "farming:seed_wheat", "default:junglegrass", "farming:seed_oat", "livingfloatlands:paleodesert_joshua_sapling", "livingfloatlands:paleodesert_fern"},
view_range = 10,
on_rightclick = function(self, clicker)
-- feed or tame
if mobs:feed_tame(self, clicker, 4, false, true) then return end
if mobs:protect(self, clicker) then return end
if mobs:capture_mob(self, clicker, 0, 0, 15, false, nil) then return end
end,
})
if minetest.get_modpath("ethereal") then
spawn_on = {"ethereal:prairie_dirt", "ethereal:dry_dirt", "default:sand", "default:desert_sandstone", "default:sandstone", "default:dry_dirt_with_dry_grass"}
end
if not mobs.custom_spawn_livingfloatlands then
mobs:spawn({
name = "livingfloatlands:ankylosaurus",
nodes = {"livingfloatlands:paleodesert_litter"},
neighbors = {"livingfloatlands:paleodesert_fern", "livingfloatlands:puzzlegrass"},
min_light = 0,
interval = 60,
active_object_count = 3,
chance = 2000, -- 15000
min_height = 1000,
max_height = 31000,
on_spawn = function(self, pos)
local nods = minetest.find_nodes_in_area_under_air(
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
{"livingfloatlands:paleodesert_litter"})
if nods and #nods > 0 then
-- min herd of 3
local iter = math.min(#nods, 3)
-- print("--- ankylosaurus at", minetest.pos_to_string(pos), iter)
for n = 1, iter do
local pos2 = nods[random(#nods)]
local kid = random(4) == 1 and true or nil
pos2.y = pos2.y + 2
if minetest.get_node(pos2).name == "air" then
mobs:add_mob(pos2, {
name = "livingfloatlands:ankylosaurus", child = kid})
end
end
end
end
})
end
mobs:register_egg("livingfloatlands:ankylosaurus", ("Ankylosaurus"), "aankylosaurus.png")
-- raw Ornithischia
minetest.register_craftitem(":livingfloatlands:ornithischiaraw", {
description = S("Raw Ornithischia Meat"),
inventory_image = "livingfloatlands_ornithischiaraw.png",
on_use = minetest.item_eat(3),
groups = {food_meat_raw = 1, flammable = 2},
})
-- cooked Ornithischia
minetest.register_craftitem(":livingfloatlands:ornithischiacooked", {
description = S("Cooked Ornithischia Meat"),
inventory_image = "livingfloatlands_ornithischiacooked.png",
on_use = minetest.item_eat(5),
groups = {food_meat = 1, flammable = 2},
})
minetest.register_craft({
type = "cooking",
output = "livingfloatlands:ornithischiacooked",
recipe = "livingfloatlands:ornithischiaraw",
cooktime = 30,
})

View file

@ -0,0 +1,127 @@
local S = minetest.get_translator("livingfloatlands")
mobs:register_mob("livingfloatlands:carnotaurus", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_animals = true,
reach = 6,
damage = 20,
hp_min = 100,
hp_max = 350,
armor = 100,
collisionbox = {-1.0, -0.01, -1.0, 1.0, 3.0, 1.0},
visual = "mesh",
mesh = "Carnotaurus5.b3d",
visual_size = {x = 1.0, y = 1.0},
textures = {
{"texturecarnotaurus.png"},
{"texturecarnotaurus2.png"},
},
sounds = {
random = "livingfloatlands_carnotaurus",
attack = "livingfloatlands_carnotaurus2",
distance = 20,
},
makes_footstep_sound = true,
walk_velocity = 3,
run_velocity = 6,
walk_chance = 20,
runaway = false,
stay_near = {{"livingfloatlands:paleojungle_litter_leaves", "livingfloatlands:paleojungle_smallpalm", "livingfloatlands:giantforest_grass3", "livingfloatlands:paleojungle_ferngrass"}, 6},
jump = false,
jump_height = 6,
stepheight = 2,
knock_back = false,
drops = {
{name = "livingfloatlands:theropodraw", chance = 1, min = 1, max = 1},
},
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fear_height = 3,
pathfinding = true,
animation = {
speed_normal = 30,
stand_start = 250,
stand_end = 350,
stand1_start = 450,
stand1_end = 550,
walk_speed = 50,
walk_start = 0,
walk_end = 100,
run_speed = 80,
run_start = 0,
run_end = 100,
punch_speed = 100,
punch_start = 100,
punch_end = 200,
die_start = 100,
die_end = 200,
die_speed = 50,
die_loop = false,
die_rotate = true,
},
follow = {
"ethereal:fish_raw", "animalworld:rawfish", "mobs_fish:tropical",
"mobs:meat_raw", "animalworld:rabbit_raw", "animalworld:pork_raw", "water_life:meat_raw", "animalworld:chicken_raw", "livingfloatlands:ornithischiaraw", "livingfloatlands:sauropodraw", "livingfloatlands:theropodraw", "mobs:meatblock_raw", "animalworld:chicken_raw", "livingfloatlands:ornithischiaraw", "livingfloatlands:largemammalraw", "livingfloatlands:theropodraw", "livingfloatlands:sauropodraw", "animalworld:raw_athropod", "animalworld:whalemeat_raw", "animalworld:rabbit_raw", "nativevillages:chicken_raw", "mobs:meat_raw", "animalworld:pork_raw", "people:mutton:raw"
},
view_range = 20,
on_rightclick = function(self, clicker)
-- feed or tame
if mobs:feed_tame(self, clicker, 4, false, true) then return end
if mobs:protect(self, clicker) then return end
if mobs:capture_mob(self, clicker, 0, 0, 15, false, nil) then return end
end,
})
if minetest.get_modpath("ethereal") then
spawn_on = {"ethereal:prairie_dirt", "ethereal:dry_dirt", "default:dry_dirt_with_dry_grass"}
end
if not mobs.custom_spawn_livingfloatlands then
mobs:spawn({
name = "livingfloatlands:carnotaurus",
nodes = {"livingfloatlands:paleojungle_litter"},
neighbors = {"livingfloatlands:paleojungle_smallpalm"},
min_light = 0,
interval = 60,
active_object_count = 1,
chance = 2000, -- 15000
min_height = 1000,
max_height = 31000,
})
end
mobs:register_egg("livingfloatlands:carnotaurus", ("Carnotaurus"), "acarnotaurus.png")
-- raw Theropod
minetest.register_craftitem(":livingfloatlands:theropodraw", {
description = S("Raw Theropod Meat"),
inventory_image = "livingfloatlands_theropodraw.png",
on_use = minetest.item_eat(3),
groups = {food_meat_raw = 1, flammable = 2},
})
-- cooked Theropod
minetest.register_craftitem(":livingfloatlands:theropodcooked", {
description = S("Cooked Theropod Meat"),
inventory_image = "livingfloatlands_theropodcooked.png",
on_use = minetest.item_eat(5),
groups = {food_meat = 1, flammable = 2},
})
minetest.register_craft({
type = "cooking",
output = "livingfloatlands:theropodcooked",
recipe = "livingfloatlands:theropodraw",
cooktime = 40,
})

View file

@ -0,0 +1,92 @@
local S = minetest.get_translator("livingfloatlands")
mobs:register_mob("livingfloatlands:cavebear", {
type = "animal",
passive = false,
attack_type = "dogfight",
attack_animals = true,
reach = 2,
damage = 10,
hp_min = 95,
hp_max = 120,
armor = 100,
collisionbox = {-0.6, -0.01, -0.6, 1, 1.5, 0.6},
visual = "mesh",
mesh = "Cavebear.b3d",
visual_size = {x = 1.0, y = 1.0},
textures = {
{"texturecavebear.png"},
},
sounds = {
random = "livingfloatlands_cavebear",
attack = "livingfloatlands_cavebear",
},
makes_footstep_sound = true,
walk_velocity = 1.5,
run_velocity = 2.5,
runaway = false,
jump = false,
jump_height = 6,
stepheight = 3,
knock_back = false,
stay_near = {{"livingfloatlands:coldsteppe_shrub", "livingfloatlands:coldsteppe_grass", "livingfloatlands:coldsteppe_grass2", "livingfloatlands:coldsteppe_grass3", "livingfloatlands:coldsteppe_grass4"}, 6},
drops = {
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
},
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fear_height = 4,
animation = {
speed_normal = 30,
stand_start = 0,
stand_end = 100,
walk_speed = 60,
walk_start = 100,
walk_end = 200,
punch_speed = 60,
punch_start = 250,
punch_end = 350,
die_start = 250,
die_end = 350,
die_speed = 50,
die_loop = false,
die_rotate = true,
},
follow = {
"ethereal:fish_raw", "animalworld:rawfish", "mobs_fish:tropical",
"mobs:meat_raw", "animalworld:rabbit_raw", "animalworld:pork_raw", "water_life:meat_raw", "animalworld:chicken_raw", "default:apple", "farming:potato", "ethereal:banana_bread", "farming:melon_slice", "farming:carrot", "farming:seed_rice", "farming:corn", "livingfloatlands:ornithischiaraw", "livingfloatlands:sauropodraw", "livingfloatlands:theropodraw", "livingfloatlands:roasted_pine_nuts", "livingfloatlands:coldsteppe_pine3_sapling", "livingfloatlands:coldsteppe_pine2_sapling", "livingfloatlands:coldsteppe_pine_sapling", "livingfloatlands:coldsteppe_bulbous_chervil_root"
},
view_range = 10,
on_rightclick = function(self, clicker)
-- feed or tame
if mobs:feed_tame(self, clicker, 4, false, true) then return end
if mobs:protect(self, clicker) then return end
if mobs:capture_mob(self, clicker, 0, 5, 15, false, nil) then return end
end,
})
if minetest.get_modpath("ethereal") then
spawn_on = {"default:dirt_with_coniferous_litter"}
end
if not mobs.custom_spawn_livingfloatlands then
mobs:spawn({
name = "livingfloatlands:smilodon",
nodes = {"livingfloatlands:coldsteppe_litter"},
neighbors = {"livingfloatlands:coldsteppe_shrub"},
min_light = 0,
interval = 60,
chance = 2000, -- 15000
active_object_count = 1,
min_height = 1000,
max_height = 31000,
})
end
mobs:register_egg("livingfloatlands:cavebear", S("Cave Bear"), "acavebear.png")

View file

@ -0,0 +1,301 @@
local S = minetest.get_translator("livingfloatlands")
local modname = "livingfloatlands"
local modpath = minetest.get_modpath(modname)
local mg_name = minetest.get_mapgen_setting("mg_name")
minetest.register_biome({
name = "livingfloatlands:coldgiantforest",
node_top = "livingfloatlands:giantforest_litter",
depth_top = 1,
node_filler = "default:dirt",
depth_filler = 2,
node_riverbed = "default:clay",
depth_riverbed = 1,
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = 31000,
y_min = 1000,
heat_point = 47,
humidity_point = 66,
})
-- New giantforest paleo redwood tree
local function grow_new_giantforest_paleoredwood_tree(pos)
if not default.can_grow(pos) then
-- try a bit later again
minetest.get_node_timer(pos):start(math.random(240, 600))
return
end
minetest.remove_node(pos)
minetest.place_schematic({x = pos.x - 3, y = pos.y - 0, z = pos.z - 3}, modpath.."/schematics/giantforest_paleoredwood_tree.mts", "0", nil, false)
end
if minetest.get_modpath("bonemeal") then
bonemeal:add_sapling({
{"livingfloatlands:giantforest_paleoredwood_sapling", grow_new_giantforest_paleoredwood_tree, "soil"},
})
end
-- paleo redwood trunk
minetest.register_node("livingfloatlands:giantforest_paleoredwood_trunk", {
description = S("Paleo Redwood Trunk"),
tiles = {
"livingfloatlands_giantforest_paleoredwood_trunk_top.png",
"livingfloatlands_giantforest_paleoredwood_trunk_top.png",
"livingfloatlands_giantforest_paleoredwood_trunk.png"
},
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = default.node_sound_wood_defaults(),
paramtype2 = "facedir",
on_place = minetest.rotate_node,
})
-- paleo redwood wood
minetest.register_node("livingfloatlands:giantforest_paleoredwood_wood", {
description = S("Paleo Redwood Wood"),
tiles = {"livingfloatlands_giantforest_paleoredwood_wood.png"},
is_ground_content = false,
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
sounds = default.node_sound_wood_defaults(),
})
minetest.register_craft({
output = "livingfloatlands:giantforest_paleoredwood_wood 4",
recipe = {{"livingfloatlands:giantforest_paleoredwood_trunk"}}
})
minetest.register_node("livingfloatlands:giantforest_paleoredwood_leaves", {
description = S("Paleo Redwood Leaves"),
drawtype = "allfaces_optional",
waving = 1,
visual_scale = 1.0,
tiles = {"livingfloatlands_giantforest_paleoredwood_leaves.png"},
special_tiles = {"livingfloatlands_giantforest_paleoredwood_leaves.png"},
paramtype = "light",
is_ground_content = false,
groups = {snappy = 3, leafdecay = 3, winleafdecay = 3, flammable = 2, leaves = 1},
drop = {
max_items = 1,
items = {
{
-- player will get sapling with 1/50 chance
items = {'livingfloatlands:giantforest_paleoredwood_sapling'},
rarity = 50,
},
{
-- player will get leaves only if he get no saplings,
-- this is because max_items is 1
items = {'livingfloatlands:giantforest_paleoredwood_leaves'},
}
}
},
sounds = default.node_sound_leaves_defaults(),
after_place_node = default.after_place_leaves,
})
minetest.register_node("livingfloatlands:giantforest_paleoredwood_sapling", {
description = S("Paleo Redwood Sapling"),
drawtype = "plantlike",
tiles = {"livingfloatlands_giantforest_paleoredwood_sapling.png"},
inventory_image = "livingfloatlands_giantforest_paleoredwood_sapling.png",
wield_image = "livingfloatlands_giantforest_paleoredwood_sapling.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
on_timer = grow_new_giantforest_paleoredwood_tree,
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1},
sounds = default.node_sound_leaves_defaults(),
on_construct = function(pos)
minetest.get_node_timer(pos):start(math.random(300, 1500))
end,
on_place = function(itemstack, placer, pointed_thing)
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
"livingfloatlands:giantforest_paleoredwood_sapling",
-- minp, maxp to be checked, relative to sapling pos
{x = -1, y = 0, z = -1},
{x = 1, y = 1, z = 1},
-- maximum interval of interior volume check
2)
return itemstack
end,
})
stairs.register_stair_and_slab(
"livingfloatlands_giantforest_paleoredwood_wood",
"livingfloatlands:giantforest_paleoredwood_wood",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"livingfloatlands_giantforest_paleoredwood_wood.png"},
S("Paleo Redwood Stair"),
S("Paleo Redwood Slab"),
default.node_sound_wood_defaults()
)
stairs.register_stair_and_slab(
"livingfloatlands_giantforest_paleoredwood_trunk",
"livingfloatlands:giantforest_paleoredwood_trunk",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"livingfloatlands_giantforest_paleoredwood_trunk_top.png", "livingfloatlands_giantforest_paleoredwood_trunk_top.png", "livingfloatlands_giantforest_paleoredwood_trunk.png"},
S("Paleo Redwood Trunk Stair"),
S("Paleo Redwood Trunk Slab"),
default.node_sound_wood_defaults()
)
doors.register_fencegate(
"livingfloatlands:gate_paleoredwood_wood",
{
description = S("Paleo Redwood Wood Fence Gate"),
texture = "livingfloatlands_giantforest_paleoredwood_wood.png",
material = "livingfloatlands:giantforest_paleoredwood_wood",
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
sounds = default.node_sound_wood_defaults()
}
)
default.register_fence(
"livingfloatlands:fence_paleoredwood_wood",
{
description = S("Paleo Redwood Fence"),
texture = "livingfloatlands_giantforest_paleoredwood_fencewood.png",
inventory_image = "default_fence_overlay.png^livingfloatlands_giantforest_paleoredwood_wood.png^default_fence_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_overlay.png^livingfloatlands_giantforest_paleoredwood_wood.png^default_fence_overlay.png^[makealpha:255,126,126",
material = "livingfloatlands:giantforest_paleoredwood_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
}
)
default.register_fence_rail(
"livingfloatlands:fence_rail_paleoredwood_wood",
{
description = S("Paleo Redwood Fence Rail"),
texture = "livingfloatlands_giantforest_paleoredwood_fencewood.png",
inventory_image = "default_fence_rail_overlay.png^livingfloatlands_giantforest_paleoredwood_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_rail_overlay.png^livingfloatlands_giantforest_paleoredwood_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
material = "livingfloatlands:giantforest_paleoredwood_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
}
)
minetest.register_decoration({
name = "livingfloatlands:giantforest_paleoredwood_tree",
deco_type = "schematic",
place_on = {"livingfloatlands:giantforest_litter"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.00235,
biomes = {"livingfloatlands:coldgiantforest"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands").."/schematics/giantforest_paleoredwood_tree.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:giantforest_paleoredwood_treemush",
deco_type = "schematic",
place_on = {"livingfloatlands:giantforest_litter"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.00147,
biomes = {"livingfloatlands:coldgiantforest"},
y_max = 31000,
y_min = 2,
schematic = minetest.get_modpath("livingfloatlands").."/schematics/giantforest_paleoredwood_treemush.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:giantforest_paleoredwood_tree2",
deco_type = "schematic",
place_on = {"livingfloatlands:giantforest_litter"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.00141,
biomes = {"livingfloatlands:coldgiantforest"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands").."/schematics/giantforest_paleoredwood_tree2.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:giantforest_paleoredwood_tree2mush",
deco_type = "schematic",
place_on = {"livingfloatlands:giantforest_litter"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.00090,
biomes = {"livingfloatlands:coldgiantforest"},
y_max = 31000,
y_min = 2,
schematic = minetest.get_modpath("livingfloatlands").."/schematics/giantforest_paleoredwood_tree2mush.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:giantforest_paleoredwood_treegiant",
deco_type = "schematic",
place_on = {"livingfloatlands:giantforest_litter"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.00085,
biomes = {"livingfloatlands:coldgiantforest"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands").."/schematics/giantforest_paleoredwood_treegiant.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:giantforest_rottenwood2",
deco_type = "schematic",
place_on = {"livingfloatlands:giantforest_litter"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.00028,
biomes = {"livingfloatlands:coldgiantforest"},
y_max = 31000,
y_min = 2,
schematic = minetest.get_modpath("livingfloatlands") .. "/schematics/livingfloatlands_giantforest_rottenwood2.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:giantforest_rottenwood3",
deco_type = "schematic",
place_on = {"livingfloatlands:giantforest_litter"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.00028,
biomes = {"livingfloatlands:coldgiantforest"},
y_max = 31000,
y_min = 2,
schematic = minetest.get_modpath("livingfloatlands") .. "/schematics/livingfloatlands_giantforest_rottenwood3.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,345 @@
local S = minetest.get_translator("livingfloatlands")
local modname = "livingfloatlands"
local modpath = minetest.get_modpath(modname)
local mg_name = minetest.get_mapgen_setting("mg_name")
doors.register_trapdoor("livingfloatlands:clubmoss_trapdoor", {
description = S"Clubmoss Trapdoor",
inventory_image = "livingfloatlands_clubmoss_trapdoor.png",
wield_image = "livingfloatlands_clubmoss_trapdoor.png",
tile_front = "livingfloatlands_clubmoss_trapdoor.png",
tile_side = "livingfloatlands_clubmoss_trapdoor_side.png",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, door = 1},
gain_open = 0.06,
gain_close = 0.13,
})
minetest.register_craft({
output = "livingfloatlands:clubmoss_trapdoor 2",
recipe = {
{"livingfloatlands:paleojungle_clubmoss_wood", "livingfloatlands:paleojungle_clubmoss_wood", "livingfloatlands:paleojungle_clubmoss_wood"},
{"livingfloatlands:paleojungle_clubmoss_wood", "livingfloatlands:paleojungle_clubmoss_trunk", "livingfloatlands:paleojungle_clubmoss_wood"},
}
})
doors.register("livingfloatlands_clubmoss_door", {
tiles = {{ name = "livingfloatlands_clubmoss_door.png", backface_culling = true }},
description = S"Clubmoss Door",
inventory_image = "livingfloatlands_item_clubmoss_door.png",
groups = {node = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
gain_open = 0.06,
gain_close = 0.13,
recipe = {
{"livingfloatlands:paleojungle_clubmoss_wood", "livingfloatlands:paleojungle_clubmoss_wood"},
{"livingfloatlands:paleojungle_clubmoss_trunk", "livingfloatlands:paleojungle_clubmoss_trunk"},
{"livingfloatlands:paleojungle_clubmoss_wood", "livingfloatlands:paleojungle_clubmoss_wood"},
}
})
doors.register_trapdoor("livingfloatlands:coldsteppe_trapdoor", {
description = S"Red Pine Trapdoor",
inventory_image = "livingfloatlands_coldsteppe1_trapdoor.png",
wield_image = "livingfloatlands_coldsteppe1_trapdoor.png",
tile_front = "livingfloatlands_coldsteppe1_trapdoor.png",
tile_side = "livingfloatlands_coldsteppe1_trapdoor_side.png",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, door = 1},
gain_open = 0.06,
gain_close = 0.13,
})
minetest.register_craft({
output = "livingfloatlands:coldsteppe_trapdoor 2",
recipe = {
{"livingfloatlands:coldsteppe_pine_wood", "livingfloatlands:coldsteppe_pine_wood", "livingfloatlands:coldsteppe_pine_wood"},
{"livingfloatlands:coldsteppe_pine_wood", "livingfloatlands:coldsteppe_pine_trunk", "livingfloatlands:coldsteppe_pine_wood"},
}
})
doors.register("livingfloatlands_coldsteppe_door", {
tiles = {{ name = "livingfloatlands_coldsteppe1_door.png", backface_culling = true }},
description = S"Red Pine Door",
inventory_image = "livingfloatlands_item_coldsteppe1_door.png",
groups = {node = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
gain_open = 0.06,
gain_close = 0.13,
recipe = {
{"livingfloatlands:coldsteppe_pine_wood", "livingfloatlands:coldsteppe_pine_wood"},
{"livingfloatlands:coldsteppe_pine_trunk", "livingfloatlands:coldsteppe_pine_trunk"},
{"livingfloatlands:coldsteppe_pine_wood", "livingfloatlands:coldsteppe_pine_wood"},
}
})
doors.register_trapdoor("livingfloatlands:coldsteppe2_trapdoor", {
description = S"Norway Spruce Trapdoor",
inventory_image = "livingfloatlands_coldsteppe2_trapdoor.png",
wield_image = "livingfloatlands_coldsteppe2_trapdoor.png",
tile_front = "livingfloatlands_coldsteppe2_trapdoor.png",
tile_side = "livingfloatlands_coldsteppe2_trapdoor_side.png",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, door = 1},
gain_open = 0.06,
gain_close = 0.13,
})
minetest.register_craft({
output = "livingfloatlands:coldsteppe2_trapdoor 2",
recipe = {
{"livingfloatlands:coldsteppe_pine2_wood", "livingfloatlands:coldsteppe_pine2_wood", "livingfloatlands:coldsteppe_pine2_wood"},
{"livingfloatlands:coldsteppe_pine2_wood", "livingfloatlands:coldsteppe_pine2_trunk", "livingfloatlands:coldsteppe_pine2_wood"},
}
})
doors.register("livingfloatlands_coldsteppe2_door", {
tiles = {{ name = "livingfloatlands_coldsteppe2_door.png", backface_culling = true }},
description = S"Norway Spruce Door",
inventory_image = "livingfloatlands_item_coldsteppe2_door.png",
groups = {node = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
gain_open = 0.06,
gain_close = 0.13,
recipe = {
{"livingfloatlands:coldsteppe_pine2_wood", "livingfloatlands:coldsteppe_pine2_wood"},
{"livingfloatlands:coldsteppe_pine2_trunk", "livingfloatlands:coldsteppe_pine2_trunk"},
{"livingfloatlands:coldsteppe_pine2_wood", "livingfloatlands:coldsteppe_pine2_wood"},
}
})
doors.register_trapdoor("livingfloatlands:coldsteppe3_trapdoor", {
description = S"Siberian Larix Trapdoor",
inventory_image = "livingfloatlands_coldsteppe3_trapdoor.png",
wield_image = "livingfloatlands_coldsteppe3_trapdoor.png",
tile_front = "livingfloatlands_coldsteppe3_trapdoor.png",
tile_side = "livingfloatlands_coldsteppe3_trapdoor_side.png",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, door = 1},
gain_open = 0.06,
gain_close = 0.13,
})
minetest.register_craft({
output = "livingfloatlands:coldsteppe3_trapdoor 2",
recipe = {
{"livingfloatlands:coldsteppe_pine3_wood", "livingfloatlands:coldsteppe_pine3_wood", "livingfloatlands:coldsteppe_pine3_wood"},
{"livingfloatlands:coldsteppe_pine3_wood", "livingfloatlands:coldsteppe_pine3_trunk", "livingfloatlands:coldsteppe_pine3_wood"},
}
})
doors.register("livingfloatlands_coldsteppe3_door", {
tiles = {{ name = "livingfloatlands_coldsteppe3_door.png", backface_culling = true }},
description = S"Siberian Larix Door",
inventory_image = "livingfloatlands_item_coldsteppe3_door.png",
groups = {node = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
gain_open = 0.06,
gain_close = 0.13,
recipe = {
{"livingfloatlands:coldsteppe_pine3_wood", "livingfloatlands:coldsteppe_pine3_wood"},
{"livingfloatlands:coldsteppe_pine3_trunk", "livingfloatlands:coldsteppe_pine3_trunk"},
{"livingfloatlands:coldsteppe_pine3_wood", "livingfloatlands:coldsteppe_pine3_wood"},
}
})
doors.register_trapdoor("livingfloatlands:conifere_trapdoor", {
description = S"Conifere Trapdoor",
inventory_image = "livingfloatlands_conifere_trapdoor.png",
wield_image = "livingfloatlands_conifere_trapdoor.png",
tile_front = "livingfloatlands_conifere_trapdoor.png",
tile_side = "livingfloatlands_conifere_trapdoor_side.png",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, door = 1},
gain_open = 0.06,
gain_close = 0.13,
})
minetest.register_craft({
output = "livingfloatlands:conifere_trapdoor 2",
recipe = {
{"livingfloatlands:paleojungle_conifere_wood", "livingfloatlands:paleojungle_conifere_wood", "livingfloatlands:paleojungle_conifere_wood"},
{"livingfloatlands:paleojungle_conifere_wood", "livingfloatlands:paleojungle_conifere_trunk", "livingfloatlands:paleojungle_conifere_wood"},
}
})
doors.register("livingfloatlands_conifere_door", {
tiles = {{ name = "livingfloatlands_conifere_door.png", backface_culling = true }},
description = S"Conifere Door",
inventory_image = "livingfloatlands_item_conifere_door.png",
groups = {node = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
gain_open = 0.06,
gain_close = 0.13,
recipe = {
{"livingfloatlands:paleojungle_conifere_wood", "livingfloatlands:paleojungle_conifere_wood"},
{"livingfloatlands:paleojungle_conifere_trunk", "livingfloatlands:paleojungle_conifere_trunk"},
{"livingfloatlands:paleojungle_conifere_wood", "livingfloatlands:paleojungle_conifere_wood"},
}
})
doors.register_trapdoor("livingfloatlands:joshua_trapdoor", {
description = S"Joshua Trapdoor",
inventory_image = "livingfloatlands_joshua_trapdoor.png",
wield_image = "livingfloatlands_joshua_trapdoor.png",
tile_front = "livingfloatlands_joshua_trapdoor.png",
tile_side = "livingfloatlands_joshua_trapdoor_side.png",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, door = 1},
gain_open = 0.06,
gain_close = 0.13,
})
minetest.register_craft({
output = "livingfloatlands:joshua_trapdoor 2",
recipe = {
{"livingfloatlands:paleodesert_joshua_wood", "livingfloatlands:paleodesert_joshua_wood", "livingfloatlands:paleodesert_joshua_wood"},
{"livingfloatlands:paleodesert_joshua_wood", "livingfloatlands:paleodesert_joshua_trunk", "livingfloatlands:paleodesert_joshua_wood"},
}
})
doors.register("livingfloatlands_joshua_door", {
tiles = {{ name = "livingfloatlands_joshua_door.png", backface_culling = true }},
description = S"Joshua Door",
inventory_image = "livingfloatlands_item_joshua_door.png",
groups = {node = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
gain_open = 0.06,
gain_close = 0.13,
recipe = {
{"livingfloatlands:paleodesert_joshua_wood", "livingfloatlands:paleodesert_joshua_wood"},
{"livingfloatlands:paleodesert_joshua_trunk", "livingfloatlands:paleodesert_joshua_trunk"},
{"livingfloatlands:paleodesert_joshua_wood", "livingfloatlands:paleodesert_joshua_wood"},
}
})
doors.register_trapdoor("livingfloatlands:paleooak_trapdoor", {
description = S"Paleo Oak Trapdoor",
inventory_image = "livingfloatlands_paleooak_trapdoor.png",
wield_image = "livingfloatlands_paleooak_trapdoor.png",
tile_front = "livingfloatlands_paleooak_trapdoor.png",
tile_side = "livingfloatlands_paleooak_trapdoor_side.png",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, door = 1},
gain_open = 0.06,
gain_close = 0.13,
})
minetest.register_craft({
output = "livingfloatlands:paleooak_trapdoor 2",
recipe = {
{"livingfloatlands:giantforest_paleooak_wood", "livingfloatlands:giantforest_paleooak_wood", "livingfloatlands:giantforest_paleooak_wood"},
{"livingfloatlands:giantforest_paleooak_wood", "livingfloatlands:giantforest_paleooak_trunk", "livingfloatlands:giantforest_paleooak_wood"},
}
})
doors.register("livingfloatlands_paleooak_door", {
tiles = {{ name = "livingfloatlands_paleooak_door.png", backface_culling = true }},
description = S"Paleo Oak Door",
inventory_image = "livingfloatlands_item_paleooak_door.png",
groups = {node = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
gain_open = 0.06,
gain_close = 0.13,
recipe = {
{"livingfloatlands:giantforest_paleooak_wood", "livingfloatlands:giantforest_paleooak_wood"},
{"livingfloatlands:giantforest_paleooak_trunk", "livingfloatlands:giantforest_paleooak_trunk"},
{"livingfloatlands:giantforest_paleooak_wood", "livingfloatlands:giantforest_paleooak_wood"},
}
})
doors.register_trapdoor("livingfloatlands:paleopalm_trapdoor", {
description = S"Paleo Palm Trapdoor",
inventory_image = "livingfloatlands_paleopalm_trapdoor.png",
wield_image = "livingfloatlands_paleopalm_trapdoor.png",
tile_front = "livingfloatlands_paleopalm_trapdoor.png",
tile_side = "livingfloatlands_paleopalm_trapdoor_side.png",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, door = 1},
gain_open = 0.06,
gain_close = 0.13,
})
minetest.register_craft({
output = "livingfloatlands:paleopalm_trapdoor 2",
recipe = {
{"livingfloatlands:paleojungle_paleopalm_wood", "livingfloatlands:paleojungle_paleopalm_wood", "livingfloatlands:paleojungle_paleopalm_wood"},
{"livingfloatlands:paleojungle_paleopalm_wood", "livingfloatlands:paleojungle_paleopalm_trunk", "livingfloatlands:paleojungle_paleopalm_wood"},
}
})
doors.register("livingfloatlands_paleopalm_door", {
tiles = {{ name = "livingfloatlands_paleopalm_door.png", backface_culling = true }},
description = S"Paleo Palm Door",
inventory_image = "livingfloatlands_item_paleopalm_door.png",
groups = {node = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
gain_open = 0.06,
gain_close = 0.13,
recipe = {
{"livingfloatlands:paleojungle_paleopalm_wood", "livingfloatlands:paleojungle_paleopalm_wood"},
{"livingfloatlands:paleojungle_paleopalm_trunk", "livingfloatlands:paleojungle_paleopalm_trunk"},
{"livingfloatlands:paleojungle_paleopalm_wood", "livingfloatlands:paleojungle_paleopalm_wood"},
}
})
doors.register_trapdoor("livingfloatlands:paleopine_trapdoor", {
description = S"Paleo Pine Trapdoor",
inventory_image = "livingfloatlands_paleopine_trapdoor.png",
wield_image = "livingfloatlands_paleopine_trapdoor.png",
tile_front = "livingfloatlands_paleopine_trapdoor.png",
tile_side = "livingfloatlands_paleopine_trapdoor_side.png",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, door = 1},
gain_open = 0.06,
gain_close = 0.13,
})
minetest.register_craft({
output = "livingfloatlands:paleopine_trapdoor 2",
recipe = {
{"livingfloatlands:paleodesert_paleopine_wood", "livingfloatlands:paleodesert_paleopine_wood", "livingfloatlands:paleodesert_paleopine_wood"},
{"livingfloatlands:paleodesert_paleopine_wood", "livingfloatlands:paleodesert_paleopine_trunk", "livingfloatlands:paleodesert_paleopine_wood"},
}
})
doors.register("livingfloatlands_paleopine_door", {
tiles = {{ name = "livingfloatlands_paleopine_door.png", backface_culling = true }},
description = S"Paleo Pine Door",
inventory_image = "livingfloatlands_item_paleopine_door.png",
groups = {node = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
gain_open = 0.06,
gain_close = 0.13,
recipe = {
{"livingfloatlands:paleodesert_paleopine_wood", "livingfloatlands:paleodesert_paleopine_wood"},
{"livingfloatlands:paleodesert_paleopine_trunk", "livingfloatlands:paleodesert_paleopine_trunk"},
{"livingfloatlands:paleodesert_paleopine_wood", "livingfloatlands:paleodesert_paleopine_wood"},
}
})
doors.register_trapdoor("livingfloatlands:paleoredwood_trapdoor", {
description = S"Paleo Redwood Trapdoor",
inventory_image = "livingfloatlands_redwood_trapdoor.png",
wield_image = "livingfloatlands_redwood_trapdoor.png",
tile_front = "livingfloatlands_redwood_trapdoor.png",
tile_side = "livingfloatlands_redwood_trapdoor_side.png",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, door = 1},
gain_open = 0.06,
gain_close = 0.13,
})
minetest.register_craft({
output = "livingfloatlands:paleoredwood_trapdoor 2",
recipe = {
{"livingfloatlands:giantforest_paleoredwood_wood", "livingfloatlands:giantforest_paleoredwood_wood", "livingfloatlands:giantforest_paleoredwood_wood"},
{"livingfloatlands:giantforest_paleoredwood_wood", "livingfloatlands:giantforest_paleoredwood_trunk", "livingfloatlands:giantforest_paleoredwood_wood"},
}
})
doors.register("livingfloatlands_paleoredwood_door", {
tiles = {{ name = "livingfloatlands_redwood_door.png", backface_culling = true }},
description = S"Paleo Redwood Door",
inventory_image = "livingfloatlands_item_redwood_door.png",
groups = {node = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
gain_open = 0.06,
gain_close = 0.13,
recipe = {
{"livingfloatlands:giantforest_paleoredwood_wood", "livingfloatlands:giantforest_paleoredwood_wood"},
{"livingfloatlands:giantforest_paleoredwood_trunk", "livingfloatlands:giantforest_paleoredwood_trunk"},
{"livingfloatlands:giantforest_paleoredwood_wood", "livingfloatlands:giantforest_paleoredwood_wood"},
}
})

View file

@ -0,0 +1,153 @@
local S = minetest.get_translator("livingfloatlands")
local random = math.random
mobs:register_mob("livingfloatlands:deinotherium", {
type = "animal",
passive = false,
attack_type = "dogfight",
attack_animals = false,
attack_monsters = true,
reach = 4,
damage = 20,
hp_min = 175,
hp_max = 320,
armor = 100,
collisionbox = {-1, -0.01, -1, 1, 2, 1},
visual = "mesh",
mesh = "Deinotherium.b3d",
visual_size = {x = 1.0, y = 1.0},
textures = {
{"texturedeinotherium.png"},
},
sounds = {
random = "livingfloatlands_deinotherium",
attack = "livingfloatlands_deinotherium2",
distance = 15,
},
makes_footstep_sound = true,
walk_velocity = 2,
run_velocity = 4,
runaway = false,
jump = false,
jump_height = 6,
stepheight = 2,
stay_near = {{"livingfloatlands:giantforest_grass", "livingfloatlands:giantforest_grass2", "livingfloatlands:giantforest_grass3"}, 5},
drops = {
{name = "livingfloatlands:largemammalraw", chance = 1, min = 1, max = 1},
},
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fear_height = 3,
pathfinding = true,
animation = {
speed_normal = 70,
stand_start = 0,
stand_end = 100,
stand2_speed = 45,
stand2_start = 350,
stand2_end = 450,
walk_start = 100,
walk_end = 200,
punch_start = 250,
punch_end = 350,
die_start = 250,
die_end = 350,
die_speed = 50,
die_loop = false,
die_rotate = true,
},
follow = {
"ethereal:banana_single", "farming:corn_cob", "farming:cabbage",
"default:apple", "farming:cabbage", "farming:carrot", "farming:cucumber", "farming:grapes", "farming:pineapple", "ethereal:orange", "ethereal:coconut", "ethereal:coconut_slice", "livingfloatlands:paleojungle_clubmoss_fruit", "livingfloatlands:giantforest_oaknut", "livingfloatlands:paleojungle_ferngrass"
},
view_range = 12,
replace_rate = 10,
replace_what = {"farming:soil", "farming:soil_wet"},
replace_with = "default:dirt",
on_rightclick = function(self, clicker)
-- feed or tame
if mobs:feed_tame(self, clicker, 4, false, true) then return end
if mobs:protect(self, clicker) then return end
if mobs:capture_mob(self, clicker, 0, 0, 5, false, nil) then return end
end,
})
if minetest.get_modpath("ethereal") then
spawn_on = {"ethereal:prairie_dirt", "ethereal:grove_dirt", "default:dirt_with_grass"}
end
if not mobs.custom_spawn_livingfloatlands then
mobs:spawn({
name = "livingfloatlands:deinotherium",
nodes = {"livingfloatlands:giantforest_litter"},
neighbors = {"livingfloatlands:giantforest_paleooak_trunk"},
min_light = 0,
interval = 60,
chance = 2000, -- 15000
active_object_count = 2,
min_height = 1000,
max_height = 31000,
day_toggle = true,
on_spawn = function(self, pos)
local nods = minetest.find_nodes_in_area_under_air(
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
{"livingfloatlands:giantforest_litter"})
if nods and #nods > 0 then
-- min herd of 2
local iter = math.min(#nods, 2)
-- print("--- deinotherium at", minetest.pos_to_string(pos), iter)
for n = 1, iter do
local pos2 = nods[random(#nods)]
local kid = random(4) == 1 and true or nil
pos2.y = pos2.y + 2
if minetest.get_node(pos2).name == "air" then
mobs:add_mob(pos2, {
name = "livingfloatlands:deinotherium", child = kid})
end
end
end
end
})
end
mobs:register_egg("livingfloatlands:deinotherium", ("Deinotherium"), "adeinotherium.png")
-- raw Ornithischia
minetest.register_craftitem(":livingfloatlands:largemammalraw", {
description = S("Raw meat of a large Mammal"),
inventory_image = "livingfloatlands_largemammalraw.png",
on_use = minetest.item_eat(3),
groups = {food_meat_raw = 1, flammable = 2},
})
-- cooked Ornithischia
minetest.register_craftitem(":livingfloatlands:largemammalcooked", {
description = S("Cooked meat of a large Mammal"),
inventory_image = "livingfloatlands_largemammalcooked.png",
on_use = minetest.item_eat(5),
groups = {food_meat = 1, flammable = 2},
})
minetest.register_craft({
type = "cooking",
output = "livingfloatlands:largemammalcooked",
recipe = "livingfloatlands:largemammalraw",
cooktime = 40,
})

View file

@ -0,0 +1,8 @@
mobs
default
doors
animalworld?
ethereal?
farming?
hunger_ng?
bonemeal?

View file

@ -0,0 +1 @@
Adds various prehistoric animals to your Floatland Zone, if you are using V7 Map Generator. The floating islands can appear at a height of 1280 nodes.

View file

@ -0,0 +1,69 @@
minetest.register_craft({
output = "dye:brown 2",
recipe = {
{"livingfloatlands:coldsteppe_grass1"}
},
})
minetest.register_craft({
output = "dye:brown 2",
recipe = {
{"livingfloatlands:coldsteppe_grass2"}
},
})
minetest.register_craft({
output = "dye:black 2",
recipe = {
{"livingfloatlands:coldsteppe_grass3"}
},
})
minetest.register_craft({
output = "dye:yellow 2",
recipe = {
{"livingfloatlands:coldsteppe_bulbouschervil_plant"}
},
})
minetest.register_craft({
output = "dye:white 2",
recipe = {
{"livingfloatlands:giantforest_grass"}
},
})
minetest.register_craft({
output = "dye:blue 2",
recipe = {
{"livingfloatlands:giantforest_grass2"}
},
})
minetest.register_craft({
output = "dye:yellow 2",
recipe = {
{"livingfloatlands:giantforest_grass3"}
},
})
minetest.register_craft({
output = "dye:brown 2",
recipe = {
{"livingfloatlands:giantforest_oaknut"}
},
})
minetest.register_craft({
output = "dye:cyan 2",
recipe = {
{"livingfloatlands:puzzlegrass"}
},
})
minetest.register_craft({
output = "dye:cyan 2",
recipe = {
{"livingfloatlands:puzzlegrass_top"}
},
})

View file

@ -0,0 +1,128 @@
local S = minetest.get_translator("livingfloatlands")
local random = math.random
mobs:register_mob("livingfloatlands:entelodon", {
type = "animal",
passive = false,
attack_type = "dogfight",
attack_animals = true,
attack_monsters = true,
group_attack = true,
reach = 3,
damage = 13,
hp_min = 100,
hp_max = 150,
armor = 100,
collisionbox = {-0.8, -0.01, -0.8, 0.8, 1.8, 0.8},
visual = "mesh",
mesh = "Entelodon.b3d",
visual_size = {x = 1.0, y = 1.0},
textures = {
{"textureentelodon.png"},
},
sounds = {
random = "livingfloatlands_entelodon2",
attack = "livingfloatlands_entelodon",
},
makes_footstep_sound = true,
walk_velocity = 2,
run_velocity = 3,
runaway = false,
jump = false,
jump_height = 6,
knock_back = false,
stepheight = 2,
stay_near = {{"livingfloatlands:giantforest_grass", "livingfloatlands:giantforest_grass2", "livingfloatlands:giantforest_grass3"}, 5},
drops = {
{name = "livingfloatlands:largemammalraw", chance = 1, min = 1, max = 1},
},
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fear_height = 3,
pathfinding = true,
animation = {
speed_normal = 50,
stand_start = 0,
stand_end = 100,
walk_speed = 75,
walk_start = 100,
walk_end = 200,
punch_speed = 100,
punch_start = 250,
punch_end = 350,
die_start = 250,
die_end = 350,
die_speed = 50,
die_loop = false,
die_rotate = true,
},
follow = {
"ethereal:banana_single", "farming:corn_cob", "farming:cabbage",
"default:apple", "farming:cabbage", "farming:carrot", "farming:cucumber", "farming:grapes", "farming:pineapple", "ethereal:orange", "ethereal:coconut", "ethereal:coconut_slice", "mobs:meat_raw", "animalworld:rabbit_raw", "animalworld:pork_raw", "water_life:meat_raw", "animalworld:chicken_raw", "livingfloatlands:ornithischiaraw", "livingfloatlands:sauropodraw", "livingfloatlands:theropodraw", "livingfloatlands:giantforest_oaknut"
},
view_range = 12,
replace_rate = 10,
replace_what = {"farming:soil", "farming:soil_wet"},
replace_with = "default:dirt",
on_rightclick = function(self, clicker)
-- feed or tame
if mobs:feed_tame(self, clicker, 4, false, true) then return end
if mobs:protect(self, clicker) then return end
if mobs:capture_mob(self, clicker, 0, 0, 15, false, nil) then return end
end,
})
if minetest.get_modpath("ethereal") then
spawn_on = {"ethereal:prairie_dirt", "ethereal:dry_dirt", "default:desert_sand", "default:dry_dirt_with_dry_grass"}
end
if not mobs.custom_spawn_livingfloatlands then
mobs:spawn({
name = "livingfloatlands:entelodon",
nodes = {"livingfloatlands:giantforest_litter"},
neighbors = {"livingfloatlands:giantforest_paleoredwood_trunk", "livingfloatlands:giantforest_paleooak_trunk"},
min_light = 0,
interval = 60,
chance = 2000, -- 15000
active_object_count = 2,
min_height = 1000,
max_height = 31000,
day_toggle = true,
on_spawn = function(self, pos)
local nods = minetest.find_nodes_in_area_under_air(
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
{"livingfloatlands:giantforest_litter"})
if nods and #nods > 0 then
-- min herd of 2
local iter = math.min(#nods, 2)
-- print("--- entelodon at", minetest.pos_to_string(pos), iter)
for n = 1, iter do
local pos2 = nods[random(#nods)]
local kid = random(4) == 1 and true or nil
pos2.y = pos2.y + 2
if minetest.get_node(pos2).name == "air" then
mobs:add_mob(pos2, {
name = "livingfloatlands:entelodon", child = kid})
end
end
end
end
})
end
mobs:register_egg("livingfloatlands:entelodon", ("Entelodon"), "aentelodon.png")

View file

@ -0,0 +1,110 @@
local S = minetest.get_translator("livingfloatlands")
mobs:register_mob("livingfloatlands:gastornis", {
stepheight = 2,
type = "animal",
passive = false,
attack_type = "dogfight",
group_attack = true,
attack_monsters = true,
owner_loyal = true,
attack_npcs = false,
reach = 2,
damage = 12,
hp_min = 80,
hp_max = 120,
armor = 100,
collisionbox = {-0.7, -0.01, -0.5, 0.5, 1.5, 0.7},
visual = "mesh",
mesh = "Gastornis.b3d",
textures = {
{"texturegastornis.png"}, -- white
{"texturegastornis.png"},
{"texturegastornis.png"},
},
child_texture = {
{"texturegastornis.png"},
},
makes_footstep_sound = true,
sounds = {
random = "livingfloatlands_gastornis",
distance = 15,
},
walk_velocity = 1.5,
run_velocity = 3,
jump = true,
jump_height = 6,
stay_near = {{"livingfloatlands:giantforest_grass", "livingfloatlands:giantforest_grass2", "livingfloatlands:giantforest_grass3"}, 5},
runaway = true,
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor"},
drops = {
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
{name = "livingfloatlands:dinosaur_feather", chance = 1, min = 0, max = 2},
},
water_damage = 1,
lava_damage = 5,
light_damage = 0,
fear_height = 3,
animation = {
speed_normal = 50,
stand_start = 1,
stand_end = 100,
stand1_start = 1,
stand1_end = 100,
walk_speed = 75,
walk_start = 100,
walk_end = 200,
speed_run = 100,
run_start = 100,
run_end = 200,
speed_punch = 50,
punch_start = 200,
punch_end = 300,
die_start = 200,
die_end = 300,
die_speed = 50,
die_loop = false,
die_rotate = true,
},
follow = {
"farming:seed_wheat", "farming:seed_cotton", "farming:seed_barley",
"farming:seed_oat", "farming:seed_rye", "mobs:meat_raw", "animalworld:rabbit_raw", "animalworld:pork_raw", "water_life:meat_raw", "animalworld:chicken_raw", "livingfloatlands:ornithischiaraw", "livingfloatlands:sauropodraw", "livingfloatlands:theropodraw", "livingfloatlands:giantforest_oaknut"
},
view_range = 10,
on_rightclick = function(self, clicker)
if mobs:feed_tame(self, clicker, 8, true, true) then return end
if mobs:protect(self, clicker) then return end
if mobs:capture_mob(self, clicker, 0, 0, 15, false, nil) then return end
end,
})
if minetest.get_modpath("ethereal") then
spawn_on = {"ethereal:grove_dirt", "ethereal:bamboo_dirt", "default:dirt_with_rainforest_litter"}
end
if not mobs.custom_spawn_livingfloatlands then
mobs:spawn({
name = "livingfloatlands:gastornis",
nodes = {"livingfloatlands:giantforest_litter"},
neighbors = {"livingfloatlands:giantforest_paleoredwood_trunk", "livingfloatlands:giantforest_paleooak_trunk"},
min_light = 0,
interval = 60,
chance = 2000, -- 15000
active_object_count = 2,
min_height = 1000,
max_height = 31000,
day_toggle = true,
})
end
mobs:register_egg("livingfloatlands:gastornis", ("Gastornis"), "agastornis.png", 0)
mobs:alias_mob("livingfloatlands:gastornis", "livingfloatlands:gastornis") -- compatibility

View file

@ -0,0 +1,570 @@
local S = minetest.get_translator("livingfloatlands")
local modname = "livingfloatlands"
local modpath = minetest.get_modpath(modname)
local mg_name = minetest.get_mapgen_setting("mg_name")
minetest.register_node("livingfloatlands:giantforest_litter", {
description = S("Giant Forest dirt with Grass"),
tiles = {"livingfloatlands_giantforest_litter.png", "default_dirt.png",
{name = "default_dirt.png^livingfloatlands_giantforest_litter_side.png",
tileable_vertical = false}},
groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1},
drop = "default:dirt",
sounds = default.node_sound_dirt_defaults({
footstep = {name = "default_grass_footstep", gain = 0.25},
}),
})
minetest.register_biome({
name = "livingfloatlands:giantforest",
node_top = "livingfloatlands:giantforest_litter",
depth_top = 1,
node_filler = "default:dirt",
depth_filler = 2,
node_riverbed = "default:clay",
depth_riverbed = 1,
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = 31000,
y_min = 1000,
heat_point = 52,
humidity_point = 71,
})
minetest.register_node("livingfloatlands:giantforest_litter_walkway", {
description = S("Giant Forest Ground Walkway"),
tiles = {"livingfloatlands_giantforest_litter_walkway.png"},
groups = {crumbly = 3, soil = 1, falling_node = 0},
drop = "livingfloatlands:giantforest_litter_walkway",
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("livingfloatlands:giantforest_litter_with_moss", {
description = S("Giant Forest Ground with Moss"),
tiles = {"livingfloatlands_giantforest_litter_with_moss.png"},
groups = {crumbly = 3, soil = 1, falling_node = 0},
drop = "livingfloatlands:giantforest_litter_with_moss",
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_decoration({
deco_type = "simple",
place_on = {"livingfloatlands:giantforest_litter"},
sidelen = 16,
place_offset_y = -1,
flags = "force_placement",
noise_params = {
offset = -0,
scale = 0.2,
spread = {x = 50, y = 50, z = 50},
seed = 9233,
octaves = 7,
persist = 1,
},
y_max = 3100,
y_min = 0,
decoration = "livingfloatlands:giantforest_litter_walkway"
})
minetest.register_decoration({
deco_type = "simple",
place_on = {"livingfloatlands:giantforest_litter"},
sidelen = 16,
place_offset_y = -1,
flags = "force_placement",
noise_params = {
offset = -0,
scale = 0.2,
spread = {x = 50, y = 50, z = 50},
seed = 1874,
octaves = 8,
persist = 1,
},
y_max = 3100,
y_min = 0,
decoration = "livingfloatlands:giantforest_litter_with_moss"
})
minetest.register_node("livingfloatlands:giantforest_fern", {
description = S("Giant Forest Fern"),
drawtype = "plantlike",
waving = 1,
visual_scale = 4.0,
tiles = {"livingfloatlands_giantforest_fern.png"},
inventory_image = "livingfloatlands_giantforest_fern.png",
wield_image = "livingfloatlands_giantforest_fern.png",
paramtype = "light",
paramtype2 = "meshoptions",
place_param2 = 4,
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flammable = 3, attached_node = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 4 / 16, 6 / 16},
},
})
minetest.register_decoration({
name = "livingfloatlands:giantforest_fern",
deco_type = "simple",
place_on = {"livingfloatlands:giantforest_litter", "livingfloatlands:paleojungle_litter"},
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.01,
spread = {x = 200, y = 200, z = 200},
seed = 329,
octaves = 3,
persist = 0.6
},
biomes = {"livingfloatlands:giantforest", "livingfloatlands:coldgiantforest", "livingfloatlands:paleojungle"},
y_max = 31000,
y_min = 2,
decoration = "livingfloatlands:giantforest_fern",
param2 = 4,
})
minetest.register_decoration({
name = "livingfloatlands:giantforest_grass",
deco_type = "simple",
place_on = {"livingfloatlands:giantforest_litter"},
sidelen = 16,
noise_params = {
offset = -0.03,
scale = 0.1,
spread = {x = 100, y = 100, z = 100},
seed = 2929,
octaves = 5,
persist = 1,
},
y_max = 31000,
y_min = 1,
decoration = "livingfloatlands:giantforest_grass",
spawn_by = "livingfloatlands:giantforest_litter"
})
minetest.register_node("livingfloatlands:giantforest_grass", {
description = S"Wood Anemone",
drawtype = "plantlike",
waving = 1,
visual_scale = 1.0,
tiles = {"livingfloatlands_giantforest_grass.png"},
inventory_image = "livingfloatlands_giantforest_grass.png",
wield_image = "livingfloatlands_giantforest_grass.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flower = 1, flora = 1, attached_node = 1, flammable = 1, beautiflowers = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 0.0, 4 / 16},
},
})
minetest.register_decoration({
name = "livingfloatlands:giantforest_grass2",
deco_type = "simple",
place_on = {"livingfloatlands:giantforest_litter"},
sidelen = 16,
noise_params = {
offset = -0.03,
scale = 0.1,
spread = {x = 100, y = 100, z = 100},
seed = 1123,
octaves = 7,
persist = 1,
},
y_max = 31000,
y_min = 1,
decoration = "livingfloatlands:giantforest_grass2",
spawn_by = "livingfloatlands:giantforest_litter"
})
minetest.register_node("livingfloatlands:giantforest_grass2", {
description = S"Periwinkle",
drawtype = "plantlike",
waving = 1,
visual_scale = 1.0,
tiles = {"livingfloatlands_giantforest_grass2.png"},
inventory_image = "livingfloatlands_giantforest_grass2.png",
wield_image = "livingfloatlands_giantforest_grass2.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flower = 1, flora = 1, attached_node = 1, flammable = 1, beautiflowers = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 0.0, 4 / 16},
},
})
minetest.register_decoration({
name = "livingfloatlands:giantforest_grass3",
deco_type = "simple",
place_on = {"livingfloatlands:giantforest_litter", "livingfloatlands:paleojungle_litter"},
sidelen = 16,
noise_params = {
offset = -0.03,
scale = 0.1,
spread = {x = 100, y = 100, z = 100},
seed = 6633,
octaves = 4,
persist = 1,
},
y_max = 31000,
y_min = 1,
decoration = "livingfloatlands:giantforest_grass3",
spawn_by = "livingfloatlands:giantforest_litter"
})
minetest.register_node("livingfloatlands:giantforest_grass3", {
description = S"Giant Forest Grass",
drawtype = "plantlike",
waving = 1,
visual_scale = 1.0,
tiles = {"livingfloatlands_giantforest_grass3.png"},
inventory_image = "livingfloatlands_giantforest_grass3.png",
wield_image = "livingfloatlands_giantforest_grass3.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flower = 1, flora = 1, attached_node = 1, flammable = 1, beautiflowers = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 0.0, 4 / 16},
},
})
-- fungus
minetest.register_node("livingfloatlands:giantforest_tinderfungus", {
description = S("Tinder Fungus"),
tiles = {
"livingfloatlands_giantforest_tinderfungus_top.png",
"livingfloatlands_giantforest_tinderfungus_bottom.png",
"livingfloatlands_giantforest_tinderfungus_side.png"
},
groups = {coal = 1, choppy = 2, winleafdecay = 3, oddly_breakable_by_hand = 1, flammable = 1, winleafdecay_drop = 1 },
sounds = default.node_sound_wood_defaults(),
paramtype2 = "facedir",
on_place = minetest.rotate_node,
})
minetest.register_craft({
type = "fuel",
recipe = "livingfloatlands:giantforest_tinderfungus",
burntime = 120,
})
-- cracked oaknut
minetest.register_craftitem("livingfloatlands:giantforest_oaknut_cracked", {
description = S("Cracked Oaknut"),
inventory_image = "livingfloatlands_giantforest_oaknut_cracked.png",
on_use = minetest.item_eat(5),
groups = {food = 1, flammable = 2},
})
minetest.register_craft({
output = "livingfloatlands:giantforest_oaknut_cracked",
type = "shapeless",
recipe =
{"livingfloatlands:giantforest_oaknut", "group:stone"}
})
-- oaknut
minetest.register_node("livingfloatlands:giantforest_oaknut", {
description = S("Oaknut"),
drawtype = "torchlike",
tiles = {"livingfloatlands_giantforest_oaknut.png"},
inventory_image = "livingfloatlands_giantforest_oaknut.png",
wield_image = "livingfloatlands_giantforest_oaknut.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.31, -0.5, -0.31, 0.31, 0.5, 0.31}
},
groups = {
fleshy = 3, dig_immediate = 3, flammable = 2,
leafdecay = 1, leafdecay_drop = 1, winleafdecay_drop = 1
},
drop = "livingfloatlands:giantforest_oaknut",
on_use = minetest.item_eat(2),
sounds = default.node_sound_leaves_defaults(),
after_place_node = function(pos, placer)
if placer:is_player() then
minetest.set_node(pos, {name = "livingfloatlands:giantforest_oaknut", param2 = 1})
end
end
})
-- New giantforest paleo oak tree
local function grow_new_giantforest_paleooak_tree(pos)
if not default.can_grow(pos) then
-- try a bit later again
minetest.get_node_timer(pos):start(math.random(240, 600))
return
end
minetest.remove_node(pos)
minetest.place_schematic({x = pos.x - 7, y = pos.y - 0, z = pos.z - 8}, modpath.."/schematics/giantforest_paleooak_tree.mts", "0", nil, false)
end
if minetest.get_modpath("bonemeal") then
bonemeal:add_sapling({
{"livingfloatlands:giantforest_paleooak_sapling", grow_new_giantforest_paleooak_tree, "soil"},
})
end
-- paleo oak trunk
minetest.register_node("livingfloatlands:giantforest_paleooak_trunk", {
description = S("Paleo Oak Trunk"),
tiles = {
"livingfloatlands_giantforest_paleooak_trunk_top.png",
"livingfloatlands_giantforest_paleooak_trunk_top.png",
"livingfloatlands_giantforest_paleooak_trunk.png"
},
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = default.node_sound_wood_defaults(),
paramtype2 = "facedir",
on_place = minetest.rotate_node,
})
-- paleo oak wood
minetest.register_node("livingfloatlands:giantforest_paleooak_wood", {
description = S("Paleo Oak Wood"),
tiles = {"livingfloatlands_giantforest_paleooak_wood.png"},
is_ground_content = false,
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
sounds = default.node_sound_wood_defaults(),
})
minetest.register_craft({
output = "livingfloatlands:giantforest_paleooak_wood 4",
recipe = {{"livingfloatlands:giantforest_paleooak_trunk"}}
})
minetest.register_node("livingfloatlands:giantforest_paleooak_leaves", {
description = S("Paleo Oak Leaves"),
drawtype = "allfaces_optional",
waving = 1,
visual_scale = 1.0,
tiles = {"livingfloatlands_giantforest_paleooak_leaves.png"},
special_tiles = {"livingfloatlands_giantforest_paleooak_leaves.png"},
paramtype = "light",
is_ground_content = false,
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
drop = {
max_items = 1,
items = {
{
-- player will get sapling with 1/50 chance
items = {'livingfloatlands:giantforest_paleooak_sapling'},
rarity = 50,
},
{
-- player will get leaves only if he get no saplings,
-- this is because max_items is 1
items = {'livingfloatlands:giantforest_paleooak_leaves'},
}
}
},
sounds = default.node_sound_leaves_defaults(),
after_place_node = default.after_place_leaves,
})
minetest.register_node("livingfloatlands:giantforest_paleooak_sapling", {
description = S("Paleo Oak Sapling"),
drawtype = "plantlike",
tiles = {"livingfloatlands_giantforest_paleooak_sapling.png"},
inventory_image = "livingfloatlands_giantforest_paleooak_sapling.png",
wield_image = "livingfloatlands_giantforest_paleooak_sapling.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
on_timer = grow_new_giantforest_paleooak_tree,
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1},
sounds = default.node_sound_leaves_defaults(),
on_construct = function(pos)
minetest.get_node_timer(pos):start(math.random(300, 1500))
end,
on_place = function(itemstack, placer, pointed_thing)
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
"livingfloatlands:giantforest_paleooak_sapling",
-- minp, maxp to be checked, relative to sapling pos
{x = -1, y = 0, z = -1},
{x = 1, y = 1, z = 1},
-- maximum interval of interior volume check
2)
return itemstack
end,
})
stairs.register_stair_and_slab(
"livingfloatlands_giantforest_paleooak_wood",
"livingfloatlands:giantforest_paleooak_wood",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"livingfloatlands_giantforest_paleooak_wood.png"},
S("Paleo Oak Stair"),
S("Paleo Oak Slab"),
default.node_sound_wood_defaults()
)
stairs.register_stair_and_slab(
"livingfloatlands_giantforest_paleooak_trunk",
"livingfloatlands:giantforest_paleooak_trunk",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"livingfloatlands_giantforest_paleooak_trunk_top.png", "livingfloatlands_giantforest_paleooak_trunk_top.png", "livingfloatlands_giantforest_paleooak_trunk.png"},
S("Paleo Oak Trunk Stair"),
S("Paleo Oak Trunk Slab"),
default.node_sound_wood_defaults()
)
doors.register_fencegate(
"livingfloatlands:gate_paleooak_wood",
{
description = S("Paleo Oak Wood Fence Gate"),
texture = "livingfloatlands_giantforest_paleooak_wood.png",
material = "livingfloatlands:giantforest_paleooak_wood",
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
sounds = default.node_sound_wood_defaults()
}
)
default.register_fence(
"livingfloatlands:fence_paleooak_wood",
{
description = S("Paleo Oak Fence"),
texture = "livingfloatlands_giantforest_paleooak_fencewood.png",
inventory_image = "default_fence_overlay.png^livingfloatlands_giantforest_paleooak_wood.png^default_fence_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_overlay.png^livingfloatlands_giantforest_paleooak_wood.png^default_fence_overlay.png^[makealpha:255,126,126",
material = "livingfloatlands:giantforest_paleooak_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
}
)
default.register_fence_rail(
"livingfloatlands:fence_rail_paleooak_wood",
{
description = S("Paleo Oak Fence Rail"),
texture = "livingfloatlands_giantforest_paleooak_fencewood.png",
inventory_image = "default_fence_rail_overlay.png^livingfloatlands_giantforest_paleooak_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_rail_overlay.png^livingfloatlands_giantforest_paleooak_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
material = "livingfloatlands:giantforest_paleooak_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
}
)
minetest.register_decoration({
name = "livingfloatlands:giantforest_paleooak_tree",
deco_type = "schematic",
place_on = {"livingfloatlands:giantforest_litter"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.00265,
biomes = {"livingfloatlands:giantforest"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands").."/schematics/giantforest_paleooak_tree.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:giantforest_paleooak_tree2",
deco_type = "schematic",
place_on = {"livingfloatlands:giantforest_litter"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.00265,
biomes = {"livingfloatlands:giantforest"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands").."/schematics/giantforest_paleooak_tree2.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:giantforest_paleooak_tree3",
deco_type = "schematic",
place_on = {"livingfloatlands:giantforest_litter"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.00265,
biomes = {"livingfloatlands:giantforest"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands").."/schematics/giantforest_paleooak_tree3.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:giantforest_rottenwood",
deco_type = "schematic",
place_on = {"livingfloatlands:giantforest_litter"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.00025,
biomes = {"livingfloatlands:giantforest"},
y_max = 31000,
y_min = 2,
schematic = minetest.get_modpath("livingfloatlands") .. "/schematics/livingfloatlands_giantforest_rottenwood.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:giantforest_rottenwood4",
deco_type = "schematic",
place_on = {"livingfloatlands:giantforest_litter"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.00025,
biomes = {"livingfloatlands:giantforest"},
y_max = 31000,
y_min = 2,
schematic = minetest.get_modpath("livingfloatlands") .. "/schematics/livingfloatlands_giantforest_rottenwood4.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
if minetest.get_modpath("bonemeal") then
bonemeal:add_deco({
{"livingfloatlands:giantforest_litter", {"livingfloatlands:giantforest_grass3", "livingfloatlands:giantforest_grass2", "livingfloatlands:giantforest_grass", "livingfloatlands:giantforest_fern"}, {}}
})
end

View file

@ -0,0 +1,95 @@
local S = minetest.get_translator("livingfloatlands")
mobs:register_mob("livingfloatlands:gigantopithecus", {
stepheight = 3,
type = "animal",
passive = false,
attack_type = "dogfight",
group_attack = true,
attack_animals = false,
attack_npcs = false,
attack_monsters = true,
owner_loyal = true,
reach = 3,
damage = 11,
hp_min = 85,
hp_max = 120,
armor = 100,
collisionbox = {-0.8, -0.01, -0.8, 0.8, 1.6, 0.8},
visual = "mesh",
mesh = "Gigantopithecus.b3d",
textures = {
{"texturegigantopithecus.png"},
},
makes_footstep_sound = true,
sounds = {
random = "livingfloatlands_gigantopithecus2",
attack = "livingfloatlands_gigantopithecus",
distance = 20,
},
walk_velocity = 2,
run_velocity = 3,
walk_chance = 20,
runaway = false,
jump = false,
jump_height = 3,
pushable = true,
follow = {"default:apple", "farming:potato", "farming:melon_slice", "farming:cucumber", "farming:cabbage", "farming:lettuce", "farming:bread", "ethereal:banana_single", "livingfloatlands:giantforest_oaknut", "farming:melon_8", "farming:pumpkin_8", "ethereal:strawberry", "farming:blackberry", "naturalbiomes:blackberry", "naturalbiomes:cowberry", "naturalbiomes:banana", "naturalbiomes:banana_bunch", "farming:blueberries", "ethereal:orange", "livingdesert:figcactus_fruit", "livingfloatlands:paleojungle_clubmoss_fruit", "ethereal:banana", "livingdesert:date_palm_fruits", "farming:melon_slice", "naturalbiomes:wildrose", "naturalbiomes:banana"},
view_range = 10,
stay_near = {{"livingfloatlands:giantforest_grass", "livingfloatlands:giantforest_grass2", "livingfloatlands:giantforest_grass3"}, 5},
drops = {
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
{name = "mobs:leather", chance = 1, min = 0, max = 2},
},
water_damage = 0,
lava_damage = 5,
light_damage = 0,
fear_height = 6,
animation = {
speed_normal = 50,
stand_start = 350,
stand_end = 450,
walk_speed = 75,
walk_start = 0,
walk_end = 100,
punch_speed = 100,
punch_start = 150,
punch_end = 250,
die_start = 150,
die_end = 250,
die_speed = 50,
die_loop = false,
die_rotate = true,
},
on_rightclick = function(self, clicker)
if mobs:feed_tame(self, clicker, 8, true, true) then return end
if mobs:protect(self, clicker) then return end
if mobs:capture_mob(self, clicker, 0, 5, 5, false, nil) then return end
end,
})
if minetest.get_modpath("ethereal") then
spawn_on = {"ethereal:grove_dirt", "ethereal:bamboo_dirt", "default:dirt_with_grass", "default:dirt_with_rainforest_litter"}
end
if not mobs.custom_spawn_livingfloatlands then
mobs:spawn({
name = "livingfloatlands:gigantopithecus",
nodes = {"livingfloatlands:giantforest_litter"},
neighbors = {"livingfloatlands:giantforest_paleooak_trunk"},
min_light = 0,
interval = 60,
active_object_count = 2,
chance = 2000, -- 15000
min_height = 1000,
max_height = 31000,
})
end
mobs:register_egg("livingfloatlands:gigantopithecus", ("Gigantopithecus"), "agigantopithecus.png")
mobs:alias_mob("livingfloatlands:gigantopithecus", "livingfloatlands:gigantopithecus") -- compatibility

View file

@ -0,0 +1,39 @@
if minetest.get_modpath("hunger_ng") ~= nil then
hunger_ng.add_hunger_data('livingfloatlands:ornithischiaraw', {
satiates = 1.0,
})
hunger_ng.add_hunger_data('livingfloatlands:ornithischiacooked', {
satiates = 6.0,
})
hunger_ng.add_hunger_data('livingfloatlands:theropodraw', {
satiates = 1.0,
})
hunger_ng.add_hunger_data('livingfloatlands:theropodcooked', {
satiates = 5.0,
})
hunger_ng.add_hunger_data('livingfloatlands:largemammalraw', {
satiates = 1.0,
})
hunger_ng.add_hunger_data('livingfloatlands:largemammalcooked', {
satiates = 5.0,
})
hunger_ng.add_hunger_data('livingfloatlands:sauropodraw', {
satiates = 1.0,
})
hunger_ng.add_hunger_data('livingfloatlands:sauropodcooked', {
satiates = 5.0,
})
hunger_ng.add_hunger_data('livingfloatlands:coldsteppe_bulbous_chervil_root', {
satiates = 2.0,
})
hunger_ng.add_hunger_data('livingfloatlands:roasted_pine_nuts', {
satiates = 2.0,
})
hunger_ng.add_hunger_data('livingfloatlands:giantforest_oaknut_cracked', {
satiates = 3.0,
})
hunger_ng.add_hunger_data('livingfloatlands:paleojungle_clubmoss_fruit', {
satiates = 3.0,
})
end

View file

@ -0,0 +1,84 @@
--This creates the livingfloatlands object.
naturalbiomes = {}
--This creates the naturalbiomes.settings object, and fills it with either the menu selected choices as defined in settingtypes.txt, or default values, (In this case, false).
naturalbiomes.settings = {
clear_biomes = minetest.settings:get_bool("livingfloatlands.clear_biomes") or false,
clear_decos = minetest.settings:get_bool("livingfloatlands.clear_decos") or false,
clear_ores = minetest.settings:get_bool("livingfloatlands.clear_ores") or false,
}
if naturalbiomes.settings.clear_biomes then
minetest.clear_registered_biomes()
end
if naturalbiomes.settings.clear_decos then
minetest.clear_registered_decorations()
end
if naturalbiomes.settings.clear_ores then
minetest.clear_registered_ores()
end
local modname = "livingfloatlands"
local modpath = minetest.get_modpath(modname)
local mg_name = minetest.get_mapgen_setting("mg_name")
-- Load support for intllib.
local path = minetest.get_modpath(minetest.get_current_modname()) .. "/"
local S = minetest.get_translator and minetest.get_translator("livingfloatlands") or
dofile(path .. "intllib.lua")
mobs.intllib = S
-- Check for custom mob spawn file
local input = io.open(path .. "spawn.lua", "r")
if input then
mobs.custom_spawn_livingfloatlands = true
input:close()
input = nil
end
-- Animals
dofile(path .. "carnotaurus.lua") --
dofile(path .. "nigersaurus.lua") --
dofile(path .. "deinotherium.lua") --
dofile(path .. "mammooth.lua") --
dofile(path .. "gastornis.lua") --
dofile(path .. "woollyrhino.lua") --
dofile(path .. "velociraptor.lua") --
dofile(path .. "triceratops.lua") --
dofile(path .. "smilodon.lua") --
dofile(path .. "parasaurolophus.lua") --
dofile(path .. "gigantopithecus.lua") --
dofile(path .. "wildhorse.lua") --
dofile(path .. "entelodon.lua") --
dofile(path .. "oviraptor.lua") --
dofile(path .. "stegosaurus.lua") --
dofile(path .. "ankylosaurus.lua") --
dofile(path .. "lycaenops.lua") --
dofile(path .. "tyrannosaurus.lua") --
dofile(path .. "cavebear.lua") --
dofile(path .. "rhamphorhynchus.lua") --
dofile(path .. "coldsteppe.lua") --
dofile(path .. "paleodesert.lua") --
dofile(path .. "giantforest.lua") --
dofile(path .. "coldgiantforest.lua") --
dofile(path .. "paleojungle.lua") --
dofile(path .. "dye.lua") --
dofile(path .. "crafting.lua") --
dofile(path .. "leafdecay.lua") --
dofile(path .. "hunger.lua") --
-- Load custom spawning
if mobs.custom_spawn_livingfloatlands then
dofile(path .. "spawn.lua")
end
print (S("[MOD] Mobs Redo Animals loaded"))

View file

@ -0,0 +1,3 @@
-- Support for the old multi-load method
dofile(minetest.get_modpath("intllib").."/init.lua")

View file

@ -0,0 +1,60 @@
default.register_leafdecay({
trunks = {"livingfloatlands:giantforest_paleoredwood_trunk"},
leaves = {"livingfloatlands:giantforest_paleoredwood_leaves"},
radius = 6
})
default.register_leafdecay({
trunks = {"livingfloatlands:coldsteppe_pine_trunk"},
leaves = {"livingfloatlands:coldsteppe_pine_leaves", "livingfloatlands:coldsteppe_pine_pinecone"},
radius = 5
})
default.register_leafdecay({
trunks = {"livingfloatlands:coldsteppe_pine2_trunk"},
leaves = {"livingfloatlands:coldsteppe_pine2_leaves", "livingfloatlands:coldsteppe_pine2_pinecone"},
radius = 6
})
default.register_leafdecay({
trunks = {"livingfloatlands:coldsteppe_pine3_trunk"},
leaves = {"livingfloatlands:coldsteppe_pine3_leaves", "livingfloatlands:coldsteppe_pine3_pinecone"},
radius = 5
})
default.register_leafdecay({
trunks = {"livingfloatlands:giantforest_paleooak_trunk"},
leaves = {"livingfloatlands:giantforest_paleooak_leaves", "livingfloatlands:giantforest_oaknut"},
radius = 6
})
default.register_leafdecay({
trunks = {"livingfloatlands:paleodesert_joshua_trunk"},
leaves = {"livingfloatlands:paleodesert_joshua_leaves"},
radius = 3
})
default.register_leafdecay({
trunks = {"livingfloatlands:paleodesert_paleopine_trunk"},
leaves = {"livingfloatlands:paleodesert_paleopine_leaves"},
radius = 6
})
default.register_leafdecay({
trunks = {"livingfloatlands:paleojungle_clubmoss_trunk"},
leaves = {"livingfloatlands:paleojungle_clubmoss_leaves", "livingfloatlands:paleojungle_clubmoss_fruit"},
radius = 6
})
default.register_leafdecay({
trunks = {"livingfloatlands:paleojungle_conifere_trunk"},
leaves = {"livingfloatlands:paleojungle_conifere_leaves"},
radius = 8
})
default.register_leafdecay({
trunks = {"livingfloatlands:paleojungle_paleopalm_trunk"},
leaves = {"livingfloatlands:paleojungle_paleopalm_leaves"},
radius = 3
})

View file

@ -0,0 +1,185 @@
# textdomain: livingfloatlands
Raw Ornithischia Meat=Rohes Vogelbeckensaurierfleisch
Cooked Ornithischia Meat=Gekochtes Vogelbeckensaurierfleisch
Raw Theropod Meat=Rohes Echsenbeckensaurierfleisch
Cooked Theropod Meat=Gekochtes Echsenbeckensaurierfleisch
Cave Bear=Höhlenbär
Paleo Redwood Trunk=Mammutbaum Stamm
Paleo Redwood Wood=Mammutbaum Holz
Paleo Redwood Leaves=Mammutbaum Nadeln
Paleo Redwood Sapling=Mammutbaum Setzling
Paleo Redwood Stair=Mammutbaum Holztreppe
Paleo Redwood Slab=Mammutbaum Holzplatte
Paleo Redwood Trunk Stair=Mammutbaum Stamm Treppe
Paleo Redwood Trunk Slab=Mammutbaum Stamm Platte
Paleo Redwood Wood Fence Gate=Mammutbaum Holzzauntor
Paleo Redwood Fence=Mammutbaum Zaun
Paleo Redwood Fence Rail=Mammutbaum Geländer
Coldsteppe dirt with Grass=Permafrost mit Kaltsteppendreck
Bulbous Chervil Node=Kerbelrübenblock
Bulbous Chervil Root=Kerbelrübe
Bulbous Chervil Plant=Kerbelrübenpflanze
Coldsteppe Grass=Kaltsteppengras
Coldsteppe Shrub=Kaltsteppenbusch
Red Pine Trunk=Rotkiefer Stamm
Red Pine Wood=Rotkiefer Holz
Red Pine Leaves=Rotkiefer Nadeln
Red Pine Sapling=Rotkiefer Setzling
Red Pine Stair=Rotkiefer Holztreppe
Red Pine Slab=Rotkiefer Holzplatte
Red Pine Trunk Stair=Rotkiefer Treppe
Red Pine Trunk Slab=Rotkiefer Platte
Red Pine Wood Fence Gate=Rotkiefer Holzzauntor
Red Pine Fence=Rotkiefer Zaun
Red Pine Fence Rail=Rotkiefer Geländer
Roasted Pine Nuts=Gerösteter Kiefernzapfen
Unroasted Red Pinecone=Roher Kiefernzapfen
Unroasted Siberian Larix Pinecone=Roher Sibirischer Lärchenzapfen
Dinosaur Feather=Dinosaurierfeder
Norway Spruce Trunk=Rotfichten Stamm
Norway Spruce Wood=Rotfichten Holz
Norway Spruce Leaves=Rotfichten Nadeln
Norway Spruce Sapling=Rotfichten Setzling
Norway Spruce Stair=Rotfichten Holztreppe
Norway Spruce Slab=Rotfichten Holzplatte
Norway Spruce Trunk Stair=Rotfichten Treppe
Norway Spruce Trunk Slab=Rotfichten Platte
Norway Spruce Fence=Rotfichten Zaun
Norway Spruce Fence Rail=Rotfichten Geländer
Norway Spruce Wood Fence Gate=Rotfichten Holzzauntor
Unroasted Norway Spruce Pinecone=Roher Rotfichtenzapfen
Siberian Larix Trunk=Sibirischer Lärchen Stamm
Siberian Larix Wood=Sibirisches Lärchen Holz
Siberian Larix Leaves=Sibirische Lärchen Nadeln
Siberian Larix Sapling=Sibirischer Lärchen Setzling
Siberian Larix Stair=Sibirische Lärchen Holztreppe
Siberian Larix Slab=Sibirische Lärchen Holzplatte
Siberian Larix Trunk Stair=Sibirische Lärchentreppe
Siberian Larix Trunk Slab=Sibirische Lärchenplatte
Siberian Larix Wood Fence Gate=Sibirisches Lärchen Holzzauntor
Siberian Larix Fence=Sibirischer Lärchenzaun
Siberian Larix Fence Rail=Sibirisches Lärchen Geländer
Coldsteppe Granite Rock=Kaltsteppen Granitfels
Coldsteppe Limestone Rock=Kaltsteppen Kalkstein
Coldsteppe Granite Brick Wall=Kaltsteppen Granitfelsziegel Mauer
Coldsteppe Granite Brick Stair=Kaltsteppen Granitfelsziegel Treppe
Coldsteppe Granite Brick Slab=Kaltsteppen Granitfelsziegel Platte
Coldsteppe Granite Brick=Kaltsteppen Granitfelsziegel
Coldsteppe Limestone Brick Wall=Kaltsteppen Kalksteinziegel Mauer
Coldsteppe Limestone Brick Stair=Kaltsteppen Kalksteinziegel Treppe
Coldsteppe Limestone Brick Slab=Kaltsteppen Kalksteinziegel Platte
Coldsteppe limestone Brick=Kaltsteppen Kalksteinziegel
Raw meat of a large Mammal=Rohes Großsäugerfleisch
Cooked meat of a large Mammal=Gekochtes Großsäugerfleisch
Giant Forest dirt with Grass=Riesenwald Dreck mit Laub
Giant Forest Ground Walkway=Riesenwaldboden Pfad
Giant Forest Ground with Moss=Riesenwaldboden mit Moos
Giant Forest Fern=Riesenwaldfarn
Wood Anemone=Holzanemone
Periwinkle=Immergrün
Giant Forest Grass=Riesenwaldgras
Tinder Fungus=Zunderschwamm
Cracked Oaknut=Geknackte Rieseneichel
Oaknut=Rieseneichel
Paleo Oak Trunk=Urzeiteichen Stamm
Paleo Oak Wood=Urzeiteichen Holz
Paleo Oak Leaves=Urzeiteichen Blätter
Paleo Oak Sapling=Urzeiteichen Setzling
Paleo Oak Stair=Urzeiteichen Holztreppe
Paleo Oak Slab=Urzeiteichen Holzplatte
Paleo Oak Trunk Stair=Urzeiteichen Stamm Treppe
Paleo Oak Trunk Slab=Urzeiteichen Stamm Platte
Paleo Oak Wood Fence Gate=Urzeiteichen Holzzauntor
Paleo Oak Fence=Urzeiteichen Holzzaun
Paleo Oak Fence Rail=Urzeiteichen Geländer
Mammooth=Mammut
Cooked Sauropod Meat=Gekochtes Sauropodenfleisch
Raw Sauropod Meat=Rohes Sauropodenfleisch
Paleodesert sand litter=Urzeitwüsten Sanddreck
Desert Fern=Wüstenfarn
Puzzlegrass=Schachtelhalm
Puzzlegrass Top=Schachtelhalm Oberteil
Joshua Trunk=Josuabaum Stamm
Joshua Wood=Josuabaum Holz
Joshua Leaves=Josuabaum Blätter
Joshua Sapling=Josuabaum Setzling
Joshua Stair=Josuabaum Holztreppe
Joshua Slab=Josuabaum Holzplatte
Joshua Trunk Stair=Josuabaum Stamm Treppe
Joshua Trunk Slab=Josuabaum Stamm Platte
Joshua Wood Fence Gate=Josuabaum Hollzzauntor
Joshua Fence=Josuabaum Zaun
Joshua Fence Rail=Josuabaum Geländer
Paleopine Trunk=Urzeitpinien Stamm
Paleopine Wood=Urzeitpinien Holz
Paleopine Leaves=Urzeitpinien Nadeln
Paleopine Sapling=Urzeitpinien Setzling
Paleopine Stair=Urzeitpinien Holztreppe
Paleopine Slab=Urzeitpinien Holzplatte
Paleopine Trunk Stair=Urzeitpinien Stamm Treppe
Paleopine Trunk Slab=Urzeitpinien Stamm Platte
Paleopine Wood Fence Gate=Urzeitpinien Holzzauntor
Paleopine Fence=Urzeitpinien Zaun
Paleopine Fence Rail=Urzeitpinien Geländer
Paleojungle dirt with Grass=Urzeitdschungeldreck mit Gras
Paleojungle Fern=Urzeitdschungel Farn
Small Paleojungle Palm=Kleine Urzeitdschungelpalme
Clubmoss Fruit=Bärlapp Frucht
Clubmoss Trunk=Bärlapp Stamm
Clubmoss Wood=Bärlapp Holz
Clubmoss Leaves=Bärlapp Blätter
Clubmoss Sapling=Bärlapp Setzling
Clubmoss Stair=Bärlapp Holztreppe
Clubmoss Slab=Bärlapp Holzplatte
Clubmoss Trunk Stair=Bärlapp Stamm Treppe
Clubmoss Trunk Slab=Bärlapp Stamm Platte
Clubmoss Wood Fence Gate=Bärlapp Holzzauntor
Clubmoss Fence=Bärlapp Zaun
Clubmoss Fence Rail=Bärlapp Geländer
Conifere Trunk=Koniferen Stamm
Conifere Wood=Koniferen Holz
Conifere Leaves=Koniferen Nadeln
Conifere Sapling=Koniferen Setzling
Conifere Stair=Koniferen Holztreppe
Conifere Slab=Koniferen Holzplatte
Conifere Trunk Stair=Koniferen Stamm treppe
Conifere Trunk Slab=Koniferen Stamm Platte
Conifere Wood Fence Gate=Koniferen Holzzauntor
Conifere Fence=Koniferen Zaun
Conifere Fence Rail=Koniferen Geländer
Paleopalm Trunk=Urzeitpalmen Stamm
Paleo Palm Wood=Urzeitpalmen Holz
Paleo Palm Leaves=Urzeitpalmen Wedel
Paleo Palm Stair=Urzeitpalmen Holztreppe
Paleo Palm Slab=Urzeitpalmen Holzplatte
Paleo Palm Sapling=Urzeitpalmen Setzling
Paleo Palm Trunk Stair=UrzeitpalmenStamm Streppe
Paleo Palm Trunk Slab=Urzeitpalmen Stamm Platte
Paleo Palm Wood Fence Gate=Urzeitpalmen Holzzauntor
Paleo Palm Fence=Urzeitpalmen Zaun
Paleo Palm Fence Rail=Urzeitpalmen Geländer
Paleo Jungle Ground with dirt=Urzeitdschungel Boden mit Dreck
Paleo Jungle Ground with leaves=Urzeitdschungel Boden mit Laub
Woolly Rhino=Wollnashorn
Wild Horse=Wildpferd
Clubmoss Trapdoor=Bärlapp Falltür
Clubmoss Door=Bärlapp Tür
Red Pine Trapdoor=Rotkiefer Falltür
Red Pine Door=Rotkiefer Tür
Norway Spruce Trapdoor=Rotfichten Falltür
Norway Spruce Door=Rotfichten Tür
Siberian Larix Trapdoor=Sibirische Lärchen Falltür
Siberian Larix Door=Sibirische Lärchentür
Conifere Trapdoor=Koniferen Falltür
Conifere Door=Koniferen Tür
Joshua Trapdoor=Josuabaum Falltür
Joshua Door=Josuabaum Tür
Paleo Oak Trapdoor=Urzeiteichen Falltür
Paleo Oak Door=Urzeiteichen Tür
Paleo Palm Trapdoor=Urzeitpalmen Falltür
Paleo Palm Door=Urzeitpalmen Tür
Paleo Pine Trapdoor=Urzeitpinien Falltür
Paleo Pine Door=Urzeitpinien Tür
Paleo Redwood Trapdoor=Mammutbaum Falltür
Paleo Redwood Door=Mammutbaum Tür

View file

@ -0,0 +1,90 @@
local S = minetest.get_translator("livingfloatlands")
mobs:register_mob("livingfloatlands:lycaenops", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_animals = true,
reach = 2,
damage = 10,
hp_min = 25,
hp_max = 65,
armor = 100,
collisionbox = {-0.4, -0.01, -0.4, 0.4, 0.5, 0.4},
visual = "mesh",
mesh = "Lycaenops.b3d",
visual_size = {x = 1.0, y = 1.0},
textures = {
{"texturelycaenops.png"},
},
sounds = {
random = "livingfloatlands_lycaenops2",
attack = "livingfloatlands_lycaenops",
},
makes_footstep_sound = true,
walk_velocity = 2,
run_velocity = 3,
runaway = false,
jump = false,
jump_height = 6,
stepheight = 2,
stay_near = {{"livingfloatlands:giantforest_grass", "livingfloatlands:giantforest_grass2", "livingfloatlands:giantforest_grass3"}, 6},
drops = {
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
{name = "mobs:leather", chance = 1, min = 0, max = 2},
},
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fear_height = 3,
animation = {
speed_normal = 50,
stand_start = 0,
stand_end = 100,
walk_speed = 75,
walk_start = 100,
walk_end = 200,
punch_speed = 100,
punch_start = 250,
punch_end = 350,
die_start = 250,
die_end = 350,
die_speed = 50,
die_loop = false,
die_rotate = true,
},
follow = {
"animalworld:rawfish", "mobs:meat_raw", "animalworld:rabbit_raw", "animalworld:chicken_raw", "water_life:meat_raw", "livingfloatlands:ornithischiaraw", "livingfloatlands:sauropodraw", "livingfloatlands:theropodraw", "mobs:meatblock_raw", "animalworld:chicken_raw", "livingfloatlands:ornithischiaraw", "livingfloatlands:largemammalraw", "livingfloatlands:theropodraw", "livingfloatlands:sauropodraw", "animalworld:raw_athropod", "animalworld:whalemeat_raw", "animalworld:rabbit_raw", "nativevillages:chicken_raw", "mobs:meat_raw", "animalworld:pork_raw", "people:mutton:raw"
},
view_range = 8,
on_rightclick = function(self, clicker)
-- feed or tame
if mobs:feed_tame(self, clicker, 4, false, true) then return end
if mobs:protect(self, clicker) then return end
if mobs:capture_mob(self, clicker, 0, 25, 0, false, nil) then return end
end,
})
if minetest.get_modpath("ethereal") then
spawn_on = {"ethereal:gray_dirt", "dry:dry_dirt", "default:dirt_with_grass", "default:dry_dirt_with_dry_grass", "default:dirt_with_coniferous_litter"}
end
if not mobs.custom_spawn_livingfloatlands then
mobs:spawn({
name = "livingfloatlands:lycaenops",
nodes = {"livingfloatlands:giantforest_litter"},
neighbors = {"livingfloatlands:giantforest_grass", "livingfloatlands:giantforest_grass2", "livingfloatlands:giantforest_grass3"},
min_light = 0,
interval = 60,
chance = 2000, -- 15000
min_height = 1000,
max_height = 31000,
})
end
mobs:register_egg("livingfloatlands:lycaenops", ("Lycaenops"), "alycaenops.png")

View file

@ -0,0 +1,129 @@
local S = minetest.get_translator("livingfloatlands")
local random = math.random
mobs:register_mob("livingfloatlands:mammooth", {
type = "animal",
passive = false,
attack_type = "dogfight",
attack_animals = false,
attack_monsters = true,
group_attack = true,
reach = 3,
damage = 16,
hp_min = 100,
hp_max = 180,
armor = 100,
collisionbox = {-0.8, -0.01, -0.8, 0.8, 1.5, 0.8},
visual = "mesh",
mesh = "Mammooth.b3d",
visual_size = {x = 1.0, y = 1.0},
textures = {
{"texturemammooth.png"},
{"texturemammooth2.png"},
{"texturemammooth3.png"},
},
sounds = {
random = "livingfloatlands_mammooth",
attack = "livingfloatlands_mammooth",
distance = 15,
},
makes_footstep_sound = true,
walk_velocity = 2,
run_velocity = 4,
runaway = false,
knock_back = false,
jump = false,
jump_height = 6,
stepheight = 2,
stay_near = {{"livingfloatlands:coldsteppe_shrub", "livingfloatlands:coldsteppe_grass", "livingfloatlands:coldsteppe_grass2", "livingfloatlands:coldsteppe_grass3", "livingfloatlands:coldsteppe_grass4"}, 5},
drops = {
{name = "livingfloatlands:largemammalraw", chance = 1, min = 1, max = 1},
},
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fear_height = 3,
pathfinding = true,
animation = {
speed_normal = 70,
stand_start = 0,
stand_end = 100,
walk_start = 100,
walk_end = 200,
punch_start = 250,
punch_end = 350,
die_start = 250,
die_end = 350,
die_speed = 50,
die_loop = false,
die_rotate = true,
},
follow = {
"ethereal:banana_single", "farming:corn_cob", "farming:cabbage",
"default:apple", "farming:cabbage", "farming:carrot", "farming:cucumber", "farming:grapes", "farming:pineapple", "ethereal:orange", "ethereal:coconut", "ethereal:coconut_slice", "livingfloatlands:coldsteppe_pine3_sapling", "livingfloatlands:coldsteppe_pine2_sapling", "livingfloatlands:coldsteppe_pine_sapling", "livingfloatlands:coldsteppe_bulbous_chervil_root"
},
view_range = 12,
replace_rate = 10,
replace_what = {"farming:soil", "farming:soil_wet"},
replace_with = "default:dirt",
on_rightclick = function(self, clicker)
-- feed or tame
if mobs:feed_tame(self, clicker, 4, false, true) then return end
if mobs:protect(self, clicker) then return end
if mobs:capture_mob(self, clicker, 0, 0, 20, false, nil) then return end
end,
})
if minetest.get_modpath("ethereal") then
spawn_on = {"ethereal:crystal_dirt", "ethereal:gray_dirt", "default:permafrost_with_moss", "default:dirt_with_snow", "default:snow"}
end
if not mobs.custom_spawn_livingfloatlands then
mobs:spawn({
name = "livingfloatlands:mammooth",
nodes = {"livingfloatlands:coldsteppe_litter"},
neighbors = {"livingfloatlands:coldsteppe_grass", "livingfloatlands:coldsteppe_grass2", "livingfloatlands:coldsteppe_grass3"},
min_light = 0,
interval = 60,
chance = 2000, -- 15000
active_object_count = 4,
min_height = 1000,
max_height = 31000,
day_toggle = true,
on_spawn = function(self, pos)
local nods = minetest.find_nodes_in_area_under_air(
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
{"livingfloatlands:coldsteppe_litter"})
if nods and #nods > 0 then
-- min herd of 4
local iter = math.min(#nods, 4)
-- print("--- mammooth at", minetest.pos_to_string(pos), iter)
for n = 1, iter do
local pos2 = nods[random(#nods)]
local kid = random(4) == 1 and true or nil
pos2.y = pos2.y + 2
if minetest.get_node(pos2).name == "air" then
mobs:add_mob(pos2, {
name = "livingfloatlands:mammooth", child = kid})
end
end
end
end
})
end
mobs:register_egg("livingfloatlands:mammooth", S("Mammooth"), "amammooth.png")

View file

@ -0,0 +1,6 @@
name = livingfloatlands
release = 19252
author = Liil
description = Adds various prehistoric animals to your Floatland Zone, if you are using V7 Map Generator.
title = Wilhelmines Living Floatlands

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,146 @@
local S = minetest.get_translator("livingfloatlands")
local random = math.random
mobs:register_mob("livingfloatlands:nigersaurus", {
stepheight = 2,
type = "animal",
passive = true,
attack_type = "dogfight",
attack_animals = true,
reach = 6,
damage = 20,
hp_min = 100,
hp_max = 400,
armor = 100,
collisionbox = {-1.0, -0.01, -1.0, 1.0, 1.5, 1.0},
visual = "mesh",
mesh = "Nigersaurus.b3d",
visual_size = {x = 1.0, y = 1.0},
textures = {
{"texturenigersaurus.png"},
},
sounds = {
random = "livingfloatlands_nigersaurus",
damage = "livingfloatlands_nigersaurus2",
distance = 15,
},
makes_footstep_sound = true,
walk_velocity = 2,
run_velocity = 3,
walk_chance = 20,
knock_back = false,
runaway = false,
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor"},
jump = false,
jump_height = 6,
stay_near = {{"livingfloatlands:paleojungle_litter_leaves", "livingfloatlands:paleojungle_smallpalm", "livingfloatlands:giantforest_grass3", "livingfloatlands:paleojungle_ferngrass"}, 5},
drops = {
{name = "livingfloatlands:sauropodraw", chance = 1, min = 1, max = 1},
},
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fear_height = 3,
pathfinding = true,
animation = {
speed_normal = 50,
stand_start = 0,
stand_end = 100,
walk_speed = 50,
walk_start = 100,
walk_end = 200,
die_start = 100,
die_end = 200,
die_speed = 50,
die_loop = false,
die_rotate = true,
},
follow = {"default:dry_shrub ", "default:grass_1", "ethereal:dry_shrub", "farming:seed_wheat", "farming:seed_rye", "default:junglegrass", "default:apple", "farming:cabbage", "farming:carrot", "farming:cucumber", "farming:grapes", "farming:pineapple", "ethereal:orange", "ethereal:coconut", "ethereal:coconut_slice", "livingfloatlands:paleojungle_clubmoss_fruit", "livingfloatlands:giantforest_oaknut", "livingfloatlands:paleojungle_ferngrass"},
view_range = 25,
on_rightclick = function(self, clicker)
-- feed or tame
if mobs:feed_tame(self, clicker, 4, false, true) then return end
if mobs:protect(self, clicker) then return end
if mobs:capture_mob(self, clicker, 0, 0, 5, false, nil) then return end
end,
})
if minetest.get_modpath("ethereal") then
spawn_on = {"ethereal:grove_dirt", "ethereal:bamboo_dirt", "default:dirt_with_coniferous_litter"}
end
if not mobs.custom_spawn_livingfloatlands then
mobs:spawn({
name = "livingfloatlands:nigersaurus",
nodes = {"livingfloatlands:paleojungle_litter"},
neighbors = {"livingfloatlands:paleojungle_ferngrass"},
min_light = 0,
interval = 60,
active_object_count = 2,
chance = 2000, -- 15000
min_height = 1000,
max_height = 31000,
on_spawn = function(self, pos)
local nods = minetest.find_nodes_in_area_under_air(
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
{"livingfloatlands:paleojungle_litter"})
if nods and #nods > 0 then
-- min herd of 2
local iter = math.min(#nods, 2)
-- print("--- nigersaurus at", minetest.pos_to_string(pos), iter)
for n = 1, iter do
local pos2 = nods[random(#nods)]
local kid = random(4) == 1 and true or nil
pos2.y = pos2.y + 2
if minetest.get_node(pos2).name == "air" then
mobs:add_mob(pos2, {
name = "livingfloatlands:nigersaurus", child = kid})
end
end
end
end
})
end
mobs:register_egg("livingfloatlands:nigersaurus", ("Nigersaurus"), "anigersaurus.png")
-- raw Sauropod
minetest.register_craftitem(":livingfloatlands:sauropodraw", {
description = S("Raw Sauropod Meat"),
inventory_image = "livingfloatlands_sauropodraw.png",
on_use = minetest.item_eat(3),
groups = {food_meat_raw = 1, flammable = 2},
})
-- cooked Sauropod
minetest.register_craftitem(":livingfloatlands:sauropodcooked", {
description = S("Cooked Sauropod Meat"),
inventory_image = "livingfloatlands_sauropodcooked.png",
on_use = minetest.item_eat(5),
groups = {food_meat = 1, flammable = 2},
})
minetest.register_craft({
type = "cooking",
output = "livingfloatlands:sauropodcooked",
recipe = "livingfloatlands:sauropodraw",
cooktime = 30,
})

View file

@ -0,0 +1,125 @@
local S = minetest.get_translator("livingfloatlands")
local random = math.random
mobs:register_mob("livingfloatlands:oviraptor", {
stepheight = 2,
type = "animal",
passive = false,
attack_type = "dogfight",
attack_animals = false,
attack_monsters = true,
reach = 2,
damage = 6,
hp_min = 30,
hp_max = 60,
armor = 100,
collisionbox = {-0.7, -0.01, -0.5, 0.7, 0.9, 0.5},
visual = "mesh",
mesh = "Oviraptor.b3d",
visual_size = {x = 1.0, y = 1.0},
textures = {
{"textureoviraptor.png"},
},
sounds = {
random = "livingfloatlands_oviraptor2",
attack = "livingfloatlands_oviraptor",
distance = 13,
},
makes_footstep_sound = true,
walk_velocity = 2,
run_velocity = 4,
walk_chance = 20,
runaway = true,
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor"},
jump = true,
jump_height = 8,
stay_near = {{"livingfloatlands:paleodesert_fern", "livingfloatlands:puzzlegrass"}, 5},
drops = {
{name = "livingfloatlands:theropodraw", chance = 1, min = 1, max = 1},
{name = "livingfloatlands:dinosaur_feather", chance = 1, min = 0, max = 2},
},
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fear_height = 3,
animation = {
speed_normal = 30,
stand_start = 250,
stand_end = 350,
walk_speed = 100,
walk_start = 0,
walk_end = 100,
punch_speed = 75,
punch_start = 100,
punch_end = 200,
die_start = 100,
die_end = 200,
die_speed = 50,
die_loop = false,
die_rotate = true,
},
follow = {
"ethereal:fish_raw", "animalworld:rawfish", "mobs_fish:tropical", "mobs:meat_raw", "animalworld:rabbit_raw", "animalworld:pork_raw", "water_life:meat_raw", "animalworld:chicken_raw", "default:apple", "farming:potato", "farming:melon_slice", "farming:cucumber", "farming:cabbage", "farming:lettuce", "farming:bread", "livingfloatlands:ornithischiaraw", "livingfloatlands:sauropodraw", "livingfloatlands:theropodraw", "livingfloatlands:paleodesert_joshua_sapling", "livingfloatlands:paleodesert_fern"
},
view_range = 15,
on_rightclick = function(self, clicker)
-- feed or tame
if mobs:feed_tame(self, clicker, 4, false, true) then return end
if mobs:protect(self, clicker) then return end
if mobs:capture_mob(self, clicker, 0, 20, 0, false, nil) then return end
end,
})
if minetest.get_modpath("ethereal") then
spawn_on = {"ethereal:prairie_dirt", "ethereal:dry_dirt", "default:desert_sand", "default:desert_sandstone", "default:sandstone"}
end
if not mobs.custom_spawn_livingfloatlands then
mobs:spawn({
name = "livingfloatlands:oviraptor",
nodes = {"livingfloatlands:paleodesert_litter"},
neighbors = {"livingfloatlands:paleodesert_fern", "livingfloatlands:puzzlegrass"},
min_light = 0,
interval = 60,
active_object_count = 3,
chance = 2000, -- 15000
min_height = 1000,
max_height = 31000,
on_spawn = function(self, pos)
local nods = minetest.find_nodes_in_area_under_air(
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
{"livingfloatlands:paleodesert_litter"})
if nods and #nods > 0 then
-- min herd of 3
local iter = math.min(#nods, 3)
-- print("--- oviraptor at", minetest.pos_to_string(pos), iter)
for n = 1, iter do
local pos2 = nods[random(#nods)]
local kid = random(4) == 1 and true or nil
pos2.y = pos2.y + 2
if minetest.get_node(pos2).name == "air" then
mobs:add_mob(pos2, {
name = "livingfloatlands:oviraptor", child = kid})
end
end
end
end
})
end
mobs:register_egg("livingfloatlands:oviraptor", ("Oviraptor"), "aoviraptor.png")

View file

@ -0,0 +1,670 @@
local S = minetest.get_translator("livingfloatlands")
local modname = "livingfloatlands"
local modpath = minetest.get_modpath(modname)
local mg_name = minetest.get_mapgen_setting("mg_name")
minetest.register_node("livingfloatlands:paleodesert_litter", {
description = S("Paleodesert sand litter"),
tiles = {"livingfloatlands_paleodesert_litter.png", "default_desert_sandstone.png",
{name = "default_desert_sandstone.png^livingfloatlands_paleodesert_litter_side.png",
tileable_vertical = false}},
groups = {crumbly = 3, falling_node = 1, sand = 1},
drop = "livingfloatlands:paleodesert_litter",
sounds = default.node_sound_dirt_defaults({
footstep = {name = "default_grass_footstep", gain = 0.25},
}),
})
minetest.register_biome({
name = "livingfloatlands:paleodesert",
node_top = "livingfloatlands:paleodesert_litter",
depth_top = 1,
node_filler = "default:desert_sandstone",
depth_filler = 30,
node_riverbed = "default:desert_sand",
depth_riverbed = 3,
node_dungeon = "default:desert_stonebrick",
node_dungeon_alt = "default:desert_sandstone_brick",
node_dungeon_stair = "stairs:desert_sandstone_stair",
y_max = 31000,
y_min = 1000,
heat_point = 96,
humidity_point = 15,
})
minetest.register_node("livingfloatlands:paleodesert_fern", {
description = S("Desert Fern"),
drawtype = "plantlike",
waving = 1,
visual_scale = 2.0,
tiles = {"livingfloatlands_paleodesert_fern.png"},
inventory_image = "livingfloatlands_paleodesert_fern.png",
wield_image = "livingfloatlands_paleodesert_fern.png",
paramtype = "light",
paramtype2 = "meshoptions",
place_param2 = 4,
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flammable = 3, attached_node = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 4 / 16, 6 / 16},
},
})
minetest.register_decoration({
name = "livingfloatlands:paleodesert_fern",
deco_type = "simple",
place_on = {"livingfloatlands:paleodesert_litter"},
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.01,
spread = {x = 200, y = 200, z = 200},
seed = 329,
octaves = 3,
persist = 0.6
},
biomes = {"livingfloatlands:paleodesert"},
y_max = 31000,
y_min = 2,
decoration = "livingfloatlands:paleodesert_fern",
param2 = 4,
})
minetest.register_node("livingfloatlands:puzzlegrass", {
description = S("Puzzlegrass"),
drawtype = "plantlike",
tiles = {"livingfloatlands_puzzlegrass.png"},
inventory_image = "livingfloatlands_puzzlegrass.png",
wield_image = "livingfloatlands_puzzlegrass.png",
paramtype = "light",
visual_scale = 2.0,
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {snappy = 3, flammable = 2},
sounds = default.node_sound_leaves_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_node("livingfloatlands:puzzlegrass_top", {
description = S("Puzzlegrass Top"),
drawtype = "plantlike",
tiles = {"livingfloatlands_puzzlegrass_top.png"},
inventory_image = "livingfloatlands_puzzlegrass_top.png",
wield_image = "livingfloatlands_puzzlegrass_top.png",
paramtype = "light",
visual_scale = 2.0,
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
},
groups = {snappy = 3, flammable = 2},
sounds = default.node_sound_leaves_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
})
minetest.register_decoration({
name = "livingfloatlands:puzzlegrass_patch",
deco_type = "schematic",
place_on = {"livingfloatlands:paleodesert_litter"},
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.003,
spread = {x = 100, y = 100, z = 100},
seed = 436,
octaves = 6,
persist = 0.6
},
biomes = {"livingfloatlands:paleodesert"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands") .. "/schematics/livingfloatlands_puzzlegrass_patch.mts",
})
minetest.register_decoration({
name = "livingfloatlands:puzzlegrass_patch2",
deco_type = "schematic",
place_on = {"livingfloatlands:paleodesert_litter"},
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.002,
spread = {x = 100, y = 100, z = 100},
seed = 436,
octaves = 6,
persist = 0.6
},
biomes = {"livingfloatlands:paleodesert"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands") .. "/schematics/livingfloatlands_puzzlegrass_patch2.mts",
})
minetest.register_decoration({
name = "livingfloatlands:puzzlegrass_patch3",
deco_type = "schematic",
place_on = {"livingfloatlands:paleodesert_litter"},
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.003,
spread = {x = 100, y = 100, z = 100},
seed = 436,
octaves = 6,
persist = 0.6
},
biomes = {"livingfloatlands:paleodesert"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands") .. "/schematics/livingfloatlands_puzzlegrass_patch3.mts",
})
minetest.register_decoration({
name = "livingfloatlands:puzzlegrass_patch4",
deco_type = "schematic",
place_on = {"livingfloatlands:paleodesert_litter"},
sidelen = 16,
noise_params = {
offset = 0,
scale = 0.006,
spread = {x = 100, y = 100, z = 100},
seed = 436,
octaves = 3,
persist = 0.6
},
biomes = {"livingfloatlands:paleodesert"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands") .. "/schematics/livingfloatlands_puzzlegrass_patch4.mts",
})
-- New paleodesert joshua tree
local function grow_new_paleodesert_joshua_tree(pos)
if not default.can_grow(pos) then
-- try a bit later again
minetest.get_node_timer(pos):start(math.random(240, 600))
return
end
minetest.remove_node(pos)
minetest.place_schematic({x = pos.x - 3, y = pos.y - 0, z = pos.z - 3}, modpath.."/schematics/paleodesert_joshua_tree3.mts", "0", nil, false)
end
if minetest.get_modpath("bonemeal") then
bonemeal:add_sapling({
{"livingfloatlands:paleodesert_joshua_sapling", grow_new_paleodesert_joshua_tree, "soil"},
})
end
-- joshua trunk
minetest.register_node("livingfloatlands:paleodesert_joshua_trunk", {
description = S("Joshua Trunk"),
tiles = {
"livingfloatlands_paleodesert_joshua_trunk_top.png",
"livingfloatlands_paleodesert_joshua_trunk_top.png",
"livingfloatlands_paleodesert_joshua_trunk.png"
},
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = default.node_sound_wood_defaults(),
paramtype2 = "facedir",
on_place = minetest.rotate_node,
})
-- joshua wood
minetest.register_node("livingfloatlands:paleodesert_joshua_wood", {
description = S("Joshua Wood"),
tiles = {"livingfloatlands_paleodesert_joshua_wood.png"},
is_ground_content = false,
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
sounds = default.node_sound_wood_defaults(),
})
minetest.register_craft({
output = "livingfloatlands:paleodesert_joshua_wood 4",
recipe = {{"livingfloatlands:paleodesert_joshua_trunk"}}
})
minetest.register_node("livingfloatlands:paleodesert_joshua_leaves", {
description = S("Joshua Leaves"),
drawtype = "plantlike",
waving = 1,
visual_scale = 2.0,
tiles = {"livingfloatlands_paleodesert_joshua_leaves.png"},
special_tiles = {"livingfloatlands_paleodesert_joshua_leaves.png"},
paramtype = "light",
is_ground_content = false,
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1, winleafdecay = 3},
drop = {
max_items = 1,
items = {
{
-- player will get sapling with 1/50 chance
items = {'livingfloatlands:paleodesert_joshua_sapling'},
rarity = 50,
},
{
-- player will get leaves only if he get no saplings,
-- this is because max_items is 1
items = {'livingfloatlands:paleodesert_joshua_leaves'},
}
}
},
sounds = default.node_sound_leaves_defaults(),
after_place_node = default.after_place_leaves,
})
minetest.register_node("livingfloatlands:paleodesert_joshua_sapling", {
description = S("Joshua Sapling"),
drawtype = "plantlike",
tiles = {"livingfloatlands_paleodesert_joshua_sapling.png"},
inventory_image = "livingfloatlands_paleodesert_joshua_sapling.png",
wield_image = "livingfloatlands_paleodesert_joshua_sapling.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
on_timer = grow_new_paleodesert_joshua_tree,
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1},
sounds = default.node_sound_leaves_defaults(),
on_construct = function(pos)
minetest.get_node_timer(pos):start(math.random(300, 1500))
end,
on_place = function(itemstack, placer, pointed_thing)
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
"livingfloatlands:paleodesert_joshua_sapling",
-- minp, maxp to be checked, relative to sapling pos
{x = -1, y = 0, z = -1},
{x = 1, y = 1, z = 1},
-- maximum interval of interior volume check
2)
return itemstack
end,
})
stairs.register_stair_and_slab(
"livingfloatlands_paleodesert_joshua_wood",
"livingfloatlands:paleodesert_joshua_wood",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"livingfloatlands_paleodesert_joshua_wood.png"},
S("Joshua Stair"),
S("Joshua Slab"),
default.node_sound_wood_defaults()
)
stairs.register_stair_and_slab(
"livingfloatlands_paleodesert_joshua_trunk",
"livingfloatlands:paleodesert_joshua_trunk",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"livingfloatlands_paleodesert_joshua_trunk_top.png", "livingfloatlands_paleodesert_joshua_trunk_top.png", "livingfloatlands_paleodesert_joshua_trunk.png"},
S("Joshua Trunk Stair"),
S("Joshua Trunk Slab"),
default.node_sound_wood_defaults()
)
doors.register_fencegate(
"livingfloatlands:gate_joshua_wood",
{
description = S("Joshua Wood Fence Gate"),
texture = "livingfloatlands_paleodesert_joshua_wood.png",
material = "livingfloatlands:paleodesert_joshua_wood",
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
sounds = default.node_sound_wood_defaults()
}
)
default.register_fence(
"livingfloatlands:fence_joshua_wood",
{
description = S("Joshua Fence"),
texture = "livingfloatlands_paleodesert_joshua_fencewood.png",
inventory_image = "default_fence_overlay.png^livingfloatlands_paleodesert_joshua_wood.png^default_fence_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_overlay.png^livingfloatlands_paleodesert_joshua_wood.png^default_fence_overlay.png^[makealpha:255,126,126",
material = "livingfloatlands:paleodesert_joshua_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
}
)
default.register_fence_rail(
"livingfloatlands:fence_rail_joshua_wood",
{
description = S("Joshua Fence Rail"),
texture = "livingfloatlands_paleodesert_joshua_fencewood.png",
inventory_image = "default_fence_rail_overlay.png^livingfloatlands_paleodesert_joshua_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_rail_overlay.png^livingfloatlands_paleodesert_joshua_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
material = "livingfloatlands:paleodesert_joshua_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
}
)
minetest.register_decoration({
name = "livingfloatlands:paleodesert_joshua_tree",
deco_type = "schematic",
place_on = {"livingfloatlands:paleodesert_litter"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.00013,
biomes = {"livingfloatlands:paleodesert"},
y_max = 31000,
y_min = 3,
schematic = minetest.get_modpath("livingfloatlands").."/schematics/paleodesert_joshua_tree.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:paleodesert_joshua_tree2",
deco_type = "schematic",
place_on = {"livingfloatlands:paleodesert_litter"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.00013,
biomes = {"livingfloatlands:paleodesert"},
y_max = 31000,
y_min = 3,
schematic = minetest.get_modpath("livingfloatlands").."/schematics/paleodesert_joshua_tree2.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:paleodesert_joshua_tree3",
deco_type = "schematic",
place_on = {"livingfloatlands:paleodesert_litter"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.00013,
biomes = {"livingfloatlands:paleodesert"},
y_max = 31000,
y_min = 3,
schematic = minetest.get_modpath("livingfloatlands").."/schematics/paleodesert_joshua_tree3.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
-- New paleodesert paleopine tree
local function grow_new_paleodesert_paleopine_tree(pos)
if not default.can_grow(pos) then
-- try a bit later again
minetest.get_node_timer(pos):start(math.random(240, 600))
return
end
minetest.remove_node(pos)
minetest.place_schematic({x = pos.x - 5, y = pos.y - 0, z = pos.z - 5}, modpath.."/schematics/paleodesert_paleopine.mts", "0", nil, false)
end
if minetest.get_modpath("bonemeal") then
bonemeal:add_sapling({
{"livingfloatlands:paleodesert_paleopine_sapling", grow_new_paleodesert_paleopine_tree, "soil"},
})
end
-- pine trunk
minetest.register_node("livingfloatlands:paleodesert_paleopine_trunk", {
description = S("Paleopine Trunk"),
tiles = {
"livingfloatlands_paleodesert_paleopine_trunk_top.png",
"livingfloatlands_paleodesert_paleopine_trunk_top.png",
"livingfloatlands_paleodesert_paleopine_trunk.png"
},
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = default.node_sound_wood_defaults(),
paramtype2 = "facedir",
on_place = minetest.rotate_node,
})
-- pine wood
minetest.register_node("livingfloatlands:paleodesert_paleopine_wood", {
description = S("Paleopine Wood"),
tiles = {"livingfloatlands_paleodesert_paleopine_wood.png"},
is_ground_content = false,
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
sounds = default.node_sound_wood_defaults(),
})
minetest.register_craft({
output = "livingfloatlands:paleodesert_paleopine_wood 4",
recipe = {{"livingfloatlands:paleodesert_paleopine_trunk"}}
})
minetest.register_node("livingfloatlands:paleodesert_paleopine_leaves", {
description = S("Paleopine Leaves"),
drawtype = "allfaces_optional",
waving = 1,
visual_scale = 1.0,
tiles = {"livingfloatlands_paleodesert_paleopine_leaves.png"},
special_tiles = {"livingfloatlands_paleodesert_paleopine_leaves.png"},
paramtype = "light",
is_ground_content = false,
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1, winleafdecay = 3},
drop = {
max_items = 1,
items = {
{
-- player will get sapling with 1/50 chance
items = {'livingfloatlands:paleodesert_paleopine_sapling'},
rarity = 50,
},
{
-- player will get leaves only if he get no saplings,
-- this is because max_items is 1
items = {'livingfloatlands:paleodesert_paleopine_leaves'},
}
}
},
sounds = default.node_sound_leaves_defaults(),
after_place_node = default.after_place_leaves,
})
minetest.register_node("livingfloatlands:paleodesert_paleopine_sapling", {
description = S("Paleopine Sapling"),
drawtype = "plantlike",
tiles = {"livingfloatlands_paleodesert_paleopine_sapling.png"},
inventory_image = "livingfloatlands_paleodesert_paleopine_sapling.png",
wield_image = "livingfloatlands_paleodesert_paleopine_sapling.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
on_timer = grow_new_paleodesert_paleopine_tree,
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1},
sounds = default.node_sound_leaves_defaults(),
on_construct = function(pos)
minetest.get_node_timer(pos):start(math.random(300, 1500))
end,
on_place = function(itemstack, placer, pointed_thing)
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
"livingfloatlands:paleodesert_paleopine_sapling",
-- minp, maxp to be checked, relative to sapling pos
{x = -1, y = 0, z = -1},
{x = 1, y = 1, z = 1},
-- maximum interval of interior volume check
2)
return itemstack
end,
})
stairs.register_stair_and_slab(
"livingfloatlands_paleodesert_paleopine_wood",
"livingfloatlands:paleodesert_paleopine_wood",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"livingfloatlands_paleodesert_paleopine_wood.png"},
S("Paleopine Stair"),
S("Paleopine Slab"),
default.node_sound_wood_defaults()
)
stairs.register_stair_and_slab(
"livingfloatlands_paleodesert_paleopine_trunk",
"livingfloatlands:paleodesert_paleopine_trunk",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"livingfloatlands_paleodesert_paleopine_trunk_top.png", "livingfloatlands_paleodesert_paleopine_trunk_top.png", "livingfloatlands_paleodesert_paleopine_trunk.png"},
S("Paleopine Trunk Stair"),
S("Paleopine Trunk Slab"),
default.node_sound_wood_defaults()
)
doors.register_fencegate(
"livingfloatlands:gate_paleopine_wood",
{
description = S("Paleopine Wood Fence Gate"),
texture = "livingfloatlands_paleodesert_paleopine_wood.png",
material = "livingfloatlands:paleodesert_paleopine_wood",
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
sounds = default.node_sound_wood_defaults()
}
)
default.register_fence(
"livingfloatlands:fence_paleopine_wood",
{
description = S("Paleopine Fence"),
texture = "livingfloatlands_paleodesert_paleopine_fencewood.png",
inventory_image = "default_fence_overlay.png^livingfloatlands_paleodesert_paleopine_wood.png^default_fence_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_overlay.png^livingfloatlands_paleodesert_paleopine_wood.png^default_fence_overlay.png^[makealpha:255,126,126",
material = "livingfloatlands:paleodesert_paleopine_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
}
)
default.register_fence_rail(
"livingfloatlands:fence_rail_paleopine_wood",
{
description = S("Paleopine Fence Rail"),
texture = "livingfloatlands_paleodesert_paleopine_fencewood.png",
inventory_image = "default_fence_rail_overlay.png^livingfloatlands_paleodesert_paleopine_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_rail_overlay.png^livingfloatlands_paleodesert_paleopine_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
material = "livingfloatlands:paleodesert_paleopine_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
}
)
minetest.register_decoration({
name = "livingfloatlands:paleodesert_paleopine",
deco_type = "schematic",
place_on = {"livingfloatlands:paleodesert_litter"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.00021,
biomes = {"livingfloatlands:paleodesert"},
y_max = 31000,
y_min = 3,
schematic = minetest.get_modpath("livingfloatlands").."/schematics/paleodesert_paleopine.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:paleodesert_rockformation",
deco_type = "schematic",
place_on = {"livingfloatlands:paleodesert_litter"},
place_offset_y = -3,
sidelen = 16,
fill_ratio = 0.00007,
biomes = {"livingfloatlands:paleodesert"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands") .. "/schematics/livingfloatlands_paleodesert_rockformation.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:paleodesert_rockformation2",
deco_type = "schematic",
place_on = {"livingfloatlands:paleodesert_litter"},
place_offset_y = -3,
sidelen = 16,
fill_ratio = 0.00007,
biomes = {"livingfloatlands:paleodesert"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands") .. "/schematics/livingfloatlands_paleodesert_rockformation2.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:paleodesert_rockformation3",
deco_type = "schematic",
place_on = {"livingfloatlands:paleodesert_litter"},
place_offset_y = -3,
sidelen = 16,
fill_ratio = 0.00007,
biomes = {"livingfloatlands:paleodesert"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands") .. "/schematics/livingfloatlands_paleodesert_rockformation3.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:paleodesert_rockformation4",
deco_type = "schematic",
place_on = {"livingfloatlands:paleodesert_litter"},
place_offset_y = -3,
sidelen = 16,
fill_ratio = 0.00007,
biomes = {"livingfloatlands:paleodesert"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands") .. "/schematics/livingfloatlands_paleodesert_rockformation4.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
if minetest.get_modpath("bonemeal") then
bonemeal:add_deco({
{"livingfloatlands:paleodesert_litter", {"livingfloatlands:paleodesert_fern", "", "", "", "livingfloatlands:puzzlegrass_top"}, {}}
})
end

View file

@ -0,0 +1,845 @@
local S = minetest.get_translator("livingfloatlands")
local modname = "livingfloatlands"
local modpath = minetest.get_modpath(modname)
local mg_name = minetest.get_mapgen_setting("mg_name")
minetest.register_node("livingfloatlands:paleojungle_litter", {
description = S("Paleojungle dirt with Grass"),
tiles = {"livingfloatlands_paleojungle_litter.png", "default_dirt.png",
{name = "default_dirt.png^livingfloatlands_paleojungle_litter_side.png",
tileable_vertical = false}},
groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1},
drop = "default:dirt",
sounds = default.node_sound_dirt_defaults({
footstep = {name = "default_grass_footstep", gain = 0.25},
}),
})
minetest.register_biome({
name = "livingfloatlands:paleojungle",
node_top = "livingfloatlands:paleojungle_litter",
depth_top = 1,
node_filler = "default:dirt",
depth_filler = 4,
node_riverbed = "default:sand",
depth_riverbed = 2,
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = 31000,
y_min = 1000,
heat_point = 95,
humidity_point = 63,
})
minetest.register_node("livingfloatlands:paleojungle_ferngrass", {
description = S"Paleojungle Fern",
drawtype = "plantlike",
waving = 1,
visual_scale = 1.0,
tiles = {"livingfloatlands_paleojungle_ferngrass.png"},
inventory_image = "livingfloatlands_paleojungle_ferngrass.png",
wield_image = "livingfloatlands_paleojungle_ferngrass.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flower = 1, flora = 1, attached_node = 1, flammable = 1, beautiflowers = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 0.0, 4 / 16},
},
})
minetest.register_decoration({
name = "livingfloatlands:paleojungle_ferngrass",
deco_type = "simple",
place_on = {"livingfloatlands:paleojungle_litter"},
sidelen = 16,
noise_params = {
offset = -0.03,
scale = 0.1,
spread = {x = 200, y = 200, z = 200},
seed = 1123,
octaves = 9,
persist = 1,
},
y_max = 31000,
y_min = 1,
decoration = "livingfloatlands:paleojungle_ferngrass",
spawn_by = "livingfloatlands:paleojungle_litter"
})
minetest.register_node("livingfloatlands:paleojungle_smallpalm", {
description = S"Small Paleojungle Palm",
drawtype = "plantlike",
waving = 1,
visual_scale = 4.0,
tiles = {"livingfloatlands_paleojungle_smallpalm.png"},
inventory_image = "livingfloatlands_paleojungle_smallpalm.png",
wield_image = "livingfloatlands_paleojungle_smallpalm.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flower = 1, flora = 1, attached_node = 1, flammable = 1, beautiflowers = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 0.0, 4 / 16},
},
})
minetest.register_decoration({
name = "livingfloatlands:paleojungle_smallpalm",
deco_type = "simple",
place_on = {"livingfloatlands:paleojungle_litter"},
sidelen = 16,
noise_params = {
offset = -0.03,
scale = 0.05,
spread = {x = 40, y = 40, z = 40},
seed = 0405,
octaves = 6,
persist = 1,
},
y_max = 31000,
y_min = 1,
decoration = "livingfloatlands:paleojungle_smallpalm",
spawn_by = "livingfloatlands:paleojungle_litter"
})
minetest.register_node("livingfloatlands:paleojungle_clubmoss_fruit", {
description = S("Clubmoss Fruit"),
drawtype = "allfaces_optional",
waving = 1,
visual_scale = 1.0,
tiles = {"livingfloatlands_paleojungle_clubmoss_fruit.png"},
special_tiles = {"livingfloatlands_paleojungle_clubmoss_fruit.png"},
paramtype = "light",
on_use = minetest.item_eat(5),
is_ground_content = false,
groups = {food = 1, snappy = 3, leafdecay = 3, flammable = 2, winleafdecay_drop = 1, winleafdecay = 3},
drop = {
max_items = 1,
items = {
{
-- player will get sapling with 1/50 chance
items = {'livingfloatlands:paleojungle_clubmoss_sapling'},
rarity = 50,
},
{
-- player will get leaves only if he get no saplings,
-- this is because max_items is 1
items = {'livingfloatlands:paleojungle_clubmoss_fruit'},
}
}
},
sounds = default.node_sound_leaves_defaults(),
after_place_node = default.after_place_leaves,
})
-- New paleojungle clubmoss tree
local function grow_new_paleojungle_clubmoss_tree(pos)
if not default.can_grow(pos) then
-- try a bit later again
minetest.get_node_timer(pos):start(math.random(240, 600))
return
end
minetest.remove_node(pos)
minetest.place_schematic({x = pos.x - 4, y = pos.y - 0, z = pos.z - 2}, modpath.."/schematics/paleojungle_clubmoss_tree.mts", "0", nil, false)
end
if minetest.get_modpath("bonemeal") then
bonemeal:add_sapling({
{"livingfloatlands:paleojungle_clubmoss_sapling", grow_new_paleojungle_clubmoss_tree, "soil"},
})
end
-- paleo oak trunk
minetest.register_node("livingfloatlands:paleojungle_clubmoss_trunk", {
description = S("Clubmoss Trunk"),
tiles = {
"livingfloatlands_paleojungle_clubmoss_trunk_top.png",
"livingfloatlands_paleojungle_clubmoss_trunk_top.png",
"livingfloatlands_paleojungle_clubmoss_trunk.png"
},
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = default.node_sound_wood_defaults(),
paramtype2 = "facedir",
on_place = minetest.rotate_node,
})
-- clubmoss wood
minetest.register_node("livingfloatlands:paleojungle_clubmoss_wood", {
description = S("Clubmoss Wood"),
tiles = {"livingfloatlands_paleojungle_clubmoss_wood.png"},
is_ground_content = false,
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
sounds = default.node_sound_wood_defaults(),
})
minetest.register_craft({
output = "livingfloatlands:paleojungle_clubmoss_wood 4",
recipe = {{"livingfloatlands:paleojungle_clubmoss_trunk"}}
})
minetest.register_node("livingfloatlands:paleojungle_clubmoss_leaves", {
description = S("Clubmoss Leaves"),
drawtype = "allfaces_optional",
waving = 1,
visual_scale = 1.0,
tiles = {"livingfloatlands_paleojungle_clubmoss_leaves.png"},
special_tiles = {"livingfloatlands_paleojungle_clubmoss_leaves.png"},
paramtype = "light",
is_ground_content = false,
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1, winleafdecay = 3},
drop = {
max_items = 1,
items = {
{
-- player will get sapling with 1/50 chance
items = {'livingfloatlands:paleojungle_clubmoss_sapling'},
rarity = 4,
},
{
-- player will get leaves only if he get no saplings,
-- this is because max_items is 1
items = {'livingfloatlands:paleojungle_clubmoss_leaves'},
}
}
},
sounds = default.node_sound_leaves_defaults(),
after_place_node = default.after_place_leaves,
})
minetest.register_node("livingfloatlands:paleojungle_clubmoss_sapling", {
description = S("Clubmoss Sapling"),
drawtype = "plantlike",
tiles = {"livingfloatlands_paleojungle_clubmoss_sapling.png"},
inventory_image = "livingfloatlands_paleojungle_clubmoss_sapling.png",
wield_image = "livingfloatlands_paleojungle_clubmoss_sapling.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
on_timer = grow_new_paleojungle_clubmoss_tree,
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1},
sounds = default.node_sound_leaves_defaults(),
on_construct = function(pos)
minetest.get_node_timer(pos):start(math.random(300, 1500))
end,
on_place = function(itemstack, placer, pointed_thing)
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
"livingfloatlands:paleojungle_clubmoss_sapling",
-- minp, maxp to be checked, relative to sapling pos
{x = -1, y = 0, z = -1},
{x = 1, y = 1, z = 1},
-- maximum interval of interior volume check
2)
return itemstack
end,
})
stairs.register_stair_and_slab(
"livingfloatlands_paleojungle_clubmoss_wood",
"livingfloatlands:paleojungle_clubmoss_wood",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"livingfloatlands_paleojungle_clubmoss_wood.png"},
S("Clubmoss Stair"),
S("Clubmoss Slab"),
default.node_sound_wood_defaults()
)
stairs.register_stair_and_slab(
"livingfloatlands_paleojungle_clubmoss_trunk",
"livingfloatlands:paleojungle_clubmoss_trunk",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"livingfloatlands_paleojungle_clubmoss_trunk_top.png", "livingfloatlands_paleojungle_clubmoss_trunk_top.png", "livingfloatlands_paleojungle_clubmoss_trunk.png"},
S("Clubmoss Trunk Stair"),
S("Clubmoss Trunk Slab"),
default.node_sound_wood_defaults()
)
doors.register_fencegate(
"livingfloatlands:gate_clubmoss_wood",
{
description = S("Clubmoss Wood Fence Gate"),
texture = "livingfloatlands_paleojungle_clubmoss_wood.png",
material = "livingfloatlands:paleojungle_clubmoss_wood",
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
sounds = default.node_sound_wood_defaults()
}
)
default.register_fence(
"livingfloatlands:fence_clubmoss_wood",
{
description = S("Clubmoss Fence"),
texture = "livingfloatlands_paleojungle_clubmoss_fencewood.png",
inventory_image = "default_fence_overlay.png^livingfloatlands_paleojungle_clubmoss_wood.png^default_fence_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_overlay.png^livingfloatlands_paleojungle_clubmoss_wood.png^default_fence_overlay.png^[makealpha:255,126,126",
material = "livingfloatlands:paleojungle_clubmoss_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
}
)
default.register_fence_rail(
"livingfloatlands:fence_rail_clubmoss_wood",
{
description = S("Clubmoss Fence Rail"),
texture = "livingfloatlands_paleojungle_clubmoss_fencewood.png",
inventory_image = "default_fence_rail_overlay.png^livingfloatlands_paleojungle_clubmoss_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_rail_overlay.png^livingfloatlands_paleojungle_clubmoss_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
material = "livingfloatlands:paleojungle_clubmoss_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
}
)
minetest.register_decoration({
name = "livingfloatlands:giantforest_clubmoss_tree",
deco_type = "schematic",
place_on = {"livingfloatlands:paleojungle_litter"},
place_offset_y = 0,
sidelen = 16,
fill_ratio = 0.00045,
biomes = {"livingfloatlands:paleojungle"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands").."/schematics/paleojungle_clubmoss_tree.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:giantforest_clubmoss_tree2",
deco_type = "schematic",
place_on = {"livingfloatlands:paleojungle_litter"},
place_offset_y = 0,
sidelen = 16,
fill_ratio = 0.00045,
biomes = {"livingfloatlands:paleojungle"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands").."/schematics/paleojungle_clubmoss_tree2.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:giantforest_clubmoss_tree3",
deco_type = "schematic",
place_on = {"livingfloatlands:paleojungle_litter"},
place_offset_y = 0,
sidelen = 16,
fill_ratio = 0.00045,
biomes = {"livingfloatlands:paleojungle"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands").."/schematics/paleojungle_clubmoss_tree3.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
-- New conifere tree
local function grow_new_paleojungle_conifere_tree(pos)
if not default.can_grow(pos) then
-- try a bit later again
minetest.get_node_timer(pos):start(math.random(240, 600))
return
end
minetest.remove_node(pos)
minetest.place_schematic({x = pos.x - 7, y = pos.y - 0, z = pos.z - 8}, modpath.."/schematics/paleojungle_conifere_tree.mts", "0", nil, false)
end
if minetest.get_modpath("bonemeal") then
bonemeal:add_sapling({
{"livingfloatlands:paleojungle_conifere_sapling", grow_new_paleojungle_conifere_tree, "soil"},
})
end
-- conifere trunk
minetest.register_node("livingfloatlands:paleojungle_conifere_trunk", {
description = S("Conifere Trunk"),
tiles = {
"livingfloatlands_paleojungle_conifere_trunk_top.png",
"livingfloatlands_paleojungle_conifere_trunk_top.png",
"livingfloatlands_paleojungle_conifere_trunk.png"
},
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = default.node_sound_wood_defaults(),
paramtype2 = "facedir",
on_place = minetest.rotate_node,
})
-- conifere wood
minetest.register_node("livingfloatlands:paleojungle_conifere_wood", {
description = S("Conifere Wood"),
tiles = {"livingfloatlands_paleojungle_conifere_wood.png"},
is_ground_content = false,
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
sounds = default.node_sound_wood_defaults(),
})
minetest.register_craft({
output = "livingfloatlands:paleojungle_conifere_wood 4",
recipe = {{"livingfloatlands:paleojungle_conifere_trunk"}}
})
minetest.register_node("livingfloatlands:paleojungle_conifere_leaves", {
description = S("Conifere Leaves"),
drawtype = "allfaces_optional",
waving = 1,
visual_scale = 1.0,
tiles = {"livingfloatlands_paleojungle_conifere_leaves.png"},
special_tiles = {"livingfloatlands_paleojungle_conifere_leaves.png"},
paramtype = "light",
is_ground_content = false,
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1, winleafdecay = 3},
drop = {
max_items = 1,
items = {
{
-- player will get sapling with 1/50 chance
items = {'livingfloatlands:paleojungle_conifere_sapling'},
rarity = 10,
},
{
-- player will get leaves only if he get no saplings,
-- this is because max_items is 1
items = {'livingfloatlands:paleojungle_conifere_leaves'},
}
}
},
sounds = default.node_sound_leaves_defaults(),
after_place_node = default.after_place_leaves,
})
minetest.register_node("livingfloatlands:paleojungle_conifere_sapling", {
description = S("Conifere Sapling"),
drawtype = "plantlike",
tiles = {"livingfloatlands_paleojungle_conifere_sapling.png"},
inventory_image = "livingfloatlands_paleojungle_conifere_sapling.png",
wield_image = "livingfloatlands_paleojungle_conifere_sapling.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
on_timer = grow_new_paleojungle_conifere_tree,
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1},
sounds = default.node_sound_leaves_defaults(),
on_construct = function(pos)
minetest.get_node_timer(pos):start(math.random(300, 1500))
end,
on_place = function(itemstack, placer, pointed_thing)
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
"livingfloatlands:paleojungle_conifere_sapling",
-- minp, maxp to be checked, relative to sapling pos
{x = -1, y = 0, z = -1},
{x = 1, y = 1, z = 1},
-- maximum interval of interior volume check
2)
return itemstack
end,
})
stairs.register_stair_and_slab(
"livingfloatlands_paleojungle_conifere_wood",
"livingfloatlands:paleojungle_conifere_wood",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"livingfloatlands_paleojungle_conifere_wood.png"},
S("Conifere Stair"),
S("Conifere Slab"),
default.node_sound_wood_defaults()
)
stairs.register_stair_and_slab(
"livingfloatlands_paleojungle_conifere_trunk",
"livingfloatlands:paleojungle_conifere_trunk",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"livingfloatlands_paleojungle_conifere_trunk_top.png", "livingfloatlands_paleojungle_conifere_trunk_top.png", "livingfloatlands_paleojungle_conifere_trunk.png"},
S("Conifere Trunk Stair"),
S("Conifere Trunk Slab"),
default.node_sound_wood_defaults()
)
doors.register_fencegate(
"livingfloatlands:gate_conifere_wood",
{
description = S("Conifere Wood Fence Gate"),
texture = "livingfloatlands_paleojungle_conifere_wood.png",
material = "livingfloatlands:paleojungle_conifere_wood",
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
sounds = default.node_sound_wood_defaults()
}
)
default.register_fence(
"livingfloatlands:fence_conifere_wood",
{
description = S("Conifere Fence"),
texture = "livingfloatlands_paleojungle_conifere_fencewood.png",
inventory_image = "default_fence_overlay.png^livingfloatlands_paleojungle_conifere_wood.png^default_fence_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_overlay.png^livingfloatlands_paleojungle_conifere_wood.png^default_fence_overlay.png^[makealpha:255,126,126",
material = "livingfloatlands:paleojungle_conifere_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
}
)
default.register_fence_rail(
"livingfloatlands:fence_rail_conifere_wood",
{
description = S("Conifere Fence Rail"),
texture = "livingfloatlands_paleojungle_conifere_fencewood.png",
inventory_image = "default_fence_rail_overlay.png^livingfloatlands_paleojungle_conifere_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_rail_overlay.png^livingfloatlands_paleojungle_conifere_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
material = "livingfloatlands:paleojungle_conifere_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
}
)
minetest.register_decoration({
name = "livingfloatlands:giantforest_conifere_tree",
deco_type = "schematic",
place_on = {"livingfloatlands:paleojungle_litter"},
place_offset_y = 0,
sidelen = 16,
fill_ratio = 0.00045,
biomes = {"livingfloatlands:paleojungle"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands").."/schematics/paleojungle_conifere_tree.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:giantforest_conifere_tree2",
deco_type = "schematic",
place_on = {"livingfloatlands:paleojungle_litter"},
place_offset_y = 0,
sidelen = 16,
fill_ratio = 0.00045,
biomes = {"livingfloatlands:paleojungle"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands").."/schematics/paleojungle_conifere_tree2.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
-- New paleo Palm tree
local function grow_new_paleojungle_paleopalm_tree(pos)
if not default.can_grow(pos) then
-- try a bit later again
minetest.get_node_timer(pos):start(math.random(240, 600))
return
end
minetest.remove_node(pos)
minetest.place_schematic({x = pos.x - 4, y = pos.y - 0, z = pos.z - 4}, modpath.."/schematics/paleojungle_paleopalm_tree.mts", "0", nil, false)
end
if minetest.get_modpath("bonemeal") then
bonemeal:add_sapling({
{"livingfloatlands:paleojungle_paleopalm_sapling", grow_new_paleojungle_paleopalm_tree, "soil"},
})
end
-- paleo palm trunk
minetest.register_node("livingfloatlands:paleojungle_paleopalm_trunk", {
description = S("Paleopalm Trunk"),
tiles = {
"livingfloatlands_paleojungle_paleopalm_trunk_top.png",
"livingfloatlands_paleojungle_paleopalm_trunk_top.png",
"livingfloatlands_paleojungle_paleopalm_trunk.png"
},
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = default.node_sound_wood_defaults(),
paramtype2 = "facedir",
on_place = minetest.rotate_node,
})
-- paleo Palm wood
minetest.register_node("livingfloatlands:paleojungle_paleopalm_wood", {
description = S("Paleo Palm Wood"),
tiles = {"livingfloatlands_paleojungle_paleopalm_wood.png"},
is_ground_content = false,
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
sounds = default.node_sound_wood_defaults(),
})
minetest.register_craft({
output = "livingfloatlands:paleojungle_paleopalm_wood 4",
recipe = {{"livingfloatlands:paleojungle_paleopalm_trunk"}}
})
minetest.register_node("livingfloatlands:paleojungle_paleopalm_leaves", {
description = S("Paleo Palm Leaves"),
drawtype = "plantlike",
waving = 1,
visual_scale = 4.0,
tiles = {"livingfloatlands_paleojungle_paleopalm_leaves.png"},
special_tiles = {"livingfloatlands_paleojungle_paleopalm_leaves.png"},
paramtype = "light",
is_ground_content = false,
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1, winleafdecay = 3},
drop = {
max_items = 1,
items = {
{
-- player will get sapling with 1/50 chance
items = {'livingfloatlands:paleojungle_paleopalm_sapling'},
rarity =8,
},
{
-- player will get leaves only if he get no saplings,
-- this is because max_items is 1
items = {'livingfloatlands:paleojungle_paleopalm_leaves'},
}
}
},
sounds = default.node_sound_leaves_defaults(),
after_place_node = default.after_place_leaves,
})
minetest.register_node("livingfloatlands:paleojungle_paleopalm_sapling", {
description = S("Paleo Palm Sapling"),
drawtype = "plantlike",
tiles = {"livingfloatlands_paleojungle_paleopalm_sapling.png"},
inventory_image = "livingfloatlands_paleojungle_paleopalm_sapling.png",
wield_image = "livingfloatlands_paleojungle_paleopalm_sapling.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
on_timer = grow_new_paleojungle_paleopalm_tree,
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1},
sounds = default.node_sound_leaves_defaults(),
on_construct = function(pos)
minetest.get_node_timer(pos):start(math.random(300, 1500))
end,
on_place = function(itemstack, placer, pointed_thing)
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
"livingfloatlands:paleojungle_paleopalm_sapling",
-- minp, maxp to be checked, relative to sapling pos
{x = -1, y = 0, z = -1},
{x = 1, y = 1, z = 1},
-- maximum interval of interior volume check
2)
return itemstack
end,
})
stairs.register_stair_and_slab(
"livingfloatlands_paleojungle_paleopalm_wood",
"livingfloatlands:paleojungle_paleopalm_wood",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"livingfloatlands_paleojungle_paleopalm_wood.png"},
S("Paleo Palm Stair"),
S("Paleo Palm Slab"),
default.node_sound_wood_defaults()
)
stairs.register_stair_and_slab(
"livingfloatlands_paleojungle_paleopalm_trunk",
"livingfloatlands:paleojungle_paleopalm_trunk",
{choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
{"livingfloatlands_paleojungle_paleopalm_trunk_top.png", "livingfloatlands_paleojungle_paleopalm_trunk_top.png", "livingfloatlands_paleojungle_paleopalm_trunk.png"},
S("Paleo Palm Trunk Stair"),
S("Paleo Palm Trunk Slab"),
default.node_sound_wood_defaults()
)
doors.register_fencegate(
"livingfloatlands:gate_paleopalm_wood",
{
description = S("Paleo Palm Wood Fence Gate"),
texture = "livingfloatlands_paleojungle_paleopalm_wood.png",
material = "livingfloatlands:paleojungle_paleopalm_wood",
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
sounds = default.node_sound_wood_defaults()
}
)
default.register_fence(
"livingfloatlands:fence_paleopalm_wood",
{
description = S("Paleo Palm Fence"),
texture = "livingfloatlands_paleojungle_conifere_fencewood.png",
inventory_image = "default_fence_overlay.png^livingfloatlands_paleojungle_paleopalm_wood.png^default_fence_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_overlay.png^livingfloatlands_paleojungle_paleopalm_wood.png^default_fence_overlay.png^[makealpha:255,126,126",
material = "livingfloatlands:paleojungle_paleopalm_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
}
)
default.register_fence_rail(
"livingfloatlands:fence_rail_paleopalm_wood",
{
description = S("Paleo Palm Fence Rail"),
texture = "livingfloatlands_paleojungle_paleopalm_fencewood.png",
inventory_image = "default_fence_rail_overlay.png^livingfloatlands_paleojungle_paleopalm_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_rail_overlay.png^livingfloatlands_paleojungle_paleopalm_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
material = "livingfloatlands:paleojungle_paleopalm_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
}
)
minetest.register_decoration({
name = "livingfloatlands:giantforest_paleopalm_tree",
deco_type = "schematic",
place_on = {"livingfloatlands:paleojungle_litter"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.00245,
biomes = {"livingfloatlands:paleojungle"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands").."/schematics/paleojungle_paleopalm_tree.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:giantforest_paleopalm_tree2",
deco_type = "schematic",
place_on = {"livingfloatlands:paleojungle_litter"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.00245,
biomes = {"livingfloatlands:paleojungle"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands").."/schematics/paleojungle_paleopalm_tree2.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_decoration({
name = "livingfloatlands:giantforest_paleopalm_tree3",
deco_type = "schematic",
place_on = {"livingfloatlands:paleojungle_litter"},
place_offset_y = -1,
sidelen = 16,
fill_ratio = 0.00245,
biomes = {"livingfloatlands:paleojungle"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("livingfloatlands").."/schematics/paleojungle_paleopalm_tree3.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
minetest.register_node("livingfloatlands:paleojungle_littler_dirt", {
description = S("Paleo Jungle Ground with dirt"),
tiles = {"livingfloatlands_paleojungle_litter_dirt.png"},
groups = {crumbly = 3, soil = 1, falling_node = 0},
drop = "livingfloatlands:paleojungle_littler_dirt",
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("livingfloatlands:paleojungle_littler_leaves", {
description = S("Paleo Jungle Ground with leaves"),
tiles = {"livingfloatlands_paleojungle_litter_leaves.png"},
groups = {crumbly = 3, soil = 1, falling_node = 0},
drop = "livingfloatlands:paleojungle_littler_leaves",
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_decoration({
deco_type = "simple",
place_on = {"livingfloatlands:paleojungle_litter"},
sidelen = 16,
place_offset_y = -1,
flags = "force_placement",
noise_params = {
offset = -0,
scale = 0.2,
spread = {x = 50, y = 50, z = 50},
seed = 9233,
octaves = 7,
persist = 1,
},
y_max = 3100,
y_min = 0,
decoration = "livingfloatlands:paleojungle_littler_dirt"
})
minetest.register_decoration({
deco_type = "simple",
place_on = {"livingfloatlands:paleojungle_litter"},
sidelen = 16,
place_offset_y = -1,
flags = "force_placement",
noise_params = {
offset = -0,
scale = 0.2,
spread = {x = 50, y = 50, z = 50},
seed = 1874,
octaves = 8,
persist = 1,
},
y_max = 3100,
y_min = 0,
decoration = "livingfloatlands:paleojungle_littler_leaves"
})
if minetest.get_modpath("bonemeal") then
bonemeal:add_deco({
{"livingfloatlands:paleojungle_litter", {"livingfloatlands:paleojungle_ferngrass", "livingfloatlands:giantforest_grass3", "livingfloatlands:paleojungle_smallpalm"}, {}}
})
end

View file

@ -0,0 +1,123 @@
local S = minetest.get_translator("livingfloatlands")
local random = math.random
mobs:register_mob("livingfloatlands:parasaurolophus", {
type = "animal",
passive = true,
attack_type = "dogfight",
attack_animals = false,
reach = 6,
damage = 20,
hp_min = 350,
hp_max = 450,
armor = 100,
collisionbox = {-1.0, -0.01, -1.0, 1.0, 3.0, 1.0},
visual = "mesh",
mesh = "Parasaurolophus.b3d",
visual_size = {x = 1.0, y = 1.0},
textures = {
{"textureparasaurolophus.png"},
{"textureparasaurolophus2.png"},
},
sounds = {
random = "livingfloatlands_parasaurolophus",
damage = "livingfloatlands_parasaurolophus2",
distance = 25,
},
makes_footstep_sound = true,
walk_velocity = 2,
run_velocity = 4,
walk_chance = 20,
runaway = true,
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor"},
jump = false,
jump_height = 6,
stay_near = {{"livingfloatlands:paleojungle_litter_leaves", "livingfloatlands:paleojungle_smallpalm", "livingfloatlands:giantforest_grass3", "livingfloatlands:paleojungle_ferngrass"}, 5},
stepheight = 2,
drops = {
{name = "livingfloatlands:ornithischiaraw", chance = 1, min = 1, max = 1},
},
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fear_height = 3,
knock_back = false,
pathfinding = true,
animation = {
speed_normal = 50,
stand_start = 0,
stand_end = 100,
walk_speed = 50,
walk_start = 100,
walk_end = 200,
die_start = 100,
die_end = 200,
die_speed = 50,
die_loop = false,
die_rotate = true,
},
follow = {
"default:dry_shrub ", "default:grass_1", "ethereal:dry_shrub", "farming:seed_wheat", "farming:seed_rye", "default:junglegrass", "default:apple", "farming:cabbage", "farming:carrot", "farming:cucumber", "farming:grapes", "farming:pineapple", "ethereal:orange", "ethereal:coconut", "ethereal:coconut_slice", "livingfloatlands:paleojungle_clubmoss_fruit", "livingfloatlands:giantforest_oaknut", "livingfloatlands:paleojungle_ferngrass"
},
view_range = 20,
on_rightclick = function(self, clicker)
-- feed or tame
if mobs:feed_tame(self, clicker, 4, false, true) then return end
if mobs:protect(self, clicker) then return end
if mobs:capture_mob(self, clicker, 0, 0, 5, false, nil) then return end
end,
})
if minetest.get_modpath("ethereal") then
spawn_on = {"ethereal:prairie_dirt", "ethereal:grove_dirt", "default:dirt_with_coniferous_litter"}
end
if not mobs.custom_spawn_livingfloatlands then
mobs:spawn({
name = "livingfloatlands:parasaurolophus",
nodes = {"livingfloatlands:paleojungle_litter"},
neighbors = {"livingfloatlands:paleojungle_smallpalm"},
min_light = 0,
interval = 60,
active_object_count = 2,
chance = 2000, -- 15000
min_height = 1000,
max_height = 31000,
on_spawn = function(self, pos)
local nods = minetest.find_nodes_in_area_under_air(
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
{"livingfloatlands:paleojungle_litter"})
if nods and #nods > 0 then
-- min herd of 2
local iter = math.min(#nods, 2)
-- print("--- parasaurolophus at", minetest.pos_to_string(pos), iter)
for n = 1, iter do
local pos2 = nods[random(#nods)]
local kid = random(4) == 1 and true or nil
pos2.y = pos2.y + 2
if minetest.get_node(pos2).name == "air" then
mobs:add_mob(pos2, {
name = "livingfloatlands:parasaurolophus", child = kid})
end
end
end
end
})
end
mobs:register_egg("livingfloatlands:parasaurolophus", ("Parasaurolophus"), "aparasaurolophus.png")

View file

@ -0,0 +1,107 @@
local S = minetest.get_translator("livingfloatlands")
mobs:register_mob("livingfloatlands:rhamphorhynchus", {
stepheight = 3,
type = "animal",
passive = true,
attack_type = "dogfight",
attack_animals = false,
reach = 2,
damage = 1,
hp_min = 5,
hp_max = 35,
armor = 100,
collisionbox = {-0.3, -0.01, -0.3, 0.3, 0.5, 0.3},
visual = "mesh",
mesh = "Rhamphorhynchus.b3d",
visual_size = {x = 1.0, y = 1.0},
textures = {
{"texturerhamphorhynchus.png"},
},
sounds = {
random = "livingfloatlands_rhamphorhynchus",
distance = 15,
},
makes_footstep_sound = false,
walk_velocity = 3,
run_velocity = 4,
walk_chance = 50,
runaway = true,
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "player"},
fall_speed = 0,
jump = true,
jump_height = 6,
fly = true,
stepheight = 3,
drops = {
{name = "livingfloatlands:dinosaur_feather", chance = 1, min = 1, max = 1},
},
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fear_height = 0,
animation = {
speed_normal = 100,
stand_start = 150,
stand_end = 250,
fly_start = 0,
fly_end = 100,
die_start = 0,
die_end = 100,
die_speed = 50,
die_loop = false,
die_rotate = true,
},
fly_in = {"air", "default:water_source", "default:river_water_source"},
floats = 0,
follow = {
"animalworld:rawfish", "mobs:clownfish_raw", "mobs:bluefish_raw", "fishing:bait_worm", "fishing:clownfish_raw", "fishing:bluewhite_raw", "fishing:exoticfish_raw", "fishing:fish_raw", "fishing:carp_raw", "fishing:perch_raw", "xocean:fish_edible"
},
view_range = 10,
on_rightclick = function(self, clicker)
-- feed or tame
if mobs:feed_tame(self, clicker, 4, false, true) then return end
if mobs:protect(self, clicker) then return end
if mobs:capture_mob(self, clicker, 0, 25, 0, false, nil) then return end
end,
})
if minetest.get_modpath("ethereal") then
spawn_on = {"ethereal:grove_dirt", "ethereal:bamboo_dirt", "default:dirt_with_rainforest_litter", "default:dirt_with_grass", "default:sand"}
end
if not mobs.custom_spawn_livingfloatlands then
mobs:spawn({
name = "livingfloatlands:rhamphorhynchus",
nodes = {"livingfloatlands:giantforest_paleoredwood_trunk", "livingfloatlands:paleojungle_litter"},
min_light = 0,
interval = 60,
chance = 200, -- 15000
active_object_count = 2,
min_height = 1000,
max_height = 31000,
day_toggle = true,
})
end
mobs:register_egg("livingfloatlands:rhamphorhynchus", ("Rhamphorhynchus"), "arhamphorhynchus.png")
-- feather
minetest.register_craftitem(":livingfloatlands:dinosaur_feather", {
description = S("Dinosaur Feather"),
inventory_image = "livingfloatlands_dinosaur_feather.png",
groups = {flammable = 2},
})
minetest.register_craft({
type = "fuel",
recipe = "livingfloatlands:dinosaur_feather",
burntime = 2,
})

Binary file not shown.

After

Width:  |  Height:  |  Size: 572 KiB

View file

@ -0,0 +1,88 @@
local S = minetest.get_translator("livingfloatlands")
mobs:register_mob("livingfloatlands:smilodon", {
type = "monster",
passive = false,
attack_type = "dogfight",
attack_animals = true,
reach = 2,
damage = 13,
hp_min = 75,
hp_max = 95,
armor = 100,
collisionbox = {-0.5, -0.01, -0.5, 0.5, 0.95, 0.5},
visual = "mesh",
mesh = "Smilodon.b3d",
visual_size = {x = 1.0, y = 1.0},
textures = {
{"texturesmilodon.png"},
},
sounds = {
random = "livingfloatlands_smilodon2",
attack = "livingfloatlands_smilodon",
},
makes_footstep_sound = true,
walk_velocity = 2,
run_velocity = 4,
runaway = false,
jump = true,
jump_height = 6,
stepheight = 2,
stay_near = {{"livingfloatlands:coldsteppe_shrub", "livingfloatlands:coldsteppe_grass", "livingfloatlands:coldsteppe_grass2", "livingfloatlands:coldsteppe_grass3", "livingfloatlands:coldsteppe_grass4"}, 6},
drops = {
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
},
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fear_height = 3,
animation = {
speed_normal = 75,
stand_start = 0,
stand_end = 100,
walk_start = 100,
walk_end = 200,
punch_start = 250,
punch_end = 350,
die_start = 250,
die_end = 350,
die_speed = 50,
die_loop = false,
die_rotate = true,
},
follow = {
"ethereal:fish_raw", "animalworld:rawfish", "mobs_fish:tropical",
"mobs:meat_raw", "animalworld:rabbit_raw", "animalworld:pork_raw", "water_life:meat_raw", "animalworld:chicken_raw", "livingfloatlands:ornithischiaraw", "livingfloatlands:sauropodraw", "livingfloatlands:theropodraw", "mobs:meatblock_raw", "animalworld:chicken_raw", "livingfloatlands:ornithischiaraw", "livingfloatlands:largemammalraw", "livingfloatlands:theropodraw", "livingfloatlands:sauropodraw", "animalworld:raw_athropod", "animalworld:whalemeat_raw", "animalworld:rabbit_raw", "nativevillages:chicken_raw", "mobs:meat_raw", "animalworld:pork_raw", "people:mutton:raw"
},
view_range = 15,
on_rightclick = function(self, clicker)
-- feed or tame
if mobs:feed_tame(self, clicker, 4, false, true) then return end
if mobs:protect(self, clicker) then return end
if mobs:capture_mob(self, clicker, 0, 5, 0, false, nil) then return end
end,
})
if minetest.get_modpath("ethereal") then
spawn_on = {"ethereal:crystal_dirt", "ethereal:gray_dirt", "default:permafrost_with_moss", "default:dirt_with_snow", "default:snow"}
end
if not mobs.custom_spawn_livingfloatlands then
mobs:spawn({
name = "livingfloatlands:smilodon",
nodes = {"livingfloatlands:coldsteppe_litter"},
neighbors = {"livingfloatlands:coldsteppe_shrub", "livingfloatlands:coldsteppe_grass", "livingfloatlands:coldsteppe_grass2", "livingfloatlands:coldsteppe_grass3"},
min_light = 0,
interval = 60,
chance = 2000, -- 15000
active_object_count = 1,
min_height = 1000,
max_height = 31000,
})
end
mobs:register_egg("livingfloatlands:smilodon", ("Smilodon"), "asmilodon.png")

Some files were not shown because too many files have changed in this diff Show more