I cant... to much stuff changed. I lost track. Everything is in chaos.
Schematics broke... please, help me.
This commit is contained in:
177
mods/ITEMS/pyutest_electricity/init.lua
Normal file
177
mods/ITEMS/pyutest_electricity/init.lua
Normal file
@@ -0,0 +1,177 @@
|
||||
PyuTest.ELECTRICITY_TICK = 0.02 -- Maybe this will prevent stack overflows?
|
||||
local function get_neighbours(pos)
|
||||
return {
|
||||
vector.new(pos.x + 1, pos.y, pos.z),
|
||||
vector.new(pos.x - 1, pos.y, pos.z),
|
||||
vector.new(pos.x + 1, pos.y + 1, pos.z),
|
||||
vector.new(pos.x + 1, pos.y - 1, pos.z),
|
||||
vector.new(pos.x - 1, pos.y - 1, pos.z),
|
||||
vector.new(pos.x - 1, pos.y + 1, pos.z),
|
||||
|
||||
vector.new(pos.x, pos.y, pos.z + 1),
|
||||
vector.new(pos.x, pos.y, pos.z - 1),
|
||||
vector.new(pos.x, pos.y + 1, pos.z + 1),
|
||||
vector.new(pos.x, pos.y - 1, pos.z + 1),
|
||||
vector.new(pos.x, pos.y + 1, pos.z - 1),
|
||||
vector.new(pos.x, pos.y - 1, pos.z - 1),
|
||||
|
||||
vector.new(pos.x, pos.y + 1, pos.z),
|
||||
vector.new(pos.x, pos.y - 1, pos.z),
|
||||
}
|
||||
end
|
||||
|
||||
PyuTest.make_button = function(id, desc, groups, tiles)
|
||||
PyuTest.make_node(id, desc, PyuTest.util.tableconcat(groups, {
|
||||
electric = 1
|
||||
}), tiles, {
|
||||
is_ground_content = false,
|
||||
on_rightclick = function(pos, node, clicker)
|
||||
minetest.sound_play("button", {
|
||||
pos = pos,
|
||||
gain = 1
|
||||
})
|
||||
|
||||
for _, v in pairs(get_neighbours(pos)) do
|
||||
local n = minetest.get_node(v)
|
||||
local def = minetest.registered_nodes[n.name]
|
||||
minetest.after(PyuTest.ELECTRICITY_TICK, function()
|
||||
if def.__on_electricity_activated then
|
||||
def.__on_electricity_activated(v, n, clicker, pos)
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
PyuTest.make_wire = function(id, desc, groups, color, efn)
|
||||
local fn = efn or function(def, pos, node, clicker, sender_pos)
|
||||
def.__on_electricity_activated(pos, node, clicker, sender_pos)
|
||||
end
|
||||
|
||||
PyuTest.make_node(id, desc, PyuTest.util.tableconcat(groups, {
|
||||
electric = 1
|
||||
}), {
|
||||
"pyutest-wire.png",
|
||||
"pyutest-wire.png",
|
||||
"pyutest-wire.png",
|
||||
"pyutest-wire.png"
|
||||
}, {
|
||||
drawtype = "raillike",
|
||||
color = color,
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
walkable = false,
|
||||
inventory_image = "pyutest-wire.png",
|
||||
|
||||
__on_electricity_activated = function(pos, node, clicker, sender_pos)
|
||||
for _, v in pairs(get_neighbours(pos)) do
|
||||
local n = minetest.get_node(v)
|
||||
local def = minetest.registered_nodes[n.name]
|
||||
|
||||
-- To prevent infinite loops
|
||||
if v == sender_pos then
|
||||
goto continue
|
||||
end
|
||||
|
||||
minetest.after(PyuTest.ELECTRICITY_TICK, function()
|
||||
if def.__on_electricity_activated then
|
||||
fn(def, v, n, clicker, pos)
|
||||
end
|
||||
end)
|
||||
|
||||
::continue::
|
||||
end
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
PyuTest.make_button("pyutest_electricity:button", "Button", {
|
||||
cracky = PyuTest.BLOCK_NORMAL,
|
||||
}, { "pyutest-button.png" })
|
||||
|
||||
PyuTest.make_wire("pyutest_electricity:copper_wire", "Copper Wire", {
|
||||
snappy = PyuTest.BLOCK_NORMAL
|
||||
}, "darkgoldenrod")
|
||||
|
||||
PyuTest.make_wire("pyutest_electricity:zinc_wire", "Zinc Wire", {
|
||||
snappy = PyuTest.BLOCK_NORMAL
|
||||
}, "#bed3d4", function(def, pos, node, clicker, sender_pos)
|
||||
minetest.after(0.2, function()
|
||||
def.__on_electricity_activated(pos, node, clicker, sender_pos)
|
||||
end)
|
||||
end)
|
||||
|
||||
PyuTest.make_node("pyutest_electricity:freezer_device", "Freezer Device", {
|
||||
cracky = PyuTest.BLOCK_FAST,
|
||||
electric = 1
|
||||
}, { "pyutest-freezer.png" }, {
|
||||
__on_electricity_activated = function(pos, node, clicker)
|
||||
PyuTest.dorange(pos, 2, function(p)
|
||||
local n = minetest.get_node(p)
|
||||
|
||||
if minetest.get_item_group(n.name, "freezable") ~= 0 then
|
||||
minetest.set_node(p, { name = "pyutest_blocks:ice_block" })
|
||||
elseif minetest.get_item_group(n.name, "coolable") ~= 0 then
|
||||
local def = minetest.registered_nodes[n.name]
|
||||
local cool_into = def.__cool_into or "pyutest_blocks:water_source"
|
||||
minetest.set_node(p, { name = cool_into })
|
||||
end
|
||||
end)
|
||||
end
|
||||
})
|
||||
|
||||
PyuTest.make_node("pyutest_electricity:heater_device", "Heater Device", {
|
||||
cracky = PyuTest.BLOCK_FAST,
|
||||
electric = 1
|
||||
}, { "pyutest-heater.png" }, {
|
||||
__on_electricity_activated = function(pos, node, clicker)
|
||||
PyuTest.dorange(pos, 2, function(p)
|
||||
local n = minetest.get_node(p)
|
||||
|
||||
if minetest.get_item_group(n.name, "thawable") ~= 0 then
|
||||
local def = minetest.registered_nodes[n.name]
|
||||
local thaw_into = def.__thaw_into or "pyutest_blocks:water_source"
|
||||
minetest.set_node(p, { name = thaw_into })
|
||||
elseif minetest.get_item_group(n.name, "heatable") ~= 0 then
|
||||
local def = minetest.registered_nodes[n.name]
|
||||
local heat_into = def.__heat_into or "pyutest_blocks:lava_source"
|
||||
minetest.set_node(p, { name = heat_into })
|
||||
end
|
||||
end)
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "pyutest_electricity:copper_wire 4",
|
||||
recipe = {
|
||||
"pyutest_ores:copper_ingot"
|
||||
},
|
||||
type = "shapeless"
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "pyutest_electricity:zinc_wire 4",
|
||||
recipe = {
|
||||
"pyutest_ores:zinc_ingot"
|
||||
},
|
||||
type = "shapeless"
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "pyutest_electricity:button",
|
||||
recipe = {
|
||||
{ "pyutest_blocks:stone_block", "pyutest_blocks:stone_block", "pyutest_blocks:stone_block" },
|
||||
{ "pyutest_blocks:stone_block", "pyutest_ores:copper_ingot", "pyutest_blocks:stone_block" },
|
||||
{ "pyutest_blocks:stone_block", "pyutest_blocks:stone_block", "pyutest_blocks:stone_block" }
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "pyutest_electricity:freezer_device",
|
||||
recipe = {
|
||||
{ "pyutest_blocks:stone_block", "pyutest_blocks:stone_block", "pyutest_blocks:stone_block" },
|
||||
{ "pyutest_blocks:stone_block", "pyutest_blocks:ice_block", "pyutest_blocks:stone_block" },
|
||||
{ "pyutest_blocks:stone_block", "pyutest_blocks:stone_block", "pyutest_blocks:stone_block" }
|
||||
},
|
||||
})
|
1
mods/ITEMS/pyutest_electricity/mod.conf
Normal file
1
mods/ITEMS/pyutest_electricity/mod.conf
Normal file
@@ -0,0 +1 @@
|
||||
depends = pyutest_blocks
|
Reference in New Issue
Block a user