Links
Tags
Creators
Details
1.1-SNAPSHOT
Compatibility
Changes
Critical Fixes
#1 — Build off the main thread (LiveJavaPlugin.java)
buildProject() previously called javac synchronously in onCommand(), which froze the server tick loop. Now:
- Compilation runs in runTaskAsynchronously
- loadAndStartProject() + all Bukkit API calls come back via runTask on the main thread
#2 — Permission nodes (plugin.yml + LiveJavaPlugin.java + Lang.java)
Zero permissions existed before. Now:
- plugin.yml defines livejava.*, livejava.editor, livejava.build, livejava.unload, livejava.reload, livejava.debug, livejava.lang — all default to op
- onCommand checks the right permission per subcommand using a switch expression before executing anything
- Added NO_PERMISSION key to Lang (both EN and TR)
#3 — plugin.yml metadata (build.gradle + plugin.yml)
Three sub-fixes:
- Added processResources { filesMatching('plugin.yml') { expand project.properties } } — the literal ${project.version} now resolves at build time
- description changed from Turkish (LiveJava ana komutu) to English
- usage changed from the misleading /livejava <test> to /livejava <help|editor|build|unload|reload|debug|lang>
- api-version bumped from '1.13' to '1.20'
Moderate Fixes
#4/#5/#6 — RuntimeCompiler rewrite (RuntimeCompiler.java)
- Removed the dead compile() single-file method (86 lines of dead code)
- Extracted the duplicated 40-line classpath building into a single private buildClasspath() method
- Replaced all Turkish error strings ("Satır", "Dosya", "Derlenecek hiçbir...") with English — these were bypassing the i18n system entirely
- Replaced the 5-directory loop with a for loop over a string array (DRY)
#7 — Public fields → getters (LiveJavaPlugin.java + WebIDEServer.java)
- projectStatuses and projectLogs changed from public final to private final
- Added getProjectStatuses() and getProjectLogs() methods
- WebIDEServer updated to use the getters
#10 — Auto-restore delay (LiveJavaPlugin.java)
Changed runTaskLater(..., 1L) to runTaskLater(..., 40L) — gives other plugins ~2 seconds to finish loading before scripts that depend on their APIs are restored.
#13 — Dead methods removed (ScriptManager.java)
Deleted startSpecificScript() and stopSpecificScript() — both were hardcoded to look up the "workspace" key which doesn't exist in the actual project-name-keyed architecture. They could never work.
#15 — editor.html no longer overwritten on every startup (LiveJavaPlugin.java)
Changed from Files.copy(..., REPLACE_EXISTING) to if (!editorHtml.exists()) Files.copy(...) — admin customizations to the editor survive restarts.
#16 — Swallowed IOException (LiveJavaPlugin.java)
catch (IOException ignored) {} in createDemoScript is now catch (IOException e) { getLogger().warning("Could not write demo script: " + e.getMessage()); }.
#17 — Demo script Turkish strings (LiveJavaPlugin.java)
All hardcoded Turkish strings in the generated demo script replaced with English:
- "LiveJava IDE ile Mükemmel Bir Şekilde Bildiriyorum!" → "Successfully started via LiveJava IDE!"
- "Kullanım: /livejavatest [heal/smite]" → "Usage: /livejavatest [heal/smite]"
- "Can fullendi!" → "Health restored!"
- "Güvenle bellekten silindi." → "Safely removed from memory."
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:VTjWnWKu:oBw0BY6p"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:VTjWnWKu:oBw0BY6p"
}
