Mercantile

Features

A detailed look at everything Mercantile changes about villagers, trading, and village defense. Every feature is individually toggleable via config.

Villagers

Villager Pickup

Sneak-right-click an adult or baby villager with an empty main hand to pick them up as a profession-styled player head item. Full NBT — profession, level, XP, trades, gossip, name, inventory — is preserved.

Wandering traders work the same way — sneak-right-click to capture, with the despawn countdown frozen while held and resumed on placement. Each leashed trader llama drops its lead and stays put rather than chasing the captured trader.

Right-click the head item on a block to place the villager or trader back, facing toward you. Villager pickup is blocked during raids, while another player is trading with them, or while they are following someone. Trader pickup is blocked only while another player is trading with them.

Config: enableVillagerPickup, pickupXpCost (default 5 XP)

Villager Names

Every villager and wandering trader is auto-named on spawn from a biome-themed pool: English in Plains/Forest, Arabic in Desert, Nordic in Taiga, Mesoamerican in Jungle, African in Savanna, Old English in Swamp, Western in Badlands.

Names always render above the villager or trader. Player-applied nametags override the generated name. Names survive pickup, world reloads, and dimension changes. Datapacks can override or extend pools via data/mercantile/villager_names/<category>.json.

Config: enableNames

Follow Mode

Sneak-right-click a villager while holding an emerald to make them follow you. They pathfind toward the player at ~6 blocks distance, ignore schedule goals (workstation, bed, wandering), and refuse mob-to-mob collision pushes.

Cyan particles trail at their feet while following. They auto-release if you move more than 32 blocks away. A villager already following one player cannot be recruited by another. Not persisted — cleared on logout, unload, or restart.

Config: enableFollowMode, maxFollowingVillagers (default 3)

Boosted Healing

Splash and lingering potions of healing restore double the normal HP when they hit a villager. Splash and lingering regeneration potions apply double the normal duration. Tipped arrows are unaffected.

Tune the multiplier (1.0×–10.0×) to make raid recovery easier or stricter.

Config: enableHealing, healingMultiplier (default 2.0)

Profession Lock

After any completed trade, a villager's profession becomes permanently locked. Their trade offers survive even if the workstation is broken, moved, or destroyed. They will still claim a same-type workstation if one is available nearby.

A lock icon appears in the trade GUI header. Jade/WTHIT tooltips show "Profession: Locked" vs "Profession: Unlocked".

Config: enableProfessionLock

Smarter Pathfinding

Villagers properly open fence gates and double doors, navigate multi-step staircases and slab transitions, climb ladders when the path calls for it, and prefer dry routes over water.

Each fix is independently toggleable.

Config: enablePathfindingFixes, enablePathfindingDoors, enablePathfindingStairs, enablePathfindingLadders, enablePathfindingWater

Trading

Trade Cycling

Pay 6 emeralds (configurable) to re-roll a villager's unlocked trades from the profession pool — no more breaking and replacing workstations. Trades become locked once purchased; locked trades are preserved across cycles.

The "Re-roll Trades" button sits in the villager info panel. It's grayed out when all trades are locked or you have no emeralds, and hidden entirely when the villager's profession is locked (so a locked villager reads as fully frozen). Cycling also grants a small reputation gain.

Config: enableTradeCycling, tradeCycleEmeraldCost (default 6), reputationCycleGain (default +2)

Bulk Trading

Shift-click a trade output slot to repeat the trade automatically. Stops when input runs out, the trade goes out of stock, the inventory fills up, or 64 trades are executed.

Price stays locked for the duration of a single bulk operation — no mid-loop repricing. Demand counters update correctly for all completed trades.

Config: enableBulkTrading

Restock Indicator

The trade GUI shows estimated time until the next restock in ~M:SS format, plus a counter for restocks remaining today. Shows "Fully stocked" when all trades are at max, or "No workstation" in red when the villager is unbound.

Config: enableRestockIndicator

Demand Transparency

Hover over a trade price to see a breakdown: base price, demand adjustment, reputation modifier, gossip modifier, final price. Discounts appear in green, markups in red.

Config: enableDemandTransparency

Villager Info Panel

A side panel in the merchant screen showing the villager's name, profession and level with XP progress bar, your reputation standing with them, total trades completed, workstation status (bound/unbound and type), and the profession-locked indicator.

Small-screen fallback: when the window is too narrow to fit the side panel next to the trade GUI, a small i icon appears beside the villager title. Click it to open the same info as a centered overlay; press Esc or the x in the corner to close.

Client config: enableInfoPanel

Reputation

Five-Tier Reputation

