Taxes and Contraband
How faction tax is taken, how the three tax policies work, and what a contraband ban does and does not stop inside a faction's claims.
Where the money is taken
Tax moves coins between pots. It never creates them and it never destroys them: what leaves your side of a transaction arrives in a faction treasury, and the ledger books it as faction income, so a full recount of the money supply still balances. A treasury fed this way is what pays for claims, buffs and upgrades.
Which faction takes the cut depends on the transaction, not on where you happen to be standing. The rule is "your own faction taxes you", and there is exactly one defined exception: the regional shop, where the land and the market belong to the owner.
| Transaction | Taxed by | What that means for you |
|---|---|---|
| Earning money: job payouts, crop and herb sales, exploration and event rewards | Your own faction | You receive the net, the treasury receives the tax |
| Buying from the server shop | Your own faction | The base price parks in the Admin Event Account, the tax goes to your treasury |
| Selling at someone else's regional shop | The shop owner's faction | A flat per-shop rate, 10% by default, never above 50% |
/pay | The payer's faction | You cover the amount plus your bank's pay fee plus the tax; the payee receives the full amount |
| Market Board purchase | Nobody | A 5% fee is destroyed instead (1 to 4% with the right buff). No faction tax at all |
| Voting rewards, savings interest, faction to faction transfers | Nobody | Untaxed by design |
/pay runs account to account rather than wallet to wallet, so coins sitting loose in your wallet cannot be sent until you deposit them with /bank deposit. The insufficient-funds message quotes the full requirement, and a payment is never made in part. If you want to hand someone money with no tax and no fee at all, use physical cash: withdraw a note and pass the item over.
The three tax policies
Every faction runs exactly one of three policies. The Owner chooses it, everyone else lives under it, and any member can read what it currently is.
| Policy | How the rate is decided | Cost of running it |
|---|---|---|
| Flat | One percentage on every taxable move, whatever the size | The fast path. Nothing is computed beyond a multiplication |
| Progressive | Marginal brackets, so a larger payout pays a higher average rate | The same fast path, walking the bracket list |
| Rules | An ordered list of conditions and amounts the Owner builds | Only a Rules faction pays for building a full evaluation context |
What a progressive schedule actually costs
Brackets are marginal. Each band of a payout is taxed at its own rate; the whole payout does not jump to the top rate the moment it crosses a threshold. The fair default schedule is 0% up to 2,000, then 5%, then 12% from 8,000, then 18% from 25,000.
On a 10,000 payout that is nothing on the first 2,000, 5% of the next 6,000 and 12% of the last 2,000: 540 coins, an effective 5.4%. The same schedule on 30,000 takes 3,240, an effective 10.8%. The effective average is then clamped against the safety ceiling, so a schedule steep enough to be absurd still cannot over-tax you.
The presets
Five named presets replace the current policy wholesale, running from the lightest touch to a steeply progressive schedule: LAISSEZ_FAIRE, MINIMAL, STANDARD, PROGRESSIVE_FAIR and PROGRESSIVE_STEEP. The preset screen in the tax GUI shows eight cards: those five, plus three that seed a whole Rules set instead of a rate, for a wealth tax, a luxury tax and a wartime schedule. The shipped wealth-tax card charges 3% of whatever a payer's net worth exceeds 200,000.
Switching to Rules is not a free swap
Rules is a different tax world, and the difference is worth knowing before an Owner opts in. The faction tax-reduction buff, which discounts Flat and Progressive income tax, is not applied under Rules: the rules are the whole authority. The safety ceiling is the Rules ceiling rather than the Flat one.
Because of that, merely opening the rule list on a Flat or Progressive faction shows a preview of the equivalent rule set that is never saved. The conversion is written to disk only when the Owner makes a genuine edit, so browsing can never quietly change what your faction charges you.
Anatomy of a rule
A Rules policy is an ordered list. Each rule pairs a condition, which says when it applies, with an amount, which says what it takes. A handful of switches decide how it sits among the others.
| Field | Values | Effect |
|---|---|---|
| Priority | A number | Rules evaluate in descending priority |
| Enabled | On or off | A disabled rule is skipped. A rule that fails to compile disables itself |
| Condition | A single comparison, or an AND / OR / NOT tree | Decides whether the rule fires for this transaction |
| Mode | RATE or FLAT_AMOUNT | A percentage of the running base, or a fixed coin fee regardless of size |
| Action | COLLECT, EXEMPT, DEDUCT, REDIRECT, CAP | See below |
| Destination | SELF, REGION, FACTION:id, NAMED:fund | Where the breakdown says the money is going |
| Stop on match | On or off | Stop evaluating the rest of the list once this rule fires |
What the five actions do
| Action | Behaviour |
|---|---|
COLLECT | Accrues tax on the running base |
DEDUCT | Shrinks the running base before later rules see it, which is how you write an allowance |
EXEMPT | Zeroes the tax outright |
CAP | Clamps the total collected so far and scales the whole breakdown proportionally |
REDIRECT | Accrues like COLLECT but names a different destination in the breakdown |
Destination is modelled, saved and printed, but the coins credit the actor's own treasury today. Cross-faction tariffs and regional stacking are not wired to a money move yet, so REDIRECT to another faction is a line on the receipt rather than a transfer. Read it as a plan, not a payment.
When every rule has run, the total is clamped against the original transaction amount rather than against whatever a DEDUCT left of it. That is the difference between a ceiling that holds and one a clever rule order can walk around.
What a condition can read
Conditions read a snapshot of the transaction and the person making it: the amount, the transaction type, the actor's faction rank, their wallet, bank balance and net worth, the job, region and world, the item and its category, and the faction's economic metrics such as inflation, purchasing power, stability and growth. The economic metrics return neutral values until the economic simulation is armed, so a rule keyed on inflation sits dormant rather than misfiring.
An unknown variable name resolves to 0 or to an empty string. A typo therefore never crashes a rule; it produces a rule that quietly never matches, which is exactly what the simulator is for.
The formula sandbox, and what happens when a rule breaks
An amount can be a plain rate, a fixed fee, or an expression. Expressions support +, -, *, / and %, plus the functions min, max, clamp, floor, ceil and abs. Division and modulo by zero return 0 rather than throwing, so a rule that divides by a metric which happens to be zero yields nothing instead of breaking the payout.
The parser is deliberately small, and it is hard-limited in three ways before your expression is ever evaluated. Conditions are parsed under the same caps.
| Limit | Value | What it prevents |
|---|---|---|
| Source length | 1,024 characters | A single pasted expression long enough to stall a parse |
| Node count | 128 nodes, counted while parsing rather than after | A huge flat chain that would only be caught once it was already built |
| Nesting depth | A fixed depth guard | Deeply nested parentheses, unary minus chains and stacked NOTs exhausting the stack |
| Rules per faction | 32, checked when a rule is added | A rule set large enough to be a cost on every transaction |
Every one of those turns a pathological input into a reported parse error. That is the whole point of counting nodes during the parse: an over-long source is refused while it is being read, not after it has already been turned into a structure too large to walk.
A broken rule takes only itself down
A rule tracks its amount error and its condition error separately. If either half fails to compile, that single rule switches itself off and the error is echoed back to whoever typed it. Nothing else in the set is disturbed, and the remaining rules keep collecting normally. The same isolation applies when a saved rule set is loaded again: a rule that no longer compiles comes back disabled and visible rather than silently dropped, so it can be read and repaired instead of vanishing.
Two syntax traps worth knowing
Commas are argument separators inside an expression, so grouping commas corrupt a condition. Write amount > 5000, never amount > 5,000. Everything the GUI writes for you is already comma-free, and the grouping commas you see on a card are display only.
List conditions accept both shapes: item IN (a, b) and item IN [a, b]. Only the square form used to parse, and a player who reached for the natural parentheses got a set containing the literal bracket character, which compiled cleanly and then never matched anything. A mismatched closer such as IN [a, b) is now a reported parse error rather than a rule that swallows the rest of your condition.
The simulator and the commands that explain the policy
The simulator answers one question: what would this rule set actually charge? It runs a transaction through the same evaluation the real charge runs, prints every rule that fired with its share, and gives the effective rate at the end. No money moves and nothing is saved.
In the GUI, the simulator screen lets you cycle the transaction type, step the amount, and optionally cycle an item through the palette. In chat, /faction tax test does the same for Elder and above, which means a faction's officers can audit a policy they cannot change.
The warning that matters most
If you select an item against a transaction type that carries no item in play, the preview card adds a warning saying so. Without it, the simulator would happily render a plausible 30% hit for a job payout on a Cannabis Bud, and an Owner would build a rule against revenue the engine can never collect. The warning is display only. It does not touch the maths, so what the card shows and what the engine would do still agree exactly.
A second honesty note, from the same principle: a couple of transaction types are selectable in the editor and can never match, because the money routes behind them pass no evaluation context at all. Salary and company profit are the two.
Who can do what
| Command | Who | What it does |
|---|---|---|
/faction tax explain | Anyone, including a player with no faction | A plain-language primer on the whole model, reading both safety ceilings live rather than quoting a number that might drift |
/faction tax info | Any member | The current policy plus a worked example on a 10,000 payout |
/faction tax test <txnType> <amount> [rank] [wealth] | Elder and above | The chat simulator. Prints the per-rule breakdown and the effective rate. Moves no money |
/faction tax | Owner | Opens the tax GUI at the hub |
/faction tax flat <percent> | Owner | Sets a flat rate |
/faction tax preset <name> | Owner | Applies one of the five named presets |
/faction tax progressive [t:p ...] | Owner | Custom brackets, or the fair default with no arguments |
/faction tax rules, custom, edit | Owner | Opens the rule list, converting the current policy into an equivalent rule set |
/faction tax list | Owner | Prints the rule set as text |
/faction tax simple | Owner | Reverts to Flat 0% |
/faction tax rule add|remove|enable|disable|priority | Owner | Manages individual rules |
/faction tax cond <id> <condition> | Owner | Sets a rule's condition as text |
/faction tax expr <id> <expression> | Owner | Sets a rule's amount as an expression |
/faction tax mode <id> <RATE|FLAT_AMOUNT> | Owner | Switches between a rate and a fixed fee |
/faction tax action <id> <ACTION> [dest] | Owner | Sets the action and optionally the destination |
/faction tax dest <id> <SELF|REGION|FACTION:id|NAMED:fund> | Owner | Sets the destination alone |
/faction tax explain is answered before the command even looks up your faction. The person most in need of "what is faction tax?" is often someone deciding whether to join one at all, and they would otherwise be told they are not in a faction. The GUI is left-click only throughout, and there is no typed input anywhere in it, so Bedrock players drive every control.
Taxing a single good, and the eight categories
A rule can name a specific good. That is how a faction puts a luxury or vice rate on one product without touching everything else it taxes.
Items are identified by one key space shared with contraband. A Blacklight custom resolves to its registry id, such as bl_cannabis_bud; anything vanilla resolves to its namespaced key, such as minecraft:diamond. Keys are lower-cased and independent of stack size, so one bud and a stack of sixty-four carry the same key. A null or empty hand resolves to an empty key, which matches no rule and no ban, which is the correct answer for "no item was involved".
Three condition shapes are available. item == bl_cannabis_bud for one good, item IN (a, b) for several, and item_category == HERB for a whole bucket. In the GUI you never type any of them: Conditions, then Match a specific item, then click the goods you want and apply.
| Category | Roughly what falls into it |
|---|---|
HERB | The whole agriculture and herb chain, decided on the item key alone |
ORE | Ores, ingots and the raw valuables |
FOOD | Edibles that are not part of the herb chain |
TOOL | Pickaxes, shovels and the working gear |
WEAPON | Swords, bows and the battle-axe family |
ARMOR | Wearable protection |
BLOCK | Building materials |
MISC | Everything else |
Herbs are matched on the key before any other check, which is why the cannabis bud does not fall through into FOOD despite being built on an edible base item. The picker and the live tax path run through the same classifier, so an item_category rule matches exactly the set you saw when you built it.
The catalogue you pick from lists the herb chain first, then every registered Blacklight custom, then around 45 curated vanilla staples. It is curated on purpose: a full material list would be over a thousand entries in a 28-cell grid, and most of them are never traded. The tax item picker and the contraband editor read that one catalogue in the same order, so you can never tax something you cannot ban, or ban something you cannot tax.
The honest limit. Exactly one live transaction carries an item into the tax engine today: the sneak-sell of a crop or herb. Job pay, server shop purchases, /pay, the Market Board and regional shop sales all pass no item, so an item rule simply skips them. The game says this in three places, on the Match a specific item tile, in the simulator warning, and in the primer, so that nobody builds a rule against revenue that cannot be collected.
Contraband: prohibition without confiscation
A faction can outlaw a good inside its own claims. This is not a tax and no coins move: it is a refusal. On that faction's land the banned item cannot be used in the ways below, and outside that land it is an ordinary item again.
| What you try | Inside a banning faction's claims |
|---|---|
| Planting a banned seed | Refused. The seed is not consumed and no crop is placed |
| Eating a banned consumable | Refused, and the effect is never granted first |
| Placing it as a block | Refused. Banning TNT really does stop TNT |
| Placing it as an entity: end crystals, armour stands, boats, minecarts, item frames | Refused, from either hand |
| Sneak-selling it | Refused. A faction cannot outlaw a crop and still host the harvest-to-sale business |
| Listing it at a regional shop on that land | Refused before any inventory is touched, so it never costs you your items |
| Buying it at a regional shop on that land | Refused before any money moves, so you are never charged |
| Carrying it | Legal |
| Throwing it: pearls, splash potions | Legal |
| Shooting it | Legal |
| Wearing it | Legal |
Nothing is ever confiscated and no money moves anywhere in the feature. Taking items off a player for walking across a border would be trivially weaponised, since a faction could ban a common item and farm travellers, so prohibition here is refusal only.
A ban applies to everyone on that land, including the banning faction's own members, who are the people who wrote the law, and including staff. There is no bypass anywhere in the three enforcement points. Staff who need to work around a ban lift it rather than ignore it.
Holding contraband never blocks a block. Chests, doors and furnaces open normally while a banned item sits in your hand. A ban targets what you do with an item, not what you carry, and right-clicking an interactable block with a banned snack opens the block rather than emitting a refusal for something you never attempted.
A retroactive ban freezes rather than deletes. Listings created before the ban stop trading instead of quietly continuing, and the items stay where they are.
Reading and editing the ban list
Any member can read their faction's contraband list from the faction hub, and the overview book shows it too. Everyone should be able to read the law they live under. Editing is Mod and above, tied to the same authority as kicking, which makes the faction's enforcement staff its legislature.
The editor sorts banned entries first so the current law is always on page one, and a ban on an item that is no longer in the shared catalogue still renders, so it can always be lifted. Staff can switch enforcement off across the whole server; if they do, the ban lists survive untouched and only enforcement stops.
Ceilings, receipts and the audit
Four promises hold across the whole system, and they are worth reading as a member rather than as an Owner.
The price you are shown is the price you are charged. Tax is always inside the number on the label. Under a Rules policy the rate can depend on who is buying, so the shop label is quoted through the same evaluation and the same context the charge will use. The receipt then echoes the amount actually withdrawn rather than re-quoting afterwards, because a second quote would read a wallet that has already been debited.
Every policy has a ceiling.
| Limit | Value |
|---|---|
| Flat and Progressive effective rate | 90%, raised from an earlier 25% |
| A whole Rules set on one transaction | 90% of the original amount, however many rules stack |
| Regional shop rate | 10% by default, 50% maximum |
| Rules per faction | 32 |
Tax is named at every payout. Every player-earned coin runs through one funnel with a declared taxable decision per source, so there is no untaxed side door and no bespoke tax hiding in a corner. Twenty-eight payout sites bind their result and eleven files render the receipt through one renderer. An untaxed payout prints "no tax" rather than a zero, which keeps "untaxed" readable as different from "not disclosed".
A privacy call sits inside that: your faction's cut of your payout is your income tax, and under a Rules policy the rate is derivable from it. So server-wide and faction-wide announcements keep the headline figure and the tax clause goes only to the earner.
Income and consumption are taxed differently. The faction tax-reduction buff applies only to income: job pay, sales, expedition and bounty rewards, savings interest and dividends. Consumption and fees pay the un-reduced rate. That split is also what keeps a shelf price identical for every viewer, since two members with the same faction but different buffs still see the same number on the same item, even though their income tax differs.
Verification status. The taxation engine, the tax GUI, item taxation and contraband are marked code-written / NOT server-verified in the developer documentation. The engine core passes a standalone test harness covering flat and progressive parity, the malformed-rule isolation and every pathological parser input, and an adversarial review of the contraband and item-tax work found and fixed ten defects. Live checks on a running server are still owed, so treat exact behaviour here as the design rather than as tested play.