mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-12 07:04:52 +09:00
Reimplement core method for crafting_queue sync
* New method avoids all dataloss and prefectly replicates the queue * Made proper description in readme * Added packages to make lerna build happy * Added reference to main readme
This commit is contained in:
1 parent
87218e4803
commit
a4a667ef06
7 files changed
+91
-43
No files matched your search
@@ -3,33 +3,28 @@ function load_crafting_queue(crafting_queue, player)
|
||||
local inventory = player.get_main_inventory()
|
||||
|
||||
-- Give player some more inventory space to avoid duplicating items
|
||||
player.character_inventory_slots_bonus = player.character_inventory_slots_bonus + 100
|
||||
player.character_inventory_slots_bonus = player.character_inventory_slots_bonus + 1000
|
||||
|
||||
-- Add items to inventory
|
||||
for _, item in pairs(crafting_queue.ingredients) do
|
||||
inventory.insert(item)
|
||||
end
|
||||
|
||||
-- Load crafting queue
|
||||
for _, queueItem in pairs(crafting_queue) do
|
||||
for _, queueItem in pairs(crafting_queue.crafting_queue) do
|
||||
local recipe = game.recipe_prototypes[queueItem.recipe]
|
||||
game.print("Crafting "..queueItem.recipe)
|
||||
-- Add items to inventory
|
||||
for _, item in pairs(recipe.ingredients) do
|
||||
local count = math.floor(item.amount * queueItem.count / math.max(recipe.main_product.amount, 1))
|
||||
if count > 0 then
|
||||
inventory.insert({
|
||||
name = item.name,
|
||||
count = count,
|
||||
})
|
||||
end
|
||||
end
|
||||
-- game.print("Crafting "..queueItem.recipe)
|
||||
|
||||
-- Start crafting (consume items)
|
||||
player.begin_crafting {
|
||||
count = queueItem.count,
|
||||
recipe = queueItem.recipe,
|
||||
silent = true, -- Fail silently if items are missing
|
||||
-- silent = true, -- Fail silently if items are missing
|
||||
}
|
||||
end
|
||||
|
||||
-- Remove extra inventory slots
|
||||
player.character_inventory_slots_bonus = player.character_inventory_slots_bonus - 100
|
||||
player.character_inventory_slots_bonus = player.character_inventory_slots_bonus - 1000
|
||||
end
|
||||
|
||||
return load_crafting_queue
|
||||
Reference in new issue
Block a user