155 lines
4.4 KiB
Lua
155 lines
4.4 KiB
Lua
|
-- rnd: code borrowed from machines, mark.lua
|
||
|
|
||
|
-- need for marking
|
||
|
machines = {};
|
||
|
|
||
|
machines.pos1 = {};machines.pos11 = {}; machines.pos2 = {};
|
||
|
machines.marker1 = {}
|
||
|
machines.marker11 = {}
|
||
|
machines.marker2 = {}
|
||
|
machines.marker_region = {}
|
||
|
|
||
|
|
||
|
--marks machines region position 1
|
||
|
machines.mark_pos1 = function(name)
|
||
|
local pos1, pos2 = machines.pos1[name], machines.pos2[name]
|
||
|
|
||
|
if pos1 ~= nil then
|
||
|
--make area stay loaded
|
||
|
local manip = minetest.get_voxel_manip()
|
||
|
manip:read_from_map(pos1, pos1)
|
||
|
end
|
||
|
|
||
|
if not machines[name] then machines[name]={} end
|
||
|
machines[name].timer = 10;
|
||
|
if machines.marker1[name] ~= nil then --marker already exists
|
||
|
machines.marker1[name]:remove() --remove marker
|
||
|
machines.marker1[name] = nil
|
||
|
end
|
||
|
if pos1 ~= nil then
|
||
|
--add marker
|
||
|
machines.marker1[name] = minetest.add_entity(pos1, "machines:pos1")
|
||
|
if machines.marker1[name] ~= nil then
|
||
|
machines.marker1[name]:get_luaentity().name = name
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
--marks machines region position 1
|
||
|
machines.mark_pos11 = function(name)
|
||
|
local pos11 = machines.pos11[name];
|
||
|
|
||
|
if pos11 ~= nil then
|
||
|
--make area stay loaded
|
||
|
local manip = minetest.get_voxel_manip()
|
||
|
manip:read_from_map(pos11, pos11)
|
||
|
end
|
||
|
|
||
|
if not machines[name] then machines[name]={} end
|
||
|
machines[name].timer = 10;
|
||
|
if machines.marker11[name] ~= nil then --marker already exists
|
||
|
machines.marker11[name]:remove() --remove marker
|
||
|
machines.marker11[name] = nil
|
||
|
end
|
||
|
if pos11 ~= nil then
|
||
|
--add marker
|
||
|
machines.marker11[name] = minetest.add_entity(pos11, "machines:pos11")
|
||
|
if machines.marker11[name] ~= nil then
|
||
|
machines.marker11[name]:get_luaentity().name = name
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
--marks machines region position 2
|
||
|
machines.mark_pos2 = function(name)
|
||
|
local pos1, pos2 = machines.pos1[name], machines.pos2[name]
|
||
|
|
||
|
if pos2 ~= nil then
|
||
|
--make area stay loaded
|
||
|
local manip = minetest.get_voxel_manip()
|
||
|
manip:read_from_map(pos2, pos2)
|
||
|
end
|
||
|
|
||
|
if not machines[name] then machines[name]={} end
|
||
|
machines[name].timer = 10;
|
||
|
if machines.marker2[name] ~= nil then --marker already exists
|
||
|
machines.marker2[name]:remove() --remove marker
|
||
|
machines.marker2[name] = nil
|
||
|
end
|
||
|
if pos2 ~= nil then
|
||
|
--add marker
|
||
|
machines.marker2[name] = minetest.add_entity(pos2, "machines:pos2")
|
||
|
if machines.marker2[name] ~= nil then
|
||
|
machines.marker2[name]:get_luaentity().name = name
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
|
||
|
|
||
|
minetest.register_entity(":machines:pos1", {
|
||
|
initial_properties = {
|
||
|
visual = "cube",
|
||
|
visual_size = {x=1.1, y=1.1},
|
||
|
textures = {"machines_pos1.png", "machines_pos1.png",
|
||
|
"machines_pos1.png", "machines_pos1.png",
|
||
|
"machines_pos1.png", "machines_pos1.png"},
|
||
|
collisionbox = {-0.55, -0.55, -0.55, 0.55, 0.55, 0.55},
|
||
|
physical = false,
|
||
|
},
|
||
|
on_step = function(self, dtime)
|
||
|
if not machines[self.name] then machines[self.name]={}; machines[self.name].timer = 10 end
|
||
|
machines[self.name].timer = machines[self.name].timer - dtime
|
||
|
if machines[self.name].timer<=0 or machines.marker1[self.name] == nil then
|
||
|
self.object:remove()
|
||
|
end
|
||
|
end,
|
||
|
on_punch = function(self, hitter)
|
||
|
self.object:remove()
|
||
|
machines.marker1[self.name] = nil
|
||
|
machines[self.name].timer = 10
|
||
|
end,
|
||
|
})
|
||
|
|
||
|
minetest.register_entity(":machines:pos11", {
|
||
|
initial_properties = {
|
||
|
visual = "cube",
|
||
|
visual_size = {x=1.1, y=1.1},
|
||
|
textures = {"machines_pos11.png", "machines_pos11.png",
|
||
|
"machines_pos11.png", "machines_pos11.png",
|
||
|
"machines_pos11.png", "machines_pos11.png"},
|
||
|
collisionbox = {-0.55, -0.55, -0.55, 0.55, 0.55, 0.55},
|
||
|
physical = false,
|
||
|
},
|
||
|
on_step = function(self, dtime)
|
||
|
if not machines[self.name] then machines[self.name]={}; machines[self.name].timer = 10 end
|
||
|
machines[self.name].timer = machines[self.name].timer - dtime
|
||
|
if machines[self.name].timer<=0 or machines.marker11[self.name] == nil then
|
||
|
self.object:remove()
|
||
|
end
|
||
|
end,
|
||
|
on_punch = function(self, hitter)
|
||
|
self.object:remove()
|
||
|
machines.marker11[self.name] = nil
|
||
|
machines[self.name].timer = 10
|
||
|
end,
|
||
|
})
|
||
|
|
||
|
minetest.register_entity(":machines:pos2", {
|
||
|
initial_properties = {
|
||
|
visual = "cube",
|
||
|
visual_size = {x=1.1, y=1.1},
|
||
|
textures = {"machines_pos2.png", "machines_pos2.png",
|
||
|
"machines_pos2.png", "machines_pos2.png",
|
||
|
"machines_pos2.png", "machines_pos2.png"},
|
||
|
collisionbox = {-0.55, -0.55, -0.55, 0.55, 0.55, 0.55},
|
||
|
physical = false,
|
||
|
},
|
||
|
on_step = function(self, dtime)
|
||
|
if not machines[self.name] then machines[self.name]={}; machines[self.name].timer = 10 end
|
||
|
if machines[self.name].timer<=0 or machines.marker2[self.name] == nil then
|
||
|
self.object:remove()
|
||
|
end
|
||
|
end,
|
||
|
})
|