hoes can deal damage to mobs and players

This commit is contained in:
tenplus1 2024-08-25 10:46:50 +01:00
parent e2f12c8061
commit ebe1db179d
3 changed files with 82 additions and 59 deletions

View File

@ -217,7 +217,7 @@ on an older map are enabled and growing properly.
### Changelog:
- 1.49 - Added {eatable=1} groups to food items with the value giving HP when eaten, improved mineclone support, separated foods from crop files.
- 1.49 - Added {eatable=1} groups to food items with the value giving HP when eaten, improved mineclone support, separated foods from crop files., hoes can deal damage.
- 1.48 - added 'farming_use_utensils' setting to enable/disable utensils in recipes, added mayonnaise (thx felfa), added gingerbread man, Added MineClone2 compatibility
- 1.47 - Now blueberries can make blue dye, tweak soil types to work better with older 0.4.x clients and add spanish translation (thx mckaygerhard), add trellis setting to registered_crops and fix pea and soy crop names (thx nixnoxus), add strawberries if ethereal mod not active, added asparagus; spinach; eggplant (thx Atlante for new textures), Sugar Cube
- 1.46 - Added min/max default light settings, added lettuce and blackberries with food items (thanks OgelGames), added soya, vanilla and sunflowers (thanks Felfa), added tofu, added salt crystals (thanks gorlock)

View File

@ -28,6 +28,7 @@ farming.register_hoe = function(name, def)
inventory_image = def.inventory_image,
groups = def.groups,
sound = {breaks = "default_tool_breaks"},
damage_groups = def.damage_groups,
on_use = function(itemstack, user, pointed_thing)
return farming.hoe_on_use(itemstack, user, pointed_thing, def.max_uses)
@ -58,12 +59,11 @@ end
function farming.hoe_on_use(itemstack, user, pointed_thing, uses)
local pt = pointed_thing
local pt = pointed_thing or {}
local is_used = false
-- am I going to hoe the top of a dirt node?
if not pt or pt.type ~= "node" or pt.above.y ~= pt.under.y + 1 then
return
end
if pt.type == "node" and pt.above.y == pt.under.y + 1 then
local under = minetest.get_node(pt.under)
local upos = pointed_thing.under
@ -99,22 +99,38 @@ function farming.hoe_on_use(itemstack, user, pointed_thing, uses)
end
-- turn the node into soil, wear out item and play sound
minetest.set_node(pt.under, {name = ndef.soil.dry})
minetest.set_node(pt.under, {name = ndef.soil.dry}) ; is_used = true
minetest.sound_play("default_dig_crumbly", {pos = pt.under, gain = 0.5}, true)
end
local wdef = itemstack:get_definition()
local wear = 65535 / (uses - 1)
if farming.is_creative(user:get_player_name()) then
-- using hoe as weapon
if pt.type == "object" then
if mod_tr then
wear = 1
else
wear = 0
local ent = pt.ref and pt.ref:get_luaentity()
local dir = user:get_look_dir()
if (ent and ent.name ~= "__builtin:item"
and ent.name ~= "__builtin:falling_node") or pt.ref:is_player() then
pt.ref:punch(user, nil, {full_punch_interval = 1.0,
damage_groups = wdef.damage_groups}, dir)
is_used = true
end
end
-- only when used on soil top or external entity
if is_used then
-- cretive doesnt wear tools but toolranks registers uses with wear so set to 1
if farming.is_creative(user:get_player_name()) then
if mod_tr then wear = 1 else wear = 0 end
end
if mod_tr then
itemstack = toolranks.new_afteruse(itemstack, user, under, {wear = wear})
else
@ -124,6 +140,7 @@ function farming.hoe_on_use(itemstack, user, pointed_thing, uses)
if itemstack:get_count() == 0 and wdef.sound and wdef.sound.breaks then
minetest.sound_play(wdef.sound.breaks, {pos = pt.above, gain = 0.5}, true)
end
end
return itemstack
end
@ -134,7 +151,8 @@ farming.register_hoe(":farming:hoe_wood", {
description = S("Wooden Hoe"),
inventory_image = "farming_tool_woodhoe.png",
max_uses = 30,
material = "group:wood"
material = "group:wood",
damage_groups = {fleshy = 2}
})
minetest.register_craft({
@ -147,7 +165,8 @@ farming.register_hoe(":farming:hoe_stone", {
description = S("Stone Hoe"),
inventory_image = "farming_tool_stonehoe.png",
max_uses = 90,
material = "group:stone"
material = "group:stone",
damage_groups = {fleshy = 2}
})
farming.register_hoe(":farming:hoe_steel", {
@ -162,7 +181,8 @@ farming.register_hoe(":farming:hoe_bronze", {
inventory_image = "farming_tool_bronzehoe.png",
max_uses = 250,
groups = {not_in_creative_inventory = 1},
material = "default:bronze_ingot"
material = "default:bronze_ingot",
damage_groups = {fleshy = 3}
})
farming.register_hoe(":farming:hoe_mese", {
@ -170,13 +190,15 @@ farming.register_hoe(":farming:hoe_mese", {
inventory_image = "farming_tool_mesehoe.png",
max_uses = 350,
groups = {not_in_creative_inventory = 1},
damage_groups = {fleshy = 4}
})
farming.register_hoe(":farming:hoe_diamond", {
description = S("Diamond Hoe"),
inventory_image = "farming_tool_diamondhoe.png",
max_uses = 500,
groups = {not_in_creative_inventory = 1}
groups = {not_in_creative_inventory = 1},
damage_groups = {fleshy = 4}
})
-- Toolranks support

View File

@ -5,13 +5,14 @@
]]
-- Translation support
local S = minetest.get_translator("farming")
-- global
farming = {
mod = "redo",
version = "20240812",
version = "20240825",
path = minetest.get_modpath("farming"),
select = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}},
select_final = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -2.5/16, 0.5}},