Cafe and Coffee
Coffee is a seven step chain: grow, pulp, roast, grind, brew, serve, drink. Every step is a real station and every step can be got wrong.
The chain, end to end
The cafe is a production chain with a market at the end of it. It starts at a Coffee Shrub in your garden and finishes at a cup somebody else paid you for. Nothing in it runs by itself: every arrow in the chain is a right-click you make at a structure you built.
The chain reads cherry, pulp, green bean, roast, grind, brew, serve. Pulping one Coffee Cherry gives you one Green Coffee Bean and one Coffee Pulp, and the pulp goes in a composter. That is the loop back into the soil the shrub grew out of, and it is the reason pulp is priced the way it is.
The cafe prints what it registered when the server starts: 5 roast levels, 6 grounds, 7 drinks, 12 chain goods, 4 stations, 12 self-check arms, for 19 items across 31 files. Everything on this page is written from that code and checked offline. None of it is a report from a running server.
What each step needs
| Step | Where | Goes in | Comes out |
|---|---|---|---|
| 1. Grow | your garden | a Coffee Shrub | Coffee Cherries |
| 2. Pulp | Herbalist's Station | 1 cherry | 1 Green Coffee Bean and 1 Coffee Pulp |
| 3. Roast | Roaster | 8 green beans | one batch, at whatever level you pull it out at |
| 4. Grind | Grinder | roasted beans | 2 grounds per bean, coarse or fine |
| 5. Brew | Brew Bar | grounds plus whatever else the drink names | one cup |
| 6. Serve | Servery | cups you brewed | coins from other players |
| 7. Drink | anywhere | one cup | an effect that lasts |
Pulping is the only step with no station of its own. It uses the Herbalist's Station you already know, so the first thing the cafe asks of you is something you have probably already built.
The four stations
A station is a pattern of ordinary blocks. Nothing is written into them and nothing is saved about them. When you right-click the centre block, the plugin reads the world around it at all four rotations, and if the pattern is there you get the station. Break one block out of it and it stops being a station on the very next click.
| Station | Centre, right-click this | The rest of the pattern | What it is for |
|---|---|---|---|
| Roaster | Blast Furnace | Iron Bars above it, Bricks on either side. The cell directly underneath is the heat and is left out of the pattern on purpose. | Turns 8 green beans into a roasting batch |
| Grinder | Grindstone | Smooth Stone below, a Smooth Stone Slab on either side | Turns roasted beans into grounds |
| Brew Bar | Brewing Stand | A copper block below, a Water Cauldron on one side, a lantern on the other | Makes the seven drinks |
| Servery | Barrel | A lantern above it and two copper blocks beside it | Sells cups to other players |
The Roaster's empty cell is the point of the Roaster. Whatever sits directly under the blast furnace decides how fast the batch roasts, and it is read separately from the pattern, so you change roast speed by swapping one block rather than by rebuilding the structure.
Right-click the centre block to open the cafe. Sneak and right-click to use the vanilla block instead. The blast furnace, the grindstone, the brewing stand and the barrel all still work as themselves, so nothing you build here costs you the block it is built out of.
Two arrangements, and two families
The Servery accepts its two copper blocks either opposite each other or on two adjacent sides, forming a corner. Both are a counter. The other three stations have one arrangement each.
The copper and the lantern cells accept families rather than single blocks: any of the eight solid copper blocks (every weathering stage, waxed or not) and any of the ten lanterns. That matters because copper oxidises on its own, with no event and nobody touching it. Without the family, a counter built on Monday would quietly stop being one by Friday while looking identical.
Detection costs at most four cells at four rotations, so sixteen block reads, on a block you are standing next to. There is no scanning task, no saved structure state and nothing to clean up.
The roast
The Roaster is the one place in the chain where you can destroy your own work, and that is deliberate. It is the skill gate the whole feature hangs on.
Put 8 Green Coffee Beans in and right-click the blast furnace. The batch takes the quality of the worst bean in it, and the heat is read once, from the block under the furnace, at the moment the batch starts. Swapping the heat block afterwards changes nothing: the level is worked out from the start time and the frozen heat, and there is no progress counter anywhere in the system.
That has a consequence worth planning around. There is no pause. Downtime counts exactly like uptime, because a clock that could be stopped would be a clock that could hand out free perfect roasts. At the shipped roast step of 30 seconds:
| Heat | Block under the furnace | Rate | Light | Medium | Dark | Burnt |
|---|---|---|---|---|---|---|
| Low | Campfire | 0.60 | 50 s | 100 s | 150 s | 200 s |
| Medium | Magma Block | 1.00 | 30 s | 60 s | 90 s | 120 s |
| High | Lava | 1.60 | 19 s | 38 s | 57 s | 75 s |
Past the burn point the batch reads Burnt and stays there. An absurdly long absence saturates at Burnt rather than wrapping back round to Green, so there is no length of downtime that turns into a free perfect roast. The flip side is that any gap longer than 3 minutes 20 seconds ruins every batch in the world, and that is the widest window any heat buys you. A campfire is the forgiving one; lava is for somebody who is standing there watching.
The five levels
| Level | What it is | Brewable | Base sell value |
|---|---|---|---|
| Green Coffee Bean | Unroasted. Sweet-smelling and undrinkable; the Roaster's input. | no | 2.0 |
| Light Roast | Bright and sharp. Steeps well, too thin to pull as espresso. | yes | 5.0 |
| Medium Roast | Balanced. The filter roast, and the one a careless roaster overshoots. | yes | 5.5 |
| Dark Roast | Heavy and oily. What espresso is made of, and one step from ruin. | yes | 6.0 |
| Burnt Coffee | Charcoal that used to be coffee. | no | 0.0 |
Burnt Coffee is worthless on purpose, and the word is backed by numbers in more than one place. It does not grind, it does not brew, it sells for nothing, and it will not burn as furnace fuel even though it sits on a charcoal icon. A salvage value would quietly remove the stake from the roast, so there is none.
Anyone may take a batch out, not only the person who started it. The beans have already left that player's inventory, and a batch burning down in a public cafe because its starter logged off would be the worse outcome. Whoever collects is told by name who started it, so it is visible rather than silent.
Grinding, and the twelve chain goods
The Grinder takes the darkest brewable roast you are carrying, all of it, in one go, and hands back 2 grounds per bean at the worst quality among them. You choose the grind at the moment you grind, and the choice is the whole decision:
- Coarse is gritty, and water sits in it. Filter coffee and cold brew want this.
- Fine is powdery, and pressure is forced through it. Espresso wants this.
Three brewable roasts times two grinds is six grounds. Those six, plus the pulp, the green bean, the three roasted beans and the burnt one, are the twelve chain goods. Every one of them is a real item you can hold, stack, name, trade and lose, because half of this feature is a market and nobody can sell half of a chain whose middle is an invisible plugin state.
| Good | What it is | Base sell value |
|---|---|---|
| Coffee Pulp | What is left when the bean comes out. The one good here that composts. | 0.6 |
| Green Coffee Bean | Unroasted. The Roaster's input. | 2.0 |
| Light Roast | Roasted bean, one step in. | 5.0 |
| Medium Roast | Roasted bean, two steps in. | 5.5 |
| Dark Roast | Roasted bean, the last safe stop. | 6.0 |
| Burnt Coffee | Ruined. Priced at zero on purpose. | 0.0 |
| Light Roast, Coarse Grind | Grounds for steeping. | 8.0 |
| Light Roast, Fine Grind | Grounds for pressure. | 8.0 |
| Medium Roast, Coarse Grind | What filter coffee asks for. | 9.0 |
| Medium Roast, Fine Grind | Grounds for pressure. | 9.0 |
| Dark Roast, Coarse Grind | Grounds for steeping. | 10.0 |
| Dark Roast, Fine Grind | What espresso asks for. | 10.0 |
Those figures are the base suggestion at Common quality; a better stack is worth proportionally more. Coffee Pulp is priced low on purpose, because it is worth more in a composter than on a shelf, which is what makes closing the loop the profitable choice rather than merely the tidy one.
Every stack in the chain is a function of its id and its quality and nothing else. There is no brew time, no roast score and no brewer's name written into a cup, so sixty-four lattes are one stack rather than sixty-four, and a counter can recognise the cup it handed out.
The seven drinks
Every drink is brewed at a Brew Bar out of your own inventory. There are no input slots: the bar reads what you are carrying, takes it, and hands the cup back to you. Nothing is ever left inside a window to be lost when you close it.
| Drink | Method | What it takes | What it gives | Base time | Suggested price |
|---|---|---|---|---|---|
| Espresso | pull | 2 Dark Roast, Fine Grind | Caffeinated, Haste II, Speed I | 45 s | 34 coins |
| Filter Coffee | pour over | 1 Medium Roast, Coarse Grind | Caffeinated (its own Haste I) | 300 s | 18 coins |
| Cold Brew | cold steep | 3 coarse grounds at any brewable roast | Caffeinated, and immunity to Mining Fatigue | 480 s | 26 coins |
| Latte | steam | 1 Espresso, 3 Soybeans | Caffeinated, Saturation, Regeneration | 180 s | 48 coins |
| Vanilla Flat White | steam | 1 Espresso, 1 Milk Bucket, 1 Vanilla Pod | Caffeinated, Haste II, Resistance I | 180 s | 96 coins |
| Chai | hot steep | 2 Tea Leaf, 1 Chili Pod, 1 Sugar Beet | Steady, Fire Resistance, Resistance I | 420 s | 40 coins |
| Green Tea | hot steep | 2 Tea Leaf | Steady, Regeneration | 360 s | 14 coins |
The Flat White's milk bucket hands the empty bucket straight back to you. The Latte takes soybeans directly rather than an intermediate soy milk item, so the difference between the two milk drinks (soy against dairy) is visible on the recipe line of both.
Bringing the wrong grounds
Only two drinks name a roast, and three name a grind. Bringing something else is allowed, and it costs a quality tier per mistake, to a maximum of two:
- Espresso wants a dark roast at a fine grind.
- Filter coffee wants a medium roast at a coarse grind.
- Cold brew names no roast at all and asks only for a coarse grind. That is a declaration rather than an oversight: cold brew is where a roast that came out wrong still goes somewhere, which is what stops a missed roast being a total loss. A fine grind still costs a tier.
- The four milk and tea drinks use no grounds, so nothing about the roast can touch them.
Burnt coffee is the one outright refusal in the whole brewing step. It is not a tier drop, it is a no, with a sentence saying so.
A cup's quality is the worst of its ingredients, minus any tier drops. If you are holding both the right grounds and the wrong ones, the Brew Bar picks the right ones, so the tier drop stays a fallback and never becomes a trap. The bar tells you what a cup will come out at before you click, on the same reading that produces the cup.
What a cup does to you
Quality buys time and never strength. A Pristine espresso is not a stronger espresso, it is a longer one, which keeps a flat ceiling on what any cup can do while still making a good harvest worth having.
- Common is the base figure in the table above. An espresso runs 45 seconds.
- Fine multiplies it by 1.25. That espresso runs 56 seconds.
- Choice multiplies it by 1.60, so 72 seconds.
- Pristine multiplies it by 2.00, so 90 seconds.
Caffeinated, Jittery and Steady
Caffeinated is Haste I plus a little pace, about eight percent movement speed. A second cup refreshes it rather than stacking with it: the new expiry is measured from now, so no amount of drinking buys more than one full duration at a time.
That is the property the counter exists to price. Three cups inside a rolling twenty minute window are free. The fourth gives you the jitters.
Jittery is the downside, and it is a real one. It costs bow accuracy: the arrow's direction is perturbed by a fraction of its own speed, while the speed itself is preserved exactly, so it is an accuracy penalty and not a hidden damage penalty. Your mining is untouched. A drink with an upside and no downside would not be a decision.
Steady is the tea line's answer: Resistance I and a planted stance, and applying it clears Jittery and empties the coffee window. Tea does not cancel coffee, and the two coexist happily. What tea buys is the mistake back, which is what makes coffee or tea a choice rather than one option that dominates.
Cold brew, and the guardians
Cold brew's Mining Fatigue immunity is a window, not an effect. It is a single expiry stamp kept on you, and while it is open the effect is simply refused. A second cold brew refreshes it to the new duration measured from now, never adds to the old expiry, and never shortens a longer window that is already running. When it lapses it stops refusing, and there is nothing to sweep up.
Staff can switch drink effects off server wide. If they do, no drink grants anything, but the cup is still destroyed and still counted as drunk. That is deliberate: the counter sits on the path the cup actually takes, because a meter reading exactly zero on a server with effects off would be an unwired meter rather than a measurement.
The Servery
A Servery is your counter. It is where the chain stops being a hobby and becomes an income, and it is the only part of the cafe where coins move.
Right-click a finished counter that nobody owns and it becomes yours, named after you. From there:
- Stock moves every drink in your inventory onto the counter in one action. Rows are keyed on the drink and its quality, so Common lattes and Pristine lattes are separate rows you can price separately.
- Price sets what one cup of a row costs, anywhere from 1 to 10,000 coins.
- Take pulls stock back out, and drop clears a row entirely.
- Close releases the counter, so the barrel goes back to being a barrel that anybody may claim.
A counter holds up to 7 rows of 512 cups. Stocking more than a row can hold fills it to 512 and hands the remainder straight back rather than swallowing it.
What happens when somebody buys
The cup leaves the row before any money moves, and the row is written back first. A second buyer in the same tick therefore reads an empty row and is refused with a sentence, rather than two people buying the same last cup. If the charge then fails for any reason, the cup goes back exactly as it was.
The money is player to player. The house rate, 5 percent by default, is carved out of the price rather than added on top, and it goes to the faction treasury that holds the ground, not to the server. Nothing here is minted. The owner being offline changes nothing at all: the counter keeps trading and the coins land in an offline balance. You cannot buy from your own counter; take the stock back instead.
When the counter will not detect
If the structure is not finished, the refusal names the block. It gives you the coordinates of the nearest centre it found and says what it wanted there and what was actually there, for example that it wanted any lantern and found nothing. All four of the counter commands route through that one sentence, so one broken cell no longer produces four different complaints.
For the full picture, /cafe servery here walks the structure block by block: every cell, with a tick or a cross, its world coordinates, what is there and what was wanted, at every rotation and both arrangements. It runs whether or not the counter detects, because confirming a working counter is as legitimate as debugging a broken one.
The listener speaks up too when a right-click fails, but only when the build looks intended, meaning at least one surrounding cell already matched at some rotation, and at most once every fifteen seconds per player. Otherwise every storage barrel on the server would lecture you about lanterns.
Detection was deliberately widened, and there is a cost to that. A decorative barrel with a lantern above it and copper beside it now is a Servery, and the first plain right-click claims it. Recovery is complete and costs nothing: sneak and right-click still opens the vanilla barrel, /cafe close releases the counter, and /cafe list names every counter you own.
Barista, Chef and the two charters
Two of the six professions the Garden added are cafe professions, out of 21 in total. Both are ordinary jobs you take from the job screen.
| Profession | What it covers | Secondary traits |
|---|---|---|
| Barista | Roasts, brews and serves drinks. | Steady Hand, Signature |
| Chef | Cooks dishes and serves them to other players. | Clean Plate, Preserve |
The Roastery and the Café
Roasting beans and running a counter are one profession and two businesses, so the Barista is the only trade in the game carrying two company charters: the Roastery and the Café, both covering the FOOD sector. The Chef anchors the Kitchen. That doubling is the direct reason the count is 22 charters across 21 trades rather than 21 across 21.
Founding is charged per charter, not per trade: 25,000 coins as a licence fee and 100,000 coins of starting capital moved from your bank account into the company, plus one company slot. A Barista who wants both pays 250,000 coins and spends two slots, and may be clocked into only one of the two at a time. Both figures are shown before any money moves. The full mechanism lives on the companies page.
Hiring a Barista
A hired Barista is a village worker who ferries stock from a chest to your counter, on the same hiring costs as every other role. Graded cups are a deliberate exception to what it will carry: a Pristine cup is left where it is rather than rebuilt as a Common one in transit, because the alternative would quietly destroy the value you spent a good harvest earning.
Commands, screens and saved state
Bare /cafe opens the hub. Every button in the interface has a typed equivalent, and the visible text of a clickable row is the command it runs, so nothing is only reachable through a window.
| Command | What it does |
|---|---|
/cafe explain | The whole chain in words, with the live roast timings for all three heats. |
/cafe build | The build pattern for every station, derived from the patterns the detector actually uses. |
/cafe drinks | The seven drinks with what each one takes and gives. |
/cafe pulp | Pulps cherries at the Herbalist's Station you are standing at. |
/cafe roast | Starts a batch, or reports the one already running. |
/cafe grind | Grinds your darkest brewable roast, coarse or fine. |
/cafe brew | Brews one named drink at the Brew Bar. |
/cafe servery | Opens the counter you are at. here prints the block by block diagnosis. |
/cafe stock | Moves every drink you are carrying onto your counter. |
/cafe price | Sets the price of one row. |
/cafe buy | Buys cups from somebody else's counter. |
/cafe take | Takes stock back off your own counter. |
/cafe drop | Clears one row. |
/cafe close | Releases the counter you own. |
/cafe list | Lists the counters you own. |
/cafe help | The command's own help. |
Nine screens sit behind those verbs, and they render on both platforms: Java gets a chest interface, Bedrock gets native forms through the same view model. Neither has a writable slot anywhere, because every input is read from your inventory and every output is handed back to it.
What is written to disk
The cafe keeps one small file with two sections, the running roasts and the counters. One roast is one line and one counter is one line, so the document stays cheap to write. What gets flushed immediately is decided by what losing it would cost: starting a roast destroys beans if the write is lost, and a sale duplicates a cup, so both are written out at once. Re-pricing a row only delays something, so it waits.
There is no repeating task in the whole subsystem, no money timer and no hologram. A roast level is worked out from a stored timestamp when somebody asks, station detection happens when you click, and a sale is a click. The cafe costs nothing while nobody is using it.