Janino Compatibility Matrix
What modern Java syntax compiles, and what doesn't.
The plugin uses Janino as its embedded compiler, and it doesn’t implement the full modern Java language. Below are the results of direct testing.
| Works | Doesn’t work |
|---|---|
Java 8-and-earlier syntax (loops, try/catch, arrays, generics on JDK types, switch statements) |
Lambda expressions (x -> ...) — Compilation of lambda expression NYI |
Text blocks ("""...""", Java 15+) |
Method references (Foo::bar) — Compilation of method reference NYI |
Local classes, e.g. class Box { ... } inside a block |
final class declared as a local class — IDENTIFIER expected instead of 'class' |
switch expressions (case X -> value, Java 14+) — Unexpected token "switch" in primary |
|
var local-variable type inference (Java 10+) — Local variable type inference NYI |
|
Collections generic-typed with a local class type their elements as Object; needs an explicit cast ((Hit) list.get(i)) |
Compile failures for unsupported syntax are normal compiler errors, mapped precisely to the script line and harmless to the running server — they simply won’t compile until Janino adds support for that feature.