forked from MineClone5/MineClone5
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
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Before Width: | Height: | Size: 296 B After Width: | Height: | Size: 296 B |
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 |
Loading…
Reference in New Issue