63 lines
1.5 KiB
Lua

local util = require("lualib.util")
-- compatibility with PickerExtended mod
local M = {}
local function on_dolly_moved(event)
local entity = event.moved_entity
if not util.is_miniloader_inserter(entity) then
return
end
local old_pos = event.start_pos
local new_pos = entity.position
-- move inserters
local partners = entity.surface.find_entities_filtered{
position = old_pos,
type = "inserter",
}
for _, ent in ipairs(partners) do
ent.teleport(new_pos)
end
local loader = entity.surface.find_entities_filtered{
position = old_pos,
type = "loader-1x1",
}[1]
local new_loader = entity.surface.create_entity{
name = loader.name,
position = new_pos,
direction = loader.direction,
force = loader.force,
type = loader.loader_type,
}
-- move items on belt
for i=1,2 do
local old_tl = loader.get_transport_line(i)
local new_tl = new_loader.get_transport_line(i)
for j=1, #old_tl do
new_tl.insert_at_back(old_tl[j])
end
old_tl.clear()
end
loader.destroy()
-- move chest
local chest = entity.surface.find_entity("miniloader-target-chest", old_pos)
chest.teleport(new_pos)
end
function M.on_load()
if remote.interfaces["PickerDollies"] and remote.interfaces["PickerDollies"]["dolly_moved_entity_id"] then
local on_dolly_moved_event = remote.call("PickerDollies", "dolly_moved_entity_id")
script.on_event(on_dolly_moved_event, on_dolly_moved)
end
end
return M