Taxation appears broken: players with no money show no tax (a global 1% is applied), but SCGovernment receives no funds. Investigate whether this is StateCraft-specific or also affects DemocracyCraft.
Technical notes — this looks like a per-server misconfiguration, not a code bug. On StateCraft, tax.balance.government-account is set to DCGovernment, but LedgerServiceImpl.bootstrapGovernmentAccounts() only creates starting-balances, the tax-income account (SCGovernment) and the fines account — it never bootstraps the balance-tax destination. So findGovernmentAccountByName("DCGovernment") returns null, BalanceTaxService.resolveDestinationAccountId() logs a WARN and silently falls back to the default tax account (SCGovernment). Money is collected and credited to SCGovernment — but the configured DCGovernment stays empty, which reads as "not receiving funds."
The "no-money players pay no tax" part is correct/expected: processLoginLocked returns early at balance ≤ 0 and the 0% bracket.
Fix: set SC's tax.balance.government-account to SCGovernment; and/or bootstrap the balance-tax destination like the others + upgrade the silent WARN fallback to a startup validation error (a misrouted tax destination is a money-integrity issue).
Skipping — this is a live-config fix, not a code change. As diagnosed, StateCraft's tax.balance.government-account is set to DCGovernment, which is never bootstrapped, so resolveDestinationAccountId logs a WARN and silently falls back to the default tax account — money is collected, just credited to the wrong (fallback) account, so the configured DCGovernment looks empty. The fix is to set SC's tax.balance.government-account to a bootstrapped account (e.g. SCGovernment) on the live server config — the agent can't touch live config. (Optional code hardening for later: upgrade the silent WARN fallback to a fail-fast startup validation so a misrouted tax destination can't happen silently — flag if wanted.)
Code context — this looks like a per-server misconfiguration, not a code bug. On StateCraft,
tax.balance.government-accountis set toDCGovernment, butLedgerServiceImpl.bootstrapGovernmentAccounts()only createsstarting-balances, the tax-income account (SCGovernment) and the fines account — it never bootstraps the balance-tax destination. SofindGovernmentAccountByName("DCGovernment")returns null,BalanceTaxService.resolveDestinationAccountId()logs a WARN and silently falls back to the default tax account (SCGovernment). Money is collected and credited to SCGovernment — but the configuredDCGovernmentstays empty, which reads as "SCGovernment not receiving funds."The "players with no money pay no tax" part is correct/expected:
processLoginLockedreturns early at balance ≤ 0 and at the 0% bracket.Fix: set SC's
tax.balance.government-accounttoSCGovernment; and/or bootstrap the balance-tax destination like the others + upgrade the silent WARN fallback to a startup validation error (a misrouted tax destination is a money-integrity issue).