Mehr Mods hinzugefügt
This commit is contained in:
parent
92a55732cf
commit
9e345a25fb
2805 changed files with 2096013 additions and 0 deletions
32
mods/livingfloatlands/LICENSE
Normal file
32
mods/livingfloatlands/LICENSE
Normal 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!
|
||||
|
148
mods/livingfloatlands/ankylosaurus.lua
Normal file
148
mods/livingfloatlands/ankylosaurus.lua
Normal 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,
|
||||
})
|
||||
|
127
mods/livingfloatlands/carnotaurus.lua
Normal file
127
mods/livingfloatlands/carnotaurus.lua
Normal 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,
|
||||
})
|
||||
|
||||
|
||||
|
92
mods/livingfloatlands/cavebear.lua
Normal file
92
mods/livingfloatlands/cavebear.lua
Normal 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")
|
301
mods/livingfloatlands/coldgiantforest.lua
Normal file
301
mods/livingfloatlands/coldgiantforest.lua
Normal 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",
|
||||
})
|
1216
mods/livingfloatlands/coldsteppe.lua
Normal file
1216
mods/livingfloatlands/coldsteppe.lua
Normal file
File diff suppressed because it is too large
Load diff
345
mods/livingfloatlands/crafting.lua
Normal file
345
mods/livingfloatlands/crafting.lua
Normal 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"},
|
||||
}
|
||||
})
|
153
mods/livingfloatlands/deinotherium.lua
Normal file
153
mods/livingfloatlands/deinotherium.lua
Normal 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,
|
||||
})
|
||||
|
||||
|
8
mods/livingfloatlands/depends.txt
Normal file
8
mods/livingfloatlands/depends.txt
Normal file
|
@ -0,0 +1,8 @@
|
|||
mobs
|
||||
default
|
||||
doors
|
||||
animalworld?
|
||||
ethereal?
|
||||
farming?
|
||||
hunger_ng?
|
||||
bonemeal?
|
1
mods/livingfloatlands/description.txt
Normal file
1
mods/livingfloatlands/description.txt
Normal 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.
|
69
mods/livingfloatlands/dye.lua
Normal file
69
mods/livingfloatlands/dye.lua
Normal 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"}
|
||||
},
|
||||
})
|
128
mods/livingfloatlands/entelodon.lua
Normal file
128
mods/livingfloatlands/entelodon.lua
Normal 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")
|
110
mods/livingfloatlands/gastornis.lua
Normal file
110
mods/livingfloatlands/gastornis.lua
Normal 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
|
||||
|
||||
|
570
mods/livingfloatlands/giantforest.lua
Normal file
570
mods/livingfloatlands/giantforest.lua
Normal 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
|
||||
|
||||
|
95
mods/livingfloatlands/gigantopithecus.lua
Normal file
95
mods/livingfloatlands/gigantopithecus.lua
Normal 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
|
||||
|
39
mods/livingfloatlands/hunger.lua
Normal file
39
mods/livingfloatlands/hunger.lua
Normal 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
|
84
mods/livingfloatlands/init.lua
Normal file
84
mods/livingfloatlands/init.lua
Normal 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"))
|
3
mods/livingfloatlands/intllib.lua
Normal file
3
mods/livingfloatlands/intllib.lua
Normal file
|
@ -0,0 +1,3 @@
|
|||
-- Support for the old multi-load method
|
||||
dofile(minetest.get_modpath("intllib").."/init.lua")
|
||||
|
60
mods/livingfloatlands/leafdecay.lua
Normal file
60
mods/livingfloatlands/leafdecay.lua
Normal 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
|
||||
})
|
||||
|
185
mods/livingfloatlands/locale/livingfloatlands.de.tr
Normal file
185
mods/livingfloatlands/locale/livingfloatlands.de.tr
Normal 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
|
90
mods/livingfloatlands/lycaenops.lua
Normal file
90
mods/livingfloatlands/lycaenops.lua
Normal 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")
|
129
mods/livingfloatlands/mammooth.lua
Normal file
129
mods/livingfloatlands/mammooth.lua
Normal 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")
|
6
mods/livingfloatlands/mod.conf
Normal file
6
mods/livingfloatlands/mod.conf
Normal 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
|
BIN
mods/livingfloatlands/models/Ankylosaurus.b3d
Normal file
BIN
mods/livingfloatlands/models/Ankylosaurus.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Carnotaurus.b3d
Normal file
BIN
mods/livingfloatlands/models/Carnotaurus.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Carnotaurus5.b3d
Normal file
BIN
mods/livingfloatlands/models/Carnotaurus5.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Cavebear.b3d
Normal file
BIN
mods/livingfloatlands/models/Cavebear.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Deinotherium.b3d
Normal file
BIN
mods/livingfloatlands/models/Deinotherium.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Entelodon.b3d
Normal file
BIN
mods/livingfloatlands/models/Entelodon.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Gastornis.b3d
Normal file
BIN
mods/livingfloatlands/models/Gastornis.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Gigantopithecus.b3d
Normal file
BIN
mods/livingfloatlands/models/Gigantopithecus.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Lycaenops.b3d
Normal file
BIN
mods/livingfloatlands/models/Lycaenops.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Mammooth.b3d
Normal file
BIN
mods/livingfloatlands/models/Mammooth.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Nigersaurus.b3d
Normal file
BIN
mods/livingfloatlands/models/Nigersaurus.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Oviraptor.b3d
Normal file
BIN
mods/livingfloatlands/models/Oviraptor.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Parasaurolophus.b3d
Normal file
BIN
mods/livingfloatlands/models/Parasaurolophus.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Rhamphorhynchus.b3d
Normal file
BIN
mods/livingfloatlands/models/Rhamphorhynchus.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Smilodon.b3d
Normal file
BIN
mods/livingfloatlands/models/Smilodon.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Stegosaurus.b3d
Normal file
BIN
mods/livingfloatlands/models/Stegosaurus.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Triceratops.b3d
Normal file
BIN
mods/livingfloatlands/models/Triceratops.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Tyrannosaurus.b3d
Normal file
BIN
mods/livingfloatlands/models/Tyrannosaurus.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Tyrannosaurus4.b3d
Normal file
BIN
mods/livingfloatlands/models/Tyrannosaurus4.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Velociraptor.b3d
Normal file
BIN
mods/livingfloatlands/models/Velociraptor.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Wildhorse.b3d
Normal file
BIN
mods/livingfloatlands/models/Wildhorse.b3d
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/models/Woollyrhino.b3d
Normal file
BIN
mods/livingfloatlands/models/Woollyrhino.b3d
Normal file
Binary file not shown.
146
mods/livingfloatlands/nigersaurus.lua
Normal file
146
mods/livingfloatlands/nigersaurus.lua
Normal 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,
|
||||
})
|
||||
|
||||
|
125
mods/livingfloatlands/oviraptor.lua
Normal file
125
mods/livingfloatlands/oviraptor.lua
Normal 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")
|
670
mods/livingfloatlands/paleodesert.lua
Normal file
670
mods/livingfloatlands/paleodesert.lua
Normal 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
|
||||
|
||||
|
845
mods/livingfloatlands/paleojungle.lua
Normal file
845
mods/livingfloatlands/paleojungle.lua
Normal 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
|
||||
|
123
mods/livingfloatlands/parasaurolophus.lua
Normal file
123
mods/livingfloatlands/parasaurolophus.lua
Normal 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")
|
107
mods/livingfloatlands/rhamphorhynchus.lua
Normal file
107
mods/livingfloatlands/rhamphorhynchus.lua
Normal 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,
|
||||
})
|
BIN
mods/livingfloatlands/schematics/giantforest_paleooak_tree.mts
Normal file
BIN
mods/livingfloatlands/schematics/giantforest_paleooak_tree.mts
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/schematics/giantforest_paleooak_tree2.mts
Normal file
BIN
mods/livingfloatlands/schematics/giantforest_paleooak_tree2.mts
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/schematics/giantforest_paleooak_tree3.mts
Normal file
BIN
mods/livingfloatlands/schematics/giantforest_paleooak_tree3.mts
Normal file
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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
mods/livingfloatlands/schematics/paleodesert_joshua_tree.mts
Normal file
BIN
mods/livingfloatlands/schematics/paleodesert_joshua_tree.mts
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/schematics/paleodesert_joshua_tree2.mts
Normal file
BIN
mods/livingfloatlands/schematics/paleodesert_joshua_tree2.mts
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/schematics/paleodesert_joshua_tree3.mts
Normal file
BIN
mods/livingfloatlands/schematics/paleodesert_joshua_tree3.mts
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/schematics/paleodesert_paleopine.mts
Normal file
BIN
mods/livingfloatlands/schematics/paleodesert_paleopine.mts
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/schematics/paleojungle_clubmoss_tree.mts
Normal file
BIN
mods/livingfloatlands/schematics/paleojungle_clubmoss_tree.mts
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/schematics/paleojungle_clubmoss_tree2.mts
Normal file
BIN
mods/livingfloatlands/schematics/paleojungle_clubmoss_tree2.mts
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/schematics/paleojungle_clubmoss_tree3.mts
Normal file
BIN
mods/livingfloatlands/schematics/paleojungle_clubmoss_tree3.mts
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/schematics/paleojungle_conifere_tree.mts
Normal file
BIN
mods/livingfloatlands/schematics/paleojungle_conifere_tree.mts
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/schematics/paleojungle_conifere_tree2.mts
Normal file
BIN
mods/livingfloatlands/schematics/paleojungle_conifere_tree2.mts
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/schematics/paleojungle_conifere_tree3.mts
Normal file
BIN
mods/livingfloatlands/schematics/paleojungle_conifere_tree3.mts
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/schematics/paleojungle_paleopalm_tree.mts
Normal file
BIN
mods/livingfloatlands/schematics/paleojungle_paleopalm_tree.mts
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/schematics/paleojungle_paleopalm_tree2.mts
Normal file
BIN
mods/livingfloatlands/schematics/paleojungle_paleopalm_tree2.mts
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/schematics/paleojungle_paleopalm_tree3.mts
Normal file
BIN
mods/livingfloatlands/schematics/paleojungle_paleopalm_tree3.mts
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/screenshot.png
Normal file
BIN
mods/livingfloatlands/screenshot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 572 KiB |
88
mods/livingfloatlands/smilodon.lua
Normal file
88
mods/livingfloatlands/smilodon.lua
Normal 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")
|
BIN
mods/livingfloatlands/sounds/livingfloatlands_ankylosaurus.ogg
Normal file
BIN
mods/livingfloatlands/sounds/livingfloatlands_ankylosaurus.ogg
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/sounds/livingfloatlands_carnotaurus.ogg
Normal file
BIN
mods/livingfloatlands/sounds/livingfloatlands_carnotaurus.ogg
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/sounds/livingfloatlands_carnotaurus2.ogg
Normal file
BIN
mods/livingfloatlands/sounds/livingfloatlands_carnotaurus2.ogg
Normal file
Binary file not shown.
BIN
mods/livingfloatlands/sounds/livingfloatlands_cavebear.ogg
Normal file
BIN
mods/livingfloatlands/sounds/livingfloatlands_cavebear.ogg
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue