LUIS DAS ARTIMANHAS - Biblioteca Utilitária


Biblioteca utilitária para criação rápida de itens, receitas e outros protótipos Factorio.. local LDA = require('__LDA-LIB__/init') local PATH = LDA.setBasePath('Quantum-Teleporter')

Internal
5 days ago
2.1
697

b [BUGFIX] Migrar `ItemPrototype::fuel_category` para `fuel_categories` em `createOre`

[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

New response