OpenJavascript
1.5.0Create custom menus, commands, plugins, systems, basically anything with scripts in Javascript! With multithreading and Folia support! Everything is fully documented in the documentation!
1.5.0latestOpenJavascript 1.5.0 (NEW Vscode extension)Jul 29, 2026 Important changes:
task.repeat(delay, period): period has been changed from ticks to seconds. A new ticks()* method has been added, to use ticks instead of seconds, wrap the value liketask.repeat(delay, ticks(period)). * Theticks()method can be used in any task method that takes seconds as an argument, letting you pass tick values instead. * all minecraft versions below 1.18 are no longer supported!Welcome OpenJS Intellisense!
, letting all task API methods work in ticks instead of seconds. * Fixed a memory leak intask.latch.listener()where listeners were never garbage collected without a held reference.Dialog API
* Added tooltip support for dialog buttons:Dialog.baseButton.tooltip(text)andDialog.setTooltip(buttonId, text). Added a new serverScreen* dialog for showing dialogs when a player joins the server. * Added the ability to pass anAudienceintodialog.show()to support serverScreen dialogs.Dependency Management
* AddeddownloadDependency(), letting scripts pull in dependencies directly from Maven repositories. * Downloaded dependencies are now cached and usable viaimportClass(). * AddedloadDependency(folder)to load a dependency directly from any local path. * Imported libraries and dependencies can now also be loaded throughimportClass()andJava.type().Intellisense Extension
* Fixed type generation issues in the extension's Typegen. * Removed the leftover$placeholder from generated types. * Added thepluginglobal to intellisense. * Added aTypegenentry to the in-game help command. * Added more detailed error logging for the type generator. * Included missingjava.langclass types in Typegen, complete with generated Javadocs. * Added a progress bar for Javadoc generation, since it can take a while. * Extension now uses the newly importedjava.langclasses instead of relying on pre-built dummy classes. * Generated types now live inplugins/OpenJS/scripts/.openjs-types/generated, and the extension automatically detects and applies them Added a new "Auto Apply Definitions"* command to simplify type detection without needing to open a workspace. * Enabled type checking so the extension can now catch errors, not just autocomplete. * FixedimportClass("")autocomplete not triggering when the quotes were already typed. * FixedFileManagerservice methods not autocompleting for existing files.Performance & Internal Refactoring
Scripts now get force-compiled*, with compiled code cached to disk and reloaded on server restart, reducing script load times. * Reduced plugin file size after removing the old Folia scheduler and rewriting it. * Refactored script globals into a unifiedScriptGlobalsclass. * Fixed 5 separate memory leaks, including one in theFoliaSupportclass. * Improved overall main-thread performance. * Fixed debug logs not appearing during server initialization. * Added Bstats as a dependency. The goal of this update was to make the plugin more stable and reliable, so there are no more weird crashes or memory leaks. The documentation is still being updated to reflect the changes in this release. Thanks for your patience, everyone. This update took a while, mostly because of the VSCode extension.1.5.0-SpigotOpenJavascript 1.5.0 (Spigot/Bukkit/Cardboard)Jul 29, 2026 1.4.0OpenJavascript 1.4.0 (B I G Update!)Mar 31, 2026 ) 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](https://openjs.wiki.gd/apis-and-tools/services/dialogapi)* for managing in-game graphical dialogs.Task API
Tasks are now shared across all scripts*, meaning they can be cancelled from external scripts usingsetSharedandgetShared. * Addedtask.latch()which returns an object with the following thread-safe methods:.destroy(),.connect(function),.wait(),.invoke(),.fire(), and.invoked. * Addedtask.threadType()which returns a string indicating the thread type (main,async, orsync). * Enhanced thread safety inDelayTaskby properly handling thread interruptions.FileManager API
* AddedFileManager.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 receivenullpaths, causing errors. * Improved watcher robustness by handlingOVERFLOWevents and adding a null check for the watch service when clearing listeners. This fixed many errors with the file listener, its more reliable nowProtocolLib 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 `parseString` not 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.setTitle` via ProtocolLib*.Service Objects & Internal Refactoring
Refactored Folia support* initialisation for improved performance, including a centralisedinit()method and pre-cached scheduler. * RefactoredsetShared()&getShared(), replacing complex lock logic with a simpler and saferwait()/notifyAll()approach. * Optimised script preprocessing to read fromCODE_CACHEfirst, avoiding unnecessary disk reads. * Switched import ID generation inimportJavaToJsGCfrom 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. * AddedArray.from()support. Created custom mappings to support Minecraft 1.13 through the current version*. * FixedimportClass()it now correctly translates Java classes into Javascript objects * FixedJava.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
1.4.0-SpigotOpenJavascript 1.4.0-SpigotMar 31, 2026 1.4.0aOpenJavascript 1.4.0 AlphaMar 22, 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.setTitle` via ProtocolLib*.Task API
Tasks are now shared across all scripts*, meaning they can be cancelled from external scripts usingsetSharedandgetShared. * Addedtask.latch()which returns an object with the following thread-safe methods:.destroy(),.connect(function),.wait(),.invoke(),.fire(), and.Fired. * Addedtask.threadType()which returns a string indicating the thread type (main,async, orsync). * Enhanced thread safety inDelayTaskby properly handling thread interruptions.FileManager API
* AddedFileManager.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 receivenullpaths, causing errors. * Improved watcher robustness by handlingOVERFLOWevents and adding a null check for the watch service when clearing listeners. This fixed many errors with the file listener, its more reliable nowProtocolLib 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 `parseString` not 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 centralisedinit()method and pre-cached scheduler. * RefactoredPublicVarManager's waiting mechanism, replacing complex lock logic with a simpler and saferwait()/notifyAll()approach. * Optimised script preprocessing to read fromCODE_CACHEfirst, avoiding unnecessary disk reads. * Switched import ID generation inimportJavaToJsGCfrom 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. * AddedArray.from()support. Created custom mappings to support Minecraft 1.13 through the current version*. * FixedimportClass()it now correctly translates Java classes into Javascript objects * FixedJava.type()it can now correctly read and translate external plugin classes too! This is huge, trust me :)1.3.2OpenJavascript 1.3.2 (Hotfix)Jan 30, 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,000KB`* through code cleanup and a complete rewrite of theUpdateChecker. * Fixed an error where [task.bindToUnload](https://openjs.wiki.gd/apis-and-tools/globals/task#bindto… would crash because the plugin attempted to schedule tasks during the shutdown sequence. * Resolved aConcurrentModificationExceptionthat occurred when destroying an inventory immediately upon a player closing it.Custom-Menus Api Updates
[Menu.setTitle(String):*](https://openjs.wiki.gd/apis-and-tools/services/inventorya… Added the missingsetTitlemethod. [Setting any Menu/Inventory slot](https://openjs.wiki.gd/apis-and-tools/services/inventoryapi#setslot) to `null` now automatically converts it to Air* instead of throwing a null pointer error.FileManager Api Updates
The [FileManager](https://openjs.wiki.gd/apis-and-tools/services/filemanager) service has received a few new methodsNew 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.[
`..` (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](https://openjs.wiki.gd/apis-and-tools/services/filemanager) path prefixes for easier navigation:FileManager.getFiles("/");returns everything in the script's local folder.1.3.0OpenJavascript 1.3.0Jan 11, 2026 Improvements
- Fixed DiskApi issues that caused unexpected behavior - DiskApi now removes datastore entries when values areNULL- 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 safelyAdditions
- Completely rewritten script management & I/O system - Significantly reduces unnecessary disk operations - Added official [folder support](https://docs-mc-1.gitbook.io/openjs-docs/rescources/advan… for scripts - Scripts are automatically loaded when added while the server is running - Added [requireScript](https://docs-mc-1.gitbook.io/openjs-docs/apis-and-tools/g… - Introduced global [[script]](https://docs-mc-1.gitbook.io/openjs-docs/apis-and-tools/g… class - Fixed scripts failing to load via command due to parsing errors - Added [task.bindToUnload(function)](https://docs-mc-1.gitbook.io/openjs-docs/apis-and-tools/g… 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 scriptsAPIs & Services improvements
- Introduced [Services](https://docs-mc-1.gitbook.io/openjs-docs/apis-and-tools/s… 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](https://docs-mc-1.gitbook.io/openjs-docs/apis-and-tools/s… Service - https://gitlab.com/spidermodders/openjs/-/milestones/3#ta… - Added [InventoryApi](https://docs-mc-1.gitbook.io/openjs-docs/apis-and-tools/s… service for simplified menu & inventory management - [Example Menu](https://docs-mc-1.gitbook.io/openjs-docs/example-scripts/… - ](https://docs-mc-1.gitbook.io/openjs-docs/apis-and-tools/g… - Allows scripts to override existing plugin commandsDeprecations
- Added [importClass()](https://docs-mc-1.gitbook.io/openjs-docs/apis-and-tools/g… for runtime class importing - Deprecated//!import xxx.xxxin favor of [importClass()](https://docs-mc-1.gitbook.io/openjs-docs/apis-and-tools/g… - Deprecated feature flags / service flagsConfiguration & Automation
- AddedautoReloadScriptsconfig option - Toggle automatic reload when scripts change or are addedThreading & more Folia Support
- Added [task.thread(function)](https://docs-mc-1.gitbook.io/openjs-docs/apis-and-tools/g… for parallel execution - This means you can multithread scripts on non-Folia servers now - Services and PlaceholderAPI are now fully thread-safeDocumentation
- Added ["Advanced Guides"](https://docs-mc-1.gitbook.io/openjs-docs/rescources/advan… 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](https://docs-mc-1.gitbook.io/openjs-docs/example-scripts/… [Nuke Menu](https://docs-mc-1.gitbook.io/openjs-docs/example-scripts/… and [Spawn Menu](https://docs-mc-1.gitbook.io/openjs-docs/example-scripts/… - All old example scripts have been updated to use the latest non deprecated methods1.2.0OpenJavascript 1.2.0Jul 31, 2025 OpenJS v1.2.0
Major Changes
- Added official [internal support for ProtocolLib](https://docs-mc-1.gitbook.io/openjs-docs/openjs-component… - Introduced BridgeEngine system for [external plugin bridges](https://docs-mc-1.gitbook.io/openjs-docs/openjs-component… - [Task library](https://docs-mc-1.gitbook.io/openjs-docs/openjs-component… now supports creating Java listeners/proxies from scripts - Universal cleanup system for listeners and proxies - PlaceholderAPI support now lazy-loads for better performance - Ported [PlaceholderAPI integration](https://docs-mc-1.gitbook.io/openjs-docs/openjs-component… to the new BridgeEngine systemFixes
- Commands now properly unregister - Fixed placeholders being unregistered after PlaceholderAPI reload - FixednullFailed to unregister all script commandserror - Fixed missing script source name in rare ghost error cases - Fixed missing tab-completion for theversioncommandOptimizations
- Minimized IO operations during script loading - Improved error catching to prevent script freezing - Removed [feature flag](https://docs-mc-1.gitbook.io/openjs-docs/openjs-component… limitationsAdditions
- Added [removePlaceholder(String prefix)](https://docs-mc-1.gitbook.io/openjs-docs/openjs-component… for scripts - Added new commands:/documentationand/page- Added missing [unregisterEvent()](https://docs-mc-1.gitbook.io/openjs-docs/openjs-component… methodDocumentation
- Updated and extended documentation: - Added missing entries: [getMethod](https://docs-mc-1.gitbook.io/openjs-docs/openjs-component… [removePlaceholder](https://docs-mc-1.gitbook.io/openjs-docs/openjs-component… [ProtocolLib](https://docs-mc-1.gitbook.io/openjs-docs/openjs-component… - Split into cleaner sections to reduce clutter - documented how to make scripts [interact with external plugins](https://docs-mc-1.gitbook.io/openjs-docs/openjs-component… - added [script example that modifies packets to create custom fluids](https://docs-mc-1.gitbook.io/openjs-docs/rescources/examp… --- Sorry for the update delay, I'm currently working on my driving license. Thanks for your patience and enjoy the update.1.1.0OpenJavascript 1.1.0 (Huge update)Jun 28, 2025 Update Log
- Rewritten the async system for full Folia compatibility - Now finally stable on Folia, a major milestone - Introduced a new [task library](https://docs-mc-1.gitbook.io/openjs-docs/openjs-component… simpler, more intuitive, and fully cross-platform compatible - Added support for [loading.jar](https://docs-mc-1.gitbook.io/openjs-docs/openjs-component… files directly into scripts - Upgraded from ECMAScript 5.1 to ECMAScript 6.0 (Modern JavaScript features are now available in OpenJS) - Implemented script security enforcement - Completed [documentation](https://docs-mc-1.gitbook.io/openjs-docs) for all previously half-documented components - added [new example script](https://docs-mc-1.gitbook.io/openjs-docs/example-scripts/… that runs a local ai with the new features - [registerEvent](https://docs-mc-1.gitbook.io/openjs-docs/openjs-component… can now take functions directly instead of having to put them in a array ---We also have a dedicated server now
Need help or want to share your scripts? [Join our Discord for support and discussion](https://discord.gg/XuRC4at2Ha)  - Fixed Bstats silently failing to load on Folia servers1.0.6OpenJavascript 1.0.6May 25, 2025 OpenJS Update 1.0.6
- A [Wiki for OpenJS](https://docs-mc-1.gitbook.io/openjs-docs) has been created. Everything is documented from the ground up, although it is not yet fully complete. - Added [official PlaceholderAPI](https://docs-mc-1.gitbook.io/openjs-docs/openjs-component… support. - Introduced a new [DiskAPI system](https://docs-mc-1.gitbook.io/openjs-docs/openjs-component… for loading and saving files. - Added a permission system for [custom commands](https://docs-mc-1.gitbook.io/openjs-docs/openjs-component… - Fixed an issue where custom commands were not appearing. - Fixed scheduling not working correctly. - Deprecated getVar and setVar due to a memory leak, in favor of the new [DiskAPI](https://docs-mc-1.gitbook.io/openjs-docs/openjs-component…1.0.5OpenJavascript 1.0.5Jan 27, 2025
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta