63 lines
1.5 KiB
Lua
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
|