diff --git a/mods/mesecons/mesecons_commandblock/init.lua b/mods/mesecons/mesecons_commandblock/init.lua index 8fd23f6a..62efd359 100755 --- a/mods/mesecons/mesecons_commandblock/init.lua +++ b/mods/mesecons/mesecons_commandblock/init.lua @@ -107,11 +107,16 @@ local function resolve_commands(commands, pos) farthest = player:get_player_name() end end - local random = players[math.random(#players)]:get_player_name() - commands = commands:gsub("@nearest", nearest) - commands = commands:gsub("@farthest", farthest) - commands = commands:gsub("@random", random) - return commands + local randomp = players[math.random(#players)] + if randomp then + local random = randomp:get_player_name() + commands = commands:gsub("@nearest", nearest) + commands = commands:gsub("@farthest", farthest) + commands = commands:gsub("@random", random) + return commands + else + return "" + end end local function commandblock_action_on(pos, node) diff --git a/mods/mobs/api.lua b/mods/mobs/api.lua index 75a6fea9..055e3807 100755 --- a/mods/mobs/api.lua +++ b/mods/mobs/api.lua @@ -212,11 +212,13 @@ function mobs:register_mob(name, def) and self.child == false and math.random(1,self.replace_rate) == 1 then local pos = self.object:getpos() + local nodeunder = minetest.get_node_or_nil({x=pos.x, y=pos.y-1, z=pos.z}) pos.y = pos.y + self.replace_offset -- print ("replace node = ".. minetest.get_node(pos).name, pos.y) if self.replace_what and self.object:getvelocity().y == 0 - and #minetest.find_nodes_in_area(pos, pos, self.replace_what) > 0 then + and #minetest.find_nodes_in_area(pos, pos, self.replace_what) > 0 --then + and nodeunder and nodeunder.name ~= "air" then --and self.state == "stand" then minetest.set_node(pos, {name = self.replace_with}) end @@ -1197,7 +1199,7 @@ end mobs.spawning_mobs = {} -function mobs:spawn_specific(name, nodes, neighbors, min_light, max_light, interval, chance, active_object_count, min_height, max_height) +function mobs:spawn_specific(name, nodes, neighbors, min_light, max_light, interval, chance, active_object_count, min_height, max_height, spawn_in_area) mobs.spawning_mobs[name] = true minetest.register_abm({ nodenames = nodes, @@ -1217,7 +1219,8 @@ function mobs:spawn_specific(name, nodes, neighbors, min_light, max_light, inter -- mobs cannot spawn inside protected areas if enabled if mobs.protected == 1 - and minetest.is_protected(pos, "") then + and minetest.is_protected(pos, "") + and not spawn_in_area then return end diff --git a/mods/mobs/bee.lua b/mods/mobs/bee.lua index 06e55c95..9e52214c 100755 --- a/mods/mobs/bee.lua +++ b/mods/mobs/bee.lua @@ -50,7 +50,7 @@ mobs:register_mob("mobs:bee", { end, }) -- spawn on group:flowers between 4 and 20 light, 1 in 5000 chance, 1 bee in area up to 31000 in height -mobs:spawn_specific("mobs:bee", {"group:flower"}, {"air"}, 4, 20, 30, 5000, 1, -31000, 31000) +mobs:spawn_specific("mobs:bee", {"group:flower"}, {"air"}, 4, 20, 30, 5000, 1, -31000, 31000, true) -- register spawn egg mobs:register_egg("mobs:bee", "Bee", "mobs_bee_inv.png", 0) diff --git a/mods/mobs/bunny.lua b/mods/mobs/bunny.lua index 899ae501..0be7f4ed 100755 --- a/mods/mobs/bunny.lua +++ b/mods/mobs/bunny.lua @@ -94,5 +94,5 @@ mobs:register_mob("mobs:bunny", { attack_type = "dogfight", damage = 5, }) -mobs:spawn_specific("mobs:bunny", {"default:dirt_with_grass"}, {"air"}, 8, 20, 30, 10000, 1, -31000, 31000) +mobs:spawn_specific("mobs:bunny", {"default:dirt_with_grass"}, {"air"}, 8, 20, 30, 10000, 1, -31000, 31000, true) mobs:register_egg("mobs:bunny", "Bunny", "mobs_bunny_inv.png", 0) diff --git a/mods/mobs/chicken.lua b/mods/mobs/chicken.lua index 34b78fa1..2bc50fb2 100755 --- a/mods/mobs/chicken.lua +++ b/mods/mobs/chicken.lua @@ -98,7 +98,7 @@ mobs:register_mob("mobs:chicken", { end, }) -- spawn on default or bamboo grass between 8 and 20 light, 1 in 10000 change, 1 chicken in area up to 31000 in height -mobs:spawn_specific("mobs:chicken", {"default:dirt_with_grass"}, {"air"}, 8, 20, 30, 10000, 1, -31000, 31000) +mobs:spawn_specific("mobs:chicken", {"default:dirt_with_grass"}, {"air"}, 8, 20, 30, 10000, 1, -31000, 31000, true) -- register spawn egg mobs:register_egg("mobs:chicken", "Chicken", "mobs_chicken_inv.png", 0) diff --git a/mods/mobs/cow.lua b/mods/mobs/cow.lua index bb3f44e5..789e7bc6 100755 --- a/mods/mobs/cow.lua +++ b/mods/mobs/cow.lua @@ -119,7 +119,7 @@ mobs:register_mob("mobs:cow", { -- spawn on default;green;prairie grass between 0 and 20 light, 1 in 11000 chance, 1 cow in area up to 31000 in height -mobs:spawn_specific("mobs:cow", {"default:dirt_with_grass"}, {"air"}, 8, 20, 30, 10000, 1, -31000, 31000) +mobs:spawn_specific("mobs:cow", {"default:dirt_with_grass"}, {"air"}, 8, 20, 30, 10000, 1, -31000, 31000, true) -- register spawn egg mobs:register_egg("mobs:cow", "Cow", "default_grass.png", 1) diff --git a/mods/mobs/creeper.lua b/mods/mobs/creeper.lua index f75da8cd..af28ec6e 100755 --- a/mods/mobs/creeper.lua +++ b/mods/mobs/creeper.lua @@ -52,5 +52,5 @@ mobs:register_mob("mobs:creeper", { speed_normal = 15, speed_run = 15, }, }) -mobs:spawn_specific("mobs:creeper", {"default:dirt_with_grass"}, {"air"}, 8, 20, 30, 20000, 1, -31000, 31000) +mobs:spawn_specific("mobs:creeper", {"default:dirt_with_grass"}, {"air"}, 8, 20, 30, 20000, 1, -31000, 31000, false) mobs:register_egg("mobs:creeper", "Creeper", "mobs_creeper_inv.png", 1) diff --git a/mods/mobs/dirtmonster.lua b/mods/mobs/dirtmonster.lua index 7e95700a..5c2da588 100755 --- a/mods/mobs/dirtmonster.lua +++ b/mods/mobs/dirtmonster.lua @@ -51,6 +51,6 @@ mobs:register_mob("mobs:dirt_monster", { }, }) -- spawn on dirt_with_grass and drygrass between -1 and 5 light, 1 in 10000 change, 1 dirt monster in area up to 31000 in height -mobs:spawn_specific("mobs:dirt_monster", {"default:dirt_with_grass", "watershed:drygrass"}, {"air"}, -1, 5, 30, 10000, 1, -31000, 31000) +mobs:spawn_specific("mobs:dirt_monster", {"default:dirt_with_grass", "watershed:drygrass"}, {"air"}, -1, 5, 30, 10000, 1, -31000, 31000, false) -- register spawn egg mobs:register_egg("mobs:dirt_monster", "Dirt Monster", "default_dirt.png", 1) diff --git a/mods/mobs/dungeonmaster.lua b/mods/mobs/dungeonmaster.lua index 8ad46203..6b75a494 100755 --- a/mods/mobs/dungeonmaster.lua +++ b/mods/mobs/dungeonmaster.lua @@ -68,7 +68,7 @@ mobs:register_mob("mobs:dungeon_master", { }, }) -- spawn on stone between 20 and -1 light, 1 in 7000 chance, 1 dungeon master in area starting at -100 and below -mobs:spawn_specific("mobs:dungeon_master", {"default:stone", "default:sandstone", "nether:netherrack"}, {"air"}, -1, 20, 30, 7000, 1, -31000, -250) +mobs:spawn_specific("mobs:dungeon_master", {"default:stone", "default:sandstone", "nether:netherrack"}, {"air"}, -1, 20, 30, 7000, 1, -31000, -250, false) -- register spawn egg mobs:register_egg("mobs:dungeon_master", "Dungeon Master", "fire_basic_flame.png", 1) diff --git a/mods/mobs/goat.lua b/mods/mobs/goat.lua index 0bb33fa7..626aa68e 100755 --- a/mods/mobs/goat.lua +++ b/mods/mobs/goat.lua @@ -61,6 +61,6 @@ mobs:register_mob("mobs:goat", { replace_with = "air", }) -- spawn on dirt_with_grass between -1 and 20 light, 1 in 20000 chance, 1 goat in area up to 31000 in height -mobs:spawn_specific("mobs:goat", {"default:dirt_with_grass"}, {"air"}, -1, 20, 30, 10000, 1, -31000, 31000) +mobs:spawn_specific("mobs:goat", {"default:dirt_with_grass"}, {"air"}, -1, 20, 30, 10000, 1, -31000, 31000, true) -- register spawn egg mobs:register_egg("mobs:goat", "Goat", "default_grass.png", 1) diff --git a/mods/mobs/greenslimes.lua b/mods/mobs/greenslimes.lua index 82f7d41f..545df6b0 100755 --- a/mods/mobs/greenslimes.lua +++ b/mods/mobs/greenslimes.lua @@ -158,8 +158,8 @@ mobs:register_mob("mobs:greenbig", { mobs:register_egg("mobs:greenbig", "Big Green Slime", "mobs_green_slime_egg.png", 1) --mobs:spawn_specific(name, nodes, neighbors, min_light, max_light, interval, chance, active_object_count, min_height, max_height) -mobs:spawn_specific("mobs:greenbig", {"default:acid_source"},{"default:acid_flowing"}, -1, 20, 30, 4000, 1, -32000, 32000) -mobs:spawn_specific("mobs:greenmedium", {"default:acid_source"},{"default:acid_flowing"},-1, 20, 30, 4000, 2, -32000, 32000) +mobs:spawn_specific("mobs:greenbig", {"default:acid_source"},{"default:acid_flowing"}, -1, 20, 30, 4000, 1, -32000, 32000, false) +mobs:spawn_specific("mobs:greenmedium", {"default:acid_source"},{"default:acid_flowing"},-1, 20, 30, 4000, 2, -32000, 32000, false) --mobs:spawn_specific("mobs:greensmall", {"default:acid_source"},{"default:acid_flowing"},-1, 20, 30, 10000, 2, -32000, 32000) --mobs:register_spawn(name, nodes, max_light, min_light, chance, active_object_count, max_height) diff --git a/mods/mobs/kitten.lua b/mods/mobs/kitten.lua index 6f2de90a..2b75639d 100755 --- a/mods/mobs/kitten.lua +++ b/mods/mobs/kitten.lua @@ -79,5 +79,5 @@ mobs:register_mob("mobs:kitten", { mobs:capture_mob(self, clicker, 50, 50, 90, false, nil) end }) -mobs:spawn_specific("mobs:kitten", {"default:dirt_with_grass"}, {"air"}, 0, 20, 30, 10000, 1, -31000, 31000) +mobs:spawn_specific("mobs:kitten", {"default:dirt_with_grass"}, {"air"}, 0, 20, 30, 10000, 1, -31000, 31000, true) mobs:register_egg("mobs:kitten", "Kitten", "mobs_kitten_inv.png", 0) diff --git a/mods/mobs/lava_flan.lua b/mods/mobs/lava_flan.lua index ab773fdf..a7cd7cb4 100755 --- a/mods/mobs/lava_flan.lua +++ b/mods/mobs/lava_flan.lua @@ -56,7 +56,7 @@ mobs:register_mob("mobs:lava_flan", { end, }) -- spawns in lava between -1 and 20 light, 1 in 2000 chance, 3 in area below 31000 in height -mobs:spawn_specific("mobs:lava_flan", {"default:lava_source"}, {"air"}, -1, 20, 30, 2500, 3, -31000, 31000) +mobs:spawn_specific("mobs:lava_flan", {"default:lava_source"}, {"air"}, -1, 20, 30, 2500, 3, -31000, 31000, false) -- register spawn egg mobs:register_egg("mobs:lava_flan", "Lava Flan", "default_lava.png", 1) diff --git a/mods/mobs/lavaslimes.lua b/mods/mobs/lavaslimes.lua index c6383566..cbb6bf58 100755 --- a/mods/mobs/lavaslimes.lua +++ b/mods/mobs/lavaslimes.lua @@ -165,9 +165,9 @@ mobs:register_mob("mobs:lavabig", { mobs:register_egg("mobs:lavabig", "Big Lava Slime", "mobs_lava_slime_egg.png", 1) --mobs:spawn_specific(name, nodes, neighbors, min_light, max_light, interval, chance, active_object_count, min_height, max_height) -mobs:spawn_specific("mobs:lavabig", {"default:lava_source"},{"default:lava_flowing"}, -1, 20, 30, 4000, 1, -32000, 32000) -mobs:spawn_specific("mobs:lavamedium", {"default:lava_source"},{"default:lava_flowing"}, -1, 20, 30, 4000, 2, -32000, 32000) ---mobs:spawn_specific("mobs:lavasmall", {"default:lava_source"},{"default:lava_flowing"}, -1, 20, 30, 10s000, 2, -32000, 32000) +mobs:spawn_specific("mobs:lavabig", {"default:lava_source"},{"default:lava_flowing"}, -1, 20, 30, 4000, 1, -32000, 32000, false) +mobs:spawn_specific("mobs:lavamedium", {"default:lava_source"},{"default:lava_flowing"}, -1, 20, 30, 4000, 2, -32000, 32000, false) +--mobs:spawn_specific("mobs:lavasmall", {"default:lava_source"},{"default:lava_flowing"}, -1, 20, 30, 10s000, 2, -32000, 32000, false) -- lava orb minetest.register_craftitem("mobs:lava_orb", { diff --git a/mods/mobs/mese_monster.lua b/mods/mobs/mese_monster.lua index c00b718e..2e1516eb 100755 --- a/mods/mobs/mese_monster.lua +++ b/mods/mobs/mese_monster.lua @@ -62,7 +62,7 @@ mobs:register_mob("mobs:mese_monster", { }, }) -- spawn on stone between 20 and -1 light, 1 in 7000 chance, 1 in area below -25 -mobs:spawn_specific("mobs:mese_monster", {"default:stone", "default:sandstone"}, {"air"}, -1, 20, 30, 7000, 1, -31000, -125) +mobs:spawn_specific("mobs:mese_monster", {"default:stone", "default:sandstone"}, {"air"}, -1, 20, 30, 7000, 1, -31000, -125, false) -- register spawn egg mobs:register_egg("mobs:mese_monster", "Mese Monster", "default_mese_block.png", 1) diff --git a/mods/mobs/minotaur.lua b/mods/mobs/minotaur.lua index 00f3bee6..5d8698d9 100755 --- a/mods/mobs/minotaur.lua +++ b/mods/mobs/minotaur.lua @@ -60,7 +60,7 @@ mobs:register_mob("mobs:minotaur", { }, }) -- spawns on desert sand between -1 and 20 light, 1 in 20000 chance, 1 Minotaur in area up to 31000 in height -mobs:spawn_specific("mobs:minotaur", {"watershed:drygrass"}, {"air"}, -1, 20, 30, 100000, 1, -31000, 31000) +mobs:spawn_specific("mobs:minotaur", {"watershed:drygrass"}, {"air"}, -1, 20, 30, 100000, 1, -31000, 31000, false) -- register spawn egg mobs:register_egg("mobs:minotaur", "Minotaur", "default_desert_sand.png", 1) diff --git a/mods/mobs/npc.lua b/mods/mobs/npc.lua index b4aef7b2..4e9e6e5e 100755 --- a/mods/mobs/npc.lua +++ b/mods/mobs/npc.lua @@ -125,6 +125,6 @@ mobs:register_mob("mobs:npc", { end, }) -- spawning enable for now -mobs:spawn_specific("mobs:npc", {"default:dirt_with_grass", "default:dirt", "default:junglegrass", "default:sand"}, {"air"}, -1, 20, 30, 50000, 1, -31000, 31000) +mobs:spawn_specific("mobs:npc", {"default:dirt_with_grass", "default:dirt", "default:junglegrass", "default:sand"}, {"air"}, -1, 20, 30, 50000, 1, -31000, 31000, true) -- register spawn egg mobs:register_egg("mobs:npc", "Npc", "default_brick.png", 1) diff --git a/mods/mobs/oerkki.lua b/mods/mobs/oerkki.lua index 19d491b3..1b77c285 100755 --- a/mods/mobs/oerkki.lua +++ b/mods/mobs/oerkki.lua @@ -58,6 +58,6 @@ mobs:register_mob("mobs:oerkki", { replace_offset = -1, }) -- spawns on stone/sandstone between 5 and -1 light, 1 in 7000 chance, 1 in area starting at -10 and below -mobs:spawn_specific("mobs:oerkki", {"default:stone", "default:sandstone"}, {"air"}, -1, 5, 30, 7000, 1, -31000, -75) +mobs:spawn_specific("mobs:oerkki", {"default:stone", "default:sandstone"}, {"air"}, -1, 5, 30, 7000, 1, -31000, -75, false) -- register spawn egg mobs:register_egg("mobs:oerkki", "Oerkki", "default_obsidian.png", 1) diff --git a/mods/mobs/rat.lua b/mods/mobs/rat.lua index 35069c63..d50294e3 100755 --- a/mods/mobs/rat.lua +++ b/mods/mobs/rat.lua @@ -45,7 +45,7 @@ mobs:register_mob("mobs:rat", { ]] }) -- spawn on stone between 1 and 20 light, 1 in 7000 chance, 1 per area up to 31000 in height -mobs:spawn_specific("mobs:rat", {"default:stone", "default:sandstone"}, {"air"}, 0, 20, 30, 10000, 1, -31000, 31000) +mobs:spawn_specific("mobs:rat", {"default:stone", "default:sandstone"}, {"air"}, 0, 20, 30, 10000, 1, -31000, 31000, true) -- register spawn egg mobs:register_egg("mobs:rat", "Rat", "mobs_rat_inventory.png", 0) diff --git a/mods/mobs/sandmonster.lua b/mods/mobs/sandmonster.lua index 8d975ca7..b25ad3c4 100755 --- a/mods/mobs/sandmonster.lua +++ b/mods/mobs/sandmonster.lua @@ -52,6 +52,6 @@ mobs:register_mob("mobs:sand_monster", { }, }) -- spawns on desert sand between -1 and 20 light, 1 in 15000 chance, 1 sand monster in area up to 31000 in height -mobs:spawn_specific("mobs:sand_monster", {"default:desert_sand", "default:sand"}, {"air"}, -1, 20, 30, 20000, 1, -31000, 31000) +mobs:spawn_specific("mobs:sand_monster", {"default:desert_sand", "default:sand"}, {"air"}, -1, 20, 30, 20000, 1, -31000, 31000, false) -- register spawn egg mobs:register_egg("mobs:sand_monster", "Sand Monster", "default_desert_sand.png", 1) diff --git a/mods/mobs/sheep.lua b/mods/mobs/sheep.lua index 98e62065..a0b68c19 100755 --- a/mods/mobs/sheep.lua +++ b/mods/mobs/sheep.lua @@ -152,7 +152,7 @@ mobs:register_mob("mobs:sheep", { end, }) -- spawn on default;green grass between 20 and 8 light, 1 in 9000 chance, 1 sheep in area up to 31000 in height -mobs:spawn_specific("mobs:sheep", {"default:dirt_with_grass"}, {"air"}, 8, 20, 30, 10000, 1, -31000, 31000) +mobs:spawn_specific("mobs:sheep", {"default:dirt_with_grass"}, {"air"}, 8, 20, 30, 10000, 1, -31000, 31000, true) -- register spawn egg mobs:register_egg("mobs:sheep", "Sheep", "wool_white.png", 1) diff --git a/mods/mobs/spider.lua b/mods/mobs/spider.lua index 06581fcb..54c1e0ae 100755 --- a/mods/mobs/spider.lua +++ b/mods/mobs/spider.lua @@ -58,7 +58,7 @@ mobs:register_mob("mobs:spider", { }, }) -- spawn on jungleleaves/jungletree, between 0 and 5 light, 1 in 10000 chance, 1 in area up to 31000 in height -mobs:spawn_specific("mobs:spider", {"default:jungleleaves", "default:jungletree"}, {"air"}, -1, 20, 30, 7000, 1, -31000, 31000) +mobs:spawn_specific("mobs:spider", {"default:jungleleaves", "default:jungletree"}, {"air"}, -1, 20, 30, 7000, 1, -31000, 31000, false) -- register spawn egg mobs:register_egg("mobs:spider", "Spider", "mobs_cobweb.png", 1) diff --git a/mods/mobs/stonemonster.lua b/mods/mobs/stonemonster.lua index 9f8bf844..3955967b 100755 --- a/mods/mobs/stonemonster.lua +++ b/mods/mobs/stonemonster.lua @@ -57,6 +57,6 @@ mobs:register_mob("mobs:stone_monster", { }, }) -- spawns on stone between -1 and 5 light, 1 in 7000 chance, 1 in area below -25 -mobs:spawn_specific("mobs:stone_monster", {"default:stone", "default:sandstone"}, {"air"}, -1, 5, 30, 7000, 1, -31000, -25) +mobs:spawn_specific("mobs:stone_monster", {"default:stone", "default:sandstone"}, {"air"}, -1, 5, 30, 7000, 1, -31000, -25, false) -- register spawn egg mobs:register_egg("mobs:stone_monster", "Stone Monster", "default_stone.png", 1) diff --git a/mods/mobs/treemonster.lua b/mods/mobs/treemonster.lua index fdb7fc28..9c68478d 100755 --- a/mods/mobs/treemonster.lua +++ b/mods/mobs/treemonster.lua @@ -58,7 +58,7 @@ mobs:register_mob("mobs:tree_monster", { }, }) -- spawn on leaves and beech_leaves, between 0 and 5 light, 1 in 8000 chance, 1 in area up to 31000 in height -mobs:spawn_specific("mobs:tree_monster", {"default:leaves", "moretrees:beech_leaves"}, {"air"}, 0, 5, 30, 8000, 1, -31000, 31000) +mobs:spawn_specific("mobs:tree_monster", {"default:leaves", "moretrees:beech_leaves"}, {"air"}, 0, 5, 30, 8000, 1, -31000, 31000, false) -- register spawn egg mobs:register_egg("mobs:tree_monster", "Tree Monster", "default_tree_top.png", 1) diff --git a/mods/mobs/warthog.lua b/mods/mobs/warthog.lua index aa4eabe1..1bf184ea 100755 --- a/mods/mobs/warthog.lua +++ b/mods/mobs/warthog.lua @@ -94,7 +94,7 @@ mobs:register_mob("mobs:pumba", { end, }) -- spawns on dirt or junglegrass, between 8 and 20 light, 1 in 10000 chance, 1 in area up to 31000 in height -mobs:spawn_specific("mobs:pumba", {"default:dirt", "default:junglegrass"}, {"air"}, 8, 20, 30, 10000, 1, -31000, 31000) +mobs:spawn_specific("mobs:pumba", {"default:dirt", "default:junglegrass"}, {"air"}, 8, 20, 30, 10000, 1, -31000, 31000, true) -- register spawn egg mobs:register_egg("mobs:pumba", "Warthog", "wool_pink.png", 1) diff --git a/mods/mobs/wolf.lua b/mods/mobs/wolf.lua index 642b321d..e2c5abd4 100755 --- a/mods/mobs/wolf.lua +++ b/mods/mobs/wolf.lua @@ -67,5 +67,5 @@ mobs:register_mob("mobs:wolf", { end end }) -mobs:spawn_specific("mobs:wolf", {"default:dirt_with_grass"}, {"air"}, -1, 3, 30, 10000, 1, -31000, 31000) +mobs:spawn_specific("mobs:wolf", {"default:dirt_with_grass"}, {"air"}, -1, 3, 30, 10000, 1, -31000, 31000, false) mobs:register_egg("mobs:wolf", "Wolf", "mobs_wolf_inv.png", 1) diff --git a/mods/mobs/yeti.lua b/mods/mobs/yeti.lua index 37ebb152..59fdd344 100755 --- a/mods/mobs/yeti.lua +++ b/mods/mobs/yeti.lua @@ -58,7 +58,7 @@ mobs:register_mob("mobs:yeti", { }, }) -- spawn on stone between 20 and -1 light, 1 in 7000 chance, 1 in area below 31000 -mobs:spawn_specific("mobs:yeti", {"default:dirt_with_snow", "default:snow", "default:snowblock"}, {"air"}, -1, 20, 30, 30000, 1, -31000, 31000) +mobs:spawn_specific("mobs:yeti", {"default:dirt_with_snow", "default:snow", "default:snowblock"}, {"air"}, -1, 20, 30, 30000, 1, -31000, 31000, false) -- register spawn egg mobs:register_egg("mobs:yeti", "Yeti", "default_snow.png", 1) diff --git a/mods/mobs/zombie.lua b/mods/mobs/zombie.lua index 4837a563..75d2dd31 100755 --- a/mods/mobs/zombie.lua +++ b/mods/mobs/zombie.lua @@ -59,7 +59,7 @@ mobs:register_mob("mobs:zombie", { }) -- spawn in nether forest between -1 and 5 light, 1 in 6000 change, 1 zombie in area up to 31000 in height -mobs:spawn_specific("mobs:zombie", {"nether:dirt_top"}, {"air"}, -1, 5, 30, 6600, 1, -31000, 31000) +mobs:spawn_specific("mobs:zombie", {"nether:dirt_top"}, {"air"}, -1, 5, 30, 6600, 1, -31000, 31000, false) -- register spawn egg mobs:register_egg("mobs:zombie", "Zombie", "mobs_zombie_head.png", 1) diff --git a/mods/throwing/dig_arrow.lua b/mods/throwing/dig_arrow.lua index adb4e6b2..af914501 100755 --- a/mods/throwing/dig_arrow.lua +++ b/mods/throwing/dig_arrow.lua @@ -55,12 +55,7 @@ THROWING_ARROW_ENTITY.on_step = function(self, dtime) damage_groups={fleshy=damage}, }, nil) self.object:remove() - local toughness = 0.9 - if math.random() < toughness then - minetest.add_item(self.lastpos, 'throwing:arrow_dig') - else - minetest.add_item(self.lastpos, 'default:stick') - end + minetest.add_item(self.lastpos, "throwing:arrow_dig") end end end @@ -68,18 +63,15 @@ THROWING_ARROW_ENTITY.on_step = function(self, dtime) if self.lastpos.x~=nil then if node.name ~= "air" then - self.object:remove() + if minetest.get_item_group(node.name, "unbreakable") == 0 and areas:canInteract(self.lastpos, self.player:get_player_name()) and node.diggable ~= false then minetest.set_node(pos, {name = "air"}) end - local toughness = 0.65 - if math.random() < toughness then - minetest.add_item(self.lastpos, 'default:pick_steel') - else - minetest.add_item(self.lastpos, 'default:stick') - end + minetest.add_item(self.lastpos, node.name) + minetest.add_item(self.lastpos, "throwing:arrow_dig") + self.object:remove() end end self.lastpos={x=pos.x, y=pos.y, z=pos.z} diff --git a/mods/throwing/functions.lua b/mods/throwing/functions.lua index e6d1c518..2fefc7ca 100755 --- a/mods/throwing/functions.lua +++ b/mods/throwing/functions.lua @@ -17,11 +17,13 @@ minetest.register_on_leaveplayer(function(player) end) function throwing_shoot_arrow (itemstack, player, stiffness, is_cross) + if not player then return end local arrow = itemstack:get_metadata() itemstack:set_metadata("") player:set_wielded_item(itemstack) local playerpos = player:getpos() local obj = minetest.add_entity({x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, arrow) + if not obj then return end local dir = player:get_look_dir() obj:setvelocity({x=dir.x*stiffness, y=dir.y*stiffness, z=dir.z*stiffness}) obj:setacceleration({x=dir.x*-3, y=-10, z=dir.z*-3}) @@ -44,6 +46,7 @@ function throwing_unload (itemstack, player, unloaded, wear) if not minetest.setting_getbool("creative_mode") then player:get_inventory():add_item("main", arrow[1]) end + break end end end diff --git a/mods/throwing/standard_arrows.lua b/mods/throwing/standard_arrows.lua index 72cb463a..e8dab2d4 100755 --- a/mods/throwing/standard_arrows.lua +++ b/mods/throwing/standard_arrows.lua @@ -51,7 +51,7 @@ function throwing_register_arrow_standard (kind, desc, eq, toughness, craft) if obj:get_luaentity() ~= nil then if obj:get_luaentity().name ~= "throwing:arrow_" .. kind .. "_entity" and obj:get_luaentity().name ~= "__builtin:item" then local speed = vector.length(self.object:getvelocity()) - local damage = ((speed + eq)^1.2)/10 + local damage = ((speed + eq)^1.2)/10 -- Modif MFF, damage tweakable here obj:punch(self.object, 1.0, { full_punch_interval=1.0, damage_groups={fleshy=damage}, diff --git a/mods/throwing/textures/throwing_bow_horn.png b/mods/throwing/textures/throwing_bow_minotaur_horn.png similarity index 100% rename from mods/throwing/textures/throwing_bow_horn.png rename to mods/throwing/textures/throwing_bow_minotaur_horn.png diff --git a/mods/throwing/textures/throwing_bow_horn_loaded.png b/mods/throwing/textures/throwing_bow_minotaur_horn_loaded.png similarity index 100% rename from mods/throwing/textures/throwing_bow_horn_loaded.png rename to mods/throwing/textures/throwing_bow_minotaur_horn_loaded.png diff --git a/mods/throwing/throwing.conf b/mods/throwing/throwing.conf index be9f40f5..f0bd5c3d 100755 --- a/mods/throwing/throwing.conf +++ b/mods/throwing/throwing.conf @@ -7,6 +7,7 @@ DISABLE_LONGBOW = false DISABLE_COMPOSITE_BOW = false DISABLE_STEEL_BOW = false DISABLE_ROYAL_BOW = false +DISABLE_MINOTAUR_HORN_BOW = false -- Crossbows DISABLE_CROSSBOW = false diff --git a/mods/throwing/tools.lua b/mods/throwing/tools.lua index 45e8f410..40ba0197 100755 --- a/mods/throwing/tools.lua +++ b/mods/throwing/tools.lua @@ -38,6 +38,24 @@ if not DISABLE_ROYAL_BOW then }) end +--function throwing_register_bow (name, desc, scale, stiffness, reload_time, toughness, is_cross, craft) +if not DISABLE_MINOTAUR_HORN_BOW then + throwing_register_bow ('bow_minotaur_horn', 'Minotaur Horn Bow', {x=1, y=1.5, z=0.5}, 30, 1, 1000, false, { + {'farming:string', 'mobs:minotaur_horn', 'mobs:minotaur_horn'}, + {'farming:string', '', 'moreores:mithril_ingot'}, + {'farming:string', 'mobs:minotaur_horn', 'mobs:minotaur_horn'}, + }) +end + +-- NOT YET CHOOSEN, material ? craft ? name ? +--[[if not DISABLE_xxx_BOW then + throwing_register_bow ('bow_xxx', 'xxx Bow', {x=1, y=1.5, z=0.5}, 35, 0.8, 1250, false, { + {'farming:string', 'group:wood', 'default:diamond'}, + {'farming:string', '', 'default:gold_ingot'}, + {'farming:string', 'group:wood', 'default:diamond'}, + }) +end--]] + if not DISABLE_CROSSBOW then throwing_register_bow ('crossbow', 'Crossbow', {x=1, y=1.3, z=0.5}, 28, 5, 80, true, { {'group:wood', 'farming:string', ''}, diff --git a/worlds/minetestforfun/news.txt b/worlds/minetestforfun/news.txt index f7b849b4..4b68c50f 100755 --- a/worlds/minetestforfun/news.txt +++ b/worlds/minetestforfun/news.txt @@ -1,19 +1,23 @@ News de FR - MinetestForFun (Survival - PVP - Hardcore) ---Bientôt--- -/!\ Nouveau mod pour les arcs, équilibré => 90% complété /!\ -/!\ Ajout des classes "Hunter" et "Warrior" qui ne vont plus tarder => 80% complété /!\ +/!\ Ajout des classes "Hunter" et "Warrior" qui ne vont plus tarder => 85% complété /!\ ---Informations--- Venez visiter notre nouveau site "minetestforfun.com" ! (nouveaux logos/bannières) Pour mieux comprendre ce qui est arrivé récemment au serveur nous vous invitons à lire le dernier article de la section "NEWS > Evénements" de notre site. ----20/07/2015--- (Remerciements : crabman77/crabman, Cyberpangolin, LeMagnesium/Mg, gravgun) +---??/07/2015--- (Remerciements : crabman77/crabman, Cyberpangolin, LeMagnesium/Mg, gravgun) +/!\ Activation du nouveau mod "throwing" en BETA (à la place de l'ancien) /!\ +MAJ de "awards" (ajout d'un bouton d'accès à vos awards depuis l'inventaire) +MAJ de "3d_armor" (tous les boucliers ont une nouvelles texture en 32px) +Ajout du mod "automappercolors" (permet la génération automatique de toute les couleurs du mapper au démarrage du serveur) +Suppression du mod "dumpnodes" (devenu inutile, remplacé par "automappercolors") MAJ de "invtweak" (bugfix de la destruction aléatoire des outils quand vous les utilisez) MAJ de "homedecor_modpack/building_blocks" (suppression du "tar_knife" car totalement inutile) MAJ de "hud/hbhunger" (l'actualisation de la faim ce fait toute les secondes - auparavant toutes les 0.1 sec - ceci pour réduire la charge serveur, la régénération de vie est maintenant plus lente car les clases vont bientot arrivés et nous préparons l'équilibrage de celles-ci) MAJ de "track_player" (la position des joueurs est maintenant récupérée toute les 30 secondes) -MAJ de "mobs" (le taux de spawn du Minotaur a été divisé par 2, les monstres ne spawent plus dans les zones protégées, le Tree Monster gagne un légé taux de drop de "Super Apple" ce qui cet ennemi plus attractif, bugfix du knockback) +MAJ de "mobs" (le taux de spawn du Minotaur a été divisé par 2, les monstres ne spawent plus dans les zones protégées, le Tree Monster gagne un légé taux de drop de "Super Apple" ce qui cet ennemi plus attractif, bugfix du knockback, les objets Dungeon Master Blood et Diamond ce dropent maintenant plus facilement) ---18/07/2015--- (Remerciements : LeMagnesium/Mg, crabman77/crabman, gravgun, Ataron, paly2/Palige) MAJ de "track_player" (la position des joueurs est maintenant récupérée toute les 60secondes, celle-ci est utilisée pour l'actualisation du mapper, auparavant toutes les 1 secondes ce qui surchargeait inutilement le serveur)