poikilos
3 years ago
10 changed files with 1315 additions and 0 deletions
@ -0,0 +1,124 @@ |
|||
-- Carp. Descended from Skandarella version. |
|||
|
|||
local spawnchance = codersea_chance_fish |
|||
if spawnchance < 300 then |
|||
spawnchance = 300 end |
|||
|
|||
local mobname = "codersea:carp" |
|||
|
|||
mobs:register_mob (mobname, { |
|||
stepheight = 0.0 , |
|||
type = "animal" , |
|||
passive = true , |
|||
attack_type = "dogfight" , |
|||
attack_animals = false , |
|||
reach = 1 , |
|||
damage = 1 , |
|||
hp_min = 5 , |
|||
hp_max = 25 , |
|||
armor = 100 , |
|||
visual = "mesh" , |
|||
sounds = {} , |
|||
walk_velocity = 2 , |
|||
run_velocity = 3 , |
|||
fly = true , |
|||
fall_speed = 0 , |
|||
runaway = true , |
|||
jump = false , |
|||
stepheight = 0.0 , |
|||
fear_height = 2 , |
|||
floats = 0 , |
|||
view_range = 10 , |
|||
|
|||
air_damage = 1 , |
|||
lava_damage = 4 , |
|||
light_damage = 0 , |
|||
water_damage = 0 , |
|||
|
|||
mesh = "codersea_carp.b3d" , |
|||
visual_size = { x=1.0, y=1.0 } , |
|||
textures = {{ "codersea_carp.png" }} , |
|||
|
|||
collisionbox = { -0.40, -0.01, -0.40, 0.40, 0.50, 0.40 } , |
|||
makes_footstep_sound = false , |
|||
|
|||
animation = { |
|||
speed_normal = 100, |
|||
stand_start = 0, |
|||
stand_end = 100, |
|||
walk_start = 150, |
|||
walk_end = 250, |
|||
fly_start = 150, -- swim animation |
|||
fly_end = 250, |
|||
punch_start = 100, |
|||
punch_end = 200, |
|||
-- 50-70 is slide/water idle |
|||
}, |
|||
|
|||
drops = { |
|||
{ name = "codersea:sushi", |
|||
chance = 1, min = 1, max = 1 } , |
|||
} , |
|||
|
|||
fly_in = { |
|||
"codersea:water_flowing" , |
|||
"codersea:water_source" , |
|||
"default:water_flowing" , |
|||
"default:water_source" , |
|||
"default:water_gel" , |
|||
"default:river_water_source" , |
|||
"default:river_water_flowing" , |
|||
} , |
|||
|
|||
follow = { |
|||
"ethereal:worm", "seaweed", "fishing:bait_worm", |
|||
"default:grass", "farming:cucumber", |
|||
"farming:cabbage", "animalworld:ant", |
|||
"animalworld:termite", "animalworld:fishfood" |
|||
}, |
|||
|
|||
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", |
|||
"animalworld:divingbeetle", |
|||
"animalworld:divingbeetle", |
|||
"animalworld:scorpion", |
|||
"animalworld:polarbear", |
|||
"animalworld:leopardseal", |
|||
"animalworld:stellerseagle", "player" |
|||
} , |
|||
|
|||
on_rightclick = function (self, clicker) |
|||
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, |
|||
5, 50, 80, false, nil) then |
|||
return |
|||
end |
|||
end , |
|||
}) |
|||
|
|||
-- =================================================================== |
|||
|
|||
mobs:spawn_specific (mobname , |
|||
codersea.default_spawn_nodes , |
|||
codersea.default_spawn_near , |
|||
5, 30, 30, spawnchance, codersea_aoc_fish, -31000, 0) |
|||
|
|||
mobs:register_egg (mobname , |
|||
"Carp", "egg_carp.png", 0) |
|||
|
|||
-- =================================================================== |
|||
-- End of file. |
@ -0,0 +1,141 @@ |
|||
-- Lobster. Descended from Skandarella version. |
|||
|
|||
local spawnchance = codersea_chance_lobster |
|||
if spawnchance < 300 then |
|||
spawnchance = 300 end |
|||
|
|||
local mobname = "codersea:lobster" |
|||
|
|||
mobs:register_mob (mobname, { |
|||
type = "animal" , |
|||
armor = 100 , |
|||
attack_npcs = false , |
|||
attack_type = "dogfight" , |
|||
damage = 5 , |
|||
fear_height = 2 , |
|||
floats = 0 , |
|||
group_attack = true , |
|||
hp_max = 70 , |
|||
hp_min = 25 , |
|||
jump = false , |
|||
jump_height = 3 , |
|||
owner_loyal = true , |
|||
passive = false , |
|||
pushable = true , |
|||
reach = 2 , |
|||
run_velocity = 1.0 , |
|||
runaway = true , |
|||
stepheight = 1 , |
|||
view_range = 10 , |
|||
walk_velocity = 0.5 , |
|||
|
|||
air_damage = 1 , |
|||
lava_damage = 5 , |
|||
light_damage = 0 , |
|||
water_damage = 0 , |
|||
|
|||
sounds = {} , |
|||
|
|||
collisionbox = { -0.6, -0.01, -0.6, 0.6, 0.5, 0.6 } , |
|||
visual = "mesh" , |
|||
mesh = "codersea_lobster.b3d" , |
|||
textures = {{ "codersea_lobster.png" }} , |
|||
|
|||
makes_footstep_sound = true, |
|||
|
|||
animation = { |
|||
speed_normal = 50, |
|||
stand_start = 0, |
|||
stand_end = 100, |
|||
walk_start = 100, |
|||
walk_end = 200, |
|||
punch_start = 200, |
|||
punch_end = 300, |
|||
|
|||
die_start = 1, -- we dont have a specific death animation so we will |
|||
die_end = 2, -- re-use 2 standing frames at a speed of 1 fps and |
|||
die_speed = 1, -- have mob rotate when dying. |
|||
die_loop = false, |
|||
die_rotate = 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" , |
|||
"animalworld:divingbeetle" , |
|||
"animalworld:scorpion" , |
|||
"animalworld:polarbear" , |
|||
"animalworld:leopardseal" , |
|||
"animalworld:stellerseagle" , |
|||
"player" |
|||
} , |
|||
|
|||
follow = { |
|||
"animalworld:rawfish" , |
|||
"mobs_fish:tropical" , |
|||
"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" , |
|||
"water_life:meat_raw" , |
|||
"fishing:shark_raw" , |
|||
"fishing:pike_raw" , |
|||
} , |
|||
|
|||
drops = { |
|||
} , |
|||
|
|||
fly_in = { |
|||
"codersea:water_flowing" , |
|||
"codersea:water_source" , |
|||
"default:water_flowing" , |
|||
"default:water_source" , |
|||
"default:water_gel" , |
|||
"default:river_water_source" , |
|||
"default:river_water_flowing" , |
|||
} , |
|||
|
|||
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, 50, false, nil) then |
|||
return |
|||
end |
|||
end , |
|||
}) |
|||
|
|||
-- =================================================================== |
|||
|
|||
mobs:spawn_specific (mobname , |
|||
codersea.default_spawn_nodes , |
|||
codersea.default_spawn_near , |
|||
0, 30, 30, spawnchance, codersea_aoc_lobster, -31000, 0) |
|||
|
|||
mobs:register_egg (mobname , |
|||
"Lobster", "egg_lobster.png", 0) |
|||
|
|||
-- =================================================================== |
|||
-- End of file. |
@ -0,0 +1,110 @@ |
|||
local spawnchance = codersea_chance_seahorse |
|||
if spawnchance < 300 then |
|||
spawnchance = 300 end |
|||
|
|||
local mobname = "codersea:seahorse" |
|||
local v_scale = 0.6 |
|||
|
|||
mobs:register_mob (mobname, { |
|||
stepheight = 0.0, |
|||
type = "animal", |
|||
passive = true, |
|||
attack_type = "dogfight", |
|||
attack_animals = false, |
|||
reach = 1, |
|||
damage = 0, |
|||
hp_min = 5, |
|||
hp_max = 5, |
|||
armor = 100, |
|||
|
|||
collisionbox = { |
|||
-0.10 * v_scale , |
|||
-0.01 , |
|||
-0.10 * v_scale , |
|||
0.10 * v_scale , |
|||
0.60 * v_scale , |
|||
0.10 * v_scale , |
|||
} , |
|||
visual = "mesh", |
|||
mesh = "codersea_seahorse.b3d", |
|||
visual_size = {x = v_scale, y = v_scale }, |
|||
textures = { |
|||
{"codersea_seahorse1.png"}, |
|||
{"codersea_seahorse2.png"}, |
|||
}, |
|||
sounds = {}, |
|||
makes_footstep_sound = false, |
|||
walk_velocity = 0.25 , |
|||
run_velocity = 0.50 , |
|||
fly = true, |
|||
|
|||
fly_in = { |
|||
"codersea:water_flowing" , |
|||
"codersea:water_source" , |
|||
"default:water_flowing" , |
|||
"default:water_source" , |
|||
"default:water_gel" , |
|||
"default:river_water_source" , |
|||
"default:river_water_flowing" , |
|||
} , |
|||
|
|||
fall_speed = 0, |
|||
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", "animalworld:divingbeetle", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "player"}, |
|||
jump = false, |
|||
stepheight = 0.0, |
|||
drops = { |
|||
}, |
|||
water_damage = 0, |
|||
air_damage = 1, |
|||
lava_damage = 4, |
|||
light_damage = 0, |
|||
fear_height = 2, |
|||
|
|||
animation = { |
|||
speed_normal = 50, |
|||
stand_start = 0, |
|||
stand_end = 100, |
|||
stand2_start = 0, |
|||
stand2_end = 1, |
|||
walk_start = 100, |
|||
walk_end = 200, |
|||
walk_speed = 30, |
|||
fly_speed = 30, |
|||
fly_start = 100, -- swim animation |
|||
fly_end = 200, |
|||
-- 50-70 is slide/water idle |
|||
}, |
|||
|
|||
fly_in = {"default:water_source", "default:river_water_source", "default:water_flowing", "default:river_water_flowing"}, |
|||
floats = 0, |
|||
follow = { |
|||
"animalworld:fishfood" -- @@@ |
|||
}, |
|||
view_range = 5, |
|||
|
|||
on_rightclick = function (self, clicker) |
|||
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, |
|||
5, 50, 80, false, nil) then |
|||
return |
|||
end |
|||
end , |
|||
}) |
|||
|
|||
-- =================================================================== |
|||
|
|||
mobs:spawn_specific (mobname , |
|||
codersea.default_spawn_nodes , |
|||
codersea.default_spawn_near , |
|||
0, 30, 30, spawnchance, codersea_aoc_seahorse, -31000, 0) |
|||
|
|||
mobs:register_egg (mobname , |
|||
"Seahorse", "egg_seahorse.png", 0) |
|||
|
|||
-- =================================================================== |
|||
-- End of file. |
@ -0,0 +1,104 @@ |
|||
-- Trout. Descended from Skandarella version. |
|||
|
|||
local spawnchance = codersea_chance_fish |
|||
if spawnchance < 300 then |
|||
spawnchance = 300 end |
|||
|
|||
local mobname = "codersea:trout" |
|||
|
|||
mobs:register_mob (mobname, { |
|||
type = "animal" , |
|||
armor = 100 , |
|||
attack_type = "dogfight" , |
|||
attack_animals = false , |
|||
damage = 1 , |
|||
hp_max = 25 , |
|||
hp_min = 5 , |
|||
passive = true , |
|||
reach = 1 , |
|||
run_velocity = 3 , |
|||
runaway = true , |
|||
view_range = 10 , |
|||
walk_velocity = 2 , |
|||
|
|||
stepheight = 0.0 , |
|||
fly = true , |
|||
sounds = {} , |
|||
visual = "mesh" , |
|||
fall_speed = 0 , |
|||
jump = false , |
|||
fear_height = 2 , |
|||
floats = 0 , |
|||
|
|||
air_damage = 1 , |
|||
lava_damage = 4 , |
|||
light_damage = 0 , |
|||
water_damage = 0 , |
|||
|
|||
collisionbox = { -0.4, -0.01, -0.4, 0.4, 0.4, 0.4 } , |
|||
mesh = "codersea_trout.b3d", |
|||
visual_size = { x=1.0, y=1.0 } , |
|||
textures = {{ "codersea_trout.png" }} , |
|||
makes_footstep_sound = false, |
|||
|
|||
fly_in = { |
|||
"codersea:water_flowing" , |
|||
"codersea:water_source" , |
|||
"default:water_flowing" , |
|||
"default:water_source" , |
|||
"default:water_gel" , |
|||
"default:river_water_source" , |
|||
"default:river_water_flowing" , |
|||
} , |
|||
|
|||
runaway_from = {"codermobs:bear", "codersea:crocodile", "codermobs: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", "codermobs:tyrannosaurus", "codermobs:velociraptor", "codermobs:divingbeetle", "codermobs:scorpion", "codermobs:polarbear", "codermobs:leopardseal", "codermobs:stellerseagle", "player"}, |
|||
|
|||
drops = { |
|||
{ name = "codersea:sushi", chance = 1, min = 1, max = 1 } , |
|||
} , |
|||
|
|||
animation = { |
|||
speed_normal = 125, |
|||
stand_start = 0, |
|||
stand_end = 100, |
|||
walk_start = 150, |
|||
walk_end = 250, |
|||
fly_start = 150 , -- swim animation |
|||
fly_end = 250, |
|||
punch_start = 100, |
|||
punch_end = 200, |
|||
-- 50-70 is slide/water idle |
|||
}, |
|||
|
|||
fly_in = { |
|||
"default:water_source", "default:river_water_source", "default:water_flowing" |
|||
} , |
|||
|
|||
follow = { |
|||
"mobs:meat_raw", "codermobs:ant", "ethereal:worm", "fishing:bait_worm", "water_life:meat_raw", "xocean:fish_edible", "codermobs:fishfood" |
|||
}, |
|||
|
|||
on_rightclick = function (self, clicker) |
|||
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, |
|||
5, 50, 80, false, nil) then |
|||
return |
|||
end |
|||
end , |
|||
}) |
|||
|
|||
-- =================================================================== |
|||
|
|||
mobs:spawn_specific (mobname , |
|||
codersea.default_spawn_nodes , |
|||
codersea.default_spawn_near , |
|||
5, 30, 30, spawnchance, codersea_aoc_fish, -31000, 0) |
|||
|
|||
mobs:register_egg (mobname , |
|||
"Trout", "egg_trout.png", 0) |
|||
|
|||
-- =================================================================== |
|||
-- End of file. |
@ -0,0 +1,149 @@ |
|||
-- File: codersea/init.lua |
|||
-- Purpose: CoderSea "init.lua" (i.e., main) module |
|||
-- Credits: See "codersea.md" |
|||
-- Licenses: See "LICENSE" |
|||
|
|||
codersea = {} |
|||
codersea.modname = "codersea" |
|||
codersea.modpath = minetest.get_modpath (codersea.modname) |
|||
|
|||
local has_mobs = ocutil.mod_exists ("mobs") |
|||
local modpath = codersea.modpath |
|||
|
|||
local liteworld = |
|||
ocutil.bool_setting ("liteworld") |
|||
|
|||
-- "util.lua" and "settings.lua" should come first. |
|||
-- |
|||
dofile (modpath .. "/util.lua" ); |
|||
dofile (modpath .. "/settings.lua" ); |
|||
dofile (modpath .. "/tidyup.lua" ); |
|||
|
|||
if ocutil.model_missing (codersea.modname, |
|||
"codersea_turtle.x") then |
|||
codersea_disable_turtle = true |
|||
end |
|||
|
|||
if has_mobs then |
|||
ocutil.log ("codersea: has_mobs") |
|||
else |
|||
ocutil.log ("codersea: not has_mobs") |
|||
codersea_disable_urchin = true |
|||
codersea_disable_mobs = true |
|||
end |
|||
|
|||
if not codersea_disable_shine then |
|||
dofile (modpath .. "/seashine.lua" ); |
|||
end |
|||
|
|||
dofile (modpath .. "/seasprites.lua" ); |
|||
|
|||
if not codersea_reset then |
|||
dofile (modpath .. "/seaglass.lua"); |
|||
end |
|||
|
|||
if not codersea_disable_seastone then |
|||
dofile (modpath .. "/seacobble.lua" ); |
|||
dofile (modpath .. "/seagravel.lua" ); |
|||
dofile (modpath .. "/seastone.lua" ); |
|||
dofile (modpath .. "/seabrick.lua" ); |
|||
end |
|||
|
|||
-- Should come after seaglass and seastone mods |
|||
dofile (modpath .. "/seaplants.lua" ); |
|||
|
|||
if not codersea_disable_shipwrecks then |
|||
dofile (modpath .. "/shipwrecks.lua"); |
|||
end |
|||
|
|||
dofile (modpath .. "/legacy.lua" ); |
|||
|
|||
-- "fixwater.lua" should come after the other "codersea" modules ex- |
|||
-- cept for the "mobs" ones. |
|||
-- |
|||
dofile (modpath .. "/fixwater.lua" ); |
|||
|
|||
-- Future change: Perhaps use a clone-table utility function here. |
|||
|
|||
if not codersea_drowning then |
|||
local function overwrite_drowning (name) |
|||
local table = minetest.registered_nodes [name] |
|||
if table ~= nil then |
|||
local table2 = {} |
|||
for i,v in pairs (table) do table2 [i] = v end |
|||
table2.drowning = false |
|||
minetest.register_node (":" .. name, table2) |
|||
end |
|||
end |
|||
|
|||
overwrite_drowning ("default:water_source" ) |
|||
overwrite_drowning ("default:water_flowing" ) |
|||
overwrite_drowning ("default:water_gel" ) |
|||
overwrite_drowning ("default:lava_source" ) |
|||
overwrite_drowning ("default:lava_flowing" ) |
|||
end |
|||
|
|||
if not codersea_disable_mobs then |
|||
if not codersea_disable_fish then |
|||
dofile (modpath .. "/codersea-carp.lua" ) |
|||
dofile (modpath .. "/codersea-trout.lua" ) |
|||
dofile (modpath .. "/codersea-morefish.lua" ) |
|||
end |
|||
|
|||
if not codersea_disable_jellyfish then |
|||
dofile (modpath .. "/codersea-jellyfish.lua" ) |
|||
end |
|||
if not codersea_disable_lobster then |
|||
dofile (modpath .. "/codersea-lobster.lua" ) |
|||
end |
|||
if not codersea_disable_seahorse then |
|||
dofile (modpath .. "/codersea-seahorse.lua" ) |
|||
end |
|||
if not codersea_disable_shark then |
|||
dofile (modpath .. "/codersea-shark.lua" ) |
|||
end |
|||
if not codersea_disable_urchin then |
|||
dofile (modpath .. "/codersea-urchin.lua" ) |
|||
end |
|||
|
|||
if liteworld == false then |
|||
|
|||
-- if not codersea_disable_dolidro then |
|||
-- dofile (modpath .. "/codersea-dolidro.lua" ) |
|||
-- end |
|||
|
|||
-- if not codersea_disable_octopus then |
|||
-- dofile (modpath .. "/codersea-octopus.lua" ) |
|||
-- end |
|||
|
|||
if not codersea_disable_turtle then |
|||
dofile (modpath .. "/codersea-turtle.lua" ) |
|||
end |
|||
end |
|||
end |
|||
|
|||
-- =================================================================== |
|||
|
|||
minetest.register_craftitem ("codersea:cookedfish" , { |
|||
description = ( "Cooked Fish" ) , |
|||
inventory_image = "codersea_cookedfish.png" , |
|||
on_use = minetest.item_eat (5) , |
|||
groups = { |
|||
food_meat=1, flammable=2 |
|||
} , |
|||
}) |
|||
|
|||
minetest.register_craft ({ |
|||
type = "cooking" , |
|||
output = "codersea:cookedfish" , |
|||
recipe = "codersea:sushi" , |
|||
cooktime = 5 , |
|||
}) |
|||
|
|||
minetest.register_craftitem ("codersea:fishfood", { |
|||
description = ("Fish Food") , |
|||
inventory_image = "codersea_fishfood.png" , |
|||
}) |
|||
|
|||
-- =================================================================== |
|||
-- End of file. |
@ -0,0 +1,124 @@ |
|||
-- Carp. Descended from Skandarella version. |
|||
|
|||
local spawnchance = codersea_chance_fish |
|||
if spawnchance < 300 then |
|||
spawnchance = 300 end |
|||
|
|||
local mobname = "codersea:carp" |
|||
|
|||
mobs:register_mob (mobname, { |
|||
stepheight = 0.0 , |
|||
type = "animal" , |
|||
passive = true , |
|||
attack_type = "dogfight" , |
|||
attack_animals = false , |
|||
reach = 1 , |
|||
damage = 1 , |
|||
hp_min = 5 , |
|||
hp_max = 25 , |
|||
armor = 100 , |
|||
visual = "mesh" , |
|||
sounds = {} , |
|||
walk_velocity = 2 , |
|||
run_velocity = 3 , |
|||
fly = true , |
|||
fall_speed = 0 , |
|||
runaway = true , |
|||
jump = false , |
|||
stepheight = 0.0 , |
|||
fear_height = 2 , |
|||
floats = 0 , |
|||
view_range = 10 , |
|||
|
|||
air_damage = 1 , |
|||
lava_damage = 4 , |
|||
light_damage = 0 , |
|||
water_damage = 0 , |
|||
|
|||
mesh = "codersea_carp.b3d" , |
|||
visual_size = { x=1.0, y=1.0 } , |
|||
textures = codersea.multiply_texture("codersea_carp.png", 13), |
|||
|
|||
collisionbox = { -0.40, -0.01, -0.40, 0.40, 0.50, 0.40 } , |
|||
makes_footstep_sound = false , |
|||
|
|||
animation = { |
|||
speed_normal = 100, |
|||
stand_start = 0, |
|||
stand_end = 100, |
|||
walk_start = 150, |
|||
walk_end = 250, |
|||
fly_start = 150, -- swim animation |
|||
fly_end = 250, |
|||
punch_start = 100, |
|||
punch_end = 200, |
|||
-- 50-70 is slide/water idle |
|||
}, |
|||
|
|||
drops = { |
|||
{ name = "codersea:sushi", |
|||
chance = 1, min = 1, max = 1 } , |
|||
} , |
|||
|
|||
fly_in = { |
|||
"codersea:water_flowing" , |
|||
"codersea:water_source" , |
|||
"default:water_flowing" , |
|||
"default:water_source" , |
|||
"default:water_gel" , |
|||
"default:river_water_source" , |
|||
"default:river_water_flowing" , |
|||
} , |
|||
|
|||
follow = { |
|||
"ethereal:worm", "seaweed", "fishing:bait_worm", |
|||
"default:grass", "farming:cucumber", |
|||
"farming:cabbage", "animalworld:ant", |
|||
"animalworld:termite", "animalworld:fishfood" |
|||
}, |
|||
|
|||
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", |
|||
"animalworld:divingbeetle", |
|||
"animalworld:divingbeetle", |
|||
"animalworld:scorpion", |
|||
"animalworld:polarbear", |
|||
"animalworld:leopardseal", |
|||
"animalworld:stellerseagle", "player" |
|||
} , |
|||
|
|||
on_rightclick = function (self, clicker) |
|||
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, |
|||
5, 50, 80, false, nil) then |
|||
return |
|||
end |
|||
end , |
|||
}) |
|||
|
|||
-- =================================================================== |
|||
|
|||
mobs:spawn_specific (mobname , |
|||
codersea.default_spawn_nodes , |
|||
codersea.default_spawn_near , |
|||
5, 30, 30, spawnchance, codersea_aoc_fish, -31000, 0) |
|||
|
|||
mobs:register_egg (mobname , |
|||
"Carp", "egg_carp.png", 0) |
|||
|
|||
-- =================================================================== |
|||
-- End of file. |
@ -0,0 +1,141 @@ |
|||
-- Lobster. Descended from Skandarella version. |
|||
|
|||
local spawnchance = codersea_chance_lobster |
|||
if spawnchance < 300 then |
|||
spawnchance = 300 end |
|||
|
|||
local mobname = "codersea:lobster" |
|||
|
|||
mobs:register_mob (mobname, { |
|||
type = "animal" , |
|||
armor = 100 , |
|||
attack_npcs = false , |
|||
attack_type = "dogfight" , |
|||
damage = 5 , |
|||
fear_height = 2 , |
|||
floats = 0 , |
|||
group_attack = true , |
|||
hp_max = 70 , |
|||
hp_min = 25 , |
|||
jump = false , |
|||
jump_height = 3 , |
|||
owner_loyal = true , |
|||
passive = false , |
|||
pushable = true , |
|||
reach = 2 , |
|||
run_velocity = 1.0 , |
|||
runaway = true , |
|||
stepheight = 1 , |
|||
view_range = 10 , |
|||
walk_velocity = 0.5 , |
|||
|
|||
air_damage = 1 , |
|||
lava_damage = 5 , |
|||
light_damage = 0 , |
|||
water_damage = 0 , |
|||
|
|||
sounds = {} , |
|||
|
|||
collisionbox = { -0.6, -0.01, -0.6, 0.6, 0.5, 0.6 } , |
|||
visual = "mesh" , |
|||
mesh = "codersea_lobster.b3d" , |
|||
textures = codersea.multiply_texture("codersea_lobster.png", 27), |
|||
|
|||
makes_footstep_sound = true, |
|||
|
|||
animation = { |
|||
speed_normal = 50, |
|||
stand_start = 0, |
|||
stand_end = 100, |
|||
walk_start = 100, |
|||
walk_end = 200, |
|||
punch_start = 200, |
|||
punch_end = 300, |
|||
|
|||
die_start = 1, -- we dont have a specific death animation so we will |
|||
die_end = 2, -- re-use 2 standing frames at a speed of 1 fps and |
|||
die_speed = 1, -- have mob rotate when dying. |
|||
die_loop = false, |
|||
die_rotate = 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" , |
|||
"animalworld:divingbeetle" , |
|||
"animalworld:scorpion" , |
|||
"animalworld:polarbear" , |
|||
"animalworld:leopardseal" , |
|||
"animalworld:stellerseagle" , |
|||
"player" |
|||
} , |
|||
|
|||
follow = { |
|||
"animalworld:rawfish" , |
|||
"mobs_fish:tropical" , |
|||
"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" , |
|||
"water_life:meat_raw" , |
|||
"fishing:shark_raw" , |
|||
"fishing:pike_raw" , |
|||
} , |
|||
|
|||
drops = { |
|||
} , |
|||
|
|||
fly_in = { |
|||
"codersea:water_flowing" , |
|||
"codersea:water_source" , |
|||
"default:water_flowing" , |
|||
"default:water_source" , |
|||
"default:water_gel" , |
|||
"default:river_water_source" , |
|||
"default:river_water_flowing" , |
|||
} , |
|||
|
|||
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, 50, false, nil) then |
|||
return |
|||
end |
|||
end , |
|||
}) |
|||
|
|||
-- =================================================================== |
|||
|
|||
mobs:spawn_specific (mobname , |
|||
codersea.default_spawn_nodes , |
|||
codersea.default_spawn_near , |
|||
0, 30, 30, spawnchance, codersea_aoc_lobster, -31000, 0) |
|||
|
|||
mobs:register_egg (mobname , |
|||
"Lobster", "egg_lobster.png", 0) |
|||
|
|||
-- =================================================================== |
|||
-- End of file. |
@ -0,0 +1,110 @@ |
|||
local spawnchance = codersea_chance_seahorse |
|||
if spawnchance < 300 then |
|||
spawnchance = 300 end |
|||
|
|||
local mobname = "codersea:seahorse" |
|||
local v_scale = 0.6 |
|||
|
|||
mobs:register_mob (mobname, { |
|||
stepheight = 0.0, |
|||
type = "animal", |
|||
passive = true, |
|||
attack_type = "dogfight", |
|||
attack_animals = false, |
|||
reach = 1, |
|||
damage = 0, |
|||
hp_min = 5, |
|||
hp_max = 5, |
|||
armor = 100, |
|||
|
|||
collisionbox = { |
|||
-0.10 * v_scale , |
|||
-0.01 , |
|||
-0.10 * v_scale , |
|||
0.10 * v_scale , |
|||
0.60 * v_scale , |
|||
0.10 * v_scale , |
|||
} , |
|||
visual = "mesh", |
|||
mesh = "codersea_seahorse.b3d", |
|||
visual_size = {x = v_scale, y = v_scale }, |
|||
textures = codersea.multiply_texture({ |
|||
{"codersea_seahorse1.png"}, |
|||
{"codersea_seahorse2.png"}, |
|||
}, 13), |
|||
sounds = {}, |
|||
makes_footstep_sound = false, |
|||
walk_velocity = 0.25 , |
|||
run_velocity = 0.50 , |
|||
fly = true, |
|||
|
|||
fly_in = { |
|||
"codersea:water_flowing" , |
|||
"codersea:water_source" , |
|||
"default:water_flowing" , |
|||
"default:water_source" , |
|||
"default:water_gel" , |
|||
"default:river_water_source" , |
|||
"default:river_water_flowing" , |
|||
} , |
|||
|
|||
fall_speed = 0, |
|||
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", "animalworld:divingbeetle", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "player"}, |
|||
jump = false, |
|||
stepheight = 0.0, |
|||
drops = { |
|||
}, |
|||
water_damage = 0, |
|||
air_damage = 1, |
|||
lava_damage = 4, |
|||
light_damage = 0, |
|||
fear_height = 2, |
|||
|
|||
animation = { |
|||
speed_normal = 50, |
|||
stand_start = 0, |
|||
stand_end = 100, |
|||
stand2_start = 0, |
|||
stand2_end = 1, |
|||
walk_start = 100, |
|||
walk_end = 200, |
|||
walk_speed = 30, |
|||
fly_speed = 30, |
|||
fly_start = 100, -- swim animation |
|||
fly_end = 200, |
|||
-- 50-70 is slide/water idle |
|||
}, |
|||
|
|||
fly_in = {"default:water_source", "default:river_water_source", "default:water_flowing", "default:river_water_flowing"}, |
|||
floats = 0, |
|||
follow = { |
|||
"animalworld:fishfood" -- @@@ |
|||
}, |
|||
view_range = 5, |
|||
|
|||
on_rightclick = function (self, clicker) |
|||
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, |
|||
5, 50, 80, false, nil) then |
|||
return |
|||
end |
|||
end , |
|||
}) |
|||
|
|||
-- =================================================================== |
|||
|
|||
mobs:spawn_specific (mobname , |
|||
codersea.default_spawn_nodes , |
|||
codersea.default_spawn_near , |
|||
0, 30, 30, spawnchance, codersea_aoc_seahorse, -31000, 0) |
|||
|
|||
mobs:register_egg (mobname , |
|||
"Seahorse", "egg_seahorse.png", 0) |
|||
|
|||
-- =================================================================== |
|||
-- End of file. |
@ -0,0 +1,104 @@ |
|||
-- Trout. Descended from Skandarella version. |
|||
|
|||
local spawnchance = codersea_chance_fish |
|||
if spawnchance < 300 then |
|||
spawnchance = 300 end |
|||
|
|||
local mobname = "codersea:trout" |
|||
|
|||
mobs:register_mob (mobname, { |
|||
type = "animal" , |
|||
armor = 100 , |
|||
attack_type = "dogfight" , |
|||
attack_animals = false , |
|||
damage = 1 , |
|||
hp_max = 25 , |
|||
hp_min = 5 , |
|||
passive = true , |
|||
reach = 1 , |
|||
run_velocity = 3 , |
|||
runaway = true , |
|||
view_range = 10 , |
|||
walk_velocity = 2 , |
|||
|
|||
stepheight = 0.0 , |
|||
fly = true , |
|||
sounds = {} , |
|||
visual = "mesh" , |
|||
fall_speed = 0 , |
|||
jump = false , |
|||
fear_height = 2 , |
|||
floats = 0 , |
|||
|
|||
air_damage = 1 , |
|||
lava_damage = 4 , |
|||
light_damage = 0 , |
|||
water_damage = 0 , |
|||
|
|||
collisionbox = { -0.4, -0.01, -0.4, 0.4, 0.4, 0.4 } , |
|||
mesh = "codersea_trout.b3d", |
|||
visual_size = { x=1.0, y=1.0 } , |
|||
textures = codersea.multiply_texture("codersea_trout.png", 11), |
|||
makes_footstep_sound = false, |
|||
|
|||
fly_in = { |
|||
"codersea:water_flowing" , |
|||
"codersea:water_source" , |
|||
"default:water_flowing" , |
|||
"default:water_source" , |
|||
"default:water_gel" , |
|||
"default:river_water_source" , |
|||
"default:river_water_flowing" , |
|||
} , |
|||
|
|||
runaway_from = {"codermobs:bear", "codersea:crocodile", "codermobs: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", "codermobs:tyrannosaurus", "codermobs:velociraptor", "codermobs:divingbeetle", "codermobs:scorpion", "codermobs:polarbear", "codermobs:leopardseal", "codermobs:stellerseagle", "player"}, |
|||
|
|||
drops = { |
|||
{ name = "codersea:sushi", chance = 1, min = 1, max = 1 } , |
|||
} , |
|||
|
|||
animation = { |
|||
speed_normal = 125, |
|||
stand_start = 0, |
|||
stand_end = 100, |
|||
walk_start = 150, |
|||
walk_end = 250, |
|||
fly_start = 150 , -- swim animation |
|||
fly_end = 250, |
|||
punch_start = 100, |
|||
punch_end = 200, |
|||
-- 50-70 is slide/water idle |
|||
}, |
|||
|
|||
fly_in = { |
|||
"default:water_source", "default:river_water_source", "default:water_flowing" |
|||
} , |
|||
|
|||
follow = { |
|||
"mobs:meat_raw", "codermobs:ant", "ethereal:worm", "fishing:bait_worm", "water_life:meat_raw", "xocean:fish_edible", "codermobs:fishfood" |
|||
}, |
|||
|
|||
on_rightclick = function (self, clicker) |
|||
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, |
|||
5, 50, 80, false, nil) then |
|||
return |
|||
end |
|||
end , |
|||
}) |
|||
|
|||
-- =================================================================== |
|||
|
|||
mobs:spawn_specific (mobname , |
|||
codersea.default_spawn_nodes , |
|||
codersea.default_spawn_near , |
|||
5, 30, 30, spawnchance, codersea_aoc_fish, -31000, 0) |
|||
|
|||
mobs:register_egg (mobname , |
|||
"Trout", "egg_trout.png", 0) |
|||
|
|||
-- =================================================================== |
|||
-- End of file. |
@ -0,0 +1,208 @@ |
|||
-- File: codersea/init.lua |
|||
-- Purpose: CoderSea "init.lua" (i.e., main) module |
|||
-- Credits: See "codersea.md" |
|||
-- Licenses: See "LICENSE" |
|||
|
|||
codersea = {} |
|||
codersea.modname = "codersea" |
|||
codersea.modpath = minetest.get_modpath (codersea.modname) |
|||
|
|||
codersea.multiply_texture = function(texture, mesh_count) |
|||
-- by Poikilos |
|||
-- mesh_count -- This must be the # of meshes in model. |
|||
-- texture -- Provide a single texture or variants to use randomly. |
|||
-- |
|||
-- If texture is not a table, it will be assumed to be a |
|||
-- string, and table of length mesh_count will be returned so |
|||
-- you don't have to type something like: |
|||
-- { textures, textures, textures, ...} |
|||
-- (The same texture will be applied to multiple body parts.) |
|||
-- |
|||
-- If texture is a table, it will be assumed to be a list of |
|||
-- variants (for mobs that get a random texture), and a nested |
|||
-- table will be returned where each element is of length |
|||
-- mesh_count so you don't have to type something like |
|||
-- { |
|||
-- {texturemonkey.png, texturemonkey.png, texturemonkey.png, ...}, |
|||
-- {texturemonkey2.png, texturemonkey2.png, texturemonkey2.png, ...}, |
|||
-- {texturemonkey3.png, texturemonkey3.png, texturemonkey3.png, ...}, |
|||
-- } |
|||
-- (The same variant will be applied to multiple body |
|||
-- parts, but a variant is still selected at random by |
|||
-- register_mob.) |
|||
if not texture then |
|||
error("You must provide a texture string or table of variants.") |
|||
end |
|||
if not mesh_count then |
|||
error( |
|||
"You must provide a mesh_count" .. |
|||
" (The number of meshes in the model file)." .. |
|||
" See the traceback below for what file called" .. |
|||
" multiply_texture incorrectly." |
|||
) |
|||
end |
|||
local multi_mesh_texture = {} |
|||
if type(texture) == "table" then |
|||
-- It is a list-like table of variant texture filenames. |
|||
local texture_filename = nil |
|||
for variant_i = 1,#texture,1 do |
|||
multi_mesh_texture[variant_i] = {} |
|||
texture_filename = texture[variant_i] |
|||
if type(texture_filename) == "table" then |
|||
texture_filename = texture_filename[1] |
|||
-- ^ In case the mobs-style nested table was passed, |
|||
-- copy the single texture for each variant. |
|||
end |
|||
for multimesh_texture_i = 1,mesh_count,1 do |
|||
multi_mesh_texture[variant_i][multimesh_texture_i] = texture_filename |
|||
end |
|||
end |
|||
else |
|||
-- It is a single texture filename string. |
|||
for multimesh_texture_i = 1,mesh_count,1 do |
|||
multi_mesh_texture[multimesh_texture_i] = texture |
|||
end |
|||
end |
|||
return multi_mesh_texture |
|||
end |
|||
|
|||
local has_mobs = ocutil.mod_exists ("mobs") |
|||
local modpath = codersea.modpath |
|||
|
|||
local liteworld = |
|||
ocutil.bool_setting ("liteworld") |
|||
|
|||
-- "util.lua" and "settings.lua" should come first. |
|||
-- |
|||
dofile (modpath .. "/util.lua" ); |
|||
dofile (modpath .. "/settings.lua" ); |
|||
dofile (modpath .. "/tidyup.lua" ); |
|||
|
|||
if ocutil.model_missing (codersea.modname, |
|||
"codersea_turtle.x") then |
|||
codersea_disable_turtle = true |
|||
end |
|||
|
|||
if has_mobs then |
|||
ocutil.log ("codersea: has_mobs") |
|||
else |
|||
ocutil.log ("codersea: not has_mobs") |
|||
codersea_disable_urchin = true |
|||
codersea_disable_mobs = true |
|||
end |
|||
|
|||
if not codersea_disable_shine then |
|||
dofile (modpath .. "/seashine.lua" ); |
|||
end |
|||
|
|||
dofile (modpath .. "/seasprites.lua" ); |
|||
|
|||
if not codersea_reset then |
|||
dofile (modpath .. "/seaglass.lua"); |
|||
end |
|||
|
|||
if not codersea_disable_seastone then |
|||
dofile (modpath .. "/seacobble.lua" ); |
|||
dofile (modpath .. "/seagravel.lua" ); |
|||
dofile (modpath .. "/seastone.lua" ); |
|||
dofile (modpath .. "/seabrick.lua" ); |
|||
end |
|||
|
|||
-- Should come after seaglass and seastone mods |
|||
dofile (modpath .. "/seaplants.lua" ); |
|||
|
|||
if not codersea_disable_shipwrecks then |
|||
dofile (modpath .. "/shipwrecks.lua"); |
|||
end |
|||
|
|||
dofile (modpath .. "/legacy.lua" ); |
|||
|
|||
-- "fixwater.lua" should come after the other "codersea" modules ex- |
|||
-- cept for the "mobs" ones. |
|||
-- |
|||
dofile (modpath .. "/fixwater.lua" ); |
|||
|
|||
-- Future change: Perhaps use a clone-table utility function here. |
|||
|
|||
if not codersea_drowning then |
|||
local function overwrite_drowning (name) |
|||
local table = minetest.registered_nodes [name] |
|||
if table ~= nil then |
|||
local table2 = {} |
|||
for i,v in pairs (table) do table2 [i] = v end |
|||
table2.drowning = false |
|||
minetest.register_node (":" .. name, table2) |
|||
end |
|||
end |
|||
|
|||
overwrite_drowning ("default:water_source" ) |
|||
overwrite_drowning ("default:water_flowing" ) |
|||
overwrite_drowning ("default:water_gel" ) |
|||
overwrite_drowning ("default:lava_source" ) |
|||
overwrite_drowning ("default:lava_flowing" ) |
|||
end |
|||
|
|||
if not codersea_disable_mobs then |
|||
if not codersea_disable_fish then |
|||
dofile (modpath .. "/codersea-carp.lua" ) |
|||
dofile (modpath .. "/codersea-trout.lua" ) |
|||
dofile (modpath .. "/codersea-morefish.lua" ) |
|||
end |
|||
|
|||
if not codersea_disable_jellyfish then |
|||
dofile (modpath .. "/codersea-jellyfish.lua" ) |
|||
end |
|||
if not codersea_disable_lobster then |
|||
dofile (modpath .. "/codersea-lobster.lua" ) |
|||
end |
|||
if not codersea_disable_seahorse then |
|||
dofile (modpath .. "/codersea-seahorse.lua" ) |
|||
end |
|||
if not codersea_disable_shark then |
|||
dofile (modpath .. "/codersea-shark.lua" ) |
|||
end |
|||
if not codersea_disable_urchin then |
|||
dofile (modpath .. "/codersea-urchin.lua" ) |
|||
end |
|||
|
|||
if liteworld == false then |
|||
|
|||
-- if not codersea_disable_dolidro then |
|||
-- dofile (modpath .. "/codersea-dolidro.lua" ) |
|||
-- end |
|||
|
|||
-- if not codersea_disable_octopus then |
|||
-- dofile (modpath .. "/codersea-octopus.lua" ) |
|||
-- end |
|||
|
|||
if not codersea_disable_turtle then |
|||
dofile (modpath .. "/codersea-turtle.lua" ) |
|||
end |
|||
end |
|||
end |
|||
|
|||
-- =================================================================== |
|||
|
|||
minetest.register_craftitem ("codersea:cookedfish" , { |
|||
description = ( "Cooked Fish" ) , |
|||
inventory_image = "codersea_cookedfish.png" , |
|||
on_use = minetest.item_eat (5) , |
|||
groups = { |
|||
food_meat=1, flammable=2 |
|||
} , |
|||
}) |
|||
|
|||
minetest.register_craft ({ |
|||
type = "cooking" , |
|||
output = "codersea:cookedfish" , |
|||
recipe = "codersea:sushi" , |
|||
cooktime = 5 , |
|||
}) |
|||
|
|||
minetest.register_craftitem ("codersea:fishfood", { |
|||
description = ("Fish Food") , |
|||
inventory_image = "codersea_fishfood.png" , |
|||
}) |
|||
|
|||
-- =================================================================== |
|||
-- End of file. |
Loading…
Reference in new issue