--- campfirebackport-1.7.10-1.11.3 ---
This file contains detailed information about config settings, CraftTweaker support, and other things to do with Campfire Backport.
You can find the most recent version of this information at https://github.com/connor135246/Campfire-Backport/wiki

Table of Contents
# Mod Compatibility
# EnviroMine Compatibility
# Command
# v1.9 Recipe Changes
# CraftTweaker & Config
  # Recipes Overview
 # Burn Out Overview
 # Campfire Backport CraftTweaking
     # [Campfire Cooking Recipes]
     # [Campfire Extinguishers / Ignitors]
     # [Burn Out Biome / Dimension Timers]
     # [Working with NBT Tags in CraftTweaker]
     # [Working with Fluid Containers in CraftTweaker]
 # Campfire Backport Config Settings in Detail
     # Specific Formats
         # [Campfire Cooking Recipes]
         # [Campfire Extinguishers / Ignitors]
         # [Burn Out Biome / Dimension Timers]
         # [Campfire Drops]
     # General Formats
         # [Custom Input]
         # [Custom Output]
         # [Tinker's Construct Modifiers Format]
# Campfire Backport Mixin Config

---

# Mod Compatibility
NEI:
-Campfire recipes and campfire exinguishers/ignitors are in NEI.
-View all of them by pressing the "Usages" hotkey on a campfire item.

WAILA:
-Campfires show the cooking progress of their items.

Thaumcraft:
-Campfires can be lit and extinguished by wands using vis.
-Campfires can be scanned by thaumometers for aspects.
-Campfires can heat up crucibles/thaumatoriums.
-Campfires can be extinguised with water arrows and ignited with fire arrows.

Witchery:
-Campfires can heat up kettles and witch's cauldrons.
-Campfires can be extinguished with the Extinguish brew and ignited with the Flame brew.
-Campfires can be extinguished with the Aguamenti symbol and ignited with the Incendio symbol.

Botania:
-Campfires can be ignited by mana bursts fired using a Kindle Lens.

Galacticraft / Advanced Rocketry:
-Campfires will burn out if there's no oxygen.
-Campfire smoke will move faster or slower depending on the atmosphere.

Netherlicious:
-Soul campfires can be crafted with Soul Soil and will drop it when broken.
-You can craft foxfire campfires and shadow campfires. Most config options that apply to soul campfires will apply to these as well.

CraftTweaker:
-Campfire recipes, extinguishers/ignitors, and burn out timers can be made using CraftTweaker (v3.1.0 or later). See # Recipes Overview.


# EnviroMine Compatibility
If you're using EnviroMine and want to have campfires warm you up, you can set it up using EnviroMine's config.

Quick Method:
1. Download "campfirebackport.cfg" from the github, which has some basic settings for campfires.
https://raw.githubusercontent.com/connor135246/Campfire-Backport/master/enviromine/campfirebackport.cfg
2. Go to your "config" folder in your ".minecraft".
3. Go to "enviromine", then "profiles", then "default", then "CustomProperties".
4. Put "campfirebackport.cfg" there.
5. Launch Minecraft with EnviroMine and Campfire Backport. Campfires will now warm you up.

