[BUGFIX] Migrar ItemPrototype::fuel_category para fuel_categories em createOre
Tipo de Solicitação: [x] Bugfix / Correção
Status: Pendente de envio
Estagio do Factorio: [x] data-stage (data.lua) [ ] runtime (control.lua) [ ] settings (settings.lua)
Mod / Projeto Solicitante: Dyson-Sphere-Program-Lib v0.0.5
Funcao/API Solicitada:
createOre(name, stack_size, fuel_category, fuel_value, order) ou createOre(name, stack_size, fuel_categories, fuel_value, order) em data-stage.builders.base.create-ore.
Parametros e Tipos:
- name (string, obrigatorio)
- stack_size (number, opcional)
- fuel_category (string|table, opcional): se string, converter internamente para {fuel_category}; se tabela de strings, usar diretamente em fuel_categories.
- fuel_value (string, opcional)
- order (string, opcional)
Retorno Esperado:
Array de protótipos Factorio contendo o item compatível com Factorio 2.0+ / 2.1+.
Necessidade no Mod (Caso de Uso):
No Factorio 2.0+, a propriedade ItemPrototype::fuel_category foi removida em favor de fuel_categories. O jogo aborta o carregamento com o erro:
ItemPrototype::fuel_category was removed. Please use ItemPrototype::fuel_categories.
Exemplo de Uso Pratico:
LDA.createOre("organic-crystal", 100, "chemical", "1.80MJ")
-- ou
LDA.createOre("organic-crystal", 100, {"chemical"}, "1.80MJ")
Comportamento em Casos Limite (Edge Cases & Falhas):
Se fuel_category não for fornecido, fuel_categories não deve ser definido no protótipo de item. Se for string "chemical", definir fuel_categories = {"chemical"}.
Frequencia de Execucao (Performance):
[x] Sob demanda (data-stage durante carregamento)
[ ] Frequente
Implementacao Temporaria (Workaround Atual):
-- utils/dsp-ore-builder.lua
local LDA = require("__LDA-LIB__/init")
local dspOre = {}
function dspOre.createOre(name, stack_size, fuel_category, fuel_value, order)
local prototypes = LDA.createOre(name, stack_size, fuel_category, fuel_value, order)
for _, proto in ipairs(prototypes) do
if proto.type == "item" and proto.fuel_category ~= nil then
local cat = proto.fuel_category
proto.fuel_category = nil
proto.fuel_categories = {cat}
end
end
return prototypes
end
return dspOre
Compatibilidade & Dependencias:
- Factorio: 2.0+ / 2.1+
- LDA-LIB: >= 0.0.17
- DLC Space Age: [ ] Obrigatorio [ ] Opcional [x] Nao aplicavel