
OpenJavascript
Create custom menus, commands, plugins, systems, basically anything with scripts in Javascript! With multithreading and Folia support! Everything is fully documented in the documentation!
1.1K
21
OpenJavascript 1.4.0 (B I G Update!)
release1 апреля 2026 г.
General Fixes & Improvements
- Scripts run more than 2.5 times faster than in previous versions now! No changes needed, just update!
- You can convert scripts (scriptPacks) into plugins now!
- Added support for minecraft version 26.1
- Reviewed and fixed numerous bugs across the entire codebase.
- Added a debug mode boolean to the config for easier troubleshooting.
- Fixed a bug where reloading with the reload command would not update the debug mode boolean until a full restart.
- Fixed an issue where deleting folders inside the script folder was not possible due to the file watcher locking them.
- Removed all deprecated code and cleaned up a large portion of the codebase.
Dialog API
- Created a new DialogApi for managing in-game graphical dialogs.
Task API
- Tasks are now shared across all scripts, meaning they can be cancelled from external scripts using
setSharedandgetShared. - Added
task.latch()which returns an object with the following thread-safe methods:.destroy(),.connect(function),.wait(),.invoke(),.fire(), and.invoked. - Added
task.threadType()which returns a string indicating the thread type (main,async, orsync). - Enhanced thread safety in
DelayTaskby properly handling thread interruptions.
FileManager API
- Added
FileManager.getPath(File), which returns the relative path of a file based on the script's folder. - Added support for ZIP files: any
.zipfile containing aninfo.jsonwill automatically be extracted into a folder named after the zip file. - Fixed a bug where the file watcher could receive
nullpaths, causing errors. - Improved watcher robustness by handling
OVERFLOWevents and adding a null check for the watch service when clearing listeners. This fixed many errors with the file listener, its more reliable now
ProtocolLib Integration
- Added the following new ProtocolLib methods:
broadcastServerPacket(packet, source, broadcastRange)broadcasts a packet to nearby players.sendServerPacket(player, packet)sends a packet directly to a specific player.createPacket(packetTypePath)creates a packet by type path.
PlaceholderAPI
- Fixed
parseStringnot working correctly when passing an offline player as the target.
Inventory API
- Added the following new methods:
getSlot(slot)retrieves the item in a given slot.setItemLore(slot, lore)sets the lore of an item in a slot.setItemName(slot, name)sets the display name of an item in a slot.
- Fixed colors not being applied correctly in item lore.
- Added backwards compatibility for
Inventory.setTitlevia ProtocolLib.
Service Objects & Internal Refactoring
- Refactored Folia support initialisation for improved performance, including a centralised
init()method and pre-cached scheduler. - Refactored
setShared()&getShared(), replacing complex lock logic with a simpler and saferwait()/notifyAll()approach. - Optimised script preprocessing to read from
CODE_CACHEfirst, avoiding unnecessary disk reads. - Switched import ID generation in
importJavaToJsGCfrom random strings to anAtomicLongcounter (__import_0,__import_1, ...) for better performance. - Added player permission verification (
openjs.use) at the start ofonCommandto prevent unauthorised command execution. - Added
Array.from()support. - Created custom mappings to support Minecraft 1.13 through the current version.
- Fixed
importClass()it now correctly translates Java classes into Javascript objects - Fixed
Java.type()it can now correctly read and translate external plugin classes too! This is huge, trust me :)
Thank you, guys, for downloading this plugin. I’ve poured my heart and a lot of passion into this project 💚
OpenJavascript 1.4.0-Spigot
release1 апреля 2026 г.Нет описания изменений
OpenJavascript 1.4.0 Alpha
alpha22 марта 2026 г.Alpha Build - Use at your own risk! Full release soon!
Changelog
General Fixes & Improvements
- Reviewed and fixed numerous bugs across the entire codebase.
- Added a debug mode boolean to the config for easier troubleshooting.
- Fixed a bug where reloading with the reload command would not update the debug mode boolean until a full restart.
- Fixed an issue where deleting folders inside the script folder was not possible due to the file watcher locking them.
- Removed all deprecated code and cleaned up a large portion of the codebase.
Dialog API
- Created a new DialogService for managing in-game graphical dialogs.
- Added NMS support for the Dialog API.
- Added backwards compatibility for
Inventory.setTitlevia ProtocolLib.
Task API
- Tasks are now shared across all scripts, meaning they can be cancelled from external scripts using
setSharedandgetShared. - Added
task.latch()which returns an object with the following thread-safe methods:.destroy(),.connect(function),.wait(),.invoke(),.fire(), and.Fired. - Added
task.threadType()which returns a string indicating the thread type (main,async, orsync). - Enhanced thread safety in
DelayTaskby properly handling thread interruptions.
FileManager API
- Added
FileManager.getPath(File), which returns the relative path of a file based on the script's folder. - Added support for ZIP files: any
.zipfile containing aninfo.jsonwill automatically be extracted into a folder named after the zip file. - Fixed a bug where the file watcher could receive
nullpaths, causing errors. - Improved watcher robustness by handling
OVERFLOWevents and adding a null check for the watch service when clearing listeners. This fixed many errors with the file listener, its more reliable now
ProtocolLib Integration
- Added the following new ProtocolLib methods:
broadcastServerPacket(packet, source, broadcastRange)— broadcasts a packet to nearby players.sendServerPacket(player, packet)— sends a packet directly to a specific player.createPacket(packetTypePath)— creates a packet by type path.
PlaceholderAPI
- Fixed
parseStringnot working correctly when passing an offline player as the target.
Inventory API
- Added the following new methods:
getSlot(slot)retrieves the item in a given slot.setItemLore(slot, lore)sets the lore of an item in a slot.setItemName(slot, name)sets the display name of an item in a slot.
- Fixed colors not being applied correctly in item lore.
Service Objects & Internal Refactoring
- Refactored Folia support initialisation for improved performance, including a centralised
init()method and pre-cached scheduler. - Refactored
PublicVarManager's waiting mechanism, replacing complex lock logic with a simpler and saferwait()/notifyAll()approach. - Optimised script preprocessing to read from
CODE_CACHEfirst, avoiding unnecessary disk reads. - Switched import ID generation in
importJavaToJsGCfrom random strings to anAtomicLongcounter (__import_0,__import_1, ...) for better performance. - Added player permission verification (
openjs.use) at the start ofonCommandto prevent unauthorised command execution. - Added
Array.from()support. - Created custom mappings to support Minecraft 1.13 through the current version.
- Fixed
importClass()it now correctly translates Java classes into Javascript objects - Fixed
Java.type()it can now correctly read and translate external plugin classes too! This is huge, trust me :)
OpenJavascript 1.3.2 (Hotfix)
release31 января 2026 г.This release is just a hotfix, containing crucial fixes and new features.
General Fixes & Improvements
- Migrated from Nashorn 15.6 to 15.7 for better JavaScript compatibility and performance.
- Reduced plugin file size by
~1,000KBthrough code cleanup and a complete rewrite of theUpdateChecker. - Fixed an error where
task.bindToUnloadwould crash because the plugin attempted to schedule tasks during the shutdown sequence. - Resolved a
ConcurrentModificationExceptionthat occurred when destroying an inventory immediately upon a player closing it.
Custom-Menus Api Updates
- Menu.setTitle(String): Added the missing
setTitlemethod. - Setting any Menu/Inventory slot to
nullnow automatically converts it to Air instead of throwing a null pointer error.
FileManager Api Updates
The FileManager service has received a few new methods
New Methods:
getFile(path): Retrieves a specific file.removeFile(path): Deletes a file.getFolder(path): Retrieves a directory.removeFolder(path): Deletes a directory and its contents.getFiles(path): Returns an array of all files within the specified folder.
FileManager path prefixes for easier navigation:
..(Parent Directory): Jump up one level out of the current folder./(Script Root): Quickly reference the directory where your script is currently located.- Example:
FileManager.getFiles("/");returns everything in the script's local folder.
OpenJavascript 1.3.0
release12 января 2026 г.Improvements
- Fixed DiskApi issues that caused unexpected behavior
- DiskApi now removes datastore entries when values are
NULL - DiskApi now persists active files on script reload
- Fixed rare ConcurrentModificationException issues when:
- Registering commands
- Syncing commands
- Improved error handling: script exceptions now log as ERROR instead of WARN
- All scripts now unload before any other shutdown logic
- Scripts unload asynchronously on the main thread, allowing tasks to finish safely
Additions
- Completely rewritten script management & I/O system
- Significantly reduces unnecessary disk operations
- Added official folder support for scripts
- Scripts are automatically loaded when added while the server is running
- Added requireScript
- Introduced global
[script]class - Fixed scripts failing to load via command due to parsing errors
- Added
task.bindToUnload(function)to register unload handlers - Yielding operations now block unload until execution completes
- Cache behavior improved:
- Cache drops only after I/O operations complete
- Fully handled automatically by scripts
APIs & Services improvements
-
Introduced Services API
- ProtocolLib and PlaceholderAPI are now service-based
-
PlaceholderAPI improvements:
- Fully thread-safe (fixes random unregister issues)
- OfflinePlayer support
- Parsing support for offline players
-
Added FileSystem Service
-
Added InventoryApi service for simplified menu & inventory management
-

Commands & Runtime fixes
- Refactored addCommand / registerCommand
- Added
removeCommand(commandName)- Allows scripts to override existing plugin commands
Deprecations
- Added
importClass()for runtime class importing - Deprecated
//!import xxx.xxxin favor ofimportClass() - Deprecated feature flags / service flags
Configuration & Automation
- Added
autoReloadScriptsconfig option- Toggle automatic reload when scripts change or are added
Threading & more Folia Support
- Added
task.thread(function)for parallel execution- This means you can multithread scripts on non-Folia servers now
- Services and PlaceholderAPI are now fully thread-safe
Documentation
- Added "Advanced Guides" section that also explains how to use the new folder support
- Reconstructed everything to find APIs and Methods faster
- Added 3 new example scripts: Food Bait, Nuke Menu and Spawn Menu
- All old example scripts have been updated to use the latest non deprecated methods
Совместимость
Создатели
Детали
Лицензия:AGPL-3.0-only
Опубликован:1 год назад
Обновлён:2 недели назад
