Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>FunctionLanguageNew to Visual Studio Code? Get it now.
FunctionLanguage

FunctionLanguage

Andromeral Systems

| (0) | Free
Lenguaje de mods y FunctionPacks para CreativeImagination: personalización de cualquier registro de FunctionComponents y FunctionTags, bloques, comandos y paquetes .cipak.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

FunctionLanguage 1.1.0

Documentación oficial completa de la 1.1.0: docs/README.md — guía, gramática, 474 FunctionComponents oficiales, 10 FunctionTags, Commands, CLI, VS Code y ejemplos.

Lenguaje de mods y FunctionPacks de CreativeImagination, creado por Andromeral Systems. El creador escribe un archivo .cif; el CLI o la extensión de VS Code producen un único .cipak. El jugador sólo copia ese archivo a la carpeta mods junto al ejecutable y entra al mundo.

Qué permite

  • Declarar FunctionComponents y adjuntarlos a bloques nuevos.
  • Modificar cualquier id de FunctionComponent registrado, oficial o de otro mod: propiedades públicas escalares que el motor consume, datos extensibles y hooks a eventos del juego. El cargador aplica los parches después de registrar todos los paquetes, con orden estable.
  • Definir bloques con textura, solidez, gravedad, brillo y transparencia.
  • Modificar cualquier FunctionTag registrado, oficial o de otro mod: descripción, ámbitos, rango, valor por defecto, completions, obligatoriedad, deprecación, política de merge y schema anidado. Los cambios afectan la validación, lectura y autocomplete del juego.
  • Registrar FunctionTags de item, block, world, player y structure, incluidos list y compound con schemas recursivos.
  • Agregar música, funciones, comandos propios con argumentos tipados y eventos worldOpening, worldReady, worldSaving, worldClosing.
  • Ejecutar los comandos oficiales del juego desde funciones. FunctionTags pueden usarse mediante /data, /give, /setblock y otros Commands que ya los admiten.

Los scripts invocan el sistema oficial Commands; los hooks usan EventBus y tienen límites de recursión/instrucciones. Los mods pueden modificar registros de cualquier componente, pero un dato nuevo no cambia automáticamente una mecánica que nunca lo lee. Para esos casos se usa una propiedad funcional existente, un hook de evento o se conecta un consumidor del motor. Por seguridad no se exponen métodos arbitrarios, WPF, campos privados, rutas de archivos, ni diccionarios de chunks. Esta versión no ofrece IA de mobs ni un runtime JavaScript arbitrario.

Ejemplo

pack stellar
name "Stellar Pack"
version 1.1.0

component crystal_data object
  description "Datos del cristal"
  data energy = 75
end

block crystal
  title "Cristal estelar"
  texture "textures/crystal.png"
  glow 75
  use crystal_data energy=75
end

modify component creativeimagination:time
  set Scale = 1.25
end

modify component creativeimagination:physics
  data walkSpeed = 6
  data jumpVelocity = 9
end

modify component creativeimagination:health
  set MaxHealth = 24
end

modify tag creativeimagination:custom_name
  scopes item,block,player
  description "Nombre visible para ítems, bloques y jugadores"
end

tag machinery block compound
  child state compound
  child state/charge integer
end

function dawn
  /time set dawn
end

command morning
  /function run stellar:dawn
end

La textura debe estar en textures/crystal.png, junto a main.cif. El proyecto completo está en examples/first-pack.

Parches y efectos reales

modify component <namespace:id> admite set Propiedad = valor para propiedades públicas escalares de objetos reales y data clave = valor para su configuración extensible. Las propiedades de sólo lectura, Id, FilePath, miembros privados y objetos de UI se rechazan. Los datos tienen efecto cuando el consumidor los utiliza: en 1.1 el juego conecta explícitamente physics (walkSpeed, gravity, jumpVelocity, crouchMultiplier, sprintMultiplier), flight.speed, fall_damage (threshold, perBlock) y void_damage.thresholdY. Los objetos reales como bloques, biomas, música, tiempo, salud y energía se modifican por sus propiedades públicas compatibles.

modify tag <namespace:id> admite description, scopes, min, max, default, completion, required, deprecated, merge replace|preserve, child ruta tipo y element tipo. No cambia el id ni el tipo base de un tag existente: hacerlo rompería datos persistidos. Un default se devuelve al leer un tag aún no asignado. Los schemas anidados se validan también al escribir.

Un parche puede ejecutar una función cuando ocurre un evento del juego:

modify component creativeimagination:health
  on creativeimagination:health_changed run stellar:reaction
end

modify tag creativeimagination:custom_name
  on change run stellar:reaction
end

Los hooks se conectan tras cargar las funciones de todos los paquetes, por lo que pueden referenciar funciones de otros mods. Sólo se activan eventos que el juego publique. No ejecutan JavaScript arbitrario.

CLI

Desde esta carpeta:

npm install
npm test
pwsh -File test/game-integration.ps1
pwsh -File test/default-mods.ps1
pwsh -File tools/export-game-schema.ps1
node bin/ci-function.js check examples/first-pack/main.cif
node bin/ci-function.js build examples/first-pack/main.cif -o stellar.cipak
node bin/ci-function.js build examples/first-pack/main.cif -o stellar-closed.cipak --closed
node bin/ci-function.js inspect stellar.cipak

La extensión ofrece Compilar .cipak, Compilar .cipak protegido y Validar archivo, además de colores, diagnósticos, ayuda y autocompletado de los registros oficiales exportados del juego. tools/export-game-schema.ps1 refresca schema/registries.json después de cambios al motor. Se empaqueta como VSIX con npm run package:vsix; no está publicada en Marketplace.

Protección de código

--closed cifra el manifiesto y los scripts con AES-256-GCM; los assets siguen visibles para que el juego los cargue. No es DRM ni secreto absoluto: para abrir el .cipak sin pedir configuración al jugador, el cliente contiene la clave de descifrado. Sirve para dificultar la lectura casual, no para impedir ingeniería inversa. La autenticación del cifrado detecta corrupción, pero no convierte a un pack de terceros en confiable.

Distribución

Colocar stellar.cipak directamente en CreativeImagination.exe → mods/. No hay que instalar Node, npm ni la extensión de VS Code en la máquina del jugador. Se mantienen los mods antiguos basados en carpetas y los FunctionPacks antiguos de cada mundo para no romper contenido existente.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft