WrappersAPI - A library for easy addition of custom enchantments icon

WrappersAPI - A library for easy addition of custom enchantments -----

A useful API that lets plugin creators add their own custom enchantments very easily!



This is a plugin that serves as an API for easy creation of custom enchantments in plugins. Plugins usually need to have an enchantment wrapper to provide the methods needed for a custom enchantment, as well as a way to register these custom enchantments into the Enchantment class, so that the spigot API thinks that it is a Minecraft enchantment like all the vanilla ones. Well, using this library, creating enchantments is as easy as pie! This is the main class of an example plugin that utilizes this API:
Code (Java):
package whatevertheheck.customenchtest ;

import org.bukkit.enchantments.Enchantment ;
import org.bukkit.enchantments.EnchantmentTarget ;
import org.bukkit.plugin.java.JavaPlugin ;

import me.manossef.api.wrappers.CustomEnchantment ;
import me.manossef.api.wrappers.EnchantmentWrapper ;

public class Main extends JavaPlugin {
 
    public static final Enchantment CUSTOM_ENCH_TEST = new EnchantmentWrapper ( "custom_ench_test", "Custom Ench Test", 1, 1, EnchantmentTarget. BREAKABLE, true, false ) ;
 
    @Override
    public void onEnable ( ) {
   
        CustomEnchantment. register (CUSTOM_ENCH_TEST ) ;
   
    }
 
    @Override
    public void onDisable ( ) {
   
    }
 
}
See? Adding custom enchantments now only requires declaring a custom enchant as an instance of EnchantmentWrapper and calling a register() method for it in onEnable().

AN IMPORTANT NOTE: Any enchantment added using this plugin has no way of knowing how to display itself in the tooltip of an item. Any item with a custom enchantment given through your plugin should also have a lore that shows that the item has a custom enchantment.

Adding custom enchantments through plugins
There are a few different ways to construct an enchantment which you should be made aware of:

1) Constructing an enchantment with a key in the "minecraft:" namespace, a name and a maximum level.
2) Constructing an enchantment with a key in the "minecraft:" namespace, a name, a maximum level and a starting level.
3) Constructing an enchantment with a key in the "minecraft:" namespace, a name, a maximum level, a starting level and an EnchantmentTarget, which is basically what type of items this enchantment can be applied to.
4) Constructing an enchantment with a key in the "minecraft:" namespace, a name, a maximum level, a starting level, an EnchantmentTarget and whether the enchantment is treasure.
5) Constructing an enchantment with a namespaced key, a name and a maximum level.
6) Constructing an enchantment with a namespaced key, a name, a maximum level and a starting level.
7) Constructing an enchantment with a namespaced key, a name, a maximum level, a starting level and an EnchantmentTarget.
8) Constructing an enchantment with a namespaced key, a name, a maximum level, a starting level, an EnchantmentTarget and whether the enchantment is treasure.

After constructing the enchantments (yes you can add more than one in the same plugin), calling them when the plugin is enabled is necessary for them to work.

All of the above is shown here:
Code (Java):
package whatevertheheck.moreench ;

import org.bukkit.NamespacedKey ;
import org.bukkit.enchantments.Enchantment ;
import org.bukkit.enchantments.EnchantmentTarget ;
import org.bukkit.plugin.java.JavaPlugin ;

import me.manossef.api.wrappers.CustomEnchantment ;
import me.manossef.api.wrappers.EnchantmentWrapper ;

public class MoreEnch extends JavaPlugin {

    public static final Enchantment TEST1 = new EnchantmentWrapper ( "test1", "Test 1", 1 ) ;
    public static final Enchantment TEST2 = new EnchantmentWrapper ( "test2", "Test 2", 1, 1 ) ;
    public static final Enchantment TEST3 = new EnchantmentWrapper ( "test3", "Test 3", 1, 1, EnchantmentTarget. BREAKABLE ) ;
    public static final Enchantment TEST4 = new EnchantmentWrapper ( "test4", "Test 4", 1, 1, EnchantmentTarget. BREAKABLE, true ) ;
    public static Enchantment TEST5 ;
    public static Enchantment TEST6 ;
    public static Enchantment TEST7 ;
    public static Enchantment TEST8 ;

    @Override
    public void onEnable ( ) {
   
        CustomEnchantment. register (TEST1 ) ;
        CustomEnchantment. register (TEST2 ) ;
        CustomEnchantment. register (TEST3 ) ;
        CustomEnchantment. register (TEST4 ) ;
        TEST5 = new EnchantmentWrapper ( new NamespacedKey ( this, "test5" ), "Test 5", 1 ) ;
        CustomEnchantment. register (TEST5 ) ;
        TEST6 = new EnchantmentWrapper ( new NamespacedKey ( this, "test6" ), "Test 6", 1, 1 ) ;
        CustomEnchantment. register (TEST6 ) ;
        TEST7 = new EnchantmentWrapper ( new NamespacedKey ( this, "test7" ), "Test 7", 1, 1, EnchantmentTarget. BREAKABLE ) ;
        CustomEnchantment. register (TEST7 ) ;
        TEST8 = new EnchantmentWrapper ( new NamespacedKey ( this, "test8" ), "Test 8", 1, 1, EnchantmentTarget. BREAKABLE, true ) ;
        CustomEnchantment. register (TEST8 ) ;
   
    }

    @Override
    public void onDisable ( ) {
   
    }

}
Useful links
An example plugin that adds a custom enchantment and a /givemetool command to give the player a sword with that enchantment: https://www.mediafire.com/file/nl5oiyorl4ow84p/customenchtest.jar/file
The same plugin's decompiled source code: https://www.mediafire.com/file/wbkbuxnq8671ym8/customenchtest_source.zip/file
WrappersAPI's javadocs (if for some reason you want to see them): https://manossef.github.io/WrappersAPI-javadocs/
Resource Information
Author:
----------
Total Downloads: 177
First Release: Jun 16, 2021
Last Update: Jul 6, 2022
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings