RecipeManager
RecipeManager 2
Complex recipes made easy !
Features
NOTE: I will refer to some .html files in here, those files can be found in your /plugins/RecipeManager/ folder after you load the plugin the first time. The html files will also be updated automatically on new versions.
- Add new recipes (or remove existing ones):
- Shaped or shapeless recipes with optionally multiple results
- Furnace (+ Blast Furnace and Smoker) recipes with optional custom cook time and optional special fuel
- Fuel recipes with custom burning time or even random time from specified range
- Anvil, Brewing, Campfire, Stonecutting, and Compost recipes
- NEW: Grindstone and Cartography recipes with configuration for disabling default functionality
- See 'basic recipes.html' for more info.
- Making recipes more special with flags, featured flags:
- @permission to limit a recipe (or result) to specific permission node(s)
- @remove, @restrict and @override to remove/restrict/override existing recipes, including Minecraft recipes.
- @ingredientcondition to make extra requirements from ingredients like enchantments, ranged data values, stack amounts, etc
- @keepitem to keep an ingredient from using up and optionally damaging it in the process
- @modmoney/@reqmoney and their experience and level counterparts to require/give/take money/exp/level from crafter
- @cooldown to limit the usage of the recipe
- And a lot more, see 'recipe flags.html' for all of them including documentation.
- Flags can also be added to results to make them more special, some featured result flags:
- @cloneingredient to clone an ingredient's features over to the result, like data value, amount, enchantments, etc
- @itemname and @itemlore to edit a result's display name and description with colors
- @potionitem and @fireworkitem to design your custom potions and fireworks
- @getrecipebook to get a RecipeBook as result, ones generated by this plugin with recipes in them
- And a lot more, see 'recipe flags.html' for all of them including documentation.
- Flexible recipe files to add your recipes in:
- You can use any kind of spacing and letter casing you want in recipe files, also supports comments
- Design your file names and folder structure as you want in the 'recipes' folder
- Auto-generated recipe books with high customization:
- Pick which recipes to be added and to what volume
- Re-arrange them as you like
- Books that players have are automatically updated when edited by admin and reloaded
- For more information see 'recipe books.yml' file.
- Other features:
- Local documentation files for ease, the .html files that will be generated the first time you run the plugin
- Customizable settings, messages and item/data/enchant aliases in their respective YML files
- Supports Vault for economy and permission groups
- API for plugin developers, custom events and utility methods for most features
Installing or updating
- Download the latest version of the plugin
- Place the RecipeManager.jar file in the plugins folder and start/restart the server
- Now the plugins/RecipeManager/ folder is created which contains configuration files (.yml) and documentation files (.html)
Using the plugin
- Run the plugin at least once to allow the .html files to be generated, then start with 'basic recipes.html'.
- Plugin settings can be configured in "plugins/RecipeManager/config.yml"
- When you're done editing, type rmreload in server console to reload everything without a server restart.
- Commands and permissions can be found in 'commands & permissions.html' file.
Changelog
In the jar file, auto-extracted when first ran to plugins/RecipeManager/changelog.txt and on GitHub.
Having problems, found bugs ?
If you have any issues or found some bugs, please create a ticket. But first you should check other tickets if the issue has already been reported and then check out the Discord server below to ask for help.
Note: I don't support any previous versions other than the absolute latest, so if you used an older version, update and test again.
Source code
Source code is on github, feel free to look at it, improve on it and provide feedback: https://github.com/haveric/RecipeManager2 If you need, you can use code from my project but please provide credits to haveric and THDigi.
Support project
If you find my plugins useful and want to help support future development and faster updates, please consider donating and fueling my need for coffee:
[RecipeManager] [0;31;1mnull[m
[20:00:57] [Server thread/WARN]: java.lang.NullPointerException
[20:00:57] [Server thread/WARN]: at haveric.recipeManager.RecipeManager.onDisable(RecipeManager.java:258)
[20:00:57] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:273)
[20:00:57] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:361)
[20:00:57] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:424)
[20:00:57] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginManager.java:417)
[20:00:57] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_11_R1.CraftServer.disablePlugins(CraftServer.java:345)
[20:00:57] [Server thread/WARN]: at net.minecraft.server.v1_11_R1.MinecraftServer.stop(MinecraftServer.java:464)
[20:00:57] [Server thread/WARN]: at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:612)
[20:00:57] [Server thread/WARN]: at java.lang.Thread.run(Thread.java:745)
On Spigot 1.11.2
Since this is happening when stopping the server, you can ignore this error.
The Plugin is Great!!!
It will be better if you can add a function that lores are added randomly.
I think it will be very useful for RPG servers.
Will you think about it ?
Thanks!
There definitely needs to be better support for random chance and I will be looking into that in the future.
I'm not good at English, so I'm sorry if it is difficult for you to understand my English.
How to over-write with keeping attributes?
http://imgur.com/LUPHynk
http://imgur.com/a/i0YWM
http://imgur.com/a/i0YWM
here my recipe.
I can't overwrite lores... ( I want "+1 -> +2" I dont want "+1+2")
combine sword_1
@ingredientcondition emerald_block | name &bEnchant Stone
@displayresult first
emerald_block + iron_sword
= 0.0000001% 145
@name Damage Bonus &b+1
@lore &a100%
= iron_sword
@sound ENTITY_PLAYER_LEVELUP | volume 0.65 | pitch 3.33
@cloneingredient all
@enchantitem 16 remove
@enchantitem 17 remove
@enchantitem 18 remove
@enchantitem 19 remove
@enchantitem 20 remove
@enchantitem 21 remove
@enchantitem 22 remove
@enchantitem 32 remove
@enchantitem 33 remove
@name {result} &b+1
@lore &eDamageBonus: &6+1
@message &eSucceeded!
combine long_sword_2
@ingredientcondition iron_sword | lore &eDamageBonus: &6+1
@ingredientcondition emerald_block | name &aBig Enchant Stone
@displayresult first
emerald_block + emerald_block + iron_sword
= 0.0000001% 145
@name Damage Bonus &b+2
@lore &e80%
= 80% iron_sword
@sound ENTITY_PLAYER_LEVELUP | volume 0.65 | pitch 3.33
@cloneingredient all
@enchantitem 16 remove
@enchantitem 17 remove
@enchantitem 18 remove
@enchantitem 19 remove
@enchantitem 20 remove
@enchantitem 21 remove
@enchantitem 22 remove
@enchantitem 32 remove
@enchantitem 33 remove
@name &a{result} &b+2
@lore &eDamageBonus: &6+2
@message &esucceeded!
= fail
@sound BLOCK_ANVIL_DESTROY
@message &7failed...
@keepitem iron_sword
I'll look into adding better support for updating/editing lores
Just an update on this as I'm looking back. This is currently possible if you use the arguments individually in cloneingredient such as:
@cloneingredient data | amount | enchants | name | special
This will copy everything except lores which allows you to add new ones as you wish.
Hi, is there a way to set an attribute of the result item ? Like setting the attack damage of a sword.
I didn't find the attribute for that so i tried the following. I used /give to get a sword with modified attack damage, then used /rmcreaterecipe and i saw in the file that the result item only kept the display name, lore enchant but not the attack damage.
Anyone ?
I'm afraid that isn't supported in the API at this time, but when it gets added, I will provide support.
Ok, thanks for your answer ;)
Hi, not sure if i didn't saw it but i want to make a special amount for durability of the crafted item. On the recipe flags.html the result for "durability" show me that i can specify for @ingredientcondition, @holditem and @keepitem.
Is it possible to do it?
Thanks for helping and for this amazing plugin :D
Take a look in "recipe flags.html" within your RecipeManager folder under @ingredientcondition. The first condition is data. This should work the same for @holditem.
Looks like @keepitem needs an upgrade to match the others, it only works off of material:data so you can define an individual data, but no ranges. It has a damage condition that will alter it after though.
oh sorry i think i didn't explain well, it is only for the result that i want a certain durability and didn't saw how to make it except for the flags i mentionned
It might be worth reading through "basic recipes.html" in your RecipeManager folder. Results can be defined with the following: material:[data]:[amount]. For example:
= diamond_sword:78
will give you a diamond sword with durability of 78
Oh thanks! I thougt it was for id's data.
Thank you for your work!
Have you looked into adding custom anvil recipes? Unfortunately, a lot of plugin authors say that they are going to but then never add them. It would be really awesome to be able to make custom items via anvil.
Also, are you still considering a @testfor flag for crafting recipes that require multi-block structures?
I actually just attempted Anvil recipes and unfortunately they don't work at this time. If you know of any plugin that is doing this right now, let me know and I'll look into it more.
It's on my list of todos, but I have not gotten to it yet.
Actually, I just got an idea for an easier way of doing the /testfor related flag. All that would need to be coded is a special flag, maybe @commandoutput , so that the recipe is only craftable if the command output is true, and/or false, depending on the boolean set by the recipe creator.
Example:
@commandoutput true | testforblock ~0 ~1 ~0 diamond_block
@commandoutput {Flag Name} true {recipe is only crafted if command returns} | testforblock <x> <y> <z> <block> [dataValue|state] [dataTag] {command}
This might be easier and therefore, you could use it on other testfor commands such as to test for a chicken in a three block radius as a sacrifice. Personally, I think this would be much better than a @testfor flag.