238 lines
5.6 KiB
Lua
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
|