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

Changelog

Version: 0.0.17
Date: 07/11/2026
  features:
    - Adicionado módulo de runtime LDARuntime.equipment_grid (runtime/modules/equipment_grid.lua) com utilitários para leitura e manipulação de energia em grades de equipamento (getEnergy, getMaxEnergy, hasEnergy, drainEnergy e addEnergy), suportando jogadores (armadura), veículos, entidades e itens de forma atômica e distribuída.
  bugfixes:
    - Corrigido erro fatal de colisão "A script command already exists with the name: lda-list" quando mods consumidores importam __LDA-LIB__/runtime.init. Agora o registro de comandos e on_init é restrito ao mod base (script.mod_name == "LDA-LIB") e commands.register() possui verificação de idempotência (commands.commands["lda-list"]).
    - Corrigido resolver de objetos Factorio em runtime/modules/player.lua (player.get) e runtime/modules/world.lua (world.getSurface) que rejeitavam objetos nativos LuaPlayer e LuaSurface por checarem type(...) == "table" (no Factorio esses objetos são do tipo userdata). Agora todos os módulos de runtime aceitam diretamente instâncias nativas válidas (.valid) além de IDs e nomes.
Version: 0.0.16
Date: 24/10/2026
  major_changes:
    - Removidas as pastas e módulos legados (base-functions/, generic-functions/, functions/, utils/).
    - Obrigatório o uso do padrão canônico via init.lua (require('__LDA-LIB__/init')) ou caminhos encapsulados (data-stage/builders/, shared/, runtime/).
    - Estrutura do projeto totalmente limpa e modularizada.
  features:
    - Adicionado helper createSurfaceProperties e surfacePropertiesPresets (shared/planet-surface-properties.lua) com predefinições para o Space Age.
    - Adicionado helper createMapGenSettings e createCliffSettings (shared/planet-mapgen-util.lua) para geração de mapa de planetas.
    - Adicionado builder createSpaceConnection e gerador generateAsteroidSpawns (data-stage/builders/base/create-space-connection.lua).
    - Adicionado builder createAccumulator (data-stage/builders/base/create-accumulator.lua) para criação de protótipos de acumuladores elétricos modulares, com suporte a limites de fluxo (inclusive "0kW"), buffer_capacity, chargable_graphics, sons de operação e resistências.
    - Adicionado módulo de runtime LDARuntime.network (runtime/modules/network.lua) para registro e gerenciamento genérico de redes de entidades persistidas em storage (Factorio 2.0+), com suporte a consultas filtradas (por força, superfície e nome), renomeação, metadados arbitrários, busca de posição de spawn livre (findFreeSpawnPosition) e auto-limpeza de entidades inválidas.
    - Adicionado módulo de runtime LDARuntime.gui (runtime/modules/gui.lua) com helpers de interface gráfica: busca recursiva de elementos (findElementByName e findElementsByType), padronização de janelas modais vinculadas ao ciclo de vida player.opened com titlebar arrastável e botão fechar, e barras de status de energia formatadas (createEnergyBar, updateEnergyBar, formatEnergy e formatPower).
