KubeJS ProjectE: Scriptable EMC and Transmutation Control

Mastering KubeJS ProjectE: Customize EMC and World Transmutations Minecraft modding thrives on flexibility, and few combinations unlock as much potential as KubeJS and ProjectE. The KubeJS ProjectE addon bridges these two giants, giving server owners and modpack creators the ability to script eve...

Download kubejsprojecte for Minecraft 1.21.1, 1.19.2

Original name: kubejsprojecte

Minecraft: 1.19.2, 1.21.1

Loaders: Forge, NeoForge

FileVersionLoaderSize
kubejsprojecte-1.0.jar1.19.2Forge11 КБDownload
kubejsprojecte-1.1.jar1.19.2Forge12 КБDownload
kubejsprojecte-1.2.jar1.19.2Forge11 КБDownload
kubejsprojecte-1.2.1.jar1.19.2Forge11 КБDownload
kubejsprojecte-1.3.1.jar1.21.1NeoForge10 КБDownload
kubejsprojecte-1.3.3.jar1.21.1NeoForge10 КБDownload

Mastering KubeJS ProjectE: Customize EMC and World Transmutations

Minecraft modding thrives on flexibility, and few combinations unlock as much potential as KubeJS and ProjectE. The KubeJS ProjectE addon bridges these two giants, giving server owners and modpack creators the ability to script every aspect of ProjectE’s Equivalent Exchange system using clean JavaScript. Whether you want to rebalance item EMC values, grant players energy through custom interactions, or define what the Philosopher’s Stone can transform, this tool puts you in full control without ever touching a Java IDE.

What Is KubeJS ProjectE?

At its core, KubeJS ProjectE is a lightweight KubeJS addon that exposes ProjectE’s internal mechanics to the server_scripts and startup_scripts folders. It listens for events fired by ProjectE and lets you hook into them with familiar KubeJS syntax. You can set absolute EMC values, define conditional transmutation recipes, and even manipulate a player’s stored EMC on the fly. This opens up endless possibilities for custom progression, skyblock challenges, or simply fixing balance quirks that the default ProjectE configuration doesn’t address.

When assembling a modpack around these scripting tools, many builders turn to a launcher that simplifies dependency management. The foxygame.net launcher, for instance, lets you browse and install mods like KubeJS, ProjectE, and their addons directly from its integrated menu, making it a convenient starting point for script-heavy setups.

Key Features and Scripting Capabilities

KubeJS ProjectE introduces several event handlers that feel instantly familiar if you have used KubeJS before. All scripts run on the server side, ensuring that your custom rules are enforced consistently for every player. Below are the main areas you can control.

Setting Custom EMC Values

The ProjectEEvents.setEMC event is your primary tool for overriding or defining the energy value of any item. You can use three distinct methods, each with a specific purpose:

  • setEMC – Assigns an absolute EMC value, completely ignoring any auto-generated calculations.
  • setEMCBefore – Sets the EMC before other calculations happen, allowing derived values (like those from crafting recipes) to be generated from this base.
  • setEMCAfter – Forces a final value after all other EMC mappings are processed, useful for last-minute overrides.

A typical script might look like this inside server_scripts:

ProjectEEvents.setEMC(event => {
    // Makes cobblestone worthless
    event.setEMC("minecraft:cobblestone", 0);
    // Sets a high base value for sticks so crafted items inherit it
    event.setEMCBefore("minecraft:stick", 10000);
});

Because EMC values can become astronomically large, all player EMC amounts are handled as strings internally, preventing overflow issues that could crash your server.

Manipulating Player EMC

Beyond static item values, you can interact with a player’s personal EMC pool using item right-click events or any other KubeJS trigger. The addon provides getPlayerEMC, addPlayerEMC, and setPlayerEMC functions. Here is an example that tells a player their current EMC and then adds 1000 to it when they right-click with a stick:

ItemEvents.rightClicked("minecraft:stick", event => {
    let player = event.player;
    player.tell("Your emc is " + ProjectE.getPlayerEMC(player));
    ProjectE.addPlayerEMC(player, 1000);
    player.tell("Your new emc is " + ProjectE.getPlayerEMC(player));
});

This approach lets you design interactive tools, quest rewards, or even EMC-based currency systems that feel deeply integrated with the game.

World Transmutations

The Philosopher’s Stone is iconic for its ability to transform blocks, and KubeJS ProjectE lets you define those transformations in startup_scripts. Using ProjectEEvents.registerWorldTransmutations, you can map any block to any other block, creating custom chains that go far beyond the default recipes. For example:

ProjectEEvents.registerWorldTransmutations(event => {
    event.transform("minecraft:tnt", "minecraft:oak_planks");
});

This single line makes TNT turn into oak planks when right-clicked with the Philosopher’s Stone. You can stack multiple transformations, add conditions, or even integrate with other mods by referencing their block IDs.

Practical Use Cases for Modpack Creators

Why would you want to script ProjectE instead of relying on its built-in config? The answer lies in precision and dynamism. Here are a few scenarios where KubeJS ProjectE shines:

  • Skyblock balancing – Prevent early-game EMC exploits by setting cobblestone and other infinite resources to zero while keeping high-tier items attainable.
  • Custom progression gates – Use setEMCBefore to create a dependency tree where players must unlock certain items before others gain value.
  • Interactive EMC rewards – Grant EMC when a player completes an advancement or trades with a custom villager, all scripted without additional mods.
  • Unique transmutation puzzles – Design adventure maps where the Philosopher’s Stone transforms blocks in unexpected ways, guiding players through hidden paths.

Getting Started with Your Own Scripts

To begin, you need KubeJS, ProjectE, and the KubeJS ProjectE addon installed on your server or single-player world. Place your scripts in the kubejs/server_scripts and kubejs/startup_scripts folders, using the .js extension. A reload command like /kubejs reload server_scripts applies changes instantly, making iteration fast and painless.

Testing your EMC mappings is straightforward: use the in-game ProjectE tablet to check values, or write a small debug script that logs results to the console. Because everything runs through KubeJS, you can also combine these features with other addons—for instance, locking transmutations behind a game stage from the Game Stages mod.

Conclusion

KubeJS ProjectE transforms ProjectE from a powerful but static mod into a fully scriptable framework. Whether you are fine-tuning a kitchen-sink pack or building a tightly controlled expert experience, the ability to set EMC values, manipulate player energy, and define world transmutations through clean JavaScript gives you a level of control that was previously reserved for Java developers. The examples above only scratch the surface; once you understand the event structure, the only limit is your imagination. So grab your favorite text editor, fire up your scripts, and start reshaping the very fabric of Equivalent Exchange.