Custom beverage crafting, with large customizability on drinking effects.
Recipe Customization
A recipe can be customized completely, this is heavily adviced towards, as users will have:
- A more unique experience
- Users will have to figure out each recipes themself. This leaves the whole brewing process to be experienced for the user.
Fundamental concepts
A brew recipe outcome is determined from the quality of the brew, this is divided 4 different qualities; failed/bad/good/excellent. If a brew is failed, then a default recipe will be chosen to determine the apperance for the resulting item. The result for the brew when it has any of bad/good/excellent qualities can be written into the recipe itself. This is done differently for list values and single values.
Quality factored list
A quality factored list is how you select behavior depending on quality for a list. A set of +
symbols define whether the element should be included in the list for a certain quality. When no +
symbol is as a prefix for the element, it will apear for all qualities.
my-property:
- This will be the first element
- +This element will only show for bad qualities
- ++This element will only show for good qualities
- +++This element will only show for excellent qualities
- This will be the last element
For a bad quality brew, this list would be read as:
my-property:
- This will be the first element
- This element will only show for bad qualities
- This will be the last element
And same for the other qualities, I think you get the idea.
Quality factored single value
A quality factored single value is how you select behavior depending on quality for a single value. One way of writing this type of value is with the following format:
my-property: Bad Quality/Good Quality/Excellent Quality
For example for a poor quality potion, the config would be read as this:
my-property: Bad Quality
If you want the value to be the same for all qualities, you simply remove any /
symbol, like this
my-property: Quality For All
Mini Message
Every message / text in the recipe configuration is going to be formatted using minimessage. That means there's no support for legace ampersand formatting (for example &0
)
Recipe Options
Here's a list of all available recipe options
Brew name
For more information about quality format, see the Quality factored single value section
potion-attributes.name: Bad Quality/Good Quality/Excellent quality
Brew Color
Select the color of the brew. Supports some minecraft color codes
potion-attributes.color: ffe491
Brewing Steps
When defining each step of the brew, you define how the brew can be made. There's currently four different types of steps; cook/mix/distill/age, all of the separate steps requires a different configuration. The type of the step has to be defined for each step. The Cook Step
The cook step has 2 mandatory properties, ingredients
and cook-time
and one optional property cauldron-type
- type: cook
cook-time: 4 # Minutes
cauldron-type: water # default water
ingredients:
- <my_ingredient>/<amount>
- <my_integrated_plugin>:<custom_item_id>/<amount>
- wheat/3 # example
- brewery:gin/2 # recipe from a brew
The Mix Step
The mix step has 2 mandatory properties, ingredients
and mix-time
.
- type: mix
mix-time: 2 # minutes
ingredients:
- <my_ingredient>/<amount>
- <my_integrated_plugin>:<custom_item_id>/<amount>
- wheat/3 # example
- brewery:gin/2 # recipe from a brew
The Distill Step
The distill step has 1 mandatory property, runs
- type: distill
runs: 3 # How many times should the brew be distilled
The Age Step The age step has 2 mandatory properties, barrel-type and age-years.
- type: age
barrel-type: oak # Barrel types, includes copper + wood types
age-years: 3 # In game days
Brew difficulty (Optional)
Define how hard it should be to brew a beverage.
brew-difficulty: 2 # default 1
Alcohol content (Optional)
Define how potent the brew is. The value can be anything, but will realistically be trunkated between [-100, 100]. See Quality factored single value for more information on the format.
alcohol: 10 #ml
Lore (Optional)
Apply lore on the brew. See Quality factored list for more information about the format.
potion-attributes.lore:
- First element
- +Bad quality element
- Last element
Custom model data (Optional)
Currently only integer values for custom model data is supported.
potion-attributes.custom-model-data: 1
Glint (Optional)
Apply the glint effect on the item.
potion-attributes.glint: true # Default false
Brew Info Lore (Optional)
You can decide whether the extra lore should be displayed for an item, this includes for example recipe hints such as cook time, and so on.
potion-attributes.append-brew-info-lore: false # Default true
Custom item ID (Optional)
You can tag the brew to be made to a custom item with the following tag. Currently no checks are done on enable for this, please test each item for now when doing this.
potion-attributes.custom-id: nexo:better_brew
Note that the resulting item has to be consumable for the multiple types of effects from The Brewing Project to trigger.
Action Bar (Optional)
What action bar message should be displayed when the player drinks this brew. See Quality factored single value for more information on the format.
messages.action-bar: Bad/Good/Excellent
Title (Optional)
What title message should be displayed when the player drinks this brew. See Quality factored single value for more information on the format.
messages.title: Bad/Good/Excellent
Message (Optional)
What chat message should be displayed when the player drinks this brew. See Quality factored single value for more information on the format.
Potion Effects (Optional)
What potion effect should be applied to the player when drinking this brew. See Quality factored list for more information about the format. Note that the duration is in TICKS not in seconds.
effects:
- <potion_effect>/<duration>/<amplifier>
- speed/40/2
Events (Optional)
What events should be triggered when drinking this potion. See Quality factored list for more information about the format. You can define your own events in the configuration (this is how you do command execution), but there's also predefined events.
events:
- stumble # A predefined event
- memory_loss # A custom event