Refactor electric drills

This commit is contained in:
mrkubax10 2025-04-14 14:48:42 +02:00
parent b108ce7c6a
commit 9cb5748b73
4 changed files with 68 additions and 131 deletions

View File

Before

Width:  |  Height:  |  Size: 302 B

After

Width:  |  Height:  |  Size: 302 B

View File

@ -78,28 +78,36 @@ end
function industrialtest.ActivatedElectricTool.defineToolCapabilities(self,def,times,digSpeed) function industrialtest.ActivatedElectricTool.defineToolCapabilities(self,def,times,digSpeed)
if industrialtest.mtgAvailable then if industrialtest.mtgAvailable then
if self.digs then if self.digs then
def.tool_capabilities.groupcaps={ def.tool_capabilities.groupcaps={}
[self.digs]={ for _,digType in ipairs(self.digs) do
def.tool_capabilities.groupcaps[digType]={
times=times, times=times,
maxlevel=self.digLevel maxlevel=self.digLevel+1
} }
} if digType=="choppy" then
if self.digs=="choppy" then
def.groups.axe=1 def.groups.axe=1
elseif digType=="cracky" then
def.groups.pickaxe=1
elseif digType=="crumbly" then
def.groups.shovel=1
end
end end
end end
elseif industrialtest.mclAvailable then elseif industrialtest.mclAvailable then
local digTypeMapping={ local digTypeMapping={
choppy="axey" choppy="axey",
cracky="pickaxey",
crumbly="shovely"
} }
def.groups.dig_speed_class=self.digSpeedClass def.groups.dig_speed_class=self.digSpeedClass
def._mcl_diggroups={ def._mcl_diggroups={}
[digTypeMapping[self.digs]]={ for _,digType in ipairs(self.digs) do
def._mcl_diggroups[digTypeMapping[digType]]={
speed=digSpeed, speed=digSpeed,
level=self.digLevel+4, level=5-self.digLevel,
uses=-1 uses=-1
} }
} end
end end
end end

View File

@ -17,7 +17,7 @@
local S=minetest.get_translator("industrialtest") local S=minetest.get_translator("industrialtest")
industrialtest.ElectricChainsawBase=table.copy(industrialtest.ActivatedElectricTool) industrialtest.ElectricChainsawBase=table.copy(industrialtest.ActivatedElectricTool)
industrialtest.internal.unpackTableInto(industrialtest.ElectricChainsawBase,{ industrialtest.internal.unpackTableInto(industrialtest.ElectricChainsawBase,{
digs="choppy" digs={"choppy"}
}) })
function industrialtest.ElectricChainsawBase.use(self,itemstack,user,pointed) function industrialtest.ElectricChainsawBase.use(self,itemstack,user,pointed)
@ -40,7 +40,7 @@ industrialtest.internal.unpackTableInto(industrialtest.ElectricChainsaw,{
inventoryImage="industrialtest_electric_chainsaw.png", inventoryImage="industrialtest_electric_chainsaw.png",
capacity=10000, capacity=10000,
flow=industrialtest.api.lvPowerFlow, flow=industrialtest.api.lvPowerFlow,
digLevel=1, digLevel=0,
digSpeedClass=4, digSpeedClass=4,
digSpeed=1, digSpeed=1,
active={ active={
@ -68,7 +68,7 @@ industrialtest.internal.unpackTableInto(industrialtest.AdvancedElectricChainsaw,
inventoryImage="industrialtest_advanced_electric_chainsaw.png", inventoryImage="industrialtest_advanced_electric_chainsaw.png",
capacity=10000, capacity=10000,
flow=industrialtest.api.lvPowerFlow, flow=industrialtest.api.lvPowerFlow,
digLevel=1, digLevel=0,
digSpeedClass=5, digSpeedClass=5,
digSpeed=1, digSpeed=1,
active={ active={

View File

@ -15,107 +15,35 @@
-- along with this program. If not, see <http://www.gnu.org/licenses/>. -- along with this program. If not, see <http://www.gnu.org/licenses/>.
local S=minetest.get_translator("industrialtest") local S=minetest.get_translator("industrialtest")
industrialtest.ElectricDrillBase=table.copy(industrialtest.ActivatedElectricTool)
industrialtest.internal.unpackTableInto(industrialtest.ElectricDrillBase,{
digs={
"cracky",
"crumbly"
}
})
local electricDrill={} function industrialtest.ElectricDrillBase.getOpPower(self,itemstack)
return 50
electricDrill.afterUse=function(itemstack,config)
local meta=itemstack:get_meta()
industrialtest.api.addPowerToItem(itemstack,-20)
if meta:get_int("industrialtest.powerAmount")<20 then
itemstack:set_name("industrialtest:"..config.name)
end
return itemstack
end end
local function registerElectricDrill(config) industrialtest.ElectricDrill=table.copy(industrialtest.ElectricDrillBase)
local definition={ industrialtest.internal.unpackTableInto(industrialtest.ElectricDrill,{
description=config.displayName, name="industrialtest:electric_drill",
inventory_image="industrialtest_"..config.name..".png", description=S("Electric Drill"),
after_use=function() inventoryImage="industrialtest_electric_drill.png",
-- Hack to make sure that drill won't be destroyed when has 0 EU capacity=30000,
return nil flow=industrialtest.api.lvPowerFlow,
end, digLevel=1,
_industrialtest_powerStorage=true, digSpeedClass=4,
_industrialtest_powerCapacity=10000, active={
_industrialtest_powerFlow=industrialtest.api.lvPowerFlow, times={[1]=1.7,[2]=1.2,[3]=1.0,[4]=0.7},
_industrialtest_inactiveName="industrialtest:"..config.name digSpeed=4
} }
if industrialtest.mtgAvailable then })
definition.tool_capabilities={
full_punch_interval=0.5, industrialtest.ElectricDrill:register()
max_drop_level=config.maxDropLevel,
groupcaps={
cracky={
times=config.inactiveTimes,
maxlevel=config.maxLevel
},
crumbly={
times=config.inactiveTimes,
maxlevel=config.maxLevel
}
}
}
definition.groups={
pickaxe=1,
shovel=1
}
elseif industrialtest.mclAvailable then
definition.tool_capabilities={
full_punch_interval=0.5,
max_drop_level=config.maxDropLevel
}
definition.groups={
tool=1,
dig_speed_class=config.digSpeedClass
}
definition._mcl_diggroups={
pickaxey={
speed=config.inactiveDigSpeed,
level=config.digLevel,
uses=-1
},
shovely={
speed=config.inactiveDigSpeed,
level=config.digLevel,
uses=-1
}
}
definition._mcl_toollike_wield=true
end
minetest.register_tool("industrialtest:"..config.name,definition)
definition=table.copy(definition)
if industrialtest.mtgAvailable then
definition.tool_capabilities.groupcaps.cracky.times=config.activeTimes
definition.tool_capabilities.groupcaps.crumbly.times=config.activeTimes
elseif industrialtest.mclAvailable then
definition._mcl_diggroups.pickaxey.speed=config.activeDigSpeed
definition._mcl_diggroups.shovely.speed=config.activeDigSpeed
end
definition.groups.not_in_creative_inventory=1
definition.after_use=function(itemstack)
return electricDrill.afterUse(itemstack,config)
end
minetest.register_tool("industrialtest:"..config.name.."_active",definition)
industrialtest.internal.registeredElectricDrills["industrialtest:"..config.name]=true
industrialtest.internal.registeredElectricDrills["industrialtest:"..config.name.."_active"]=true
end
local definition={
name="electric_drill",
displayName=S("Electric Drill")
}
if industrialtest.mtgAvailable then
definition.maxDropLevel=1
definition.inactiveTimes={[1]=10,[2]=5.6,[3]=4}
definition.maxLevel=2
definition.activeTimes={[1]=2.0,[2]=0.8,[3]=0.4}
elseif industrialtest.mclAvailable then
definition.digSpeedClass=4
definition.maxDropLevel=4
definition.inactiveDigSpeed=1
definition.digLevel=4
definition.activeDigSpeed=7
end
registerElectricDrill(definition)
minetest.register_craft({ minetest.register_craft({
type="shaped", type="shaped",
output="industrialtest:electric_drill", output="industrialtest:electric_drill",
@ -125,26 +53,27 @@ minetest.register_craft({
{"industrialtest:refined_iron_ingot","industrialtest:re_battery","industrialtest:refined_iron_ingot"} {"industrialtest:refined_iron_ingot","industrialtest:re_battery","industrialtest:refined_iron_ingot"}
} }
}) })
definition={
name="diamond_electric_drill", industrialtest.AdvancedElectricDrill=table.copy(industrialtest.ElectricDrillBase)
displayName=S("Diamond Electric Drill") industrialtest.internal.unpackTableInto(industrialtest.AdvancedElectricDrill,{
} name="industrialtest:advanced_electric_drill",
if industrialtest.mtgAvailable then description=S("Advanced Electric Drill"),
definition.maxDropLevel=1 inventoryImage="industrialtest_advanced_electric_drill.png",
definition.inactiveTimes={[1]=10,[2]=5.6,[3]=4} capacity=30000,
definition.maxLevel=3 flow=industrialtest.api.lvPowerFlow,
definition.activeTimes={[1]=2.0,[2]=0.8,[3]=0.4} digLevel=0,
elseif industrialtest.mclAvailable then digSpeedClass=5,
definition.digSpeedClass=5 active={
definition.maxDropLevel=5 times={[1]=1.0,[2]=0.7,[3]=0.3,[4]=0.1},
definition.inactiveDigSpeed=1 digSpeed=7
definition.digLevel=5 }
definition.activeDigSpeed=9 })
end
registerElectricDrill(definition) industrialtest.AdvancedElectricDrill:register()
minetest.register_craft({ minetest.register_craft({
type="shaped", type="shaped",
output="industrialtest:diamond_electric_drill", output="industrialtest:advanced_electric_drill",
recipe={ recipe={
{"",industrialtest.elementKeys.diamond,""}, {"",industrialtest.elementKeys.diamond,""},
{industrialtest.elementKeys.diamond,"industrialtest:electric_drill",industrialtest.elementKeys.diamond} {industrialtest.elementKeys.diamond,"industrialtest:electric_drill",industrialtest.elementKeys.diamond}