Frequently Asked Questions

Common questions about SteadfastVillagers.

General Questions

Can I get my villager back?

Yes. Click the "Unconvert" button in the GUI. A living villager spawns with all its original trades. Only the owner can unconvert.

What happens if I break the block without Silk Touch?

By default, you cannot break a villager block without Silk Touch. The block is indestructible to regular tools. This prevents accidental loss and theft.

To change this, set block.require-silk-touch: false in config.

Do villager blocks cause lag?

No. Villager blocks are dramatically better for performance than living villagers:

  • No pathfinding AI calculations
  • No entity collision detection
  • No goal/brain ticking
  • No persistent entity loading

100 villager blocks perform better than 20 actual villagers.

Does this work with Bedrock players?

Yes, with some notes:

  • Bedrock players see ArmorStand entities instead of ItemDisplay (Bedrock doesn't render ItemDisplay)
  • Requires Floodgate plugin for proper Bedrock detection
  • All trading functionality works identically

Trading Questions

Why are my trades locked?

In VANILLA mode, trades lock after a certain number of uses (just like real villagers). To unlock:

  1. Add a workstation - Place the correct workstation block in the GUI's workstation slot
  2. Wait for restock - Trades restock every 20 minutes (configurable)

Or switch to lock-mode: INFINITE in config for unlimited trades.

What's the correct workstation for each profession?

ProfessionWorkstation
ArmorerBlast Furnace
ButcherSmoker
CartographerCartography Table
ClericBrewing Stand
FarmerComposter
FishermanBarrel
FletcherFletching Table
LeatherworkerCauldron
LibrarianLectern
MasonStonecutter
ShepherdLoom
ToolsmithSmithing Table
WeaponsmithGrindstone

Can I change which trade is active?

Yes. Open the GUI and click any trade item. The active trade shows an enchantment glow. Only the active trade processes automatically.

Do discounts affect automated trades?

Yes. If the villager had cure discounts when converted, those discounts apply to all automated trades permanently.

Can multiple players use the same villager block?

Yes, if they have permission (GriefPrevention Container trust or no claim protection). Multiple players can open the GUI simultaneously.

However, only one trade processes at a time. Multiple players don't multiply trade speed.

Automation Questions

Do hoppers work?

Yes. Full hopper integration:

  • Hopper above -> Items go into input buffer
  • Hopper below -> Items extracted from output buffer
  • Hopper into side -> Items go into input buffer

What's the trade speed?

By default, one trade executes every 200 ticks (10 seconds). Configure with trades.cooldown-ticks.

In VANILLA mode, trades are also limited by stock (max uses before restock).

Does it work with other automation mods?

If the mod uses hopper mechanics, it should work. Tested compatible:

  • Vanilla hoppers and hopper minecarts
  • Create mod funnels/chutes
  • Most hopper optimization plugins

What does the comparator output mean?

When effects.comparator-output: true:

  • 0: No active trade or output full
  • 1-14: Proportional to output buffer fill
  • 15: Output empty, actively trading

Use this for redstone automation (stopping input when output is full, etc).

Do villager blocks work in unloaded chunks?

No. The chunk must be loaded for trades to process. Options:

  1. Stay within render distance
  2. Use chunk loaders (if your server allows)
  3. Set activation-range: 0 to remove player proximity requirement (still needs loaded chunk)

Discount Questions

How do discounts work?

Vanilla behavior:

  • Cure a zombie villager -> ~20% discount per cure (up to 5 cures = ~80%)
  • Discount is player-specific
  • Discount decays over real-time days

SteadfastVillagers behavior:

  • Discount is captured at conversion time
  • No decay - discount is permanent
  • Transferable - whoever places the block gets the discount

Can I stack Hero of the Village with cure discounts?

Yes. When discount.hero-of-village: true (default), players with Hero of the Village effect get additional discount on top of the captured cure discount.

What's the maximum discount?

Configurable via discount.max-percent. Default is 80% (vanilla maximum from 5 cures).

Economy Questions

Can players sell villager blocks?

Yes. Villager blocks are normal inventory items when picked up with Silk Touch. Players can:

  • Trade them to other players
  • Sell them in player shops
  • List them on auction houses

This creates a villager economy where high-quality villagers (good trades + max discounts) are valuable.

How do I prevent villager farming abuse?

Options:

  1. Set min-conversion-level: 5 - Only Master villagers can convert
  2. Set discount.max-percent: 50 - Cap the discount benefit
  3. Limit steadfastvillagers.convert permission to certain ranks
  4. Use economy plugin integration to charge for conversion

Does this work with Vault/economy plugins?

No direct economy integration, but the item-based nature means:

  • Player shops (ShopGUI+, ChestShop, etc.) can sell villager blocks
  • Auction plugins work with villager block items
  • Trade plugins work normally

Technical Questions

Why does it require a database?

Villager blocks store complex data:

  • All trade information (items, prices, enchantments)
  • Buffer contents (serialized items)
  • XP, discounts, ownership
  • Entity UUIDs

This data persists across restarts and must survive server crashes. A database provides:

  • Reliable persistence
  • Atomic transactions
  • Multi-server support (if needed)
  • Efficient queries for admin commands

Can I use SQLite instead?

No. MySQL/MariaDB is required. SQLite lacks features needed for reliable operation with concurrent access.

What tables does it create?

With default table-prefix: vb_:

TablePurpose
vb_blocksCore block data (location, owner, profession)
vb_tradesTrade data (ingredients, results, uses)
vb_buffersSerialized input/output buffer contents

How do I migrate between servers?

  1. Export blocks: /svadmin export <id> for each block
  2. Copy the exports/ folder
  3. Database can be migrated directly if using same schema

Note: Block locations are world-specific. You may need to adjust coordinates.

Is there an API for developers?

See API Documentation for integration details.

Troubleshooting

Display entity missing

Run /svadmin repair while looking at the block.

"Database connection failed"

  1. Verify MySQL is running: systemctl status mysql
  2. Test connection: mysql -u minecraft -p steadfastvillagers
  3. Check config credentials match

Block exists but doesn't appear

The block may have corrupted data. Try:

  1. /svadmin inspect <id> - Check if data loads
  2. /svadmin repair <id> - Respawn display
  3. /svadmin repair-corrupted - Find and remove corrupted entries

Trades not restocking

  1. Verify lock-mode: VANILLA in config
  2. Check workstation is placed in GUI
  3. Verify workstation matches profession
  4. Wait for restock interval (default 20 minutes)

Performance issues

Villager blocks should be very lightweight. If experiencing issues:

  1. Check activation-range - Lower values reduce checks
  2. Increase cooldown-ticks - Slower trade processing
  3. Check database performance - Slow queries affect all operations
  4. Use /svadmin stats to see total block count

Feature Requests

Can you add [feature]?

Open an issue on GitHub with:

  • What you want
  • Why it would be useful
  • How it should work

We prioritize features that benefit the most server types without adding complexity.

Will you support Folia?

Folia support is planned. The platform-folia module exists but needs Java version alignment work.

Will you support Fabric/Forge?

Not currently planned. The plugin is designed for Paper/Spigot server environments.