A persistent per-player score from −100 to +200 that survives death and travels with you across the world. Score changes are configurable.

Tier Range Effect
Reviled−100 to −50Trade refusal, angry particles, head shake
Distrusted−49 to −110–25% markup
Neutral0No effect
Liked1 to 495% discount
Trusted50 to 9910% discount + profession-exclusive trades
Honored100 to 20015% discount + all exclusive trades

Config: enableReputation

Score Events

  • Trade: +1
  • Cure zombie villager: +15 (one-time per UUID)
  • Attack a villager: −10
  • Kill a villager: −25
  • Trade cycling: +2
  • Proximity: +1 per 10 min (capped at +1/day)

Config: reputationTradeGain, reputationCureGain, reputationAttackLoss, reputationKillLoss, reputationCycleGain

Reputation HUD

A compact indicator in the top-left HUD strip shows your current tier when a villager is nearby (default 32-block radius). Auto-stacks with other rfizzle suite mods at priority 2.

Hidden during F1, open screens, and death. Uses a balance-scale icon plus the tier name in vanilla font.

Client config: enableReputationHud

Sentry Pylon

Iron-Fueled Defense Block

A placeable block that detects hostile mobs within a 32-block radius (configurable) and spawns temporary iron golems to defend your village. Right-click with iron blocks to fuel — up to 8 stored. Each golem costs 1 iron block to summon. Maximum 3 active sentries per pylon.

Sentry golems have vanilla combat AI, leash to the pylon, drop nothing on death, and don't count toward the mob cap. They despawn 30 seconds after no hostiles are detected, with a visible crack-and-fade effect.

Three blockstate variants — idle, active, empty — each with distinct particles. Redstone disables the pylon; comparator output is proportional to fuel level (0–15). Crafted from carved pumpkin, iron blocks, bell, and stone bricks.

Hopper & pipe fueling: hoppers attached to any face (top, sides, bottom) feed iron blocks into the pylon one at a time, up to the fuel cap. Non-iron items are rejected, so hoppers cycling mixed inventories don't deadlock, and overflow is left in the hopper rather than destroyed. Hoppers cannot extract — fuel only flows in. Modded item pipes (Pipez, etc.) work via the Fabric Transfer API (ItemStorage.SIDED). Disabled when enableSentryPylon is off.

Config: enableSentryPylon, pylonDetectionRadius (4–128), pylonMaxFuel, pylonMaxGolems, sentryDespawnSeconds (min 5)

Visualizations

Workstation Links

While holding a bell: profession-colored dust-particle lines connect each villager to their claimed workstation within 64 blocks. Unemployed villagers get a pulsing angry-villager particle. Unclaimed workstations get a yellow particle orbit.

Client config: enableWorkstationVis

Bell Radius

While holding a bell: a gold particle circle on the ground at the 48-block gathering radius, centered on the player. Ringing a bell briefly highlights every villager inside the radius with a vanilla glow effect.

Client config: enableBellRadiusVis

Jade / WTHIT Tooltips

Look at a villager with Jade or WTHIT installed to see a single color-coded breeding line — Ready, Hungry (with food progress), Needs bed, Cooldown, or Growing — plus contextual state icons: "Needs workstation", "Panicking", "Trading with <player>". Sentry golems show their parent pylon coordinates, despawn countdown, and a "No Drops" indicator. Both plugins work simultaneously without conflict.

Config: enableBreedingTooltip, enableStateIndicators

Compat & Integration

Mod Menu + Cloth Config

An in-game settings GUI accessible from Mod Menu's mod list. Categorized sections for Server and Client config with sliders, toggles, and input validation that mirrors the server-side clamp() bounds.

Optional dependencies: Mod Menu, Cloth Config API

Jade / WTHIT

Both tooltip mods supported simultaneously with no conflict. Mercantile registers its own provider classes that read brain memories server-side and sync data to the tooltip plugin.

Either, both, or neither — Mercantile loads cleanly without them.

EMI / REI / JEI

A unified, searchable trade index across all professions and levels with profession-head icons. Filter by profession, level, or reputation requirement. Each entry also shows the workstation block that unlocks the profession — click a workstation (lectern, composter, smoker, …) in your recipe viewer to list every trade for that profession. Exclusive trades show tier badges. Bidirectional item lookup — "Villager sells this" and "Villager buys this".

Optional — install any one of the three recipe viewers.

Sound Volume Slider

A client-side volume slider (0%–100%) controls all villager sounds independently: ambient, hurt, death, trade, yes, and no. Set to 0% for full silence without affecting any other audio category.

Client config: villagerSoundVolume (default 1.0)