/CodeEffect

(24w18a) Adds a new enchantment effect that runs a registered method. Similar to run_function but with code

Primary LanguageJavaOtherNOASSERTION

For Users

This mod doesn't do anything on its own. This library allows mods to call code in data-driven enchantments.

For Devs

Registering your code:

CodeEffect.register(HOOK_ID, (world, level, context, user, pos) -> {
    // Code Here
});

or

CodeEffect.register(HOOK_ID, this::stuff);
// ...
public void stuff(ServerWorld world, int level, EnchantmentEffectContext context, Entity user, Vec3d pos) {
    // Code Here
}

Using it:

"effect": {
     "type": "code_effect:run_code",
     "hook": "HOOK_ID"
}

Full Enchantment example:
Sharpness but modified to run the code every tick

{
  "anvil_cost": 1,
  "description": {
    "translate": "enchantment.minecraft.sharpness"
  },
  "effects": {
    "minecraft:tick": [
      {
        "effect": {
          "type": "code_effect:run_code",
          "hook": "HOOK_ID"
        }
      }
    ]
  },
  "exclusive_set": "#minecraft:exclusive_set/damage",
  "max_cost": {
    "base": 21,
    "per_level_above_first": 11
  },
  "max_level": 5,
  "min_cost": {
    "base": 1,
    "per_level_above_first": 11
  },
  "primary_items": "#minecraft:enchantable/sword",
  "slots": [
    "mainhand"
  ],
  "supported_items": "#minecraft:enchantable/weapon",
  "weight": 10
}