L'api de Bukkit/Spigot ne permet pas de modifier une recette déjà existante sans avoir préalablement supprimé cette recette, OR l'api ne permet pas non plus de retirer uniquement 1 recette déjà chargé, elle permet que de supprimer toutes les recettes du serveur ou de restaurer les recettes par défaut CE QUI VEUT DIRE QUE :
A chaque fois que tu utilise cette effet il y a une vérification qui est faite pour vider toutes les recettes, puis les remettre en prenant en compte la modification de 1 seule recette ce qui n'est pas du tout optimiser.
Tu peux passer par skript-mirror pour optimiser tout ça comme j'ai fait avec une recette de four pour cuire un oeuf:
import:
org.bukkit.Bukkit
org.bukkit.inventory.FurnaceRecipe
org.bukkit.NamespacedKey
org.bukkit.Material
org.bukkit.inventory.ItemStack
java.lang.Float
java.lang.Integer
on load:
if Bukkit.getRecipesFor(new ItemStack(Material.HORSE_SPAWN_EGG)).toString() contain "CraftFurnaceRecipe":
loop ...Bukkit.recipeIterator():
"%loop-value.getResult()%" does not contain " named "
add loop-value to {_originalRecipes::*}
Bukkit.clearRecipes()
loop {_originalRecipes::*}:
Bukkit.addRecipe(loop-value)
set {_recipes::*} to Material.HORSE_SPAWN_EGG and Material.PIG_SPAWN_EGG
loop {_recipes::*}:
set {_key} to new NamespacedKey("{@title}" and loop-value.toString() in lower case)
set {_input} to loop-value
set {_output} to new ItemStack(loop-value)
set name of {_output} to colored {{@title}::egg::cooked::name}
set lore of {_output} to colored {{@title}::egg::cooked::lore::*}
set {_xp} to new Float(1)
set {_time} to new Integer(1200)
set {_recipe} to new FurnaceRecipe({_key}, {_output}, {_input}, {_xp} and {_time})
Bukkit.addRecipe({_recipe})
Pour cette version du code tu as besoin de Skript-mirror 2.0 SNAPSHOT minimum (Les ENUM n'ont plus besoin du symbole "!" pour être interprété)
Et pour adapter mon code qui est spécifique au recette de four en table de craft tu as ceci https://www.spigotmc.org/wiki/recipe-example/
Je sais que c'est compliquer mais c'est ce qu'il y a de plus opti en terme de temps de reload ^^ (exit créer un datapac quoi que facilek, un plugin ou modifier le code source de spigot pour les plus téméraire)