Manual Method:
1. Launch Minecraft with EnviroMine and Campfire Backport.
2. Go to EnviroMine's config.
3. Go to "Profile Settings" -> "default_Settings.cfg" -> "Config" and set "Generate Blank Configs" to "true". 
When you click done, EnviroMine will generate configs for all of your mods and set the option back to "false". This can take a while if you have a lot of mods! But once it's done, you'll be able to configure everything you want for every mod you have.  
Now that EnviroMine has generated default settings for campfires, you can enable temperature. 
4. Go to "Custom Configs" -> "campfirebackport.cfg" -> "blocks". 
5. For lit campfires, open "tile_campfire_campfire". For lit soul campfires, open "tile_soul_campfire_soul_campfire". For lit foxfire campfires, open "tile_foxfire_campfire_foxfire_campfire". For lit shadow campfires, open "tile_shadow_campfire_shadow_campfire".
I'd recommend setting the campfires to the same values as torches. That would be "Enable Temperature" to "true", "Temperature" to "75.0", and "Air Quality" to "-0.25". You could also set "Sanity" to "0.1" for regular campfires (since they're meant to be cozy) and "-0.1" for soul campfires (since that's the value for Soul Sand).

See also:
AstroTibs' EnviroMine for Galaxy Odyssey has some bug fixes and improvements to EnviroMine. It also has some compatibility with Campfire Backport: by default, campfires can heat cauldrons to purify dirty water. Thanks, AstroTibs!
https://www.curseforge.com/minecraft/mc-mods/enviromine-for-galaxy-odyssey


# Command
The command "/campfirebackport" has six subcommands:
-/campfirebackport dumpinfo
Dumps this text file to the config folder.
-/campfirebackport nbt [player] OR /campfirebackport nbt <x> <y> <z>
Prints out the NBT of the player's held item OR the NBT of the tile entity at the location.
-/campfirebackport getcampfire [player] OR /campfirebackport getcampfire <x> <y> <z>
Creates an item copy of the campfire block at the location, including NBT.
-/campfirebackport locationinfo [player] OR /campfirebackport locationinfo <x> <z>
Prints out the IDs of the biome and the dimension at the location.
-/campfirebackport reload
Reloads the config from file. Sends the new config to all players on the server. Useful if you want to change a config setting on a server without having to restart it.
-/campfirebackport help
Displays this list of commands.


# v1.9 Recipe Changes
This section is for people who have used Campfire Backport before v1.9.
There are a couple changes to recipes in this update that may require you to update your scripts.

First, container items.
Some items in minecraft have container items associated with them. 
For example, filled buckets have their container items set as empty buckets. That's why when you craft a cake, you get back empty buckets while the milk is used up.
As of v1.9, campfire recipes and campfire extinguishers/ignitors will take care of these for you.
For example, in previous versions you might make a campfire extinguisher that has a water bucket as the input and an empty bucket as the output.
If you used the same extinguisher in the current version, you would end up with 2 empty buckets.
If you had any recipes that explicitly return empty buckets or bottles or similar items, chances are they'll now return 2 items and have to be changed.

Second, water containers.
One of the default extinguishers in the config now works dramatically differently.
It allows items to extinguish campfires if they contain at least 1000 mB of water.
Previously, it worked on some (but not all) items that can hold fluids as NBT. 
As of v1.9, it works on all items that can hold fluids as NBT, as well as any bucket or bottle that holds a fluid.
If you had any recipes that use an item that contains water, you may not need them anymore.
For example, if another mod adds an alternative bucket such as a clay bucket which can also hold water, it will likely work with the default config extinguisher.

Finally, there are some new CraftTweaker things you can do.
Campfire Backport now supports Item Transformers (https://docs.blamejared.com/1.12/en/Vanilla/Items/Item_Transformers/). Previously, they weren't supported.
You can also take a look at # [Working with NBT Tags in CraftTweaker] and # [Working with Fluid Containers in CraftTweaker].

---

# CraftTweaker & Config
Intro to CraftTweaker and config recipes.


# Recipes Overview
You can add custom cooking recipes and custom extinguishers/ignitors to the campfire. There are some already added in the config by default.

CraftTweaker:
You can add # [Campfire Cooking Recipes] and # [Campfire Extinguishers / Ignitors] with CraftTweaker.

Config:
You can add # [Campfire Cooking Recipes] and # [Campfire Extinguishers / Ignitors] in the config without CraftTweaker.
Note: In the config, you add recipes and extinguishers/ignitors separately for regular and soul campfires. To reduce the need for copy-pasting, the "Inheritance" config options make one type of campfire inherit config recipes from the other.

There are also some config options related to recipes that can't be changed from CraftTweaker.
-Auto Recipe Discovery: automatically adds furnace recipes that make food to the campfire's recipes.
-Auto Recipe Discovery Blacklist: blacklist particular inputs from Auto Recipe Discovery.
-Default Cooking Times: the default cooking time for recipes that don't specify a cooking time.

By default, a few cooking recipes and extinguishers/ignitors are defined in the config. Also, Auto Recipe Discovery is turned on.

Removing Recipes:
You can't remove recipes with CraftTweaker. To remove the default recipes, you have to delete them from the config.
-Default cooking recipes are defined in Custom Recipes (Regular). Cooking recipes are also added by Auto Recipe Discovery which defaults to "both".
-Default extinguishers are defined in Custom Extinguishers (Regular).
-Default ignitors are defined in Custom Ignitors (Regular).

Tips:
-Pressing the "uses" hotkey when hovering over a campfire in NEI will bring up all Recipes and Extinguishers / Ignitors.
-Cooking times in NEI are rounded to an easily readable number of seconds or minutes. Holding Shift will display times in exact ticks.
-Wildcard inputs will display in NEI as a written book.


# Burn Out Overview
Burn out is a mechanic where campfires will extinguish on their own after a certain amount of time. It's disabled by default.

CraftTweaker:
You can add # [Burn Out Biome / Dimension Timers] with CraftTweaker.

Config:
You can add # [Burn Out Biome / Dimension Timers] in the config without CraftTweaker.

There are many config options related to burn out that can't be changed from CraftTweaker.
-Burn Out Timers: the default burn out timers when no biome/dimension timers apply.
-Put Out by Rain: whether campfires will burn out if they're being rained on for a little while.
-Burn Out (Signal Fires): whether campfires will burn out from timers or rain even if they're signal fires.
-Burn to Nothing Chances: the chance that campfires will be destroyed when they burn out.
-Burn Out As An Item: whether campfires will count down their burn out timers even as an item in your inventory.

By default, all of these settings related to burn out are disabled.

If you're thinking of trying out burn out timers, you may also want to take a look at the following config options: Unlit by Default, Remember Lit/Unlit State, Silk Touch Needed, and Signal Fire Blocks.

Tips:
-Make sure you put your biome/dimension timers in order of highest priority to lowest priority. Campfires will use the first applicable timer to set their burn out timer. 
-If no timers apply, campfires will use the value from the Burn Out Timers config option. 
-You'll be able to see the currently applicable burn out timer in NEI under Extinguishers / Ignitors.
-WAILA will show a tooltip if the campfire you're looking at is currently burning out. The message changes depending on how long is left.
-You can reignite campfires that are currently burning out using any Campfire Ignitor. This resets their burn out timer.
-If you change a burn out timer, campfires that are already in the world won't realize immediately. Break and place them again for them to update.
-If you don't know your biome/dimension IDs, the command "/campfirebackport locationinfo" will tell you the IDs of your current dimension and biome.
Also, there are mods such as Tell Me that will output a complete list of biome IDs for you. Dimension IDs can be found in your saves. Note that some mods allow you to change biome or dimension IDs in their config.


# Campfire Backport CraftTweaking
Campfire cooking recipes, campfire extinguishers/ignitors, and burn out biome/dimension timers can be made with CraftTweaker.
Note that you'll need at least CraftTweaker v3.1.0. Errors may occur with earlier versions.
Tips:
-When using a damageable item as an input, don't forget to set its damage as a wildcard. For example, <minecraft:iron_sword> only applies to undamaged iron swords, but <minecraft:iron_sword:*> applies to iron swords with any amount of damage.
-If you want to use NBT tags in your recipe inputs, check out # [Working with NBT Tags in CraftTweaker].
-If you want to use fluids in your recipe inputs, check out # [Working with Fluid Containers in CraftTweaker].


# [Campfire Cooking Recipes]
Campfire cooking recipes are added with the command: 
mods.campfirebackport.addCampfireRecipe(String types, IIngredient input OR IIngredient[] input, IItemStack output, @Optional Integer cookingTime, @Optional String signalFire, @Optional IItemStack byproduct, @Optional Double byproductChance);
-String types
The campfire types this recipe applies to. Must be "regular", "soul", or "both".
-IIngredient OR IIngredient[] input
Up to 4 inputs in an array, because a campfire has 4 slots.
If it's just 1 input, you don't have to put it in an array.
-IItemStack output
The output.
-@Optional Integer cookingTime
It's the number of ticks until the item cooks.
For inputs that are more than one item, all items must have reached this cooking time.
If not included, or set to null, the recipe will use the default cooking time.
The default cooking time is 600 ticks (30 seconds), but it can be changed in the config.
-@Optional String signalFire
If "signal", the campfire must be a signal fire to cook this recipe.
If "notsignal", the campfire must NOT be a signal fire to cook this recipe.
If "any", it doesn't matter.
If not included, it defaults to "any".
-@Optional IItemStack byproduct
It's simply another output that can have a chance to be produced.
-@Optional Double byproductChance
This is the chance for the byproduct to be produced.
It's a decimal number between 0.0 and 1.0.
If not included, it defaults to 1.0 (100%).

Some example recipes:
-A glass bottle turns into a water bottle after 63 ticks on any campfire
    mods.campfirebackport.addCampfireRecipe("both", <minecraft:glass_bottle>, <minecraft:potion>, 63);
-An iron ingot and a gold ingot turn into an emerald on regular campfires
    mods.campfirebackport.addCampfireRecipe("regular", [<ore:ingotIron>, <ore:ingotGold>], <minecraft:emerald>);
-A diamond axe turns into two full stacks of redstone after 2 ticks on a soul campfire that isn't a signal fire
    mods.campfirebackport.addCampfireRecipe("soul", <minecraft:diamond_axe:*>, <minecraft:redstone> * 64, 2, "notsignal", <minecraft:redstone> * 64);
-1 brown mushroom, 1 red mushroom, and 1 bowl turns into mushroom stew, but only on signal fire campfires
    mods.campfirebackport.addCampfireRecipe("both", [<minecraft:brown_mushroom>, <minecraft:red_mushroom>, <minecraft:bowl>], <minecraft:mushroom_stew>, null, "signal");
-4 of any planks turn into 3 diamonds after 4821 ticks on a soul campfire that is a signal fire
    mods.campfirebackport.addCampfireRecipe("soul", [<ore:plankWood>, <ore:plankWood>, <ore:plankWood>, <ore:plankWood>], <minecraft:diamond> * 3, 4821, "signal");
-Make an iron ingot with the lore "wibbly wobbly" and have a 50% chance of a gold ingot after 221 ticks by putting a sand (or a red sand) and a dirt (or a podzol) on any campfire
    mods.campfirebackport.addCampfireRecipe("both", [<minecraft:sand:*>, <minecraft:dirt:*>], <minecraft:iron_ingot>.withTag({display: {Lore:["wibbly wobbly"]}}), 221, "any", <minecraft:gold_ingot>, 0.5);


# [Campfire Extinguishers / Ignitors]
Campfire Extinguishers / Ignitors are added with the commands:
mods.campfirebackport.addCampfireExtinguisher(String types, IIngredient input, String usageType, @Optional int damageOrReduceBy, @Optional IItemStack output, @Optional boolean leftClick);
mods.campfirebackport.addCampfireIgnitor(String types, IIngredient input, String usageType, @Optional int damageOrReduceBy, @Optional IItemStack output, @Optional boolean leftClick);
-String types
The campfire types this extinguisher / ignitor applies to. Must be "regular", "soul", or "both".
-IIngredient input
The input used to extinguish / ignite the campfire.
-String usageType
How the input is used up. Must be "damageable", "stackable", or "none".
If "damageable", attempts to damage the input. Use this one if the input has durability.
If "stackable", the input will be reduced in stack size.
If "none", neither will happen.
-@Optional int damageOrReduceBy
How much the input is damaged / reduced by.
If usageType is "damageable", the input will be damaged by this amount.
If usageType is "stackable", the input is required to have at least this stack size to be used, and will be reduced in stack size by this amount.
If usageType is "none", the input won't be damaged or reduced in stack size. The input is still required to have this stack size to be used, however.
If not included, defaults to 1.
-@Optional IItemStack output
A byproduct that is given to the player after extinguishing / igniting.
If not included, defaults to null.
-@Optional boolean leftClick
If true, the extinguisher / ignitor is used by left clicking the campfire.
If false, the extinguisher / ignitor is used by right clicking the campfire.
If not included, defaults to false.
Since right clicking a campfire checks for cooking recipes first, you might want to set this to true if the input is also a cooking recipe input.

Some example extinguishers/ignitors:
-Right-clicking with a milk bucket extinguishes campfires and gives the player back an empty bucket
    mods.campfirebackport.addCampfireExtinguisher("both", <minecraft:milk_bucket>, "stackable");
-Right-clicking with an iron hoe extinguishes soul campfires and damages the item by 6 points
    mods.campfirebackport.addCampfireExtinguisher("soul", <minecraft:iron_hoe:*>, "damageable", 6);
-Right-clicking with 3 of any glass block ignites campfires and gives the player 2 sand blocks named "Martha"
    mods.campfirebackport.addCampfireIgnitor("both", <ore:blockGlass>, "stackable", 3, (<minecraft:sand> * 2).withTag({display: {Name:"Martha"}}));
-Left-clicking with a boat extinguishes regular campfires and gives the player 3 oak planks
    mods.campfirebackport.addCampfireExtinguisher("regular", <minecraft:boat>, "stackable", 1, <minecraft:planks> * 3, true);
-Left-clicking with a flint and steel extinguishes soul campfires
    mods.campfirebackport.addCampfireExtinguisher("soul", <minecraft:flint_and_steel:*>, "damageable", 1, null, true);


# [Burn Out Biome / Dimension Timers]
Burn Out Biome / Dimension Timers are added with the command:
addBurnOutTimer(String types, Integer biomeId, Integer dimensionId, int timer);
-String types
The campfire types this timer applies to. Must be "regular", "soul", or "both".
-Integer biomeId
The ID of the biome this timer should apply to.
If the biome shouldn't matter for this timer, put null.
-Integer dimensionId
The ID of the dimension this timer should apply to.
If the dimension shouldn't matter for this timer, put null.
-int timer
The number of ticks until the campfire will burn out. 20 ticks is 1 second.
Like in the Burn Out Timers config option, setting it to -1 prevents the campfire from burning out.

Some example timers:
-Soul campfires never burn out in the nether
    mods.campfirebackport.addBurnOutTimer("soul", null, -1, -1);
-Regular campfires burn out after around a minute in swamp biomes
    mods.campfirebackport.addBurnOutTimer("regular", 6, null, 1200);
-All campfires burn out immediately in ocean biomes that are in the nether
    mods.campfirebackport.addBurnOutTimer("both", 0, -1, 0);
-Regular campfires burn out after around an hour in mushroom island biomes that are in the end
    mods.campfirebackport.addBurnOutTimer("regular", 14, 1, 72000);


# [Working with NBT Tags in CraftTweaker]
By default, CraftTweaker has two methods related to NBT tags. ".withTag(tag)" puts a tag on an item. ".onlyWithTag(tag)" puts a condition for an ingredient to have a tag.
-To make an input require specific NBT, use ".withTag(tag)" AND ".onlyWithTag(tag)".
".withTag(tag)" makes the item appear with those tags in NEI.
".onlyWithTag(tag)" actually sets the condition.
-To make an output have specific NBT, use ".withTag(tag)".

These two commands are good enough for most people.
But have you ever wanted your input to allow a range of NBT values? Or perhaps you want a recipe to use up the NBT of an item?
Campfire Backport adds a method that lets you do this. This method isn't just for Campfire Backport either - it will also work for vanilla recipes!

.onlyWithTagAdvanced(String tag, @Optional Boolean reuse)
-String tag
A string that can be parsed into NBT. It can also have some special modifiers.

Here are the 4 modifiers, with examples:
 -Minimum - (min)
    <minecraft:diamond_sword:*>.onlyWithTagAdvanced("{ench: [{id: 20, lvl: 1 (min)}]}")
    The "(min)" next to the "lvl" tag means the "lvl" can be greater than or equal to the value.
    Enchantment ID 20 is Fire Aspect. This example matches any Diamond Sword that has Fire Aspect of level 1 or higher.
 -Cost - (cost)
    <ThermalExpansion:igniter>.onlyWithTagAdvanced("{Energy: 400 (cost)}")
    The "(cost)" next to the "Energy" tag means the "Energy" can be greater than or equal to the value. It also uses up the value afterward.
    This example matches any Flux Igniter that has at least 400 RF. Afterward, it removes 400 RF from the Flux Igniter.
 -Maximum - (max)
    <minecraft:diamond_pickaxe:*>.onlyWithTagAdvanced("{RepairCost: 4 (max)}")
    The "(max)" next to the "RepairCost" tag means the "RepairCost" can be less than or equal to the value.
    This example matches any Diamond Pickaxe that has been combined in an anvil, but not too many times.
 -Anything - (any)
    <ExampleMod:ExampleItem>.onlyWithTagAdvanced("{Coordinates: [300, 64 (any), -300]}")
    The "(any)" next to the second value in the array means it can be any value.
    ExampleItem has NBT that saves x,y,z coordinates in an array. This will match any ExampleItem that has saved the x value as 300 and the z value as -300, no matter what the saved y value is.

You can have as much NBT with as many different modifiers as you want.
Any NBT without a modifier must match exactly, just like how ".onlyWithTag(tag)" works.

-@Optional Boolean reuse
If true, and the tag has any Cost modifier, makes the ingredient reusable.
If the tag doesn't have any Cost modifiers, this value doesn't matter.
If not included, defaults to true. 

Since Cost modifiers generally don't want the input item itself to be consumed, only the NBT, this option is on by default. 
You shouldn't need to worry about this option at all for campfire recipes or extinguishers/ignitors, but it's here just in case.


Some examples of this method:
-Diamond Swords enchanted with Fire Aspect of at least level 1 will light campfires and will lose 1 durability
    mods.campfirebackport.addCampfireIgnitor("both", <minecraft:diamond_sword:*>.onlyWithTagAdvanced("{ench: [{id: 20, lvl: 1 (min)}]}"), "damageable", 1);
-Thermal Expansion Flux Igniters will light campfires at the cost of 400 RF
    mods.campfirebackport.addCampfireIgnitor("both", <ThermalExpansion:igniter>.onlyWithTagAdvanced("{Energy: 400 (cost)}"), "none");
-Enchanted Books named "Wowie!" that have Luck of the Sea of at least level 1 will extinguish campfires
    mods.campfirebackport.addCampfireExtinguisher("both", <minecraft:enchanted_book>.onlyWithTagAdvanced("{StoredEnchantments: [{id: 61, lvl: 1 (min)}], display: {Name: \"Wowie!\"}}"), "none");
-After 100 ticks, A Diamond Hoe named "Cook me" that is enchanted with Unbreaking of at least level 2 turns all of its remaining durability into Wheat
    mods.campfirebackport.addCampfireRecipe("both", <minecraft:diamond_hoe:*>.onlyWithTagAdvanced("{ench: [{id: 34, lvl: 2 (min)}], display: {Name: \"Cook me\"}}").transformDamage(), <minecraft:wheat>, 100);
-After 1000 ticks, any Thermal Expansion Capacitor on a campfire will turn all of its stored RF into diamonds one at a time
    mods.campfirebackport.addCampfireRecipe("both", <ThermalExpansion:capacitor:*>.onlyWithTagAdvanced("{Energy: 1 (cost)}"), <minecraft:diamond>, 1000);
-Thermal Expansion Flux Igniters can be crafted into Fire blocks for 400 RF each
    recipes.addShapeless(<minecraft:fire>, [<ThermalExpansion:igniter>.onlyWithTagAdvanced("{Energy: 400 (cost)}")]);
-A Diamond Sword enchanted with Fire Aspect of at least level 1 crafted with a Pig Spawn Egg will make 3 Cooked Porkchops, and the Diamond Sword will lose 1 durability
    recipes.addShapeless(<minecraft:cooked_porkchop> * 3, [<minecraft:spawn_egg:90>, <minecraft:diamond_sword:*>.onlyWithTagAdvanced("{ench: [{id: 20, lvl: 1 (min)}]}").transformDamage()]);


# [Working with Fluid Containers in CraftTweaker]
Some items store fluids as NBT. Some items don't, such as buckets of fluids. And some mods add multiple kinds of buckets!
If only there was some way to deal with all possibilities at the same time, instead of having to make a recipe for each one...

That's right! Campfire Backport adds methods that do that!

Use .drainFluid(String fluidName, int amount, @Optional Boolean reuse) to drain a fluid from an item.
Use .fillFluid(String fluidName, int amount, @Optional Boolean reuse) to fill a fluid into an item.
-String fluidName
The name of the fluid.
-int amount
The amount (in mB) of fluid.
Can't be negative.
-@Optional Boolean reuse
If true, makes the ingredient reusable.
If not included, defaults to true. 

Since fluid containers generally don't want the container itself to be used, only the fluid, this option is on by default. 
You shouldn't need to worry about this option at all for campfire recipes or extinguishers/ignitors, but it's here just in case.

Tip:
These methods are especially useful when combined with wildcard IIngredients.
-For example, "<*>.drainFluid("water", 1000)" will match anything containing at least 1000 mB of water.
This includes Water Buckets or Water Bottles or any fluid tank item with at least 1000 mB of water.
It also automatically drains the water - Water Buckets will turn into empty Buckets, Water Bottles will turn into empty Bottles, and fluid tanks will have 1000 mB of water removed.
-For example, "<*>.fillFluid("water", 1000)" will match anything that can hold up to 1000 mB water.
This includes empty Buckets or Bottles or any fluid tank item that's empty or already contains water and isn't full.
It also automatically fills the water - empty Buckets will turn into Water Buckets, Bottles will turn into Water Bottles, and fluid tanks will have up to 1000 mB of water added.

Some examples of these methods:
-Right-clicking with anything with at least 1000 mB of water will extinguish campfires and use up the water
    mods.campfirebackport.addCampfireExtinguisher("both", <*>.drainFluid("water", 1000), "none");
-Right-clicking with any Thermal Expansion tank with at least 150 mB of lava will ignite campfires and use up the lava
    mods.campfirebackport.addCampfireIgnitor("both", <ThermalExpansion:Tank:*>.drainFluid("lava", 150), "none");
-Right-clicking with any Thermal Expansion tank that can hold lava will extinguish campfires and create up to 150 mB of lava
    mods.campfirebackport.addCampfireExtinguisher("both", <ThermalExpansion:Tank:*>.fillFluid("lava", 150), "none");
-After 600 ticks, 1000 mB of water and 1000 mB of lava are drained from two items to make obsidian
    mods.campfirebackport.addCampfireRecipe("both", [<*>.drainFluid("lava", 1000), <*>.drainFluid("water", 1000)], <minecraft:obsidian>, 600);

Note: For backwards compatibility, .drainFluid can also be called .transformFluid.

---

# Campfire Backport Config Settings in Detail
In most cases, it'll be easier and cleaner to do these with CraftTweaker.
Tips:
-Check the console for error messages if your input didn't parse! 
-If a mod adds an item with unusual characters in its id, the in-game config GUI may prevent you from entering it. In that case, you'll have to edit the config file directly.
-The NBT modifier doesn't check for valid NBT formatting! All it checks is that there's something between two {} curly brackets. Error messages will be printed to console if your NBT failed to parse.
-Recipes and Extinguishers/Ignitors are sorted based on their input. 
Recipes created by Auto Recipe Discovery are lowest, followed by Data inputs, followed by Class inputs, followed by tool class inputs, followed by Ore Dictionary inputs, followed by Item inputs that don't specify a meta, followed by Item inputs that do.
Within each of these categories, inputs with NBT data have higher priority, and inputs that use more than one item have the most priority.
When you try to use an item on a campfire, it will use whatever recipe matches first. (Also, Recipes are checked before Extinguishers/Ignitors.)
Check the order of your recipes by viewing recipes in NEI, or setting the config option #Debug: Print Campfire Recipes to true.


# Specific Formats
# [Campfire Cooking Recipes]
-There are up to 6 sections in this one. Separate each section with a /.
-The first section is anywhere from one to four # [Custom Input] (see below), each separated with an &.
-The second section is the output # [Custom Output] (see below).
-The third section is the cooking time, which is optional. It's the number of ticks until the item cooks. 
For inputs that are more than one item, all items must have reached this cooking time. 
If not included, or set to *, the recipe will use the default cooking time.
The default cooking time is 600 ticks (30 seconds), but it can be changed in the config.
-The fourth section is the signal fire setting, which is optional.
It can be "signal" or "notsignal" or "any".
"signal" means the campfire must be a signal fire to cook the item.
"notsignal" means the campfire must NOT be a signal fire to cook the item.
"any" means it doesn't matter, which is the default.
-The fifth section is the byproduct # [Custom Output] (see below), which is optional. It's simply another output that can have a chance to be produced.
-The sixth section is the byproduct chance, which is optional. It's a decimal number between 0.0 and 1.0 representing the chance for the byproduct.
If byproduct chance is not given, it defaults to 1.0 (100%).

Some example recipes:
-A raw porkchop turns into a cooked porkchop
    minecraft:porkchop/minecraft:cooked_porkchop
-An unlit campfire turns into a lit campfire
    campfirebackport:campfire_base/campfirebackport:campfire
-Regular stone bricks turns into cracked stone bricks
    minecraft:stonebrick:0/minecraft:stonebrick:2
-Sand or red sand turns into glass
    minecraft:sand/minecraft:glass
-A birch log turns into 2 charcoal after 1 minute
    minecraft:log:2/minecraft:coal:1@2/1200
-4 rotten flesh turns into 2 leather
    minecraft:rotten_flesh@4/minecraft:leather@2
-Any music disc turns into a diamond after 4321 ticks, but only on signal fire campfires
    ore:record/minecraft:diamond/4321/signal
-4 items in the logWood ore dictionary turns into 5 charcoal, but only on campfires that aren't signal fires
    ore:logWood@4/minecraft:coal:1@5/*/notsignal
-1 brown mushroom, 1 red mushroom, and 1 bowl turns into mushroom stew, but only on signal fire campfires
    minecraft:brown_mushroom&minecraft:red_mushroom&minecraft:bowl/minecraft:mushroom_stew/*/signal
-1 bucket of milk, 1 wheat, 1 sugar, and 1 egg turns into a cake after 30 seconds
    minecraft:milk_bucket&minecraft:wheat&minecraft:sugar&minecraft:egg/minecraft:cake/600
-1 carrot and 3 gold nuggets turns into a golden carrot
    minecraft:carrot&minecraft:gold_nugget@3/minecraft:golden_carrot
-An undamaged wooden sword is enchanted with fire aspect II after 5 seconds
    minecraft:wooden_sword:0/minecraft:wooden_sword[ench:20,2]/100
-2 iron pickaxes each enchanted with efficieny of at least level 2 turns into a damaged diamond pickaxe after 5 minutes
    minecraft:iron_pickaxe[ench:32,2]@2/minecraft:diamond_pickaxe:900/6000
-3 items in the blockGlass ore dictionary enchanted with smite level 4 or higher turns into 4 gold ingots named "Stewart" and enchanted with knockback 10 and looting 6
    ore:blockGlass[ench:17,4]@3/minecraft:gold_ingot{display:{Name:"Stewart"},ench:[{id:19,lvl:10},{id:21,lvl:6}]}@4
-Any item enchated with sharpness of at least level 1 turns into an egg
    [ench:16,1]/minecraft:egg
-3 of any pickaxe turns into a diamond hoe with knockback 10 after 1 second
    tool:pickaxe@3/minecraft:diamond_hoe[ench:19,10]/20


# [Campfire Extinguishers / Ignitors]
-There are 3 sections to this one. Separate each section with a /.
-The first section is the way this extinguisher / ignitor can be used.
It can be "left" or "right", for left click or right click.
Since right clicking a campfire checks for cooking recipes first, you might want to set this to "left" if the input is also a cooking recipe input.
Additionally, you can add "+dispensable" to make this extinguisher/ignitor work in a dispenser as well. More on this in a second.
-The second section is # [Custom Input] (see below), but there are some differences.
If you added "+dispensable" to the first section, # [Custom Input] shouldn't be an NBT-only input.
(If you do add "+dispensable" to an NBT-only input, it'll be treated as not having "+dispensable" and you'll get a warning in console.)
USE CAUTION when assigning "+dispensable", if the item you specify already has a dispenser behaviour, that behaviour will be overwritten.
For example, if you add "+dispensable" to a fire charge, dispensers will no longer fire them as projectiles.
This is just because of the way dispenser behaviours work in minecraft.
IMPORTANT: Dispenser behaviours are ONLY registered when the game is loaded!
When you add a dispensable recipe from the in-game config screen, it won't actually be dispensable until you quit and reload!
In the same way, if you remove a dispensable recipe, it won't actually stop being dispensable until you quit and reload!
Also, dispenser behaviours are registered before any CraftTweaker scripts are run! So if you add "+dispensable" to an Ore Dictionary input but also try to change the contents of that Ore Dictionary entry in CraftTweaker, the dispenser behaviours will only be added to whatever was in that Ore Dictionary entry before you changed it.
-The third section is what should happen after extinguishing / igniting the campfire.
"damageable" will attempt to damage the item by the "@number" from the # [Custom Input].
"stackable" means the item used will be reduced in stack size by the "@number" from the # [Custom Input].
"none" means neither of these things will happen.
Additionally, you can specify an item to be added to the inventory afterward by putting a >, and then a # [Custom Output] (see below).

Some example extinguishers/ignitors:
-Right-clicking with a milk bucket turns into an empty bucket
    right/minecraft:milk_bucket/stackable
-Right-clicking with a snow block turns into 2 snowballs and can be used from a dispenser
    right+dispensable/minecraft:snow/stackable>minecraft:snowball@2
-Left-clicking with any sword enchanted with fire aspect and can be used from a dispenser
    left+dispensable/class:net.minecraft.item.ItemSword[ench:20,1]/damageable
-Right-clicking with any shovel and can be used from a dispenser
    right+dispensable/tool:shovel/damageable
-Left-clicking with any Tinker's Construct tool that has Auto-Smelt
    left/[Tinkers:[B:{Lava:1}]]/damageable
-Left-clicking with 5 of any stickWood and can be used from a dispenser
    left+dispensable/ore:stickWood@5/stackable
-Left-clicking with a bow enchanted with flame damages it by 10 points
    left/minecraft:bow[ench:50,1]@10/damageable
-Right-clicking with a Thermal Expansion tank with at least 1000 mB of water (drains the water afterwards)
    right/ThermalExpansion:Tank[Fluid:"water",DrainAmount:1000]/none
-Right-clicking with a Thermal Expansion tank with capacity for up to 1000 mB of lava (fills with lava afterwards)
    right/ThermalExpansion:Tank[Fluid:"lava",FillAmount:1000]/none
-Right-clicking with a wooden sword returns a wooden sword enchanted with fire aspect
    right/minecraft:wooden_sword/stackable>minecraft:wooden_sword[ench:20,2]
-Left-clicking with 3 of any stairs enchanted with fire aspect of at least level 3 returns a lit furnace named Oops
    left/class:net.minecraft.block.BlockStairs[ench:20,3]/stackable>minecraft:furnace:1{display:{Name:"Oops"}}


# [Burn Out Biome / Dimension Timers]
-There are 3 sections to this one. Separate each section with a /.
-The first section is the campfire types this timer applies to.
Must be "regular", "soul", or "both".
-The second section is the biome and/or dimension ID.
Type "biome:id" or "dimension:id". 
You can give both a biome and dimension ID at the same time, by putting an & between.
For example, "biome:4&dimension:-1".
-The third section is the number of ticks until the campfire will burn out. 20 ticks is 1 second.
Like in the Burn Out Timers config option, setting it to -1 prevents the campfire from burning out.

Some example timers:
-Soul campfires never burn out in the nether
    soul/dimension:-1/-1
-Regular campfires burn out after around a minute in swamp biomes
    regular/biome:6/1200
-All campfires burn out immediately in ocean biomes that are in the nether
    both/biome:0&dimension:-1/0
-Regular campfires burn out after around an hour in mushroom island biomes that are in the end
    regular/dimension:1&biome:14/72000


# [Campfire Drops]
These use the same format as # [Custom Output] (see below).

---

# General Formats
# [Custom Input]
-It can be based on a namespaced Item, an Ore Dictionary entry, a tool class, a Java Class, or NBT.
-Namespaced Items are in the format "modid:name:metadata".
The ":metadata" part is optional. If it isn't there, any metadata of the item will work.
For example, minecraft:sand refers to both Sand and Red Sand, but minecraft:sand:0 refers to only Sand.
-Ore Dictionary entries are in the format "ore:oreName".
For example, ore:logWood refers to anything registered in the logWood ore.
-Tool classes are in the format "tool:toolClass".
There are 3 vanilla tool classes: pickaxe, shovel, and axe. Simply type tool:pickaxe or tool:shovel or tool:axe.
Modded tool classes work as well.
-Java Classes are more technical. They refer to the actual Java Class used by an item or block.
You may have to dip into the vanilla code or the github of other mods to get it. It has to be a full package and class name, prepended by "class:".
For example, class:net.minecraft.item.ItemSword refers to any item that uses the ItemSword Class or extends it, which includes all vanilla swords.
Another example, class:net.minecraft.block.BlockStairs, refers to any block that uses the BlockStairs Class or extends it, which includes all vanilla stairs.
Mods usually will extend the vanilla classes, especially for things like swords and armor. That's the main intended use.
There's no check here other than that the class exists, so you could technically do class:net.minecraft.item.Item to refer to every single item in the game, but I really wouldn't recommend it.
-Next is the NBT, which can be attached to an Item/Ore/tool/Class or exist on its own. You can type it out exactly like you would in a command.
For example, minecraft:diamond_pickaxe{display:{Name:"Super Pick"}}.
Unfortunately, this modifier isn't very useful. That's because the NBT tag must match EXACTLY.
For example, you might want to check for the Unbreaking enchantment on a Golden Shovel, so you type minecraft:golden_shovel{ench:[{id:34,lvl:1}]}.
But this will refer to Golden Shovels whose only enchantment is Unbreaking at exactly level 1 without any other NBT.
So some specific NBT things have been given a special format you can type it in to test in a more lenient way.
For enchantments, that format is "[ench:id,minlevel]".
For example, minecraft:golden_shovel[ench:34,1] refers to any Golden Shovel that has an Unbreaking enchantment of at least level 1, and may or may not have other NBT.
Another special NBT format is the fluid format, for items that hold fluids: "[Fluid:"fluidname",DrainAmount:amount]" or "[Fluid:"fluidname",FillAmount:amount]".
For example, ThermalExpansion:Tank[Fluid:"water",DrainAmount:1000] will check for at least 1000 mB of water in a fluid tank item from Thermal Expansion, and will use up the water afterwards.
Likewise, ThermalExpansion:Tank[Fluid:"lava",FillAmount:1000] will check for a fluid tank item from Thermal Expansion that can hold up to 1000 mB of lava, and will fill it up with lava afterwards.
The last NBT format is even more special than the others. This one can only exist on its own, without an Item/Ore/tool/Class.
It's the Tinker's Construct Modifiers format. It allows you to check whether a Tinker's tool has specific modifiers on it.
This one's rather complicated, so it gets its own section. See # [Tinker's Construct Modifiers Format].
By the way, NBT-only inputs will display in NEI as a written book. Hover over it to see what you want to know.
-Lastly, there's the number of inputs. You can set it by adding "@number" to the end of your input.
For example, minecraft:dye:4@64 or ore:ingotIron@15 or minecraft:stone_axe[ench:16,3]@4.
It's set to 1 by default if not included.


# [Custom Output]
-It's based on a namespaced Item.
-Namespaced Items are in the format "modid:name:metadata".
The ":metadata" part is optional. If it isn't there, it defaults to 0.
For example, minecraft:coal and minecraft:coal:0 both refer to coal, and minecraft:coal:1 refers to charcoal.
Once you've typed out your namespaced Item, you can add optional modifiers to the recipe.
-The first modifier is the NBT. Type it out exactly like you would in a command.
For example, minecraft:diamond_pickaxe{display:{Name:"Super Pick"}}.
Or you can use one of the special formats from # [Custom Input] (but NOT # [Tinker's Construct Modifiers Format]).
For example, minecraft:stone_axe[ench:16,3].
-The second modifier is the number of outputs. You can set it by adding @number to the end of your output.
For example, minecraft:dye:4@2 or mineraft:iron_ingot@13 or minecraft:stone_axe[ench:16,3]@64.
It's set to 1 by default if not included.


# [Tinker's Construct Modifiers Format]
I'd recommend using the mod TiC Tooltips to see more information about modifiers.
-General Format:
    [Tinkers:[I:{integer modifiers}B:{byte modifiers}F:{float modifiers}IA:{integer array modifiers}]]
Each section is optional, but they must be in the order Integer, Byte, Float, Integer Array.
Each section can contain multiple modifiers separated by commas. But note that the sections themselves are not separated by commas!
Below are the supported modifiers organized by section.
-Integer Modifiers: These can be any integer, almost always positive. They will match items with the given value or greater.
    HarvestLevel
    MiningSpeed
    Beheading
    Fiery (25 Blaze Powder per modifier slot)
    Necrotic (Called Life Steal in the tooltip.)
    Unbreaking (Called Reinforced in the tooltip.)
    Moss (Called Auto-Repair in the tooltip. Ball of Moss sets it to 3.)
-Byte Modifiers: These are 1 or 0, where 1 means true and 0 means false. They will match items with the exact value given.
    Lava (Called Auto-Smelt in the tooltip.)
    Emerald (Called Durability +50% in the tooltip.)
    Diamond (Called Durability +500 in the tooltip.)
    SilkTouch (Called Silky in the tooltip.)
    Broken (Whether the tool is broken or not.)
    Flux (If the tool uses RF instead of durability.)
-Float Modifiers: These can be any decimal number. If positive, they will match items with the given value or greater. If negative, they will match items with the given value or smaller. If zero, they will match items with exactly zero.
    Knockback (Goes up 0.1 at a time. 10 Pistons per modifier slot)
    Shoddy (positive values indicate Stonebound, negative values indicate Jagged.)
-Integer Array Modifiers: These can be any integer, always positive. They will match items with the given value or greater.
    Redstone (Called Haste in the tooltip. 50 Redstone per modifier slot)
    ModAttack (Called Sharpness in the tooltip. 72 Quartz per modifier slot)
    ModSmite (Called Smite in the tooltip. 36 Consecrated Soil per modifier slot)
    ModAntiSpider (Called Bane of Arthropods in the tooltip. 4 Fermented Spider Eyes per modifier slot)
    Lapis (Called Luck in the tooltip. Fortune for pickaxes, Looting for swords. 450 Lapis Lazuli is the maximum)
Any arbitrary modifier from other mods should work as long as you put it in the correct section. The above modifiers will look nicer in NEI though.
Some examples:
-Matches any Tinker's Construct tool:
    [Tinkers:[]]
-Matches any tool that's had at least one Blaze Powder added to it:
    [Tinkers:[I:{Fiery:1}]]
-Matches any tool with Auto-Smelt:
    [Tinkers:[B:{Lava:1}]]
-Matches any tool that isn't broken:
    [Tinkers:[B:{Broken:0}]]
-Matches a tool that's Jagged, with at least one Redstone added to it, with a Diamond added to it, and with a Harvest Level of at least 1 (stone pickaxe level):
    [Tinkers:[I:{HarvestLevel:1}B:{Diamond:1}F:{Shoddy:-1.0}IA:{Redstone:1}]]
-Matches a tool that's Stonebound 2, with Auto-Smelt, with Beheading 1 or greater, with a Ball of Moss added to it, with at least one full modifier of Fiery (25 Blaze Powder), and with at least half a modifier of Knockback (5 Pistons):
    [Tinkers:[I:{Beheading:1,Moss:3,Fiery:25}B:{Lava:1}F:{Shoddy:2.0,Knockback:0.5}]]

---

# Campfire Backport Mixin Config
The config file "campfirebackportmixins.cfg" lets you toggle which mixins will be used. 
There's no in-game GUI for this config, and Minecraft must be restarted if you want to change the settings.
If you're using the "nomixin" .jar of Campfire Backport (the version number ends with "+nomixin"), you will need a separate mixin mod such as UniMixins to launch the game. (https://github.com/LegacyModdingMC/UniMixins) 

Here's an overview of the options in this file.
-Mixins: 
    Enable or disable all mixins
-Vanilla Mixins:
    EntityPotion - thrown splash potions will extinguish campfires near where they land
    EntitySmallFireball - small fireballs (like those shot by blazes, or from dispensers with fire charges) will ignite campfires they hit
    PathFinder - entities will try to avoid lit campfires when pathfinding, and will be able to path properly over unlit campfires

Note: In order for mod compatibility mixins to be applied, the mod's .jar file has to be discovered before Minecraft launches.
Avoid renaming mod .jar files! If the filename doesn't include the mod name (ignoring case) in it somewhere, the .jar will not be found by Campfire Backport and mixins can't be applied.

-Witchery Mixins:
    TileEntityCauldron - campfires will be able to heat up witch's cauldrons just like fire
    TileEntityKettle - campfires will be able to heat up kettles just like fire
    brews.EntitySplatter - the projectiles created by the Flame brew can ignite campfires
    brews.Extinguish - the Extinguish brew can extinguish campfires
    symbols.Aguamenti - the Aguamenti symbol can extinguish campfires
    symbols.Incendio - the Incendio symbol can ignite campfires
-Thaumcraft Mixins:
    TileCrucible - campfires will be able to heat up crucibles just like fire and lava
    TileThaumatorium - campfires will be able to heat up thaumatoriums just like fire and lava
-Enable Early Mod Loading: 
    Some mods need to be loaded early so mixins can be applied to them. Different mixin loaders handle this sort of thing in different ways. If your mixin loader can do it better than Campfire Backport, you may be able to disable this.
    Applies to: Witchery
-Skip Mod Checking:
    If enabled, skips checking for mods before trying to apply mod compatibility mixins. Any mod mixins that are enabled will always try to apply, even if you don't have the target mod! If mod mixins aren't being applied for you, you could try turning this on.
