forked from mrkubax10/industrialtest
Make it possible to make stripped trunks with chainsaw
This commit is contained in:
parent
90c9779bf0
commit
248bcd1af5
1
api.lua
1
api.lua
@ -29,7 +29,6 @@ industrialtest.api.hvPowerFlow=10200
|
|||||||
industrialtest.api.evPowerFlow=40800
|
industrialtest.api.evPowerFlow=40800
|
||||||
industrialtest.api.ivPowerFlow=163800
|
industrialtest.api.ivPowerFlow=163800
|
||||||
|
|
||||||
industrialtest.internal={}
|
|
||||||
industrialtest.internal.clamp=function(num,min,max)
|
industrialtest.internal.clamp=function(num,min,max)
|
||||||
return math.max(math.min(num,max),min)
|
return math.max(math.min(num,max),min)
|
||||||
end
|
end
|
||||||
|
@ -39,6 +39,39 @@ end
|
|||||||
|
|
||||||
industrialtest.elementKeys={}
|
industrialtest.elementKeys={}
|
||||||
|
|
||||||
|
industrialtest.internal={}
|
||||||
|
|
||||||
|
if industrialtest.mclAvailable then
|
||||||
|
industrialtest.internal.mclMakeStrippedTrunk=function(itemstack,placer,pointedThing,electricTool)
|
||||||
|
-- Taken from https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_tools/init.lua#L360
|
||||||
|
if pointedThing.type ~= "node" then return end
|
||||||
|
|
||||||
|
local node = minetest.get_node(pointedThing.under)
|
||||||
|
local noddef = minetest.registered_nodes[minetest.get_node(pointedThing.under).name]
|
||||||
|
|
||||||
|
if not placer:get_player_control().sneak and noddef.on_rightclick then
|
||||||
|
return minetest.item_place(itemstack, placer, pointedThing)
|
||||||
|
end
|
||||||
|
if minetest.is_protected(pointedThing.under, placer:get_player_name()) then
|
||||||
|
minetest.record_protection_violation(pointedThing.under, placer:get_player_name())
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
|
||||||
|
if noddef._mcl_stripped_variant == nil then
|
||||||
|
return itemstack
|
||||||
|
else
|
||||||
|
minetest.swap_node(pointedThing.under, {name=noddef._mcl_stripped_variant, param2=node.param2})
|
||||||
|
if not minetest.is_creative_enabled(placer:get_player_name()) or electricTool then
|
||||||
|
-- Add wear (as if digging a axey node)
|
||||||
|
local toolname = itemstack:get_name()
|
||||||
|
local wear = mcl_autogroup.get_wear(toolname, "axey")
|
||||||
|
itemstack:add_wear(wear)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- compatibilty that adds not existing elements
|
-- compatibilty that adds not existing elements
|
||||||
if industrialtest.mclAvailable then
|
if industrialtest.mclAvailable then
|
||||||
industrialtest.registerMetal=function(name,displayName,oreBlastResistance,oreHardness,rawBlockBlastResistance,rawBlockHardness,blockBlastResistance,blockHardness)
|
industrialtest.registerMetal=function(name,displayName,oreBlastResistance,oreHardness,rawBlockBlastResistance,rawBlockHardness,blockBlastResistance,blockHardness)
|
||||||
@ -217,34 +250,7 @@ if industrialtest.mclAvailable then
|
|||||||
max_level_drop=config.levelDrop,
|
max_level_drop=config.levelDrop,
|
||||||
damage_groups={fleshy=config.damage+3},
|
damage_groups={fleshy=config.damage+3},
|
||||||
},
|
},
|
||||||
on_place=function(itemstack,placer,pointedThing)
|
on_place=industrialtest.internal.mclMakeStrippedTrunk,
|
||||||
-- Taken from https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_tools/init.lua#L360
|
|
||||||
if pointedThing.type ~= "node" then return end
|
|
||||||
|
|
||||||
local node = minetest.get_node(pointedThing.under)
|
|
||||||
local noddef = minetest.registered_nodes[minetest.get_node(pointedThing.under).name]
|
|
||||||
|
|
||||||
if not placer:get_player_control().sneak and noddef.on_rightclick then
|
|
||||||
return minetest.item_place(itemstack, placer, pointedThing)
|
|
||||||
end
|
|
||||||
if minetest.is_protected(pointedThing.under, placer:get_player_name()) then
|
|
||||||
minetest.record_protection_violation(pointedThing.under, placer:get_player_name())
|
|
||||||
return itemstack
|
|
||||||
end
|
|
||||||
|
|
||||||
if noddef._mcl_stripped_variant == nil then
|
|
||||||
return itemstack
|
|
||||||
else
|
|
||||||
minetest.swap_node(pointedThing.under, {name=noddef._mcl_stripped_variant, param2=node.param2})
|
|
||||||
if not minetest.is_creative_enabled(placer:get_player_name()) then
|
|
||||||
-- Add wear (as if digging a axey node)
|
|
||||||
local toolname = itemstack:get_name()
|
|
||||||
local wear = mcl_autogroup.get_wear(toolname, "axey")
|
|
||||||
itemstack:add_wear(wear)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return itemstack
|
|
||||||
end,
|
|
||||||
sound={breaks="default_tool_breaks"},
|
sound={breaks="default_tool_breaks"},
|
||||||
_repair_material="industrialtest:"..material,
|
_repair_material="industrialtest:"..material,
|
||||||
_mcl_toollike_wield=true,
|
_mcl_toollike_wield=true,
|
||||||
|
11
tools.lua
11
tools.lua
@ -216,6 +216,17 @@ local function registerElectricChainsaw(config)
|
|||||||
definition.groups={
|
definition.groups={
|
||||||
dig_speed_class=config.digSpeedClass,
|
dig_speed_class=config.digSpeedClass,
|
||||||
}
|
}
|
||||||
|
definition.on_place=function(itemstack,user,pointed)
|
||||||
|
local meta=itemstack:get_meta()
|
||||||
|
if meta:get_int("industrialtest.powerAmount")>=20 then
|
||||||
|
local itemstackCopy=itemstack
|
||||||
|
if itemstack:get_wear()~=industrialtest.internal.mclMakeStrippedTrunk(itemstackCopy,user,pointed,true):get_wear() then
|
||||||
|
industrialtest.api.addPowerToItem(itemstack,-20)
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return nil
|
||||||
|
end
|
||||||
definition.after_use=function(itemstack)
|
definition.after_use=function(itemstack)
|
||||||
-- Hack to make sure that chainsaw won't be destroyed when has 0 EU in MCL
|
-- Hack to make sure that chainsaw won't be destroyed when has 0 EU in MCL
|
||||||
return nil
|
return nil
|
||||||
|
Loading…
Reference in New Issue
Block a user