Version: 0.0.15
Date: 24/10/2026
  changes:
    - 1. player-utils (runtime/modules/player.lua) 
      Obtenção e validação:
      get(player_or_id): aceita índice numérico, nome ou objeto LuaPlayer.
      isValid(player): checagem segura de validade.
      getCharacter(player): retorna a entidade LuaEntity (character) do jogador.
      getPosition(player) e getSurface(player).
      getGps(player): gera a tag formatada de chat [gps=x,y,surface].
    - Inventário e itens:
      getItemCount(player, item_name, quality): contagem com suporte a qualidade do Factorio 2.0.
      hasItem(player, item_name, count, quality): verificação booleana.
      give(player, item_name, count, options): inserção segura no inventário principal/rápido com opção de derrubar no chão (spill_if_full = true).
      remove(player, item_name, count, quality): remoção segura de itens.
    - Interação & Feedback:
      teleport(player, position, surface): teletransporte seguro entre coordenadas e superfícies.
      flyingText(player, text, options): texto voador local visível apenas para o jogador.
      notify(player, message, sound_path): envia mensagem no console e opcionalmente toca som.
    - 2. entity-utils (runtime/modules/entity.lua)
      Validação & Estado:
      isValid(entity): checagem entity and entity.valid.
      getHealth(entity), setHealth(entity, health), heal(entity, amount).
      damage(entity, amount, force, damage_type): aplica dano respeitando forças e tipos.
      getEnergy(entity), setEnergy(entity, energy): nível de Joules em máquinas e acumuladores.
    - Posicionamento & Formato:
      getPosition(entity), getSurface(entity), getForce(entity).
      getBoundingBox(entity): retorna a área de colisão/seleção.
    - Manipulação:
      insert(entity, item_name, count, quality) e remove(entity, item_name, count, quality).
      destroy(entity, options): destrói com segurança (com opção die = true ou disparar eventos raise_destroy).
      isGhost(entity) e reviveGhost(ghost): suporte a fantasmas de construção.
    - 3. world-utils (runtime/modules/world.lua)
    - Superfícies & GPS:
      getSurface(surface_or_id): resolve nomes, IDs ou padrão game.surfaces[1].
      formatGps(position, surface): gera strings como [gps=10.5,-20.0,nauvis].
      getDistance(pos1, pos2): cálculo de distância euclidiana.
    - Busca e Spawning:
      findEntitiesInRadius(surface, position, radius, filters): busca circular filtrada por nome, tipo ou força.
      findEntitiesInBox(surface, area, filters): busca em caixa retangular.
      findFreePosition(surface, entity_name, position, radius, precision): localiza posição desobstruída.
      spawnEntity(surface, name, position, options): instancia entidades no mundo (direction, force, raise_built, quality).
    - Edição de Terreno & Efeitos:
      getTile(surface, position): consulta o piso/terreno.
      setTile(surface, position, tile_name) e setTiles(surface, tiles_array): troca de tiles individual ou em lote.
      createExplosion(surface, position, name): gera explosões ou efeitos na coordenada.
      teleportEntity(entity, position, surface): teletransporte genérico para qualquer entidade móvel.
    - 4. item-utils (runtime/modules/item.lua)
    - Stacks & Inventário:
      isValid(stack): valida se o stack é válido e tem conteúdo legível.
      toTable(stack): converte stack em tabela simples (name, count, quality, health, ammo).
      canFit(target, item_name, count, quality): verifica se inventário/entidade aguenta receber itens.
      getEmptySlotCount(inventory): conta slots vazios disponíveis.
      transfer(source_inv, target_inv, item_name, count, quality): transferência segura entre inventários.
      spill(surface, position, item_name, count, options): derrama itens no chão.
      Itens no Chão & Coleta:
      findOnGround(surface, position, radius, item_name): localiza itens caídos no chão.
      collectFromGround(surface, position, radius, target): recolhe itens caídos direto para o jogador ou baú.
    - Protótipos (Factorio 2.0+):
      getStackSize(item_name) e getSubgroup(item_name): consulta dados do protótipo em runtime.
Version: 0.0.14
Date: 24/10/2026
  fixes:
    - Falha ao carregar mods: Erro ao carregar o protótipo da receita "jogar na água" (receita): Em RecipePrototype, `category` e `additional_categories` foram mescladas na tabela `categories`. Por favor, use esta tabela em vez da anterior.
Version: 0.0.13
Date: 21/06/2026
  changes:
    - melhora o carregamento de caminhos de arquivos.
    - alterado caminhos base
Version: 0.0.12
Date: 21/06/2026
  changes:
    - adiciona novas funções para criação de itens e receitas, remove função obsoleta e atualiza versão
    - função adicionada createGraphicsSet(animation_progress,frozen_patch,always_draw_idle_animation,reset_animation_when_frozen)
    - função adicionada createLayer(filename,width,height,frame_count,line_length,shift,scale,draw_as_shadow,priority,extra_props)
    - corrigido erro do animations
Version: 0.0.11
Date: 06/04/2026
  changes:
    - função adicionada createTechnologyMineEntityTrigger(name, unlocksList, prerequisitesList, mine_entity)
    - função adicionada createTechnologyCraftEntityTrigger(name, unlocksList, prerequisitesList, item, count)
    - função utils adicionada getRandomPositionAround(centerX, centerY,SPAWN_RADIUS_MIN,SPAWN_RADIUS_MAX)
    - função utilsAmbientEffects adicionada createExplosion(surface, position)
    - função utilsAmbientEffects adicionada createCrashFire(surface, center, count)
    - função utilsAmbientEffects adicionada createSecondaryExplosions(surface, center, count)
    - função utilsAmbientEffects adicionada createScorchmark(surface, position)
    - adicionado utils -> ambent-effects.lua
    - local utilsAmbientEffects = LDA.utilsAmbientEffects
  pendingBugs:
    - entidade não esta renderizando
Version: 0.0.10
Date: 30/03/2026
  changes:
    - Map Generation:
    - by factorio: função adicionada createResource(name, order, resource_parameters, autoplace_parameters)
    - função adicionada createAutoplaceControl(name, order, tint, icon_size, icon_mipmaps)
  fixes:
    - corrigido bugs ao criar minerios
  pendingBugs:
    - entidade não esta renderizando
Version: 0.0.9
Date: 28/01/2026
  changes:
    - Funções adicionadas (CreateBaseAmbientSound,CreateInterludeAmbientSound,CreateMenuAmbientSound)
  pendingBugs:
    - entidade não esta renderizando
Version: 0.0.8
Date: 05/01/2026
  fixes:
    - locale translations updated
    - remake da techUtil, todas as funções fora atualizadas e refeitas do 0 para buscar uma melhor eficiencia 
  pendingBugs:
    - entidade não esta renderizando
Version: 0.0.7
Date: 01/01/2026
  changes:
    - Função createThrowInWaterItemWithRecipe adicionada
  fixes:
    - Adiciona suporte para 'pictures' na função createRecipe ou icon_size padrão devolvido para 128x128
Version: 0.0.6
Date: 31/12/2025
  changes:
    - Função Privada: Cria o objeto hr_version, calculando as dimensões.
    - Função Pública: Cria uma única camada (layer) de animação.
    - Função que Cria a estrutura completa de animação para um protótipo, a partir de uma ou mais layers. (Esta função permaneceu inalterada, pois já tinha responsabilidade única)
    - throw-in-water adicionado
    - Funções utils adicionado (getSequentialAudioList,getAudio)
    - adicionado isEnabled nas receitas para que ja venha desbloqueadas ou não
    - adicionado icon_size,pick_sound,drop_sound (opicional) com getAudio embutido para que tenha mais opções de modificações granular
    - Funções utils adicionadas createModuleSpec, createBoundingBox
    - Funções utils adicionadas createResistance, getFullResistance
    - Funções utils adicionado (getSequentialPictureList,getPicture)
    - removido icons_size das receitas (recipe), 
      - motivo:
      - Inferência (O Mecanismo Padrão), Quando você omite icon_size em um protótipo de recipe O jogo assume que o ícone da receita (recipe.icon) tem a mesma forma e tamanho que o ícone do principal resultado (recipe.results[1].name).
      - Exemplo: Se a sua receita produz iron-plate, e o ícone de iron-plate é definido como 32x32 pixels, o jogo renderizará o ícone da receita na mesma dimensão padrão para receitas.
    - Atualiza receitas, ajusta changelog; adiciona suporte a novos itens e traduções para inglês e português.
Version: 0.0.5
Date: 24/12/2025
  changes:
    - Additional function for creating groups of items.
    - Adds a function to format lists of results.
Version: 0.0.4
Date: 28/11/2025
  changes:
    - Create a function to generate equipment prototypes.
    - Create a function to generate prototypes of equipment with a recipe.
    - Optional added: alternative_unlock_methods
  fixes:
    - general bugs
    - subgroup itens
    - fixed functions create a equipment, incorrect equipment subgroup 
    - __LDA-LIB__/control.lua:32: attempt to index global 'game' (a nil value)
Version: 0.0.3
Date: 15/11/2025
  fixes:
    - Corrected processUnlockIngredients, a possible confusion in the use of the function, using it to create ingredients instead of science ingredients.
    - attempt to call field 'anyFunction' (a nil value)
    - Falha ao carregar mods: __Dyson-Sphere-Program-Lib__/data/recursos.lua:11: attempt to call field 'createOre' (a nil value) stack traceback: __Dyson-Sphere-Program-Lib__/data/recursos.lua:11: in main chunk	[C]: in function 'require'	__Dyson-Sphere-Program-Lib__/data.lua:5: in main chunk
Version: 0.0.2
Date: 15/11/2025
  fixes:
    - __LDA-LIB__/init.lua:26: module __LDA-LIB__/functions/create-item-with-recipe-matrix not found;  no such file __LDA-LIB__/functions/create-item-with-recipe-matrix.luastack traceback:	[C]: in function 'require'	__LDA-LIB__/init.lua:26: in main chunk	[C]: in function 'require'	__LDA-LIB__/control.lua:2: in main chunk.
Version: 0.0.1
Date: 15/11/2025
  Changes:
    - initial commit.