mirror of
https://github.com/mt-mods/pipeworks.git
synced 2025-05-11 05:10:22 +02:00
mcl_furnaces compat
This commit is contained in:
parent
3b4c7b3fa7
commit
80dccc54e9
3
init.lua
3
init.lua
@ -185,6 +185,9 @@ end
|
|||||||
if pipeworks.enable_redefines and minetest.get_modpath("mcl_barrels") then
|
if pipeworks.enable_redefines and minetest.get_modpath("mcl_barrels") then
|
||||||
dofile(pipeworks.modpath.."/mcl-barrels.lua")
|
dofile(pipeworks.modpath.."/mcl-barrels.lua")
|
||||||
end
|
end
|
||||||
|
if pipeworks.enable_redefines and minetest.get_modpath("mcl_furnaces") then
|
||||||
|
dofile(pipeworks.modpath.."/mcl-furnaces.lua")
|
||||||
|
end
|
||||||
if pipeworks.enable_autocrafter then
|
if pipeworks.enable_autocrafter then
|
||||||
dofile(pipeworks.modpath.."/autocrafter.lua")
|
dofile(pipeworks.modpath.."/autocrafter.lua")
|
||||||
end
|
end
|
||||||
|
127
mcl-furnaces.lua
Normal file
127
mcl-furnaces.lua
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
|
||||||
|
local old_furnace = table.copy(minetest.registered_nodes["mcl_furnaces:furnace"])
|
||||||
|
local old_furnace_active = table.copy(minetest.registered_nodes["mcl_furnaces:furnace_active"])
|
||||||
|
|
||||||
|
local tube_entry = "^pipeworks_tube_connection_stony.png"
|
||||||
|
|
||||||
|
local groups = old_furnace.groups
|
||||||
|
groups["tubedevice"] = 1
|
||||||
|
groups["tubedevice_receiver"] = 1
|
||||||
|
local groups_active = table.copy(groups)
|
||||||
|
groups_active["not_in_creative_inventory"] = 1
|
||||||
|
|
||||||
|
-- a hack to give the exp to fake players it's be dropped instead added to (fake) player inv
|
||||||
|
local function give_xp(pos, player)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local dir = vector.divide(minetest.facedir_to_dir(minetest.get_node(pos).param2),-1.95)
|
||||||
|
local xp = meta:get_int("xp")
|
||||||
|
if xp > 0 then
|
||||||
|
mcl_experience.throw_xp(vector.add(pos, dir), xp)
|
||||||
|
meta:set_int("xp", 0)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local override = {
|
||||||
|
tiles = {
|
||||||
|
"default_furnace_top.png"..tube_entry,
|
||||||
|
"default_furnace_bottom.png"..tube_entry,
|
||||||
|
"default_furnace_side.png"..tube_entry,
|
||||||
|
"default_furnace_side.png"..tube_entry,
|
||||||
|
"default_furnace_side.png"..tube_entry,
|
||||||
|
"default_furnace_front.png"
|
||||||
|
},
|
||||||
|
groups = groups,
|
||||||
|
tube = {
|
||||||
|
insert_object = function(pos, node, stack, direction)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
local timer = minetest.get_node_timer(pos)
|
||||||
|
if not timer:is_started() then
|
||||||
|
timer:start(1.0)
|
||||||
|
end
|
||||||
|
if direction.y == 1 then
|
||||||
|
return inv:add_item("fuel", stack)
|
||||||
|
else
|
||||||
|
return inv:add_item("src", stack)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
can_insert = function(pos,node,stack,direction)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
if direction.y == 1 then
|
||||||
|
return inv:room_for_item("fuel", stack)
|
||||||
|
else
|
||||||
|
if meta:get_int("split_material_stacks") == 1 then
|
||||||
|
stack = stack:peek_item(1)
|
||||||
|
end
|
||||||
|
return inv:room_for_item("src", stack)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
input_inventory = "dst",
|
||||||
|
connect_sides = {left = 1, right = 1, back = 1, bottom = 1, top = 1}
|
||||||
|
},
|
||||||
|
after_place_node = function(pos, placer, itemstack, pointed_thing)
|
||||||
|
pipeworks.after_place(pos, placer, itemstack, pointed_thing)
|
||||||
|
end,
|
||||||
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
|
old_furnace.after_dig_node(pos, oldnode, oldmetadata, digger)
|
||||||
|
pipeworks.after_dig(pos)
|
||||||
|
end,
|
||||||
|
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||||
|
if listname == "dst" then
|
||||||
|
if stack:get_name() == "mcl_core:iron_ingot" then
|
||||||
|
awards.unlock(player:get_player_name(), "mcl:acquireIron")
|
||||||
|
elseif stack:get_name() == "mcl_fishing:fish_cooked" then
|
||||||
|
awards.unlock(player:get_player_name(), "mcl:cookFish")
|
||||||
|
end
|
||||||
|
give_xp(pos, player)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
on_rotate = pipeworks.on_rotate
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
local override_active = table.copy(override)
|
||||||
|
|
||||||
|
override_active.tiles = {
|
||||||
|
"default_furnace_top.png"..tube_entry,
|
||||||
|
"default_furnace_bottom.png"..tube_entry,
|
||||||
|
"default_furnace_side.png"..tube_entry,
|
||||||
|
"default_furnace_side.png"..tube_entry,
|
||||||
|
"default_furnace_side.png"..tube_entry,
|
||||||
|
"default_furnace_front_active.png",
|
||||||
|
}
|
||||||
|
|
||||||
|
override_active.groups = groups_active
|
||||||
|
|
||||||
|
override_active.tube = {
|
||||||
|
insert_object = function(pos,node,stack,direction)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
local timer = minetest.get_node_timer(pos)
|
||||||
|
if not timer:is_started() then
|
||||||
|
timer:start(1.0)
|
||||||
|
end
|
||||||
|
if direction.y == 1 then
|
||||||
|
return inv:add_item("fuel", stack)
|
||||||
|
else
|
||||||
|
return inv:add_item("src", stack)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
can_insert = function(pos, node, stack, direction)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
if direction.y == 1 then
|
||||||
|
return inv:room_for_item("fuel", stack)
|
||||||
|
else
|
||||||
|
return inv:room_for_item("src", stack)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
input_inventory = "dst",
|
||||||
|
connect_sides = {left = 1, right = 1, back = 1, bottom = 1, top = 1}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
-- override
|
||||||
|
minetest.override_item("mcl_furnaces:furnace", override)
|
||||||
|
minetest.override_item("mcl_furnaces:furnace_active", override_active)
|
2
mod.conf
2
mod.conf
@ -1,5 +1,5 @@
|
|||||||
name = pipeworks
|
name = pipeworks
|
||||||
description = This mod uses mesh nodes and nodeboxes to supply a complete set of 3D pipes and tubes, along with devices that work with them.
|
description = This mod uses mesh nodes and nodeboxes to supply a complete set of 3D pipes and tubes, along with devices that work with them.
|
||||||
depends = basic_materials
|
depends = basic_materials
|
||||||
optional_depends = mesecons, mesecons_mvps, digilines, signs_lib, unified_inventory, default, screwdriver, fl_mapgen, sound_api, i3, hades_core, hades_furnaces, hades_chests, mcl_mapgen_core
|
optional_depends = mesecons, mesecons_mvps, digilines, signs_lib, unified_inventory, default, screwdriver, fl_mapgen, sound_api, i3, hades_core, hades_furnaces, hades_chests, mcl_mapgen_core, mcl_experience
|
||||||
min_minetest_version = 5.4.0
|
min_minetest_version = 5.4.0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user