depends on
About Cooking
This plugin adds a large variety of ingredients, recipes and effects into your server.
Ingredients can be found from hitting nodes, to cutting to trees to picking hemp, corn, pumpkins and potatoes.
These ingredients have their own skins and names, and are part of the many recipes included with this plugin.
You can also add your own ingredients and create your own recipes via the config, assigning any of the 48 different BuffTypes, along with the desired duration.
Plugin creators can also create their own effects and hook them in using the "Hook" buff.
There are 2 default profiles: "simple" and "advanced".
The simple profile has 25 ingredients and a smaller amount of meals, and only requires a maximum of 4 ingredient types to create.
The advanced profile has 90+ ingredients and 90+ meals, and is far more complex.
There are over 91 recipes that come with the default configuration.
Each recipe has a list of up to 10 different ingredients, and will provide one of 48 unique buffs for a configurable duration.
Recipes can be easily added via the config. The only requirements for this is a unique skin ID and image link.
The above video showcases how recipes can be easily added to your configuration.
The plugin comes with over 90 unique ingredients, and also includes some of the default items in rust.
Ingredients can be easily added to the configuration (see the above video).
All non-default ingredients can be found from 33 different sources including cutting trees, mining nodes, collecting hemp etc.
Each sources drop rate can be customized to suit your server, and the sources for ingredients can be changed incredible easily by simply adjusting a number in the config file.
There are 33 unique sources that ingredients can be obtained from from cutting trees to collecting pumpkins.
The chances for each ingredient drop are based on the interaction with that source.
For example, picking a pumpkin offers 1 chance, as it is 1 interaction to pick a pumpking, while cutting a tree may be 10-20 chances (depending on the tool), as it takes a number of hits to fall a tree.
When a roll is successful, it then rolls through each item type and selects the item based on that items "dropWeight", allowing you to make ingredients more or less common than others on the same drop table.
The Farmers Market is an in-built market that allows players to buy and sell ingredients for scrap, server rewards or economics.
By default, the markets stocks will start at 0, and will only increase as players sell their unwanted ingredients to it.
It can be configured to allow all items, or only custom items to be bought and sold through it, and also allows for a maximum stock to be set (default 100), meaing that it cannot have more than 100 of an item type.
The buy/sell values for each ingredient can be adjusted in the config file (default $10 buy, $5 sell).
Starting quantities can also be set if you do not want the market to start at 0.
The market can be accessed by typing in /market (if config is enabled) or by speaking to an NPC that matches the market name (default: farmers market).
Command: recipemenu
Action: Opens the recipe menu from anywhere. Beware this won't close the menu button.
Permission: cooking.recipemenu.chat
Command: market
Action: Opens the market menu
Permission: cooking.market.command
Command: clearrecipebags
Action: Removes all of the data for the ingredient bags.
Permission: cooking.admin
Command: givemeal
Parameters: <meal name>
Action: Spawns the desired meal for the player.
Example: /givemeal chicken dinner
Permission: cooking.admin
Command: giveingredient
Parameters: <ingredient name> <optional: quantity>
Action: Spawns the desired ingredient for the player.
Example: /giveingredient black pepper 20
Permission: cooking.admin
Command: resetmarket
Action: Resets the market quantities to the values in the config.
Permission: cooking.admin
Command: toggledrops
Action: Toggles ingredient drops while gathering
Permission: none
Command: setmarketquantity
Parameters: <ingredient name> <optional: quantity>
Action: Sets the available units of the ingredient available on the market to the desired amount.
Example: /setmarketquantityblack pepper 20
Permission: cooking.admin
Command: updaterecipes
Action: Adds recipes from the default config, that don't exist in the users config. This is useful for server owners that bought the plugin earlier and have not adjusted their config in a few releases.
Permission: cooking.admin
Command: ibag
Action: Allows the player to open up their ingredient bag without the item. Puts items directly into the players ingredient bag when collected without the item.
Permission: cooking.chat.bag
Command: cturbo
Action: Toggles the boats turbo when the BoatTurbo buff is active.
Permission: none
Command: addmarketnpc
Action: Spawns an NPC that can be used to access the market
Permission: cooking.admin
Command: listmarketnpc
Action: Sends a list of market npcs and userids to the user.
Permission: cooking.admin
Command: removemarketnpc
Parameters: Optional: userid
Action: Deletes the market npc that the player is looking at, or the userid parameter.
Permission: cooking.admin
Command: togglenotifications
Action: Toggles the notifications for drops on/off.
Permission: none
Command: mealinfo
Action: Searches the players inventory and brings up pictures/buttons of found meals that the player can click on to see the details of each meal.
Permission: none
cooking.admin - required for admin commands.
cooking.free - ability to make meals without ingredients.
cooking.instant - cooking is instant.
cooking.use - required for users to be able to cook meals.
cooking.recipemenu.chat - required for using the /recipemenu command
cooking.market.command - required to use the chat command to open the farmers market.
cooking.chat.bag - required to use the chat command to open the ingredient bag.
cooking.gather - required for players to receive ingredient drops.
0: Healshare - Anytime the consumer receives health, anyone within BuffModifier meters receives the same amount of health (Default: 5.0m).
1: HealthOverload - The consumer receives BuffModifier additional health. This allows their health to exceed 100, and will automatically be reduced to 100 health after the duration (Default: 50.0).
2: FoodShare - Anytime the consumer has their calories increased, everyone within BuffModifier meters will also have their calories increased by the same amount for the duration (Default: 20.0m).
3: FoodOverload - Will increase the calorie cap of the consumer to the BuffModifier value for configured hours (Default: 1000 calories. Default 2 hours).
4: Comfort - The consumer will have 100% comfort for the duration.
5: WaterBreathing - The consumer will be able to breath underwater for the duration.
6: FireResist - All fire damage the consumer takes is reduced to 0 for the duration.
7: ColdResist - All cold damage the consumer takes is reduced to 0 for the duration.
8: ExplosionResist - All explosion damage the consumer takes is reduced by BuffModifier% for the duration (Default: 50.0%).
9: AnimalResist - All damage done to the consumer from animals and murderes/scarecrows is reduced to BuffModifier for the duration (Default: 0.25x).
10: MeleeResist - All damage done to the consumer from melee weapons is reduced to BuffModifier for the duration (Default: 0.25x).
11: WoundedResist - When the consumer enters the wounded state for the duration of effect, they are brought back to their feet and receive x health and have all effects removed. This removes the meal effect.
12: Spectre - All turrets and base defences (including sam sites) will not target the consumer for the duration.
13: Madness - Anytime the consumer speaks over voice, their voice is muted and is replaced with horrible screaming for the duration.
14: Wealth - Whenever the consumer breaks a barrel, they are rewarded with economic dollars (equal to the BuffModifier value) for the duration (Default: 1.0).
15: AntiBradleyRadar - The consumer cannot be targeted by bradley tank for the duration.
16: Ingredient - This is simply an ingredient and has no effect.
17: Hook - This is required to trigger a custom hook when a meal is consumed.
18: BarrelSmasher - The consumer instantly destroys barrels when damage is done, regardless of the damage amount, for the duration.
19: CraftingRefund - The consumer has a BuffModifier percentage chance to be fully refunded for their crafting components when crafting an item for the duration (Default: 10.0%).
20: PassiveRegen - The consumer will receive x health every y seconds forthe duration. x is equal to the BuffModifier field and can be recipe specific (Default: 5).
21: HorseStats - When moved into a horses inventory, it will speed the horse up by x for the duration. Does not consume a meal slot. X is equal to the BuffModifier field (Default: 15).
22: Invisible - The consumer enters Vanish mode when consumed for BuffModifier seconds. Requires the Vanish plugin (Default: 5).
23: NoFallDamage - The consumer will not take fall damage for the duration.
24: NoConditionLoss - The consumer will not lose any condition on their active weapon for the duration.
25: IngredientChance - The consumer will have better luck finding ingredients from all sources for the duration.
26: UngradeRefund - The consumer has BuffModifier percentage chance to be refunded the upgrade costs when upgrading a building block (Default: 10%).
27: ResearchRefund - the consumer has BuffModifier percentage chance to be refunded the scrap costs when researching an item on the research table (Default: 10%).
28: NightVision - the consumer will have nightvision enabled for the duration. Requires the NightVision plugin.
29: RolePlay - Inherrits the calorie/hydration modifiers from the base food used. Offers no other buff. Useful for role players.
30: AntiHeliRadar - Makes the consumer invisible to heli's minigun.
31: FishingLuck - Increases the chance of obtaining a casket while fishing by the BuffModifier value (Default: 2.0x) (Requires the FishingTreasure plugin).
32: MiningYield - Increases the amount of resources obtained while mining by the BuffModifier value (Default: 2.0x).
33: WoodcuttingYield - Increases the amount of resources obtained while woodcutting by the BuffModifier value (Default: 2.0x).
34: FarmingYield - Increases the amount of resources obtained while collecting player grown produce (Default: 1.5x).
35: ComponentLuck - Adds a chance (based on BuffModifier) for an additional loot slot to be added, containing a random component (Default: 5%).
36: ElectronicsLuck - Adds a chance (based on BuffModifier) for an additional loot slot to be added, containing a random electric component/item (Default: 3%).
37: DoubleJump - Uses the DoubleJump plugin to give the consumer double jump (Requires the double jump plugin).
38: BoatTurbo - Adjusts the speed of the mounted boat when the /cturbo command is toggled.
39: Permission - Will add the player to the specified permission groups and remove them when the buff ends.
40: NoBleed - Prevents the player from bleeding.
41: RadiationResist - Prevents the player from accumulating radiation.
42: MaxRepair - Resets the items max condition when it is repaired while afftected by this buff.
43: Heal - Instantly heals the user for the value.
44: SmeltOnMine - Instantly smelts sulfur and metal ore while mining.
45: LootPickup - Automatically loots a barrel that the consumer has broken.
46: Reviver - when the reviver brings a player out of the wounded state, the player is given hp equal to the modifier.
47: Duplicator - You have a chance of receiving an additional item on a successful craft.
0: NodeAll - Stone, Metal and Sulfur nodes.
1: TreeAll - All trees.
2: TreeArid - Trees in desert biomes.
3: Hemp - All hemp plants.
4: CollectableNode - The small collectable stone, metal and sulfur nodes.
5: BerryBush - Bushes that berries can be picked from.
6: Pumpkin - All Pumpkin patches.
7: Potato - All potato patches.
8: Corn - All corn patches.
9: Fish - Gutting a fish.
10: Boar - Harvested specifically from boars.
11: Chicken - Harvested specifically from chickens.
12: Bear - Harvested specifically from bears.
13: Stag - Harvested specifically from stags.
14: Wolf - Harvested specifically from wolves.
15: Horse - Harvested specifically from horses.
16: Mushroom - All mushroom patches.
17: Animal - All animals in the animals list.
18: Default - An item that is obtained by default in Rust.
19: Crafted - An item that needs to be crafted (requires a recipe as well).
20: NodeArid - Mining nodes in the desert biomes.
21: NodeTemperate - Mining nodes in temperate biomes.
22: NodeTundra - Mining nodes in Tundra biomes.
23: NodeArctic - Mining nodes in Arctic biomes.
24: TreeTemperate - Cutting trees in temperate biomes.
25: TreeTundra - Cutting trees in Tundra biomes.
26: TreeArctic - Cutting trees in arctic biomes.
27: NodeStone - Mining stone nodes.
28: NodeMetal - Mining metal nodes.
29: NodeSulfur - Mining sulfur nodes.
30: PolarBear - Harvesting polar bear flesh.
31: Fishing - Catching a fish.
32: TreeCactus - Harvesting a cactus.
33: Foodbox - Food crate spawn.
HumanNPC - Used if you want the market to be accessed via NPC. Simply adjust the name of the NPC to match what is in the config.
Vanish - Used in the Inivisibility buff type.
NightVision - Used in the NightVision buff type.
Economics - Used for the farmers market and the Wealth buff type.
ServerRewards - Used for the market and the Wealth buff type.
The following calls require an item to have the "Hook" buff type (#17). They can be added to your own plugin and will be called as the plugin requires them.
object GetBuffDescription(ulong skin) { if (skin == 2428317574) return "This is sushi and it does stuff"; else return null; }
This API call is called 30 seconds after the plugin loads, and populates the recipe menu buff description with the relevant info.
void RecipeConsumed(BasePlayer player, string name, string shortname, ulong skin, int duration) { Puts($"Consumed food {name} - short: {shortname} - skin: {skin} - duration {duration}"); }
This API call is called when a player eats a meal with the Hook buff type. Returns no information.
object BuffRequiresTimer(BasePlayer player, string name, string shortname, ulong skin) { if (skin == 2428317574) { return false; } return null; }
This API call is fired just after a meal is consumed to see if the meal requires a buff timer. If false is returned, it will not provide a buff timer/count down, or fire off our next API call.
void RecipeEnded(BasePlayer player, string name, string shortname, ulong skin) { Puts($"Effect ended - {name}."); }
This API call is fired when the buff timer has finished. Returns no information.
bool CanBuyIngredient(BasePlayer player) { Puts("Returning false prevents the purchase of an item from the market."); return false; } bool CanSellIngredient(BasePlayer player) { Puts("Returning false prevents the sale of an item to the market."); return false; }
These API calls are made when a player attempts to buy or sell an ingredient to the farmers market. Returning false prevents the transaction.
void OnIngredientPurchased(BasePlayer player, string ingredient, double cost) { Puts($"Player {player.displayName} purchased a {ingredient} from the market for ${cost}"); } void OnIngredientSold(BasePlayer player, string ingredient, double cost) { Puts($"Player {player.displayName} sold an {ingredient} to the market for ${cost}"); }
These calls are made when a player has successfully bought or sold an ingredient to the market.
bool CanGatherIngredient(BasePlayer player, uint source)
Returning a non-null value will prevent players from receiving ingredients from certain drop sources. the source is the networked ID of the entity.
void OnMealCrafed(BasePlayer player, string meal, Dictionary<string, int> ingredients_used, bool isIngredient)
Called after a meal has been created and given to the player.
void OnMealConsumed(BasePlayer player, Item item, int buff_duration)
Called when a meal has been successfully consumed.
bool IsCookingMeal(Item item)
Useful if you want to see if an item is from the recipe menu.
bool IsHorseBuffed(RidableHorse horse)
Used to prevent stacking modifiers if a horse is buffed by the Cooking plugin.
object OnIngredientAddedToContainer(LootContainer container)
Returning non-null value prevents the ingredient from being added to the container.
object OnRecipeAddedToContainer(LootContainer container)
Returning non-null value prevents the meal from being added to the container.