Brewery

Brewery

101k Downloads

Simplify the concept and implementation of brew quality

tschaffter opened this issue ยท 0 comments

commented

I have recently reported several issues which have the same origin: 1) information in the lore of the brews are inaccurate (and sometime missing) and 2) two definitions of brew quality are used.

Add fermention info on cauldrons and bottles
53 years barrel aged bier is still a Fine Beer
Can not sell/buy/exchange more than one brew using ShowCaseStandalone

To a regular player (non-admin player), the quality of his brewing is only shown via the name of the brews that he produces. He doesn't know it initially but each recipe leads to a brew (e.g. beer) which have three different names based on their quality. For examples:

  • Skunky Beer/Beer/Fine Beer
  • Lousy Vodka/Vodka/Russian Vodka
  • Stale Coffee/Coffee/Strong Coffee
  • etc.

I described in this comment the experiments I expect the players to perform in order to identify the 9 parameter values that affect the quality of a brewing. I'm not sure how new beers are made in real life, but I expect that a similar procedure is undertaken at some point (e.g. to refine a recipe).

The first issue I reported is that information about intermediate brews is sometimes incomplete, not accurate and does not appear when expected. Being able to measure accurately what we do is of primary importance in many domains including cooking.

  • In the current implementation, when the cauldron/clock tells you that the fermentation time is x minutes, the effective fermentation time of the intermediate brew is not expressed in minutes but in minutes and seconds.
    • Suggestion: round the fermentation time to minutes
  • The fermentation time is not displayed in the lore of the brew after extracting it from the cauldron. I don't know why but this information appears after some random time after placing the brew in a barrel.
    • Suggestion: add the fermentation time in minutes to the lore of the brew when it is extracted from the cauldron.
  • The type and number of ingredient(s) put in the cauldron is not displayed anywhere.
    • Suggestion: add the type and number of ingredient(s) to the lore of the brew when it is collected from the cauldron. Example: Brew title: "Fermented wheat", extra info: Wheat 3, fermenting (or cooking) time: 8 minutes.

The barrels and brewing stand already indicate immediately and accurately their relative information.

Up until now, the modifications suggested are limited to making the lore of the brews more informative. This actually mainly concern the cooking of the ingredient(s) in a cauldron (which I called fermentation using the example of beer).

In the current implementation, the name of brew changes automatically either when it is in a cauldron, barrel, or brewing stand depending on the values of the recipe parameters. This is perfectly fine.

Another issue reported is that brews made with Brewery can not be sold/bought/exchanged using the Bukkit plugin ShowCaseStandAlone (SCS). This plugin is by far the best solution I've found to trade with other players (I still occasionally use Essentials Signs for this purpose) and its number of Downloads shows that it's most likely used by a large number of players.

NOTE: An alternative that may work to trade brews is to setup an HyperMerchant NPCs using the Citizens plugin (all items traded are listed in the seemingly-infinite inventory of the merchant).

Here the issue is that Brewery gives a unique ID (UID) to each brew. For example, two beers which are labeled "Fine Beer" and seems identical to the player have actually a different ID and so they can not be sold together in a "Fine Beer" showcase.

To solve this issue, the system of UID for each brew should be removed so that every "Fine Beer" has the same ID and so can be traded by batch using a showcase.

The purpose of the UID of each brew in the current implementation is to keep track of the detailed information of the brew (cooking time, number of years aged in barrel, type of wood used for the barrel, etc.). I see two usages for this information: compute the internal quality of the brew (scalar between 1-10) hidden to the player and enable a brew to resume an aging or distillation process.

First, if the UID of each brew is removed, the detailed information can not be kept anymore and so the aging and distillation processes can not be resumed. I don't know how often players use this feature (if they know that it exists) but regarding other benefits, I think it's not a big loss (actually one of the solutions that I describe below keeps the resume feature).

Lastly, the % of alcohol and the internal quality of the brews can not be computed anymore at the time they are drunk by the player. By the way another non-intuitive issue is that the player may have two "Fine Beer", for example a 1-Year and 53-Year barrel aged, which before drinking them appear to the player to be exactly the same. But they actually differ internally, which the player don't know (the 53-year barrel aged beer has 0% of alcohol). This is also an issue if you want to give or trade beers as the label of the brew doesn't describe the product accurately.

If we want to remove the UID of each brew, the quality of the brew must be computed before drinking it, which enables to make so that the name of the brew effectively describes the quality of the brew (which can then be given of traded for what it is). That means that at some point, the detailed information of the brew must be casted so that the brew fall in one of the three quality categories defined for each brew (use the equation already implemented which takes care of renaming the brew Skunky Beer/Beer/Fine Beer, for example).

The simplest and most efficient solution that I can figure out right now would be to add a finalization procedure to determine the type of brew and its level of quality (out of three) which will then determine its name (e.g. Skunky Beer/Beer/Fine Beer).

@Sn0wStorm: I understood that the lack and accuracy of information in the lore of intermediate brew was intended so that each brew would be different. However I don't think user would notice most-of-the-time slight differences resulting because they cannot easily time the cooking in the cauldron in seconds, for example. Especially, regular users don't have access to the command /brew info and so they can not see their drunk rate and quality. In addition, two "Fine Beers" may not be what they seem to be. It's ok if you are the one drinking them but it's a bit annoying if you want to buy them from another player (you can end up with "Fine Beer" that have the same effect than water). Finally, the purpose of brewing automation becomes limited if brews can not be reproduced accurately. If you want to make the effect of each drink slightly different, a better solution would be to add random values sampled from a Gaussian distribution to the percentage of alcohol and/or internal brew quality at the time of drinking the brew.

The above modifications may require some work to implement. I just wanted to let you know about the issues I encountered and solutions that may fix them and make the plugin even more attractive.

EDIT: The finalization of a brew could be similar to the usage of the command /brew unlabel: placing the brew in your hand and type a command like /brew finalize.