PaperTS
1.6.0PaperTS is a Paper Minecraft plugin that enables you to write Minecraft server plugins in TypeScript.
1.6.0latestPaperTS 1.6.0Jan 16, 2026 :rocket: PaperTS 1.6.0 Released In this new release we included the Java Bridge API, a new interface that bridges the gap between TypeScript and the underlying Java Virtual Machine. It was a contribution from @sirio_03 . :tools: Setup & Type Definitions To use the Java Bridge with full TypeScript support, create a javaBridge.ts file in your project and add the following type declarations:
:bulb: Usage Examples 1. Managing Enums Access any Bukkit enum without needing a wrapper.declare const Java: { /** * Get an enum value by class name and value name. */ enumValue<T = unknown>(className: string, valueName: string): T; /** * Get all values of an enum. */ enumValues<T = unknown>(className: string): T[]; /** * Create a new instance of a Java class. */ newInstance<T = unknown>(className: string, ...args: unknown[]): T; /** * Call a static method on a Java class. */ callStatic<T = unknown>( className: string, methodName: string, ...args: unknown[] ): T; /** * Get a static field value from a Java class. */ getStatic<T = unknown>(className: string, fieldName: string): T; /** * Check if a Java class exists. */ classExists(className: string): boolean; };
2. Instantiating Java Classes Perfect for creating objects like Location.const gameModes = Java.enumValues("org.bukkit.GameMode"); player.sendMessage(`Available modes: ${gameModes.join(", ")}`);
3. Static Methods & Fields Interact with the Server constants directly.// Create a new Location const world = Java.callStatic("org.bukkit.Bukkit", "getWorld", "world"); const location = Java.newInstance("org.bukkit.Location", world, 100, 64, 100); player.teleport(location);
4. Conditional Integration Check if a plugin (like Vault or WorldEdit) is installed before attempting to use it.// Call a static method Java.callStatic("org.bukkit.Bukkit", "broadcastMessage", "Hello from PaperTS!"); const onlinePlayer: any[] = Java.callStatic( "org.bukkit.Bukkit", "getOnlinePlayers" ); onlinePlayer.forEach((player) => player.sendMessage("Hi everyone")); // Get a static constant const legacyPrefix = Java.getStatic("org.bukkit.Material", "LEGACY_PREFIX");; player.sendMessage(legacyPrefix);// Check if a class exists before using it if (Java.classExists("com.example.CustomPlugin")) { const customValue = Java.callStatic("com.example.CustomPlugin", "getValue"); player.sendMessage(`Custom plugin value: ${customValue}`); } else { player.sendMessage("Custom plugin not found"); } // Useful for optional integrations const hasVault = Java.classExists("net.milkbowl.vault.economy.Economy"); if (hasVault) { // Initialize Vault integration }1.5.0PaperTS 1.5.0Jan 4, 2026 - AddedrunTypefor setting the method of running the script inpackage.json- Added a way to cleanup resources before script exiting1.3.0PaperTS 1.3.0Nov 7, 2025 - Update Javet to 5.0.1 (Node.JS is now atv24.10.0) - Added a method in the PaperTS globals to create a callable from a JS function - Added a method to get the the JavaPlugin1.2.0PaperTS 1.2.0Jul 25, 2025 - Decrease JAR size, it nows downloads Node.JS Engine at runtime - Include method for setting and getting data from persistent data container1.1.3PaperTS 1.1.3Jul 25, 2025 - Improve load and unload of modules - Improve information about registering events and commands1.1.2PaperTS 1.1.2Jul 22, 2025
Similar projects
Script →Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
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
Emotecraft
Create your own emotes in Minecraft.
7.5MSueta
Simple Tpa
A simple tpa plugin which sends requests
5.4MSueta
Common Network
Forge and Fabric Unified Networking Solution
3.9MSueta