Merge pull request 'Buckets of Fish' (#335) from PrairieAstronomer/MineClone5:fish_bucket into master

Reviewed-on: MineClone5/MineClone5#335
This commit is contained in:
commit 6aef455fbc
10 changed files with 129 additions and 80 deletions

View File

@ -30,26 +30,26 @@ local S = minetest.get_translator("extra_mobs")
--################### --###################
local cod = { local cod = {
type = "animal", type = "animal",
spawn_class = "water", spawn_class = "water",
can_despawn = true, can_despawn = true,
passive = true, passive = true,
hp_min = 3, hp_min = 3,
hp_max = 3, hp_max = 3,
xp_min = 1, xp_min = 1,
xp_max = 3, xp_max = 3,
armor = 100, armor = 100,
rotate = 270, rotate = 270,
tilt_swim = true, tilt_swim = true,
collisionbox = {-0.3, 0.0, -0.3, 0.3, 0.79, 0.3}, collisionbox = {-0.3, 0.0, -0.3, 0.3, 0.79, 0.3},
visual = "mesh", visual = "mesh",
mesh = "extra_mobs_cod.b3d", mesh = "extra_mobs_cod.b3d",
textures = { textures = {
{"extra_mobs_cod.png"} {"extra_mobs_cod.png"}
}, },
sounds = { sounds = {
}, },
animation = { animation = {
stand_start = 1, stand_start = 1,
stand_end = 20, stand_end = 20,
walk_start = 1, walk_start = 1,
@ -57,45 +57,52 @@ local cod = {
run_start = 1, run_start = 1,
run_end = 20, run_end = 20,
}, },
drops = { drops = {
{name = "mcl_fishing:fish_raw", {name = "mcl_fishing:fish_raw",
chance = 1, chance = 1,
min = 1, min = 1,
max = 1,}, max = 1,},
{name = "mcl_dye:white", {name = "mcl_dye:white",
chance = 20, chance = 20,
min = 1, min = 1,
max = 1,}, max = 1,},
}, },
visual_size = {x=3, y=3}, visual_size = {x=3, y=3},
makes_footstep_sound = false, makes_footstep_sound = false,
swim = true, swim = true,
breathes_in_water = true, breathes_in_water = true,
jump = false, jump = false,
view_range = 16, view_range = 16,
runaway = true, runaway = true,
fear_height = 4, fear_height = 4,
do_custom = function(self) do_custom = function(self)
self.object:set_bone_position("body", vector.new(0,1,0), vector.new(degrees(dir_to_pitch(self.object:get_velocity())) * -1 + 90,0,0)) self.object:set_bone_position("body", vector.new(0,1,0), vector.new(degrees(dir_to_pitch(self.object:get_velocity())) * -1 + 90,0,0))
if minetest.get_item_group(self.standing_in, "water") ~= 0 then if minetest.get_item_group(self.standing_in, "water") ~= 0 then
if self.object:get_velocity().y < 2.5 then if self.object:get_velocity().y < 2.5 then
self.object:add_velocity({ x = 0 , y = math.random(-.002, .002) , z = 0 }) self.object:add_velocity({ x = 0 , y = math.random(-.002, .002) , z = 0 })
end end
end end
for _,object in pairs(minetest.get_objects_inside_radius(self.object:get_pos(), 10)) do for _,object in pairs(minetest.get_objects_inside_radius(self.object:get_pos(), 10)) do
local lp = object:get_pos() local lp = object:get_pos()
local s = self.object:get_pos() local s = self.object:get_pos()
local vec = { local vec = {
x = lp.x - s.x, x = lp.x - s.x,
y = lp.y - s.y, y = lp.y - s.y,
z = lp.z - s.z z = lp.z - s.z
} }
if object and not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "extra_mobs:cod" then if object and not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "extra_mobs:cod" then
self.state = "runaway" self.state = "runaway"
self.object:set_rotation({x=0,y=(atan(vec.z / vec.x) + 3 * pi / 2) - self.rotate,z=0}) self.object:set_rotation({x=0,y=(atan(vec.z / vec.x) + 3 * pi / 2) - self.rotate,z=0})
end end
end end
end end,
on_rightclick = function(self, clicker)
if clicker:get_wielded_item():get_name() == "mcl_buckets:bucket_water" then
self.object:remove()
clicker:set_wielded_item("mcl_fishing:bucket_cod")
awards.unlock(clicker:get_player_name(), "mcl:tacticalFishing")
end
end
} }
mobs:register_mob("extra_mobs:cod", cod) mobs:register_mob("extra_mobs:cod", cod)

View File

@ -10,26 +10,26 @@ local S = minetest.get_translator("extra_mobs")
--################### --###################
local salmon = { local salmon = {
type = "animal", type = "animal",
spawn_class = "water", spawn_class = "water",
can_despawn = true, can_despawn = true,
passive = true, passive = true,
hp_min = 3, hp_min = 3,
hp_max = 3, hp_max = 3,
xp_min = 1, xp_min = 1,
xp_max = 3, xp_max = 3,
armor = 100, armor = 100,
rotate = 270, rotate = 270,
tilt_swim = true, tilt_swim = true,
collisionbox = {-0.4, 0.0, -0.4, 0.4, 0.79, 0.4}, collisionbox = {-0.4, 0.0, -0.4, 0.4, 0.79, 0.4},
visual = "mesh", visual = "mesh",
mesh = "extra_mobs_salmon.b3d", mesh = "extra_mobs_salmon.b3d",
textures = { textures = {
{"extra_mobs_salmon.png"} {"extra_mobs_salmon.png"}
}, },
sounds = { sounds = {
}, },
animation = { animation = {
stand_start = 1, stand_start = 1,
stand_end = 20, stand_end = 20,
walk_start = 1, walk_start = 1,
@ -37,24 +37,31 @@ local salmon = {
run_start = 1, run_start = 1,
run_end = 20, run_end = 20,
}, },
drops = { drops = {
{name = "mcl_fishing:salmon_raw", {name = "mcl_fishing:salmon_raw",
chance = 1, chance = 1,
min = 1, min = 1,
max = 1,}, max = 1,},
{name = "mcl_dye:white", {name = "mcl_dye:white",
chance = 20, chance = 20,
min = 1, min = 1,
max = 1,}, max = 1,},
}, },
visual_size = {x=3, y=3}, visual_size = {x=3, y=3},
makes_footstep_sound = false, makes_footstep_sound = false,
swim = true, swim = true,
breathes_in_water = true, breathes_in_water = true,
jump = false, jump = false,
view_range = 16, view_range = 16,
runaway = true, runaway = true,
fear_height = 4, fear_height = 4,
on_rightclick = function(self, clicker)
if clicker:get_wielded_item():get_name() == "mcl_buckets:bucket_water" then
self.object:remove()
clicker:set_wielded_item("mcl_fishing:bucket_salmon")
awards.unlock(clicker:get_player_name(), "mcl:tacticalFishing")
end
end
} }
mobs:register_mob("extra_mobs:salmon", salmon) mobs:register_mob("extra_mobs:salmon", salmon)

View File

Before

Width:  |  Height:  |  Size: 296 B

After

Width:  |  Height:  |  Size: 296 B

View File

@ -253,6 +253,13 @@ awards.register_achievement("mcl:fishyBusiness", {
icon = "mcl_armor_inv_chestplate_netherite.png", icon = "mcl_armor_inv_chestplate_netherite.png",
})]]-- })]]--
-- Triggered in extra_mobs
awards.register_achievement("mcl:tacticalFishing", {
title = S("Tactical Fishing"),
description = S("Catch a fish... without a fishing rod!"),
icon = "pufferfish_bucket.png",
})
-- NON-PC ACHIEVEMENTS (XBox, Pocket Edition, etc.) -- NON-PC ACHIEVEMENTS (XBox, Pocket Edition, etc.)
if non_pc_achievements then if non_pc_achievements then

View File

@ -512,3 +512,25 @@ minetest.register_on_item_eat(function (hp_change, replace_with_item, itemstack,
end end
end ) end )
-- Fish Buckets
fish_names = {"cod", "salmon"}
for _, fish in ipairs(fish_names) do
mcl_buckets.register_liquid({
bucketname = "mcl_fishing:bucket_" .. fish,
source_place = function(pos)
minetest.add_entity(pos, "extra_mobs:" .. fish)
return "mcl_core:water_source"
end,
source_take = {"extra_mobs:" .. fish},
inventory_image = fish .. "_bucket.png",
name = S("Bucket of @1", S(fish)),
longdesc = S("This bucket is filled with water and @1.", S(fish)),
usagehelp = S("Place it to empty the bucket and place a @1. Obtain by right clicking on a @2 fish with a bucket of water.", S(fish), S(fish)),
tt_help = S("Places a water source and a @1 fish.", S(fish)),
extra_check = function(pos, placer)
return true, true
end,
})
end

View File

@ -16,3 +16,9 @@ Pufferfish=
Pufferfish are a common species of fish and can be obtained by fishing. They can technically be eaten, but they are very bad for humans. Eating a pufferfish only restores 1 hunger point and will poison you very badly (which drains your health non-fatally) and causes serious food poisoning (which increases your hunger).= Pufferfish are a common species of fish and can be obtained by fishing. They can technically be eaten, but they are very bad for humans. Eating a pufferfish only restores 1 hunger point and will poison you very badly (which drains your health non-fatally) and causes serious food poisoning (which increases your hunger).=
Catches fish in water= Catches fish in water=
Very poisonous= Very poisonous=
cod=
salmon=
Bucket of @1=
This bucket is filled with water and @1.=
Place it to empty the bucket and place a @1. Obtain by right clicking on a @2 fish with a bucket of water.=
Places a water source and a @1 fish.=

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB