I have for the past hour or two tried to get my recipe factory to play nice with an custom enchantment.
The problem is that when I read the json file and creats the recipe, the factory can find my enchantment, but upon loading into a world and crafting the recipe, it no longer has the enchantment.
The item stil has the enchantment glow.
My enchantment registration
@EventBusSubscriber(modid = Reference.MOD_ID)
public class ModEnchantments {
public static final CustomEnchantment myEnchantment = (CustomEnchantment) new CustomEnchantment().setRegistryName(new ResourceLocation(Reference.MOD_ID, "myEnchantment"));
@SubscribeEvent
public static void registerEnchantments(RegistryEvent.Register<Enchantment> event) {
IForgeRegistry<Enchantment> r = event.getRegistry();
r.register(myEnchantment);
}
}
My recipe factory
public class Factory implements IRecipeFactory {
@Override
public IRecipe parse(final JsonContext context, final JsonObject json) {
final String group = JsonUtils.getString(json, "group", "");
final CraftingHelper.ShapedPrimer primer = RecipeUtil.parseShaped(context, json);
JsonObject resultJson = JsonUtils.getJsonObject(json, "result");
final ItemStack result = CraftingHelper.getItemStack(JsonUtils.getJsonObject(json, "result"), context);
String enchantName = JsonUtils.getString(resultJson, "enchantment");
int enchantLvl = JsonUtils.getInt(resultJson, "enchantment_lvl");
Enchantment enchantment = Enchantment.getEnchantmentByLocation(enchantName);
if (enchantment == null)
throw new JsonSyntaxException("Unknown enchantment '" + enchantName + "'");
Map<Enchantment, Integer> enchMap = Collections.singletonMap(enchantment, enchantLvl);
EnchantmentHelper.setEnchantments(enchMap, result);
return new ShapedEnchantedItemRecipe(group.isEmpty() ? null : new ResourceLocation(group), result, primer);
}
}