SoulFire 2.4.0
Important
These downloads are for users who want to host Dedicated Servers for SoulFire clients or use the CLI client of SoulFire.
This is not the right download if you want to use the GUI client for SoulFire, which is recommended for most users.
Instead you should look at the SoulFireClient releases page.
🚀 Features
42514ecfeat: implement visual scripting backend with execution engine4c671dafeat: add visual scripting node implementations and trigger service5fb785cfeat: add string, math, list, and utility script nodes848a188feat: replace Map<String, Object> with type-safe NodeValue sealed interface47b5ed6feat: add data-driven node metadata system for client rendering4f21249feat: implement GetNodeTypes gRPC method92ea92cfeat: add CategoryDefinition with id, displayName, icon for all categoriesb89ef12feat: add more nodes98a9b39feat: switch to java native evaluation engine083c501feat: improve validation and node capabilities4708563feat(script): Add Blender-style node editor enhancements08a17ccfeat(scripting): implement data-driven port metadata and registry data6cb96eefeat(scripting): implement OnDamage trigger with BotDamageEvent313712cfeat(scripting): add data-driven HandleShape and EdgeStyle for portse175d02feat: add script log streaming and fix PrintNode for any type inputs33a1f15feat(scripts): add 24 new scripting nodes and fix proto paused field75246edfeat: implement per bot protocol version8782b6afeat: inject native java proxy into Minecraft instances of bots2e53571feat: add execution context for automatic data flow along execution edges
🐛 Fixes
6600189fix: use fluent Lombok accessors and correct Identifier importaf52e4afix: add ColumnDefault for autoStart to fix SQLite migrationb77ce6dfix(deps): update dependency net.fabricmc:fabric-loom to v1.15.3bd8f9eafix: add missing class9dd9169fix: use hyphen names92c6931fix: make build work6df1a2dfix: properly parse type namesba5b5aafix(deps): update all non-major dependenciesc3a9238fix(scripting): update proto files and fix registry APIe51e210fix: remove field shadowda5075dfix(deps): update all non-major dependencies to v7.2.2.finale654eb8fix(deps): update all non-major dependenciesf97282ffix: allow null map valuesdd905cefix: properly handle bot trigger ordere07e452fix: use AtomicBoolean for thread-safe scheduler shutdownce71b65fix: prevent double finalization in recurring scheduler tasksc0a1303fix: shut down executor on scheduler shutdowne44b790fix: prevent drift in scheduleAtFixedRate8f7cd3cfix: synchronize responseObserver calls in proxy check serviceeca82eafix: guarantee EventLoopGroup cleanup in proxy check service37b73f4fix: propagate async errors to client in proxy check service40e9ee5fix: synchronize and harden MCAuthServiceImpl gRPC callsf5cfbd8fix(deps): update dependency net.ltgt.errorprone:net.ltgt.errorprone.gradle.plugin to v5 (#934)6b6317afix: migrate from alpine zulu to temurin debian base image2ecde71fix: actually download resource packsef7e4d8fix: use connection netty conntection rather than the thread onedfa38d9fix(deps): update dependency org.shredzone.acme4j:acme4j-client to v4 (#932)628e3f2fix: use newer api9752ddcfix(deps): update all non-major dependencies (#933)da4456bfix(deps): update all non-major dependencies1dbb21afix(deps): update dependency com.openai:openai-java to v4.20.0908ce19fix: add migration path from Hibernate to Flyway for existing databases931f775fix: handle binary UUID format from Hibernate during migrationfcdba63fix: detect binary UUIDs independently of column rename status8aa3b23fix(deps): update flyway to v12 (#935)5c9fe8ffix: wire JOOQ codegen as dependency of compileJava7df3a97fix: add missing migrationsb755b4bfix: update commentce6b72dfix: apply formatting3f8ada7fix: wire JOOQ codegen as dependency of sourcesJar200de74fix: remove duplicate JOOQ srcDir already added by plugin3262b48fix(deps): update all non-major dependencies (#936)ea56f06fix(deps): update dependency com.openai:openai-java to v4.21.037720c1fix: fix script execution engine flow control, concurrency, and error handlingd18a579fix: update scripts1551e6afix: switch NodeRegistry maps to concurrent maps
🏎️ Performance
ae8d29eperf: download pre-built JAR in Docker build instead of compiling
🏗 Refactor
64d8486refactor: remove script scoping and make scripts activatablea0ec122refactor: make script nodes stateless and purebd20c31refactor: remove variables from scripting system6631507refactor: introduce NodeRuntime interface to separate node API from execution machineryc69e6edrefactor(scripting): simplify port IDs to use names without type prefix1740b42refactor(scripts): change from activation to pause-based modelab35233refactor: switch to native asRuntimeException() method36334e1refactor: use end sentinel streaming pattern for loginCredentials477cae9refactor: rewrite maxFutures using Semaphore + Phaser12a82cfrefactor: replace Hibernate ORM with JOOQ + Flywayc296eb4refactor: remove unused ScriptManager6726b9drefactor: overhaul script execution system with 12 fixes467de16refactor: move metadata to registry, away from object
📝 Documentation
ad416fddocs: add CLAUDE.md for Claude Code guidancebc3e032docs: add CLAUDE.md for Claude Code guidance
🔨 Build
3cf42e8chore(release): bump version to 2.3.1-SNAPSHOT9eb47e9chore: fixup protocoldf299f4chore: apply proper metadatae9265bechore: rewrite to node category registry99aa614chore: switch script processing to reactor059b965chore: configure Gradle daemon JVM toolchain for Java 25c25948achore: update icon variants5b631b5chore: disable vfp bumping78e921echore: add tmp24c2e86chore: migrate from zulu to temurin254e8e6chore: add SECURITY.md to streamline vulnerability reportinge1d7563chore(release): bump version to 2.4.0
💅 Style
🧪 Tests
61563f3test: add initial scripting test