Mineuniverse
Log in Register
Plugins

JsPig

JsPig provides full access to the Bukkit API through GraalVM, allowing developers to leverage the flexibility and simplicity of JavaScript to efficiently create and manage Minecraft plugins.
by user_lrubexronk3nyj7m
Download Claim this project
22 downloads
0 likes
Updated Jun 30, 2026
0 hypes
Admin Tools Developer Tools Fun Miscellaneous World Editing and Management

Description

JsPig provides complete access to the Bukkit API via GraalVM, allowing developers to efficiently create and manage Minecraft plugins using JavaScript's flexibility and simplicity.

Getting Started

Before you start, please use GraalVM JDK 21 as your development environment and the environment for running Java programs.

  1. Place the plugin in the plugins folder of your bukkit-series server.
  2. Start the server, and the plugin will automatically generate a folder with the same name as the plugin in the plugins directory. Enter the command JsPig declare in the console to generate the declaration file global.d.ts.
  3. Open the plugin's data folder with VSCode to start writing JavaScript plugins.

Advanced Features

  • Create a new folder in the plugin's data directory, naming it according to general naming conventions. Within this folder, create a package.json file and include the following code:
{
  "main": "./block.js",
  "modules": [
    "registry",
    "scripts-manager",
    "console",
    "timer"
  ]
}
  • Then, create a file named block.js in the folder to enable advanced plugin development.

block.js is just an example file; you can name it anything.

Configurable Options in modules:

  • registry for event registration.
  • scripts-manager for script management.
  • console for logging.
  • timer for precise timing, adding support for setTimeout, setInterval, clearTimeout, and clearInterval.

Custom Commands

Each package.json in a folder can define custom commands. An example configuration is as follows:

{
  "command": {
    "command": "list",
    "description": "List all subcommands",
    "usage": "Use /<main command> list",
    "permission": "JsPig.JsExtend.List",
    "permissionMessage": "You do not have permission to use this command."
  }
}
// JsExtend.list corresponds to "command": "list". JsExtend. is a fixed prefix and is case-sensitive.
registry.on("JsExtend.list", (sender, command, args) => {

})

Note: A package.json can only define one command.

To allow players to use the command correctly, such as the list command above, you need a permission management plugin like LuckPerms-Bukkit.

Add a permission node like JsPig.JsExtend.List (case-insensitive), set the value of the permission node to true, and reload permissions on the server. Players will then be able to use the command.

In the game, enter the command: /jsextend list or /jse list.

If your custom command has additional options, use /jse <command> <command option> <option>. You can retrieve these options via args.

Below is the full package.json configuration for using a custom command:

{
  "main": "./block.js",
  "modules": [
    "registry"
  ],
  "command": {
    "command": "list",
    "description": "List all subcommands",
    "usage": "Use /<main command> list",
    "permission": "JsPig.JsExtend.List",
    "permissionMessage": "You do not have permission to use this command."
  }
}

plugin Commands

permission: JsPig.op

default: op

  • jspig reload
  • jspig load <js>
  • jspig unload <js>
  • jspig list
  • jspig declare

permission: JsPig.JsExtend

default: default

  • jse <command>

Example

github

JsPig-1.1-SNAPSHOT.jar
MC 1.20.1
Release 2025-03-10 Get
JsPig-1.0-SNAPSHOT.jar
MC 1.20.1
Release 2025-01-24 Get

You Might Also Like

AdBolt Advertising Network
Make money from your Minecraft server by running ads!
9,992
Mineload
Mineload
9,978
BeastTP
BeastTP v1.0 - Teleportation Made Easy! -[Permissions][1317]
9,966
RegionManager
generate regions with just one command!
9,950
TimeKeeper
Keep the Server-Playtime per Day
9,948
SimpleAdmin
simple way to ban/kick unwanted players from your server
9,945