techage/iron_age/recipes.lua
2022-01-03 21:40:31 +01:00

238 lines
5.6 KiB
Lua

--[[
TechAge
=======
Copyright (C) 2019 Joachim Stolberg
AGPL v3
See LICENSE.txt for more information
Meltingpot recipes
Bucket redefinitions
]]--
local S = techage.S
--
-- New burner recipes
--
techage.ironage_register_recipe({
output = "default:obsidian",
recipe = {"default:cobble"},
heat = 10,
time = 8,
})
techage.ironage_register_recipe({
output = "techage:iron_ingot",
recipe = {"default:iron_lump"},
heat = 5,
time = 3,
})
minetest.register_craftitem("techage:iron_ingot", {
description = S("TA1 Iron Ingot"),
inventory_image = "techage_iron_ingot.png",
use_texture_alpha = techage.CLIP,
})
local function check_protection(pos, name, text)
if minetest.is_protected(pos, name) then
minetest.log("action", (name ~= "" and name or "A mod")
.. " tried to " .. text
.. " at protected position "
.. minetest.pos_to_string(pos)
.. " with a bucket")
minetest.record_protection_violation(pos, name)
return true
end
return false
end
-- derived from bucket/init.lua
local function register_liquid(source, flowing, itemname, inventory_image, name,
groups, force_renew)
bucket.liquids[source] = {
source = source,
flowing = flowing,
itemname = itemname,
force_renew = force_renew,
}
bucket.liquids[flowing] = bucket.liquids[source]
if itemname ~= nil then
minetest.unregister_item(itemname)
minetest.register_craftitem(":"..itemname, {
description = name,
inventory_image = inventory_image,
stack_max = 1,
liquids_pointable = true,
groups = groups,
on_place = function(itemstack, user, pointed_thing)
-- Must be pointing to node
if pointed_thing.type ~= "node" then
return
end
local node = minetest.get_node_or_nil(pointed_thing.under)
local ndef = node and minetest.registered_nodes[node.name]
-- Call on_rightclick if the pointed node defines it
if ndef and ndef.on_rightclick and
not (user and user:is_player() and
user:get_player_control().sneak) then
return ndef.on_rightclick(
pointed_thing.under,
node, user,
itemstack)
end
local lpos
-- Check if pointing to a buildable node
if ndef and ndef.buildable_to then
-- buildable; replace the node
lpos = pointed_thing.under
else
-- not buildable to; place the liquid above
-- check if the node above can be replaced
lpos = pointed_thing.above
node = minetest.get_node_or_nil(lpos)
local above_ndef = node and minetest.registered_nodes[node.name]
if not above_ndef or not above_ndef.buildable_to then
-- do not remove the bucket with the liquid
return itemstack
end
end
if check_protection(lpos, user
and user:get_player_name()
or "", "place "..source) then
return
end
-------------------------------- Start Modification
-- minetest.set_node(lpos, {name = source})
if source == "default:lava_source" and lpos.y > 0 and not minetest.is_singleplayer() then
minetest.chat_send_player(user:get_player_name(), S("[Bucket] Lava can only be placed below sea level!"))
return
else
-- see "basis/lib.lua" techage.is_ocean(pos)
minetest.set_node(lpos, {name = source, param2 = 1})
end
-------------------------------- End Modification
return ItemStack("bucket:bucket_empty")
end
})
end
end
--
-- Changed default recipes
--
if techage.modified_recipes_enabled then
minetest.clear_craft({output = "default:bronze_ingot"})
minetest.clear_craft({output = "default:steel_ingot"})
minetest.clear_craft({output = "fire:flint_and_steel"})
minetest.clear_craft({output = "bucket:bucket_empty"})
if minetest.global_exists("moreores") then
minetest.clear_craft({output = "moreores:silver_ingot"})
end
-- add again
minetest.register_craft({
output = 'default:steel_ingot 9',
recipe = {
{'default:steelblock'},
}
})
minetest.register_craft({
output = 'default:bronze_ingot 9',
recipe = {
{'default:bronzeblock'},
}
})
techage.ironage_register_recipe({
output = "default:bronze_ingot 4",
recipe = {"default:copper_ingot", "default:copper_ingot", "default:copper_ingot", "default:tin_ingot"},
heat = 4,
time = 8,
})
techage.ironage_register_recipe({
output = "default:steel_ingot 4",
recipe = {"default:coal_lump", "default:iron_lump", "default:iron_lump", "default:iron_lump"},
heat = 7,
time = 8,
})
techage.ironage_register_recipe({
output = "default:tin_ingot 1",
recipe = {"default:tin_lump"},
heat = 4,
time = 2,
})
if minetest.global_exists("moreores") then
techage.ironage_register_recipe({
output = "moreores:silver_ingot 1",
recipe = {"moreores:silver_lump"},
heat = 5,
time = 2,
})
end
minetest.register_craft({
output = "fire:flint_and_steel",
recipe = {
{"default:flint", "default:iron_lump"}
}
})
minetest.register_craft({
output = 'bucket:bucket_empty 2',
recipe = {
{'techage:iron_ingot', '', 'techage:iron_ingot'},
{'', 'techage:iron_ingot', ''},
}
})
minetest.override_item("fire:flint_and_steel", {
description = S("Flint and Iron"),
inventory_image = "fire_flint_steel.png^[colorize:#c7643d:60",
})
minetest.override_item("bucket:bucket_empty", {
inventory_image = "bucket.png^[colorize:#c7643d:40"
})
minetest.override_item("bucket:bucket_river_water", {
inventory_image = "bucket_river_water.png^[colorize:#c7643d:30"
})
register_liquid(
"default:water_source",
"default:water_flowing",
"bucket:bucket_water",
"bucket_water.png^[colorize:#c7643d:30",
"Water Bucket",
{water_bucket = 1}
)
register_liquid(
"default:lava_source",
"default:lava_flowing",
"bucket:bucket_lava",
"bucket_lava.png^[colorize:#c7643d:30",
"Lava Bucket"
)
end