diff --git a/Register-Enchantments.md b/Register-Enchantments.md new file mode 100644 index 0000000..41d433c --- /dev/null +++ b/Register-Enchantments.md @@ -0,0 +1,49 @@ +Registering your enchantment allow Custom Anvil to use your enchantment. + +To register your enchantment, you need into a [CAEnchantment](https://github.com/alexcrea/CustomAnvil/blob/master/src/main/java/xyz/alexcrea/cuanvil/enchant/CAEnchantment.java) instance and then register it. This is so Custom Anvil know how to handle action with your enchantment like adding/removing and getting level of it from an item. + +*** + +If you were able to register your enchantment to the bukkit registry. Then you should use or extend [CABukkitEnchantment](https://github.com/alexcrea/CustomAnvil/blob/master/src/main/java/xyz/alexcrea/cuanvil/enchant/wrapped/CABukkitEnchantment.java) + +```java +CAEnchantment enchantment = new CABukkitEnchantment(bukkitEnchant); +``` + + +If your enchantment does not register into the bukkit registry (for example, if you store via persistend data), then you should preferably create a class extending [CAEnchantmentBase](https://github.com/alexcrea/CustomAnvil/blob/master/src/main/java/xyz/alexcrea/cuanvil/enchant/CAEnchantmentBase.java) and implement the required functions. You can also directly implement [CAEnchantment](https://github.com/alexcrea/CustomAnvil/blob/master/src/main/java/xyz/alexcrea/cuanvil/enchant/CAEnchantment.java), but it is not recommended. + +*** + +Here is the function to use to register your enchantment: + +```java +EnchantmentApi.registerEnchantment(enchantment); +``` + +You should use it on only when or after the [CAEnchantRegistryReadyEvent](https://github.com/alexcrea/CustomAnvil/blob/master/src/main/java/xyz/alexcrea/cuanvil/api/event/CAEnchantRegistryReadyEvent.java) event is triggered. + +To register the enchantment present on startup you should listen to the [CAEnchantRegistryReadyEvent](https://github.com/alexcrea/CustomAnvil/blob/master/src/main/java/xyz/alexcrea/cuanvil/api/event/CAEnchantRegistryReadyEvent.java) event and register your enchantment. \ +It should look something like this example: + +```java + @EventHandler + public void onEnchantmentRegistry(CAEnchantRegistryReadyEvent event){ + // you could also get a list of your enchantment object and create CAEnchant object from your object. + List enchantments = getEnchantmentList(); + for (CAEnchantment enchantment : enchantments) { + EnchantmentApi.registerEnchantment(enchantment); + } + + } +``` + + +*** + +You can also register or unregister an enchantment at runtime via the [EnchantmentApi](https://github.com/alexcrea/CustomAnvil/blob/master/src/main/java/xyz/alexcrea/cuanvil/api/EnchantmentApi.java) facade. But every enchantment using previously written conflict should be registered on the event trigger. If you do not register the enchantment in time, the conflict will not find your enchantment and will cause issue. + +It is recommended to register conflict alongside its enchantment when [CAConfigReadyEvent](https://github.com/alexcrea/CustomAnvil/blob/master/src/main/java/xyz/alexcrea/cuanvil/api/event/CAConfigReadyEvent.java) is triggered. (page about conflict do not exist: wiki in WIP) + + +